diff options
Diffstat (limited to 'Build/source/texk/gregorio/gregorio-src')
92 files changed, 15210 insertions, 9509 deletions
diff --git a/Build/source/texk/gregorio/gregorio-src/.gregorio-version b/Build/source/texk/gregorio/gregorio-src/.gregorio-version index 73758c1780c..29acce08903 100644 --- a/Build/source/texk/gregorio/gregorio-src/.gregorio-version +++ b/Build/source/texk/gregorio/gregorio-src/.gregorio-version @@ -1,4 +1,4 @@ -4.0.1 +4.1.0-beta1 *** Do not modify this file. *** Use VersionManager.py to change the version. diff --git a/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md b/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md index 586bc22ee6b..10f2299b371 100644 --- a/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md +++ b/Build/source/texk/gregorio/gregorio-src/CHANGELOG.md @@ -5,6 +5,114 @@ As of v3.0.0 this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased][unreleased] +## [4.1.0-beta1] - 2016-01-23 +### Fixed +- The alignment of the vertical episema under a punctum inclinatum deminutus is now correct (see [#742](https://github.com/gregorio-project/gregorio/issues/742)). +- `<eu>` and `<nlba>` may now be ended on the final divisio maior/finalis (see [#743](https://github.com/gregorio-project/gregorio/issues/743)). +- Sign positioning on the first note of quadratum figures is now correct (see [#752](https://github.com/gregorio-project/gregorio/issues/752)). +- Interlinear spacing of annotations when font size was smaller than normal. You should now see just the spacing specified by `annotationseparation`. +- Spacing is now correct and ledger lines are now typeset for flats, sharps, and naturals above and below the staff (see [#790](https://github.com/gregorio-project/gregorio/issues/790)). +- Forced hyphens at the end of words are no longer suppressed (see [#804](https://github.com/gregorio-project/gregorio/issues/804)). + +### Changed +- Initial handling has been simplified. The initial style should now be specified from TeX by using the `\gresetinitiallines` command, rather than from a gabc header. Big initials and normal initials are now governed by a single `initial` style, meant to be changed between scores as appropriate. See [UPGRADE.md](UPGRADE.md) and GregorioRef for details (for the change request, see [#632](https://github.com/gregorio-project/gregorio/issues/632)). Deprecations for this change are listed in the Deprecation section, below. +- `\gresethyphen` no longer manipulates `maximumspacewithoutdash`, allowing for restoration of consistent behavior after this distance has been modified. See [#705](https://github.com/gregorio-project/gregorio/issues/705). +- The oriscus-based shapes in the greciliae font are more consistent. The shape of a scandicus with a second ambitus of two is more consistent across all score fonts. +- Minimal space between notes of different syllables (or words) has been reduced when the second syllable starts with an alteration. +- The space between note and horizontal episema has been tightened for notes at the `c` or `k` height when there is no ledger line. Due to the intricacies of measurement, the system tries to make a best guess as to the existence of the ledger line. If the guess is wrong, you may use the `[hl:n]` and `[ll:n]` notations in gabc to override the guess. See [UPGRADE.md](UPGRADE.md) for details (for the change request, see [#716](https://github.com/gregorio-project/gregorio/issues/716)). +- The custos that might appear immediately before a `<eu>` block is now suppressed by default. This behavior is controlled by the `\greseteolcustosbeforeeuouae` command. See GregorioRef and [UPGRADE.md](UPGRADE.md) for details (for the change request, see [#761](https://github.com/gregorio-project/gregorio/issues/761)). +- Different glyphs will now be used for the liquescent stropha on a line or between lines, if supported by the font. If you prefer the old behavior, use `\grechangeglyph{StrophaAuctaLongtail}{*}{StrophaAucta}` in your TeX file. See [#773](https://github.com/gregorio-project/gregorio/issues/773). +- Made the oriscus orientation dependent on the note that follows. Using `<` will force the ascending oriscus and `>` will force the descending oriscus. The old behavior may be restored by setting the `oriscus-orientation` gabc header to `legacy`. See UPGRADE.md for details (for the change request, see [#774](https://github.com/gregorio-project/gregorio/issues/774)). +- Headers not recognized by gregorio, rather than inducing an error, are now simply accepted by gregorio. Most of the old "standard" headers, like `book` and `manuscript-location`, are now handled in this way and thus are no longer limited to one instance. See GregorioRef for details. +- `mode` will now be converted to Roman numerals in lower case so that it shows up as small capitals using the default `modeline` style. See [UPGRADE.md](UPGRADE.md) for details (for the change request, see [#756](https://github.com/gregorio-project/gregorio/issues/756)). +- `\grecommentary` is now less restrictive about where it occurs and need not occur directly before the score anymore. +- When a bar is preceeded by a punctum mora, gregorio now ignores the punctum mora in the bar horizontal placement by default, and also adds a custom space (defaulting to 0). You can change this behavior with `\gresetbarshiftaftermora{}`, see GregorioRef for its arguments (for the change request, see [#795](https://github.com/gregorio-project/gregorio/issues/795)). + +### Added +- Support for two-, three-, and five-line staves. Set the `staff-lines` header to `2`, `3`, or `5`. For all values of `staff-lines`, the note below the staff remains 'c'. The two new notes above the staff (for a five-line staff) are `n` and `p`. See [#429](https://github.com/gregorio-project/gregorio/issues/429). +- Salicus flexus glyphs (see [#631](https://github.com/gregorio-project/gregorio/issues/631)). +- Neume fusion, activated in gabc by `@`. Use `@` before a clivis or a porrectus to get an unstemmed figure. Use `@` between two notes to fuse them explicitly. Enclose a set of notes within `@[` and `]` to automatically guess their fusion. See GregorioRef for details (for the channge requests, see [#679](https://github.com/gregorio-project/gregorio/issues/679), [#687](https://github.com/gregorio-project/gregorio/issues/687), and [#692](https://github.com/gregorio-project/gregorio/issues/692)). +- Hollow version of the oriscus, called by adding the `r` modifier to an oriscus, as in `gor` or `gor<` (See [#724](https://github.com/gregorio-project/gregorio/issues/724)). +- Headers are now passed to TeX and may be captured in TeX by using the `\gresetheadercapture` command. See GregorioRef for details. +- Support for half-spaces and ad-hoc spaces. Use `/0` in gabc for a half-space between notes. Use `/[factor]` (substituting a positive or negative real number for the scale factor) for an ad-hoc space whose length is `interelementspace` scaled by the desired factor. See [#736](https://github.com/gregorio-project/gregorio/issues/736). +- Support for custom length ledger lines. See GregorioRef for details (for the change request, see [#598](https://github.com/gregorio-project/gregorio/issues/598)). +- Support for a secondary clef. Use `@` to join two clefs together, as in `c1@c4`. The first clef is considered the primary one and will be used when computing an automatic custos before a clef change. See [#755](https://github.com/gregorio-project/gregorio/issues/755). +- New headers for typesetting text after `mode` above the initial: `mode` will be typeset first, using the `modeline` style, then `mode-modifier`, using the `modemodifier` style, then `mode-differentia`, using the `modedifferentia` style. See GregorioRef for details (for the change request, see [#756](https://github.com/gregorio-project/gregorio/issues/756)). +- Automatic line breaks before a `<eu>` block may be made ragged by using `\gresetbreakbeforeeuouae{ragged}`. See GregorioRef for details (for the change request, see [#764](https://github.com/gregorio-project/gregorio/issues/764)). +- Tunable spaces for bars with text underneath: `spacearoundsmallbartext`, `spacearoundminortext`, `spacearoundmaiortext`, `spacearoundfinalistext`, `spacebeforefinalfinalistext`. These are sized slightly larger than their "non-text" counterparts. See GregorioRef and [UPGRADE.md](UPGRADE.md) for details (for the change request, see [#766](https://github.com/gregorio-project/gregorio/issues/766)). +- The ability to typeset simple slurs. See GregorioRef for details (for the change request, see [#776](https://github.com/gregorio-project/gregorio/issues/776)). +- More control over the alignment of the annotation. You can now set either the first line or the last line of the annotation as the controling line with `\gresetannotationby{firstline}` and `\gresetannotationby{lastline}` respectively. Additionaly, within the line you can specify the top, baseline, or bottom of the line as the alignment point with `\gresetannotationvalign{top}`, `\gresetannotation{baseline}`, and `\gresetannotationvalgin{bottom}` respectively. Default behavior is baseline of the top line (as it was before). These alignment controls are applied before `annotationraise` is taken into account. See [#768](https://github.com/gregorio-project/gregorio/issues/768) for details. +- More control over the placement of the commentary. You can now set the amount of space between the lines of a multi-line commentary with `commentaryseparation` and the distance from the top line of the staff to the baseline of the bottom line of the commentary with `commentaryraise`. See [#662](https://github.com/gregorio-project/gregorio/issues/662) for original request. +- Styles for the annotation and the commentary. `annotation` has no default styling. `commentary` defaults to footnote sized italics. +- `\grecommentary` now takes an optional argument which will add extra space between the commentary and the score for just the next score. +- The custos can now be selectively enabled/disabled at forced line breaks by appending `+` (to enable) or `-` (to disable) after the `z` or `Z` (see [#800](https://github.com/gregorio-project/gregorio/issues/800)). +- With thanks to an anonymous contributor, the shape of the MetaPost-drawn curly brace has been improved (see [#797](https://github.com/gregorio-project/gregorio/issues/797)). + + +### Deprecated +- `initial-style` gabc header, supplanted by the `\gresetinitiallines` TeX command. +- `biginitial` style, consolidated into the `initial` style. +- `\grescorereference` + +### Removed +- `\GreSetStaffLinesFormat`, supplanted by `\grechangeformat{normalstafflines}...` +- `\greinitialformat`, if you were redefining this command, use `\grechangeformat{initial}...` instead +- `\grebiginitialformat`, if you were redefining this command, use `\grechangeformat{biginitial}...` instead +- `\gretranslationformat`, if you were redefining this command, use `\grechangeformat{translation}...` instead +- `\greabovelinestextstyle`, if you were redefining this command, use `\grechangeformat{abovelinestext}...` instead +- `\grelowchoralsignstyle`, if you were redefining this command, use `\grechangeformat{lowchoralsign}...` instead +- `\grehighchoralsignstyle`, if you were redefining this command, use `\grechangeformat{highchoralsign}...` instead +- `\setaboveinitialseparation`, supplanted by `\grechangedim{annotationseparation}...` +- `\scorereference` +- `\GreScoreReference` +- `\commentary`, supplanted by `\grecommentary` +- `\setgretranslationcenteringscheme`, supplanted by `\gresettranslationcentering` +- `\englishcentering`, supplanted by `\gresetlyriccentering{syllable}` +- `\defaultcentering`, supplanted by `\gresetlyriccentering{vowel}` +- `\setgrefactor`, supplanted by `\grechangestaffsize` +- `\forcecompilegabc`, supplanted by `\gresetcompilegabc{force}` +- `\autocompilegabc`, supplanted by `\gresetcompilegabc{auto}` +- `\nevercompilegabc`, supplanted by `\gresetcompilegabc{never}` +- `\includescore`, supplanted by `\gregorioscore` +- `\grenoscaledim`, supplanted by `\grescaledim{...}{no}` +- `\gresetdim`, supplanted by `\grecreatedim` +- `\setstafflinethickness`, supplanted by `\grechangestafflinethickness` +- `\grecoloredlines`, supplanted by `\gresetlinecolor` +- `\greredlines` and `\redlines`, supplanted by `\gresetlinecolor{gregoriocolor}` +- `\grenormallines` and `\normallines`, supplanted by `\gresetlinecolor{black}` +- `\greremovelines`, supplanted by `\gresetlines{invisible}` +- `\gredonotremovelines`, supplanted by `\gresetlines{visible}` +- `\GreHidePCLines`, supplanted by `\gresetlinesbehindpunctumcavum{invisible}` +- `\GreDontHidePCLines`, supplanted by `\gresetlinesbehindpunctumcavum{visible}` +- `\GreHideAltLines`, supplanted by `\gresetlinesbehindalteration{invisible}` +- `\GreDontHideAltLines`, supplanted by `\gresetlinesbehindalteration{visible}` +- `\gresetnlbintranslation`, supplanted by `\gresetbreakintranslation` +- `\greblockcustos`, supplanted by `\greseteolcustos{manual}` +- `\greenableeolshifts`, supplanted by `\greseteolshifts{enable}` +- `\gredisableeolshifts`, supplanted by `\greseteolshifts{disable}` +- `\GreUseNoramalHyphen`, supplanted by `\greseteolhyphen{normal}` +- `\GreUseZeroHyphen`, supplanted by `\greseteolhyphen{zero}` +- `\greremoveclef`, supplanted by `\gresetclef{invisible}` +- `\grenormalclef`, supplanted by `\gresetclef{visible}` +- `\AddHEpisemusBridges`, supplanted by `\gresethepisema{bridge}` +- `\RemoveHEpisemusBridges`, supplanted by `\gresethepisema{break}` +- `\UseAlternatePunctumCavum`, supplanted by `\gresetpunctumcavum{alternate}` +- `\UseNormalPunctumCavum`, supplanted by `\gresetpunctumcavum{normal}` +- `\clivisalignmentalways`, supplanted by `\gresetclivisalignment{always}` +- `\clivisalignmentnever`, supplanted by `\gresetclivisalignment{never}` +- `\clivisalignmentspecial`, supplanted by `\gresetclivisalignment{special}` +- `\greusedefaultstyle`, supplanted by `\gresetglyphsytle{default}` +- `\greusemedicaeastyle`, supplanted by `\gresetglyphsytle{medicaea}` +- `\greusehufnagelstyle`, supplanted by `\gresetglyphsytle{hufnagel}` +- `\greusemensuralstyle`, supplanted by `\gresetglyphsytle{mensural}` +- `\setspaceafterinitial`, supplanted by `\grechangedim{afterinitialshift}...` +- `\setspacebeforeinitial`, supplanted by `\grechangedim{beforeinitialshift}...` +- `\setinitialspacing`, supplanted by `\grechangedim{beforeinitialshift}...`, `\grechangedim{manualinitialwidth}...`, and `\grechangedime{afterinitialshift}...` +- `centering-scheme` gabc header, supplanted by `\grelyriccentering` in TeX. See GregorioRef for syntax. +- `gregoriotex-font` gabc header, supplanted by `\gresetgregoriofont` in TeX. See GregorioRef for syntax. +- The meaningless `gabc-version` header in gabc (see [#664](https://github.com/gregorio-project/gregorio/issues/664)). + + ## [4.0.1] - 2015-12-28 ### Fixed - `\greseteolcustos` now retains its setting across multiple score inclusions (see [#703](https://github.com/gregorio-project/gregorio/issues/703)). diff --git a/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md b/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md index a70eb74467f..45690814455 100644 --- a/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md +++ b/Build/source/texk/gregorio/gregorio-src/CONTRIBUTING.md @@ -4,7 +4,7 @@ You can report a bug and request a new feature on the [bug tracker](https://github.com/gregorio-project/gregorio/issues). -Please search for existing issues before reporting a new one. +Please search for existing issues before reporting a new one. Please do not use the issue tracker for personal support requests, instead use the mailing-list (https://gna.org/mail/?group=gregorio) or IRC: #gregorio on freenode. @@ -63,7 +63,7 @@ Gregorio provides an [`.editorconfig` file](../.editorconfig), using an [editorc Python files must output no error when inspected by `pylint`. -TeX code must use LuaTeX (more than TeX + eTeX + Omega + PDFTeX) primitives as much as possible, and, when not possible, use code compiling under PlainTeX. +TeX code must use LuaTeX (more than TeX + eTeX + Omega + PDFTeX) primitives as much as possible, and, when not possible, use code compiling under PlainTeX. All lines inside macro definitions must end with `%` to avoid spurious spaces. To check that no line has been forgotten, please check that `grep -nE '^( |\\(|g|e|x)def)[^%]+$' tex/*.tex tex/*.sty` returns only Lua and metapost code or other lines where `%` is not needed. ### Tests diff --git a/Build/source/texk/gregorio/gregorio-src/UPGRADE.md b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md index b227cc95f88..c24b51cd97c 100644 --- a/Build/source/texk/gregorio/gregorio-src/UPGRADE.md +++ b/Build/source/texk/gregorio/gregorio-src/UPGRADE.md @@ -2,6 +2,64 @@ This file contains instructions to upgrade to a new release of Gregorio. +## 4.1 + +### Initial handling + +Initial handling has been simplified. This deprecates the `initial-style` gabc header and the `biginitial` style. + +Rather than using the `initial-style` gabc header, set the number of lines the initial should use in Tex with the `\gresetinitiallines` command. It currently accepts 0 (for no initial), 1 (for a one-line initial), or 2 (for a two-line initial). + +As for the `biginitial` style, the intent is that the `initial` style be changed within the TeX document whenever the initial style should change, regardless of how many lines the initial requires. For example, before including a score that has a two-line initial, you would probably want to redefine the `initial` style to use a larger font. Then, before including a score which requires a one-line initial, you would then redefine the `initial` style back to what it was before. + +In order to allow a smoother transition to the new behavior, GregorioTeX will behave differently depending on whether or not deprecated usage is allowed (controlled by the `[allowdeprecated]` package option). If deprecated usage is allowed, GregorioTeX will use the deprecated `biginitial` style for big initials. If not, GregorioTeX will use the `initial` style for big initials. + +Since the `biginitial` style will disappear with Gregorio 5.0, please consider disabling deprecated usage (set `[allowdeprecated=false]` when using the `gregoriotex` package) and use the `initial` style as just described. + +### Spacing between notes + +When the next syllable starts with an alteration, the minimal space between notes of the current syllable and notes of the current syllable is handled by the new spaces `intersyllablespacenotes@alteration` and `interwordspacenotes@alteration`. Set them in your custom spacings file if needed. + +### Horizontal episemata on high and low notes + +Prior to version 4.1, Gregorio reserved space between notes at the `c` and `k` heights and their horizontal episemata for a "ledger line" that might appear between them. However, if the ledger line did not appear, the episema would appear to be too far from the note. + +Starting with version 4.1, Gregorio attempts to reduce the space between the note and its episema if it doesn't think there is a "ledger line" there. However, due to the intricacies of distances and measurement in TeX, Gregorio might guess wrong. In this case, you can override the guess by using the `[hl:n]` (for a line above the staff) and `[ll:n]` (for a line below the staff) notations in gabc. If you put a `0` for `n`, Gregorio will assume there is no ledger line, and if you put a `1` for `n`, Gregorio will assume there is a ledger line. This notation will have to be placed after every note which should be thus modified. + +Note: Using `[hl:n]` and `[ll:n]` **will not** add a ledger line if it doesn't exist or remove one if it does. It simply affects whether Gregorio will act as if one is there or not. + +If you prefer the old behavior, you may switch this off by issuing `\gresetledgerlineheuristic{disable}` in your TeX document. You may switch it back on with `\gresetledgerlineheuristic{enable}`. + +### Custos before EUOUAE blocks + +In the past, Gregorio handled the notes of an `<eu>` block like any other, which meant that a custos would appear before the `<eu>` block if it happened to start on a new line. However, the '<eu>' block is not a continuation of the melody, but rather a reminder of the ending to use for the paired psalm tone. As a result, a custos immediately before an EUOUAE block is now suppressed by default. If you desire the old behaviour, use `\greseteolcustosbeforeeuouae{auto}` in your TeX document. To once again suppress the custos, use `\greseteolcustosbeforeeuouae{suppressed}`. + +### Spacing around bars (divisio) with text underneath + +The following spaces have been added: + +- `spacearoundsmallbartext` - for the space around virgula and divisio minima with text underneath +- `spacearoundminortext` - for the space around divisio minor with text underneath +- `spacearoundmaiortext` - for the space around divisio maior with text underneath +- `spacearoundfinalistext` - for the space around divisio finalis with text underneath +- `spacebeforefinalfinalistext` - for the space before a divisio finalis at the end of a score + +By default, these are sized one half millimeter larger than their "non-text" counterparts. This may cause minor spacing changes in your existing scores. Adjust them as necessary to get the look you want. + +### Oriscus orientation + +The oriscus orientation (whether it points up or down) is now dependent on the note the follows, even if the note is not directly connected to the oriscus (as it would be in a salicus or a pressus). Appending a `<` to an unconnected oriscus in gabc will force the oriscus to point upwards and `>` will force the oriscus to point downwards. + +Prior to version 4.1, Gregorio automatically oriented the oriscus when it was within a neume, but left the orientation up the user otherwise. If you prefer this behavior, set the `oriscus-orientation` header in gabc to `legacy`. In legacy mode, the orientation of an unconnected oriscus will (by default) point downwards and may be reversed by appending `<` or `>` to the oriscus. + +### Mode number + +The style for the mode number has been bold and small capitals for a long time, but the number was rendered as upper-case Roman numerals, defeating the nuance of small capitals. As of version 4.1, Gregorio will use lower-case Roman numerals (by default) that will then appear as small capitals. This will change how the mode number appears above the initial if you have been using the `mode` header to typeset them. If you prefer the earlier appearance, use `\gresetmodenumbersystem{roman-majuscule}` in your TeX file for upper-case Roman numerals. The other options available are `roman-minuscule` (the new default), for lower-case Roman numerals, and `arabic`, for Arabic numerals. + +### Score reference macros + +If you were using `\scorereference`, `\GreScoreReference`, and/or `\grescorereference`, stop using them. If you need to capture the `manuscript-reference` header, use the new header capture feature (see GregorioRef for details). + ## 4.0 ### Font changes diff --git a/Build/source/texk/gregorio/gregorio-src/build.sh b/Build/source/texk/gregorio/gregorio-src/build.sh index 9625bc85ec3..896bcffbec1 100755 --- a/Build/source/texk/gregorio/gregorio-src/build.sh +++ b/Build/source/texk/gregorio/gregorio-src/build.sh @@ -22,6 +22,21 @@ then export CONFIG_SHELL fi +# try to find gnu make; we may need it +MAKE=make +if make -v 2>&1| grep "GNU Make" >/dev/null +then + echo "Your make is a GNU-make; I will use that" +elif gmake -v >/dev/null 2>&1 +then + MAKE=gmake + export MAKE + echo "You have a GNU-make installed as gmake; I will use that" +else + echo "I can't find a GNU-make; I'll try to use make and hope that works." + echo "If it doesn't, please install GNU-make." +fi + WARNINGS=yes MINGWCROSS=FALSE CONFHOST= @@ -32,12 +47,9 @@ OTHERARGS= FORCE_AUTORECONF= FORCE_FONTS= -CFLAGS="$CFLAGS -Wdeclaration-after-statement" - until [ -z "$1" ]; do case "$1" in --mingw ) MINGWCROSS=TRUE ;; - --warn ) WARN=TRUE ;; --host=* ) CONFHOST="$1" ;; --build=* ) CONFBUILD="$1" ;; --arch=* ) MACCROSS=TRUE; ARCH=`echo $1 | sed 's/--arch=\(.*\)/\1/' ` ;; @@ -53,14 +65,6 @@ B=build ARCHFLAGS= -if [ "$WARN" = "TRUE" ] -then - CFLAGS="-Wall -Wextra \ - -Wformat-y2k -Wno-format-extra-args\ - -Wno-format-zero-length -Wformat-nonliteral\ - -Wformat-security -Wformat=2 -Wnormalized=nfc $CFLAGS" -fi - if [ "$MINGWCROSS" = "TRUE" ] then MINGWBUILD=$HOSTTYPE-$OSTYPE @@ -78,7 +82,7 @@ then fi OLDPATH=$PATH PATH=/usr/$MINGWSTR/bin:$PATH - CFLAGS="-mtune=pentiumpro -msse2 -O2 $CFLAGS" + CFLAGS="-mtune=pentiumpro -msse2 -g -O2 $CFLAGS" LDFLAGS="-Wl,--large-address-aware $CFLAGS" ARCHFLAGS="--target=\"$MINGWSTR\" \ --with-gnu-ld \ @@ -120,14 +124,14 @@ echo "Configuring build files; options: $CONFIGURE_ARGS" echo echo "Building Gregorio; options:$MAKEOPTS" -make ${MAKEOPTS} || die "build Gregorio" +${MAKE} ${MAKEOPTS} || die "build Gregorio" echo if [ "$FORCE_FONTS" = "TRUE" -o ! -e fonts/greciliae.ttf ] then echo "Building fonts; options:$MAKEOPTS" cd fonts - make ${MAKEOPTS} fonts || die "build fonts" + ${MAKE} ${MAKEOPTS} fonts || die "build fonts" cd .. echo fi diff --git a/Build/source/texk/gregorio/gregorio-src/configure.ac b/Build/source/texk/gregorio/gregorio-src/configure.ac index 338a3cbe7dd..f7aab257a02 100644 --- a/Build/source/texk/gregorio/gregorio-src/configure.ac +++ b/Build/source/texk/gregorio/gregorio-src/configure.ac @@ -16,8 +16,8 @@ dnl dnl You should have received a copy of the GNU General Public License dnl along with Gregorio. If not, see <http://www.gnu.org/licenses/>. -AC_INIT([gregorio],[4.0.1],[gregorio-devel@gna.org]) -FILENAME_VERSION="4_0_1" +AC_INIT([gregorio],[4.1.0-beta1],[gregorio-devel@gna.org]) +FILENAME_VERSION="4_1_0-beta1" AC_SUBST(FILENAME_VERSION) MK="" AC_SUBST(MK) @@ -28,7 +28,7 @@ AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([-Wall -Wno-portability subdir-objects foreign dist-bzip2 no-dist-gzip]) -AC_PROG_CC_C89 +AC_PROG_CC dnl AM_PROG_CC_C_O is deprecated since Automake 1.14, to be removed in the future AM_PROG_CC_C_O AC_PROG_CPP @@ -38,12 +38,15 @@ AC_CHECK_TOOL([RC], [windres], [no]) AM_CONDITIONAL([HAVE_RC], [test x$RC != xno]) AX_CHECK_COMPILE_FLAG([-std=gnu89], [CFLAGS+=" -std=gnu89"]) -AX_CHECK_COMPILE_FLAG([-pedantic-errors], [CFLAGS+=" -pedantic-errors"]) +dnl until flex gets their act together, use pedantic instead of pedantic-errors +AX_CHECK_COMPILE_FLAG([-pedantic], [CFLAGS+=" -pedantic"]) +dnl AX_CHECK_COMPILE_FLAG([-pedantic-errors], [CFLAGS+=" -pedantic-errors"]) AX_CHECK_COMPILE_FLAG([-fstack-protector-strong], [CFLAGS+=" -fstack-protector-strong"]) AX_CHECK_COMPILE_FLAG([-fPIE], [CFLAGS+=" -fPIE"]) -AX_CHECK_COMPILE_FLAG([-Wformat], [CFLAGS+=" -Wformat"]) +AX_CHECK_COMPILE_FLAG([-Wformat=2], [CFLAGS+=" -Wformat=2"]) AX_CHECK_COMPILE_FLAG([-Werror=format-security], [CFLAGS+=" -Werror=format-security"]) AX_CHECK_COMPILE_FLAG([-Wstrict-prototypes], [CFLAGS+=" -Wstrict-prototypes"]) +AX_CHECK_COMPILE_FLAG([-Wdeclaration-after-statement], [CFLAGS+=" -Wdeclaration-after-statement"]) AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS+=" -Wall"]) AX_CHECK_COMPILE_FLAG([-Wextra], [CFLAGS+=" -Wextra"]) CPPFLAGS+=" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 " @@ -54,7 +57,9 @@ AX_CHECK_LINK_FLAG([-pie], [LDFLAGS+=" -pie"]) AC_HEADER_STDC -# linux has integer types in stdint.h, solaris, vms in inttypes.h +gl_FUNC_REALPATH_WORKS + +dnl linux has integer types in stdint.h, solaris, vms in inttypes.h AC_CHECK_HEADERS([stdint.h]) AC_CHECK_HEADERS([stdalign.h]) diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/Makefile.am b/Build/source/texk/gregorio/gregorio-src/contrib/Makefile.am index 86279d62983..e6f542dfec3 100644 --- a/Build/source/texk/gregorio/gregorio-src/contrib/Makefile.am +++ b/Build/source/texk/gregorio/gregorio-src/contrib/Makefile.am @@ -15,4 +15,4 @@ # You should have received a copy of the GNU General Public License # along with Gregorio. If not, see <http://www.gnu.org/licenses/>. -EXTRA_DIST = gprocess gabc.xml gabc.lang gabc.vim 900_gregorio.xml gregorio-scribus.lua gregorio.png gabc-syntax.plist README.md TeXShop system-setup.sh system-setup.bat +EXTRA_DIST = gprocess gabc.xml gabc.lang gabc.vim 900_gregorio.xml gregorio-scribus.lua gregorio.png gabc-syntax.plist README.md TeXShop system-setup.sh system-setup.bat config-texworks.command diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Info.plist b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Info.plist deleted file mode 100644 index e3b8bce04cd..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Info.plist +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>AMIsApplet</key> - <true/> - <key>AMStayOpen</key> - <false/> - <key>BuildMachineOSBuild</key> - <string>14D49</string> - <key>CFBundleDevelopmentRegion</key> - <string>English</string> - <key>CFBundleDocumentTypes</key> - <array> - <dict> - <key>CFBundleTypeExtensions</key> - <array> - <string>*</string> - </array> - <key>CFBundleTypeName</key> - <string>Automator workflow file</string> - <key>CFBundleTypeOSTypes</key> - <array> - <string>****</string> - </array> - <key>CFBundleTypeRole</key> - <string>Viewer</string> - </dict> - </array> - <key>CFBundleExecutable</key> - <string>Application Stub</string> - <key>CFBundleIconFile</key> - <string>AutomatorApplet</string> - <key>CFBundleIdentifier</key> - <string>com.apple.automator.Configure TeXShop</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>Configure TeXShop</string> - <key>CFBundlePackageType</key> - <string>APPL</string> - <key>CFBundleShortVersionString</key> - <string>1.2</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleURLTypes</key> - <array/> - <key>CFBundleVersion</key> - <string>409.2</string> - <key>DTCompiler</key> - <string>com.apple.compilers.llvm.clang.1_0</string> - <key>DTPlatformBuild</key> - <string>6D97u</string> - <key>DTPlatformVersion</key> - <string>GM</string> - <key>DTSDKBuild</key> - <string>14D42</string> - <key>DTSDKName</key> - <string>macosx10.10internal</string> - <key>DTXcode</key> - <string>0630</string> - <key>DTXcodeBuild</key> - <string>6D97u</string> - <key>LSMinimumSystemVersion</key> - <string>10.5</string> - <key>LSMinimumSystemVersionByArchitecture</key> - <dict> - <key>x86_64</key> - <string>10.6</string> - </dict> - <key>LSUIElement</key> - <true/> - <key>NSAppleScriptEnabled</key> - <string>YES</string> - <key>NSMainNibFile</key> - <string>ApplicationStub</string> - <key>NSPrincipalClass</key> - <string>NSApplication</string> - <key>NSServices</key> - <array/> - <key>UTExportedTypeDeclarations</key> - <array/> - <key>UTImportedTypeDeclarations</key> - <array/> -</dict> -</plist> diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/MacOS/Application Stub b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/MacOS/Application Stub Binary files differdeleted file mode 100644 index 5cba5b5569c..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/MacOS/Application Stub +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/AutomatorApplet.icns b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/AutomatorApplet.icns Binary files differdeleted file mode 100644 index 1e1593e8aaf..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/AutomatorApplet.icns +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Dutch.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Dutch.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index d1d3946fec5..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Dutch.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/English.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/English.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 80dce3747f0..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/English.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/French.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/French.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index de88db65ae0..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/French.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/German.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/German.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 9a210d835a8..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/German.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Italian.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Italian.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 7a78b2ea03b..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Italian.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Japanese.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Japanese.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 9703dcf05a4..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Japanese.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Spanish.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Spanish.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 9bc20f088a7..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/Spanish.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ar.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ar.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index bd164ff8d67..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ar.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ca.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ca.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index e4a0be7c24a..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ca.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/cs.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/cs.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 1d4bc4617ec..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/cs.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/da.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/da.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 59483548dee..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/da.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/el.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/el.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 68c8a8b9b66..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/el.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/es_MX.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/es_MX.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 0536c591da8..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/es_MX.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/fi.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/fi.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 8b559394d00..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/fi.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/he.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/he.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 0a8a78dabde..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/he.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hr.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hr.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 02217857418..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hr.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hu.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hu.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index ee2318940ee..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/hu.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/id.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/id.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index f5e0ac1ab0d..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/id.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ko.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ko.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index a7b39bf8c5a..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ko.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ms.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ms.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index f1ccd79b049..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ms.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/no.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/no.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index fefd799e132..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/no.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pl.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pl.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 2d3f738b72b..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pl.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index a0fd885091a..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt_PT.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt_PT.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index df40ec20a50..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/pt_PT.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ro.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ro.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index df641210966..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ro.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ru.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ru.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index b7b01428652..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/ru.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sk.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sk.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index b257fe88d07..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sk.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sv.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sv.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index f8e64aa5482..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/sv.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/th.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/th.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index e6149ef9deb..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/th.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/tr.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/tr.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index fef396d076c..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/tr.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/uk.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/uk.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 78a188987a1..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/uk.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/vi.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/vi.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index a2c647fcef3..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/vi.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_CN.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_CN.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index f361cf638f8..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_CN.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_TW.lproj/ApplicationStub.nib b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_TW.lproj/ApplicationStub.nib Binary files differdeleted file mode 100644 index 1cf50bc1cc6..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/Resources/zh_TW.lproj/ApplicationStub.nib +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/document.wflow b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/document.wflow deleted file mode 100644 index 1cf10ff6517..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/Configure TeXShop.app/Contents/document.wflow +++ /dev/null @@ -1,365 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>AMApplicationBuild</key> - <string>409.2</string> - <key>AMApplicationVersion</key> - <string>2.5</string> - <key>AMDocumentVersion</key> - <string>2</string> - <key>actions</key> - <array> - <dict> - <key>action</key> - <dict> - <key>AMAccepts</key> - <dict> - <key>Container</key> - <string>List</string> - <key>Optional</key> - <true/> - <key>Types</key> - <array> - <string>com.apple.cocoa.path</string> - </array> - </dict> - <key>AMActionVersion</key> - <string>2.1.1</string> - <key>AMApplication</key> - <array> - <string>Finder</string> - </array> - <key>AMParameterProperties</key> - <dict> - <key>itemType</key> - <dict/> - <key>predicate</key> - <dict/> - <key>searchPath</key> - <dict> - <key>isPathPopUp</key> - <true/> - <key>variableUUIDsInMenu</key> - <array/> - </dict> - </dict> - <key>AMProvides</key> - <dict> - <key>Container</key> - <string>List</string> - <key>Types</key> - <array> - <string>com.apple.cocoa.path</string> - </array> - </dict> - <key>AMRequiredResources</key> - <array/> - <key>AMSelectedInputType</key> - <string>com.apple.cocoa.path</string> - <key>AMSelectedOutputType</key> - <string>com.apple.cocoa.path</string> - <key>ActionBundlePath</key> - <string>/System/Library/Automator/Find Finder Items 2.action</string> - <key>ActionName</key> - <string>Find Finder Items</string> - <key>ActionParameters</key> - <dict> - <key>itemType</key> - <string>com.apple.cocoa.path</string> - <key>predicate</key> - <data> - YnBsaXN0MDDUAQIDBAUGbm9YJHZlcnNpb25Y - JG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGG - oK8QFgcIDxQcJicpMTU6O0BESk9QVV1iZ2lV - JG51bGzTCQoLDA0OXxAXTlNDb21wb3VuZFBy - ZWRpY2F0ZVR5cGVfEA9OU1N1YnByZWRpY2F0 - ZXNWJGNsYXNzEAGAAoAV0hALERNaTlMub2Jq - ZWN0c6ESgAOAFNQLFRYXGBkaG18QEU5TUmln - aHRFeHByZXNzaW9uXxAQTlNMZWZ0RXhwcmVz - c2lvbl8QE05TUHJlZGljYXRlT3BlcmF0b3KA - E4AOgASAEdUdHh8gCyEiIyQlWU5TT3BlcmFu - ZF5OU1NlbGVjdG9yTmFtZV8QEE5TRXhwcmVz - c2lvblR5cGVbTlNBcmd1bWVudHOABoAFEAOA - CIANXHZhbHVlRm9yS2V5OtIfCwwogAfSKiss - LVokY2xhc3NuYW1lWCRjbGFzc2VzXxAQTlNT - ZWxmRXhwcmVzc2lvbqMuLzBfEBBOU1NlbGZF - eHByZXNzaW9uXE5TRXhwcmVzc2lvblhOU09i - amVjdNIQCzI0oTOACYAM0wsfNjc4OVlOU0tl - eVBhdGiACxAKgApUbmFtZdIqKzw9XxAcTlNL - ZXlQYXRoU3BlY2lmaWVyRXhwcmVzc2lvbqM+ - PzBfEBxOU0tleVBhdGhTcGVjaWZpZXJFeHBy - ZXNzaW9uXE5TRXhwcmVzc2lvbtIqK0FCXk5T - TXV0YWJsZUFycmF5o0FDMFdOU0FycmF50ior - RUZfEBNOU0tleVBhdGhFeHByZXNzaW9upEdI - STBfEBNOU0tleVBhdGhFeHByZXNzaW9uXxAU - TlNGdW5jdGlvbkV4cHJlc3Npb25cTlNFeHBy - ZXNzaW9u00sfC0xNTl8QD05TQ29uc3RhbnRW - YWx1ZYAPEACAEF8QEkx1YUxhVGVYK3NlLmVu - Z2luZdIqK1FSXxAZTlNDb25zdGFudFZhbHVl - RXhwcmVzc2lvbqNTVDBfEBlOU0NvbnN0YW50 - VmFsdWVFeHByZXNzaW9uXE5TRXhwcmVzc2lv - btULVldYWVpNWyNcWk5TTW9kaWZpZXJYTlNO - ZWdhdGVZTlNPcHRpb25zXk5TT3BlcmF0b3JU - eXBlgBIIEATSKiteX18QG05TRXF1YWxpdHlQ - cmVkaWNhdGVPcGVyYXRvcqNgYTBfEBtOU0Vx - dWFsaXR5UHJlZGljYXRlT3BlcmF0b3JfEBNO - U1ByZWRpY2F0ZU9wZXJhdG9y0iorY2RfEBVO - U0NvbXBhcmlzb25QcmVkaWNhdGWjZWYwXxAV - TlNDb21wYXJpc29uUHJlZGljYXRlW05TUHJl - ZGljYXRl0iorQ2iiQzDSKitqa18QE05TQ29t - cG91bmRQcmVkaWNhdGWjbG0wXxATTlNDb21w - b3VuZFByZWRpY2F0ZVtOU1ByZWRpY2F0ZV8Q - D05TS2V5ZWRBcmNoaXZlctFwcVRyb290gAEA - CAARABoAIwAtADIANwBQAFYAXQB3AIkAkACS - AJQAlgCbAKYAqACqAKwAtQDJANwA8gD0APYA - +AD6AQUBDwEeATEBPQE/AUEBQwFFAUcBVAFZ - AVsBYAFrAXQBhwGLAZ4BqwG0AbkBuwG9Ab8B - xgHQAdIB1AHWAdsB4AH/AgMCIgIvAjQCQwJH - Ak8CVAJqAm8ChQKcAqkCsALCAsQCxgLIAt0C - 4gL+AwIDHgMrAzYDQQNKA1QDYwNlA2YDaANt - A4sDjwOtA8MDyAPgA+QD/AQIBA0EEAQVBCsE - LwRFBFEEYwRmBGsAAAAAAAACAQAAAAAAAABy - AAAAAAAAAAAAAAAAAAAEbQ== - </data> - <key>searchPath</key> - <string>/Users/Shared</string> - </dict> - <key>BundleIdentifier</key> - <string>com.apple.Automator.Find_Finder_Items_2</string> - <key>CFBundleVersion</key> - <string>2.1.1</string> - <key>CanShowSelectedItemsWhenRun</key> - <false/> - <key>CanShowWhenRun</key> - <true/> - <key>Category</key> - <array> - <string>AMCategoryFilesAndFolders</string> - </array> - <key>Class Name</key> - <string>Find_Finder_Items_2</string> - <key>InputUUID</key> - <string>CACAEF8E-1695-469E-9B00-400A78AE643A</string> - <key>Keywords</key> - <array/> - <key>OutputUUID</key> - <string>B91AE25A-F878-4B64-963E-0B26610470EF</string> - <key>UUID</key> - <string>E4D2579F-F34B-44EC-8212-5DFDB48C3AC8</string> - <key>UnlocalizedApplications</key> - <array> - <string>Finder</string> - </array> - <key>arguments</key> - <dict> - <key>0</key> - <dict> - <key>default value</key> - <string>com.apple.cocoa.path</string> - <key>name</key> - <string>itemType</string> - <key>required</key> - <string>0</string> - <key>type</key> - <string>0</string> - <key>uuid</key> - <string>0</string> - </dict> - <key>1</key> - <dict> - <key>default value</key> - <string></string> - <key>name</key> - <string>searchPath</string> - <key>required</key> - <string>0</string> - <key>type</key> - <string>0</string> - <key>uuid</key> - <string>1</string> - </dict> - <key>2</key> - <dict> - <key>default value</key> - <data> - </data> - <key>name</key> - <string>predicate</string> - <key>required</key> - <string>0</string> - <key>type</key> - <string>0</string> - <key>uuid</key> - <string>2</string> - </dict> - </dict> - <key>conversionLabel</key> - <integer>0</integer> - <key>isViewVisible</key> - <true/> - <key>location</key> - <string>301.500000:412.000000</string> - <key>nibPath</key> - <string>/System/Library/Automator/Find Finder Items 2.action/Contents/Resources/Base.lproj/main.nib</string> - </dict> - <key>isViewVisible</key> - <true/> - </dict> - <dict> - <key>action</key> - <dict> - <key>AMAccepts</key> - <dict> - <key>Container</key> - <string>List</string> - <key>Optional</key> - <false/> - <key>Types</key> - <array> - <string>com.apple.cocoa.path</string> - </array> - </dict> - <key>AMActionVersion</key> - <string>v.2.0.1</string> - <key>AMApplication</key> - <array> - <string>Finder</string> - </array> - <key>AMParameterProperties</key> - <dict> - <key>replaceExisting</key> - <dict/> - <key>toDirectory</key> - <dict> - <key>isPathPopUp</key> - <true/> - <key>selectedVariableUUID</key> - <string>36136622-5A18-42D0-A4E7-37F18EEA695E</string> - <key>variableUUIDsInMenu</key> - <array> - <string>36136622-5A18-42D0-A4E7-37F18EEA695E</string> - </array> - </dict> - </dict> - <key>AMProvides</key> - <dict> - <key>Container</key> - <string>List</string> - <key>Types</key> - <array> - <string>com.apple.cocoa.path</string> - </array> - </dict> - <key>ActionBundlePath</key> - <string>/System/Library/Automator/Copy Finder Items.action</string> - <key>ActionName</key> - <string>Copy Finder Items</string> - <key>ActionParameters</key> - <dict> - <key>replaceExisting</key> - <true/> - <key>toDirectory</key> - <string></string> - </dict> - <key>BundleIdentifier</key> - <string>com.apple.Automator.CopyFiles</string> - <key>CFBundleVersion</key> - <string>2.0.1</string> - <key>CanShowSelectedItemsWhenRun</key> - <true/> - <key>CanShowWhenRun</key> - <true/> - <key>Category</key> - <array> - <string>AMCategoryFilesAndFolders</string> - </array> - <key>Class Name</key> - <string>AMCopyFilesAction</string> - <key>InputUUID</key> - <string>DB1B2594-1D74-4C65-9BE5-EC9C37A0AA5A</string> - <key>Keywords</key> - <array> - <string>File</string> - <string>Copy</string> - </array> - <key>OutputUUID</key> - <string>27CB786B-CD13-4BBC-81FA-30BEACEFC499</string> - <key>UUID</key> - <string>281EB016-CA8F-441C-BCA0-3D2CF4E89114</string> - <key>UnlocalizedApplications</key> - <array> - <string>Finder</string> - </array> - <key>arguments</key> - <dict> - <key>0</key> - <dict> - <key>default value</key> - <string>~/Desktop</string> - <key>name</key> - <string>toDirectory</string> - <key>required</key> - <string>0</string> - <key>type</key> - <string>0</string> - <key>uuid</key> - <string>0</string> - </dict> - <key>1</key> - <dict> - <key>default value</key> - <false/> - <key>name</key> - <string>replaceExisting</string> - <key>required</key> - <string>0</string> - <key>type</key> - <string>0</string> - <key>uuid</key> - <string>1</string> - </dict> - </dict> - <key>conversionLabel</key> - <integer>0</integer> - <key>isViewVisible</key> - <true/> - <key>location</key> - <string>301.500000:695.000000</string> - <key>nibPath</key> - <string>/System/Library/Automator/Copy Finder Items.action/Contents/Resources/Base.lproj/main.nib</string> - </dict> - <key>isViewVisible</key> - <true/> - </dict> - </array> - <key>connectors</key> - <dict> - <key>F12D6A3B-3C4B-4667-AD73-95EC8CAACCF4</key> - <dict> - <key>from</key> - <string>E4D2579F-F34B-44EC-8212-5DFDB48C3AC8 - E4D2579F-F34B-44EC-8212-5DFDB48C3AC8</string> - <key>to</key> - <string>281EB016-CA8F-441C-BCA0-3D2CF4E89114 - 281EB016-CA8F-441C-BCA0-3D2CF4E89114</string> - </dict> - </dict> - <key>variables</key> - <array> - <dict> - <key>UUID</key> - <string>36136622-5A18-42D0-A4E7-37F18EEA695E</string> - <key>identifier</key> - <string>com.apple.Automator.Variable.Path</string> - <key>name</key> - <string>~/Library/TeXShop/Engines</string> - <key>value</key> - <string>/</string> - </dict> - </array> - <key>workflowMetaData</key> - <dict> - <key>workflowTypeIdentifier</key> - <string>com.apple.Automator.application</string> - </dict> -</dict> -</plist> diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.command b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.command new file mode 100644 index 00000000000..2d7dd523527 --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.command @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +# This script is designed to automatically configure a TeXShop distribution. +# You should be able to direct it to run by double clicking on it. + +#This trap combination allows the window to linger long enough for the user to +#inspect the output, but still get closed when all is said and done. +function quit { + read -n1 -r -p "Press any key to close window." key + osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 & +} + +trap quit EXIT + + +#Copy the engine file from its instalation directory to the TeXShop Engines directory +ENGINEDIR="$HOME/Library/TeXShop/Engines" +if [ ! -d "$ENGINEDIR" ]; then + echo "Cannot Find TeXShop configuration directory!" + echo "Please open and close TeXShop and try running this script again." + exit 1 +fi +SOURCE="/Users/Shared/Gregorio/contrib/TeXShop/LuaLaTeX+se.engine" +if [ -e "$SOURCE" ]; then + echo "Copying LuaLaTeX+se.engine into TeXShop configuration" + cp "$SOURCE" "$ENGINEDIR" +else + echo "Cannot find LuaLaTeX+se.engine" + echo "Please try running the Gregorio intaller again" + exit 1 +fi + +#Add 'gabc' to the list of file extensions which TeXShop knows +TeXShopDir=`osascript -e 'POSIX path of (path to app "TeXShop")'` + +echo "Adding gabc to list of valid extensions in TeXShop" +defaults write "$TeXShopDir/Contents/Info.plist" CFBundleDocumentTypes -array-add '<dict> +<key>CFBundleTypeExtensions</key> +<array> +<string>gabc</string> +</array> +<key>CFBundleTypeName</key> +<string>gabc</string> +<key>CFBundleTypeOSTypes</key> +<array> +<string>GABC</string> +</array> +<key>CFBundleTypeRole</key> +<string>Editor</string> +<key>LSItemContentTypes</key> +<array> +<string>com.unknown.gabc</string> +</array> +<key>LSTypeIsPackage</key> +<false/> +<key>NSDocumentClass</key> +<string>TSDocument</string> +<key>NSPersistentStoreTypeKey</key> +<string>Binary</string> +</dict>' + +echo "Adding Gregorio file extensions to appropriate preference lists" +#enable syntax coloring and the Typeset button for gabc files +defaults write TeXShop OtherTeXExtensions -array-add "gabc" + +#Add gtex and gaux to the list of aux files deleted with Trash Aux Files +defaults write TeXShop OtherTrashExtensions -array-add "gtex" +defaults write TeXShop OtherTrashExtensions -array-add "gaux" + +echo "Configuration complete" +exit 0 diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.sh b/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.sh deleted file mode 100755 index 3025c0e44e4..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/contrib/TeXShop/auto-configure.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -# This script is designed to automatically configure a TeXShop distribution. - -ENGINEDIR="$HOME/Library/TeXShop/Engines" -if [ ! -d "$ENGINEDIR" ]; then - mkdir -p "$ENGINEDIR" -fi -SOURCE="/Users/Shared/Gregorio/contrib/TeXShop/LuaLaTeX+se.engine" -if [ -e "$SOURCE" ]; then - cp "$SOURCE" "$ENGINEDIR" -else - echo "Cannot find LuaLaTeX+se.engine" - echo "Please try running the Gregorio intaller again" - exit 1 -fi -defaults write TeXShop OtherTeXExtensions -array-add "gabc" diff --git a/Build/source/texk/gregorio/gregorio-src/contrib/config-texworks.command b/Build/source/texk/gregorio/gregorio-src/contrib/config-texworks.command new file mode 100644 index 00000000000..26f9ef6825d --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/contrib/config-texworks.command @@ -0,0 +1,93 @@ +#!/usr/bin/env bash + +# This script is designed to automatically configure a TeXworks distribution. +# You can run it by double clicking on it on a Mac. +# On Linux this behavior is controlled by a preference. See http://askubuntu.com/questions/286621/how-do-i-run-executable-scripts-in-nautilus for details. +# If prompted, you need to select "Run in Terminal" to see the output. + + +#This trap combination allows the window to linger long enough for the user to +#inspect the output, but still get closed when all is said and done. +function quit { + read -n1 -r -p "Press any key to close window." key + if $mac; then + osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 & + else + exit + fi +} + +trap quit EXIT + +case "$(uname -s)" in + Darwin) + echo 'Mac OS X detected' + mac=true + ToolsDir="$HOME/Library/TeXworks" + ;; + Linux) + echo 'Linux detected' + mac=false + ToolsDir="$HOME/.TeXworks" + ;; + *) + echo 'Unsupported OS detected' + echo "Please configure TeXworks manually" + exit 1 + ;; +esac + +# Add the typesetting tool +TOOLS="$ToolsDir/configuration/tools.ini" +if [ ! -e "$TOOLS" ]; then + echo "Cannot find TeXworks configuration" + echo "Please open and close TeXworks and try running this script again" + echo "If this still does not work, then Add and Remove a dummy typesetting" + echo " tool from the Preferences dialog." + exit 1 +fi +echo "Adding LuaLaTeX+se Typesetting tool" +oldTOOLS="$TOOLS.old" +cp "$TOOLS" "$oldTOOLS" +last=`grep -E "^\[[0-9]+\]$" "$TOOLS" | tail -1` +last=${last:1:-1} +last=$(expr $last + 0) +(( last++ )) +last=`printf "%03d" $last` +last="[$last]" +echo "" >> "$TOOLS" +echo "$last" >> "$TOOLS" +echo "name=LuaLaTeX+se" >> "$TOOLS" +echo "program=lualatex" >> "$TOOLS" +echo "arguments=--shell-escape, \$synctexoption, \$fullname" >> "$TOOLS" +echo "showPdf=true" >> "$TOOLS" + +# Add the file filter and cleanup patterns to the configuration +CONFIG="$ToolsDir/configuration/texworks-config.txt" +oldCONFIG="$CONFIG.old" +mv "$CONFIG" "$oldCONFIG" +cleanup=false +echo "Adding Gregorio files to Open dialog and Trash Aux Files list" +while read line; do + if [[ $line == "# file-open-filter:"* ]]; then + line=${line:2} + fi + if [[ $line == *"Auxiliary files"* ]]; then + line="${line%?} *.gaux)" + fi + if [[ $line == *"All files"* ]]; then + echo "file-open-filter: Gabc score (*.gabc)" >> "$CONFIG" + fi + if [[ $line == "cleanup-patterns:"* ]]; then + cleanup=true + else + if $cleanup; then + echo "cleanup-patterns: \$jobname.gaux *-*_*_*.gtex" >> "$CONFIG" + cleanup=false + fi + fi + echo "$line" >> "$CONFIG" +done < "$oldCONFIG" + +echo "Configuration Complete" +exit 0 diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex index 64324d2b321..74809dcd9e3 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_User.tex @@ -165,20 +165,17 @@ switch between different behaviors: \par\medskip \gregorioscore[a]{TecumPrincipium} % gabc auto compiled. \end{latexcode} -\macroname{\textbackslash gabcsnippet}{[\optional{\#1}]\{\#2\}}{gregoriotex-main.tex} -Converts the gabc notation specified in \texttt{\#2} to Gregorio\TeX\ and -includes it directly in the document. The optional argument \texttt{[\#1]} -may be used to specify a gabc \texttt{initial-style}, which defaults to -\texttt{1}. +\macroname{\textbackslash gabcsnippet}{\{\#1\}}{gregoriotex-main.tex} +Converts the gabc notation specified in \texttt{\#1} to Gregorio\TeX\ and +includes it directly in the document. \begin{argtable} - \#1 & number & Optional. The gabc \texttt{initial-style} value to use.\\ - \#2 & string & The gabc to insert into the document.\\ + \#1 & string & The gabc to insert into the document.\\ \end{argtable} \medskip For example:\par\medskip \begin{latexcode} - \gabcsnippet[0]{(c3) Al(eg~)le(gv.fhg)lu(efe___)ia(e.) (::)} + \gabcsnippet{(c3) Al(eg~)le(gv.fhg)lu(efe___)ia(e.) (::)} \end{latexcode} @@ -323,6 +320,30 @@ necessary. \end{framed} \end{small} +\macroname{\textbackslash gresetledgerlineheuristic}{\{\#1\}}{gregoriotex-spaces.tex} +Macro which enables or disables ledger line heuristics. Currently, ledger +line heuristics allow Gregorio to reduce the space between a note and a +horizontal episema that surround a line on which a ledger line may appear +when the ledger line \textit{does not} appear. + +\begin{argtable} + \#1 & \texttt{enable} & Ledger line heuristics will be used in placing + the horizontal episema \\ + & \texttt{disable} & Ledger line heuristics will not be used in + placing the horizontal episema \\ +\end{argtable} + +Because of the complexity of computing distances exactly, the heuristic may +guess incorrectly, causing the horizontal episema to be placed incorrectly. +This may be overridden on a note-by-note basic by using the +\texttt{[hl:\textit{n}]} and \texttt{[ll:\textit{n}]} gabc directives. The +\texttt{hl} directive sets an explicit high ledger line (above the staff), +and the \texttt{ll} directive sets an explicit low ledger line (below the +staff). The \texttt{\textit{n}} should be set to indicate whether the +system should act as if the ledger line exists (\texttt{1}) or not +(\texttt{0}). + + \subsubsection{Staff Lines} \macroname{\textbackslash gresetlinecolor}{\{\#1\}}{gregoriotex.sty \textup{and} gregoriotex.tex} @@ -365,6 +386,8 @@ Set the font used for the neumes. The optional argument \texttt{[\#1]} may be used to specify an alternate font/rule set. Currently, the only available alternate font/rule set is \texttt{op} for Dominican neumes. +Note that the font will be looked up by name through luaotfload, see the documentation of luaotfload for what it implies. + \begin{argtable} \#1 & \textit{(omitted)} & Use the normal font and rule set (default).\\ & \texttt{op} & Use the alternate Dominican font/rule set.\\ @@ -373,6 +396,11 @@ available alternate font/rule set is \texttt{op} for Dominican neumes. & \texttt{parmesan} & Use the Parmesan font.\\ \end{argtable} +\macroname{\textbackslash gresetgregoriofontscaled}{[\optional{\#1}]\{\#2\}\{\#3\}}{gregoriotex-main.tex} + +This function is the same as above, with a third argument to scale the font. The fonts shipped with Gregorio do not need to use this function, but some custom fonts do. Note that you cannot use this to scale glyphs up or down, as they would not be placed correctly on the staff. + +The two first arguments are the same as \texttt{\textbackslash gresetgregoriofont}. The third argument is an integer representing the scaling factor, where the one used by \texttt{\textbackslash gresetgregoriofont} is 100000. \subsubsection{Glyph Alteration} In addition to the normal glyphs loaded by the choice of font, Gregorio\TeX\ also supports several methods for fine tuning the choice of glyphs. Using the below functions, you can choose from alternative glyphs which are already built into Gregorio\TeX\ or import custom glyphs you have designed yourself. @@ -584,6 +612,24 @@ barred symbol. \#5 & dimension & vertical shift of the bar glyph.\\ \end{argtable} +\macroname{\textbackslash gothRbar}{}{gregoriotex-symbols.tex} +Prints \gothRbar. Defined with \verb=\gredefsymbol=. + +\macroname{\textbackslash gothVbar}{}{gregoriotex-symbols.tex} +Prints \gothVbar. Defined with \verb=\gredefsymbol=. + +\macroname{\textbackslash grealtcross}{}{gregoriotex-symbols.tex} +Prints \grealtcross. Defined with \verb=\gredefsymbol=. + +\macroname{\textbackslash grecross}{}{gregoriotex-symbols.tex} +Prints \grecross. Defined with \verb=\gredefsymbol=. + +\macroname{\textbackslash greheightstar}{}{gregoriotex-symbols.tex} +Prints \greheightstar. Defined with \verb=\gredefsymbol=. + +\macroname{\textbackslash gresixstar}{}{gregoriotex-symbols.tex} +Prints \gresixstar. Defined with \verb=\gredefsymbol=. + \macroname{\textbackslash greseparator}{\{\#1\}\{\#2\}}{gregoriotex-symbols.tex} A macro for invoking one of the five separators (fancy lines) which are contained in the greextra font. @@ -611,8 +657,7 @@ Different elements of an include score have different styles applied. These ele \begin{tabular}{lp{7cm plus .5cm}r} Element Name & Description & Default\\ \hline - \stylename{initial} & Normal Initials & 40 pt font\\ - \stylename{biginitial} & Big (2-Line) Initials & 80 pt font\\ + \stylename{initial} & Score initial (the first letter of the score, when offset from the rest of the text) & 40 pt font\\ \stylename{translation} & Translation text (appears below lyrics) & {\it italics}\\ \stylename{abovelinestext} & Above line text (\texttt{<alt></alt>} in gabc, appears above the staff) & normal\\ \stylename{normalstafflines} & Full length staff lines & none\\ @@ -622,7 +667,11 @@ Different elements of an include score have different styles applied. These ele \stylename{firstsyllableinitial} & the first letter of the first syllable of a score which is not the score initial & none\\ \stylename{firstsyllable} & the first syllable of the score excluding the score initial & none\\ \stylename{firstword} & the first word of the first score excluding the score initial & none\\ + \stylename{annotation} & the annotation & none\\ + \stylename{commentary} & the commentary & {\footnotesize\it Footnote size italics}\\ \stylename{modeline} & the rendered annotation from the \texttt{mode: ;} header in the gabc file & \parbox[t]{2.2cm}{\raggedleft\textsc{\textbf{Bold Small Capitals}}}\\ + \stylename{modemodifier} & the rendered annotation from the \texttt{mode-modifier: ;} header in the gabc file & \parbox[t]{2.2cm}{\raggedleft\textit{\textbf{Bold Italics}}}\\ + \stylename{modedifferentia} & the rendered annotation from the \texttt{mode-differentia: ;} header in the gabc file & \parbox[t]{2.2cm}{\raggedleft\textbf{Bold}}\\ \stylename{nabc} & ancient notation & {\color{gregoriocolor}gregoriocolor} (\LaTeX)\\ && none (Plain \TeX)\\ \end{tabular} @@ -673,21 +722,15 @@ Macro to add annotations (the text which appears above the initial) to a score. \textbf{Nota Bene:} The first argument does not affect the alignment of lines already in the annotation, only the way the new line aligns with the existing lines as a whole. -\macroname{\textbackslash grecommentary}{\{\#1\}}{gregoriotex-main.tex} +\macroname{\textbackslash grecommentary}{[\optional{\#2}]\{\#1\}}{gregoriotex-main.tex} Macro to add commentary (the text flush right at the top, usually a scripture reference) to a score. While a single call of this function does not support multiple lines, successive calls to the function will add a new line to the commentary directly below the previous. \begin{argtable} - \#1 & string & The text of the commentary.\\ + \#1 & distance & Optional. Additional distance to be placed between the commentary and the top staff line for the next score only.\\ + \#2 & string & The text of the commentary.\\ \end{argtable} -\textbf{Nota Bene:} This command should appear directly before \verb=\gregorioscore= when used. - -\macroname{\textbackslash grescorereference}{\{\#1\}}{gregoriotex-main.tex} -Macro to hold the score reference. Currently the score reference does not print. - -\begin{argtable} - \#1 & string & The text of the score reference.\\ -\end{argtable} +\textbf{Nota Bene:} If your commentary is multi-lined, then the optional argument of the last line, and only the last line, will be taken into account. Further, pay attention to the fact that the optional argument is \emph{additional} distance, \ie, it will be added to \texttt{commentaryraise} to determine the distance from the baseline of the commentary to the top line of the staff. \macroname{\textbackslash greillumination}{\{\#1\}}{gregoriotex-main.tex} Macro to add an illuminated initial. @@ -698,6 +741,21 @@ Macro to add an illuminated initial. \textbf{Nota Bene:} Usually the argument of this command should be an \verb=\includegraphics= command, but you may use what ever you want as the illuminated initial. +\macroname{\textbackslash gresetinitiallines}{\#1}{gregoriotex-syllable.tex} +Sets the number of lines the score initial requires. + +\begin{argtable} + \#1 & number & The number of lines required by the initial. If \texttt{0}, the score will have no separated initial.\\ +\end{argtable} + +\macroname{\textbackslash gresetmodenumbersystem}{\#1}{gregoriotex-main.tex} +Sets the number system used for the mode number. + +\begin{argtable} + \#1 & \texttt{roman-minuscule} & Use lower-case Roman numerals (the default, good for small capitals).\\ + & \texttt{roman-majuscule} & Use upper-case Roman numerals.\\ + & \texttt{arabic} & Use Arabic numerals.\\ +\end{argtable} \subsubsection{Text Alignment} Gregorio\TeX\ allows you to manipulate the global alignment behavior of some text elements using the following commands. @@ -731,10 +789,36 @@ Macro to specify how the translation text should be aligned with it respective s & \texttt{center} & The translation text is centered under its respective syllable. \end{argtable} +\macroname{\textbackslash gresetannotationby}{\{\#1\}}{gregoriotex-main.tex} +Macro to specify which line of the annotation should be used to determine its starting placement (i.e. before \texttt{annotationraise} is applied). + +\begin{argtable} + \#1 & \texttt{firstline} & Annotation placement is determined by the first line (default)\\ + & \texttt{lastline} & annotation placement is determined by the last line\\ +\end{argtable} + +\macroname{\textbackslash gresetannotationvalign}{\{\#1\}}{gregoriotex-main.tex} +Macro to specify which part of the control line in the annotation should be aligned with the top line of the staff before \texttt{annotationraise} is applied. + +\begin{argtable} + \#1 & \texttt{top} & The top of the annotation control line will align with the top line of the staff\\ + & \texttt{baseline} & The baseline of the control line is used (default)\\ + & \texttt{bottom} & The bottom of the control line is used\\ +\end{argtable} + +\textbf{Nota Bene:} These variable refer to the actual contents of the line and not to the ``hypothetical'' limits for the font. As a result if the top of an annotation containing only short letters will be different from one which contains tall ones even if both use the same font. Likewise, if the annotation contains no descenders, then baseline and bottom will be the same. If this is a problem, then the use of struts within the annotation can be used to control the line height (distance from baseline to top) and depth (distance from baseline to bottom). \subsubsection{End of Line Behavior} While Gregorio\TeX\ will automatically wrap scores to fit your page, there are several ways to fine tune that line breaking behavior with the following commands. +\macroname{\textbackslash gresetbreakbeforeeuouae}{\{\#1\}}{gregoriotex-main.tex} +Macro to determine whether an automatic linebreak before a EUOUAE area is justified or not. + +\begin{argtable} + \#1 & \texttt{justified} & Automatic line breaks before EUOUAE areas should be justified (default)\\ + & \texttt{ragged} & Automatic line breaks before EUOUAE areas should be ragged\\ +\end{argtable} + \macroname{\textbackslash gresetbreakineuouae}{\{\#1\}}{gregoriotex-main.tex} Macro to determine whether line breaks are allowed inside a EUOUAE area (delimited by \texttt{<eu></eu>} tags in gabc). @@ -761,6 +845,16 @@ Macro to determine whether Gregorio\TeX\ should automatically place the custos a \textbf{Nota Bene:} This command only effects the custos that appears at the end of a line. Custos which are placed at a key change are unaffected. Further, if custos are specified in the gabc file manually and Gregorio\TeX\ is set to place custos automatically, you will get two custos at the line breaks. +\macroname{\textbackslash greseteolcustosbeforeeuouae}{\{\#1\}}{gregoriotex-main.tex} +Macro to determine whether Gregorio\TeX\ should automatically place the custos at a line break before a EUOUAE. Since the EUOUAE block is typically not a continuation of the melody but rather a reminder of the end of the tone that follows, this is set to \texttt{suppressed} (no custos) by default. + +\begin{argtable} + \#1 & \texttt{suppressed} & Custos will not automatically be placed at a line break before a EUOUAE block (the default)\\ + & \texttt{auto} & Custos will behave according to \verb=greseteolcustos= at a line break before a EUOUAE block\\ +\end{argtable} + +\textbf{Nota Bene:} If \verb=\greseteolcustos= is set to \texttt{manual}, this setting is effectively ignored. + \macroname{\textbackslash greseteolshifts}{\{\#1\}}{gregoriotex-main.tex} Macro to determine whether Gregorio\TeX\ should apply a small shift at the end of each line which allows lyrics to stretch under the final custos. @@ -786,18 +880,30 @@ Macro to determine whether the last line of the score should be justified or not \end{argtable} +\subsubsection{Bar spacing} + +\macroname{\textbackslash gresetbarshiftaftermora}{\{\#1\}}{gregoriotex-signs.tex} +Macro to change the behaviour for bars following a punctum mora. The argument changes the cases in which punctum mora are ignored in bar horizontal placement: + +\begin{argtable} + \#1 & \texttt{always} & punctum mora are always ignored (default)\\ + & \texttt{notextonly} & punctum mora are ignored in bars inside syllables, and in bars having their own syllable without text\\ + & \texttt{insideonly} & punctum mora are ignored only in bars inside syllables\\ + & \texttt{never} & punctum mora are never ignored\\ +\end{argtable} + +When a punctum mora is ignored, the bar will also be shifted by \texttt{barmoraadjustment} (zero by default), see its description in the \textbf{Distances} section. + \subsubsection{Hyphenation} \macroname{\textbackslash gresethyphen}{\{\#1\}}{gregoriotex-main.tex} -Tells Gregorio\TeX\ how to place a hyphen between syllables in polysyllabic words in a score. This is done by overriding \texttt{maximumspacewithoutdash} so subsequent changes to this dimension will override this command. +Tells Gregorio\TeX\ how to place a hyphen between syllables in polysyllabic words in a score. \begin{argtable} \#1 & \texttt{force} & Hyphens will appear between all syllables in polysyllabic words.\\ & \texttt{auto} & Hyphens will appear based on the setting of \texttt{maximumspacewithoutdash} (default) \end{argtable} -\textbf{Nota Bene:} \verb=\gresethyphen{auto}= restores \texttt{maximumspacewithoutdash} to the value found in \textit{gsp-default.tex}. If you have changed your score size, you may need to change this distance to a more appropriate value using \verb=\grechangedim=. - \macroname{\textbackslash gresetemptyfirstsyllablehyphen}{\{\#1\}}{gregoriotex-syllable.tex} Tells Gregorio\TeX\ how to place a hyphen after an empty first syllable (\ie, when the first syllable consists only of the big initial). @@ -865,6 +971,66 @@ harmonizes with the greciliae font. This macro must be redefined should a different value be desired. +\subsubsection{Headers} + +\macroname{\textbackslash gresetheadercapture}{\{\#1\}\{\#2\}\{\#3\}}{gregoriotex-main.tex} +Macro to tell Gregorio\TeX{} to capture a given header by calling a specified +macro. Passing an empty \#2 will cancel capture of the given header. + +\begin{argtable} + \#1 & string & The name of the header\\ + \#2 & string & The name of the macro to use (without the leading backslash) + or empty to stop capturing the given header\\ + \#3 & string & a comma-separated list of options\\ +\end{argtable} + +The options are: + +\begin{tabular}{ll} + \texttt{name} & The header name should also be passed to the macro\\ + \texttt{string} & The header value should be passed to the macro as a string\\ +\end{tabular} + +If the \texttt{name} option is not supplied, the macro supplied must take one +argument: the value of the header. + +If the \texttt{name} option is supplied, the macro supplied must take two +arguments: the name and the value of the header (in that order). + +If the \texttt{string} option is supplied, the value will be passed with all +non-space characters as \TeX{} catcode 12 (and all spaces as catcode 10). +If not, the value will be evaluated as \TeX{}. + +Other than the headers that define macros, which are not passed to \TeX{}, +the headers will be processed in the order they were presented in the gabc +file. Headers will be processed in the \TeX{} state at the point of the +\verb=\gregorioscore= call. This means, for example, that should the +capturing macro produce something, it will be typeset within the same +paragraph as the \verb=\gregorioscore= call. + +Gregorio will call whatever is passed to \verb=\grebeforeheaders= before +processing a given set of headers and to \verb=\greafterheaders= after +processing them. + +\macroname{\textbackslash grebeforeheaders}{\{\#1\}}{gregoriotex-main.tex} +Specifies something to be done before a set of headers is processed. +Defaults to nothing. If this is called multiple times, the most recent call +will define the behavior at the next set of headers. + +\begin{argtable} + \#1 & \TeX\ code & The code to process before a set of headers.\\ +\end{argtable} + +\macroname{\textbackslash greafterheaders}{\{\#1\}}{gregoriotex-main.tex} +Specifies something to be done after a set of headers is processed. +Defaults to nothing. If this is called multiple times, the most recent call +will define the behavior at the next set of headers. + +\begin{argtable} + \#1 & \TeX\ code & The code to process after a set of headers.\\ +\end{argtable} + + \subsubsection{Ancient Notation} For a full description of how to make use of the ancient notation capabilities of gregorio and Gregorio\TeX, look at the GregorioNabcRef documentation. The commands listed here allow the manipulation of settings related to that notation. @@ -885,237 +1051,292 @@ While it may seem strange that many of these distances are defined to 5 decimal \textbf{Nota Bene:} Because of the way Gregorio\TeX\ handles distances, these cannot be manipulated as if they were normal \TeX\ dimensions or skips. As a result they should only be changed using the command defined by Gregorio\TeX\ for this purpose. -\macroname{additionallineswidth}{}{gsp-default.tex} +\begin{gdimension}{additionallineswidth} The additional width of the additional lines (\ie, the value added to the width of the glyph with which they're associated to get the width of the line). +\end{gdimension} -Default: \unit[0.14584]{cm} - -\macroname{alterationspace}{}{gsp-default.tex} +\begin{gdimension}{alterationspace} Space between an alteration (flat or natural) and the next glyph. +\end{gdimension} -Default: \unit[0.07747]{cm} - -\macroname{beforealterationspace}{}{gsp-default.tex} +\begin{gdimension}{beforealterationspace} When beginning of line shifts (bolshifts) are enabled, minimum space between a clef at the beginning of the line and a leading alteration glyph. This distance should be larger than \texttt{clefflatspace} so that a flatted clef can be distinguished from a flat which is part of the first glyph on a line, but also smaller than \texttt{spaceafterlineclef}, the distance from the clef to the first notes. +\end{gdimension} -Default: \unit[0.1]{cm} - -\macroname{beforelowchoralsignspace}{}{gsp-default.tex} +\begin{gdimension}{beforelowchoralsignspace} Space before a low choral sign. +\end{gdimension} -Default: \unit[0.04556]{cm} plus \unit[0.00638]{cm} minus \unit[0.00638]{cm} - -\macroname{clefflatspace}{}{gsp-default.tex} +\begin{gdimension}{clefflatspace} Space between a clef and a flat (for clefs with flat). +\end{gdimension} -Default: \unit[0.05469]{cm} plus \unit[0.00638]{cm} minus \unit[0.00638]{cm} - -\macroname{interglyphspace}{}{gsp-default.tex} +\begin{gdimension}{interglyphspace} Space between glyphs in the same element. +\end{gdimension} -Default: \unit[0.06927]{cm} plus \unit[0.00363]{cm} minus \unit[0.00363]{cm} - -\macroname{zerowidthspace}{}{gsp-default.tex} +\begin{gdimension}{zerowidthspace} Null space. +\end{gdimension} -Default: \unit[0]{cm} plus \unit[0]{cm} minus \unit[0]{cm} +\begin{gdimension}{halfspace} +Half-space between elements. +\end{gdimension} -\macroname{interelementspace}{}{gsp-default.tex} +\begin{gdimension}{interelementspace} Space between elements. +\end{gdimension} -Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00363]{cm} - -\macroname{largerspace}{}{gsp-default.tex} +\begin{gdimension}{largerspace} Larger space between elements. +\end{gdimension} -Default: \unit[0.10938]{cm} plus \unit[0.01822]{cm} minus \unit[0.00911]{cm} - -\macroname{glyphspace}{}{gsp-default.tex} +\begin{gdimension}{glyphspace} Space between elements which has the size of a note. +\end{gdimension} -Default: \unit[0.21877]{cm} plus \unit[0.01822]{cm} minus \unit[0.01822]{cm} - -\macroname{intersyllablespacenotes}{}{gsp-default.tex} -Minimum space between two notes of different syllables. - -Default: \unit[0.25523]{cm} plus \unit[0.31903]{cm} minus \unit[0]{cm} - -\macroname{spacebeforeeolcustos}{}{gsp-default.tex} +\begin{gdimension}{spacebeforeeolcustos} Space before custos at the end of a line. +\end{gdimension} -Default: \unit[0.1823]{cm} plus \unit[0.31903]{cm} minus \unit[0.0638]{cm} - -\macroname{spacebeforeinlinecustos}{}{gsp-default.tex} +\begin{gdimension}{spacebeforeinlinecustos} Space before custos within a line. +\end{gdimension} -Default: \unit[0]{cm} plus \unit[0]{cm} minus \unit[0]{cm} - -\macroname{spacebeforesigns}{}{gsp-default.tex} +\begin{gdimension}{spacebeforesigns} Space before punctum mora and augmentum duplex. +\end{gdimension} -Default: \unit[0.05469]{cm} plus \unit[0.00455]{cm} minus \unit[0.00455]{cm} +\begin{gdimension}{barmoraadjustment} +When a bar is shifted left because of a preceding punctum mora, this space is +also added. Use it to make the bar a bit further from the punctum mora if you want. +\end{gdimension} -\macroname{spaceaftersigns}{}{gsp-default.tex} +\begin{gdimension}{spaceaftersigns} Space after punctum mora and augmentum duplex. +\end{gdimension} -Default: \unit[0.08203]{cm} plus \unit[0.0082]{cm} minus \unit[0.0082]{cm} - -\macroname{spaceafterlineclef}{}{gsp-default.tex} +\begin{gdimension}{spaceafterlineclef} Space after a clef at the beginning of a line. +\end{gdimension} -Default: \unit[0.27345]{cm} plus \unit[0.14584]{cm} minus \unit[0.01367]{cm} - -\macroname{interwordspacenotes}{}{gsp-default.tex} -Space after at the end of a word when the last written symbol is a note and the first is a note. +\begin{gdimension}{intersyllablespacenotes} +Minimum space between notes of different syllables. +\end{gdimension} -Default: \unit[0.29169]{cm} plus \unit[0.08751]{cm} minus \unit[0.05469]{cm} +\begin{gdimension}{interwordspacenotes} +Minimum space between notes of syllables from different words. +\end{gdimension} -\macroname{interwordspacetext}{}{gsp-default.tex} -Space after at the end of a word when the last written symbol is text and the first is text. +\begin{gdimension}{interwordspacetext} +Minimum space between texts of different words. Please keep the same \texttt{plus} and \texttt{minus} as \texttt{interwordspacenotes}. +\end{gdimension} -Default: \unit[0.22787]{cm} plus \unit[0.41019]{cm} minus \unit[0.07292]{cm} +\begin{gdimension}{interwordspacenotes@alteration} +Same as \texttt{interwordspacenotes} for the case where the second syllable starts with an alteration. +\end{gdimension} -\macroname{interwordspacenotes@euouae}{}{gsp-default.tex} -Space after at the end of a word when the last written symbol is a note and the first is a note in \texttt{euouae} blocks. +\begin{gdimension}{intersyllablespacenotes@alteration} +Same as \texttt{intersyllablespacenotes} for the case where the second syllable starts with an alteration. +\end{gdimension} -Default: \unit[0.19]{cm} plus \unit[0.1]{cm} minus \unit[0.05]{cm} +\begin{gdimension}{interwordspacenotes@euouae} +Same as \texttt{interwordspacenotes} for \texttt{euouae} blocks. +\end{gdimension} -\macroname{interwordspacetext@euouae}{}{gsp-default.tex} -Space after at the end of a word when the last written symbol is text and the first is text in \texttt{euouae} blocks. +\begin{gdimension}{interwordspacetext@euouae} +Same as \texttt{interwordspacetext} for \texttt{euouae} blocks. +\end{gdimension} -Default: \unit[0.27]{cm} plus \unit[0.1]{cm} minus \unit[0.05]{cm} - -\macroname{bitrivirspace}{}{gsp-default.tex} +\begin{gdimension}{bitrivirspace} Space between notes of a bivirga or trivirga. +\end{gdimension} -Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00546]{cm} - -\macroname{bitristrospace}{}{gsp-default.tex} +\begin{gdimension}{bitristrospace} Space between notes of a bistropha or tristrophae. +\end{gdimension} -Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00546]{cm} - -\macroname{punctuminclinatumshift}{}{gsp-default.tex} +\begin{gdimension}{punctuminclinatumshift} Space between two punctum inclinatum. +\end{gdimension} -Default: \unit[-0.03918]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm} - -\macroname{beforepunctainclinatashift}{}{gsp-default.tex} +\begin{gdimension}{beforepunctainclinatashift} Space before puncta inclinata. +\end{gdimension} -Default: \unit[0.05286]{cm} plus \unit[0.00728]{cm} minus \unit[0.00455]{cm} - -\macroname{punctuminclinatumanddebilisshift}{}{gsp-default.tex} +\begin{gdimension}{punctuminclinatumanddebilisshift} Space between a punctum inclinatum and a punctum inclinatum deminutus. +\end{gdimension} -Default: \unit[-0.02278]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm} - -\macroname{punctuminclinatumdebilisshift}{}{gsp-default.tex} +\begin{gdimension}{punctuminclinatumdebilisshift} Space between two punctum inclinatum deminutus. +\end{gdimension} -Default: \unit[-0.00728]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm} - -\macroname{punctuminclinatumbigshift}{}{gsp-default.tex} +\begin{gdimension}{punctuminclinatumbigshift} Space between puncta inclinata, larger ambitus (range=3rd). - -Default: \unit[0.07565]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm} - -\macroname{punctuminclinatummaxshift}{}{gsp-default.tex} -Space between puncta inclinata, larger ambitus (range=4th -or more?-). - -Default: \unit[0.17865]{cm} plus \unit[0.0009]{cm} minus \unit[0.0009]{cm} - -\macroname{spacearoundsmallbar}{}{gsp-default.tex} +\end{gdimension} + +\begin{gdimension}{punctuminclinatummaxshift} +Space between puncta inclinata, larger ambitus (range=4th or 5th). +\end{gdimension} + +\begin{gdimension}{ascendingpunctuminclinatumshift} +Space between two ascending puncta inclinata. +\end{gdimension} + +\begin{gdimension}{ascendingpunctuminclinatumanddebilisshift} +Space between a punctum inclinatum and a punctum inclinatum deminutus, +ascending. +\end{gdimension} + +\begin{gdimension}{ascendingpunctuminclinatumbigshift} +Space between ascending puncta inclinata, larger ambitus (range=3rd). +\end{gdimension} + +\begin{gdimension}{ascendingpunctuminclinatummaxshift} +Space between ascending puncta inclinata, larger ambitus (range=4th or 5th). +\end{gdimension} + +\begin{gdimension}{descendinginclinatumtonobarshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph one pitch +below. +\end{gdimension} + +\begin{gdimension}{descendinginclinatumtonobarbigshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph two pitches +below. +\end{gdimension} + +\begin{gdimension}{descendinginclinatumtonobarmaxshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph three or four +pitches below. +\end{gdimension} + +\begin{gdimension}{ascendinginclinatumtonobarshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph one pitch +above. +\end{gdimension} + +\begin{gdimension}{ascendinginclinatumtonobarbigshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph two pitches +above. +\end{gdimension} + +\begin{gdimension}{ascendinginclinatumtonobarmaxshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph three or four +pitches above. +\end{gdimension} + +\begin{gdimension}{ascendinginclinatumtonobarmaxshift} +Space between a punctum inclinatum and a no-bar (stemless) glyph three or four +pitches above. +\end{gdimension} + +\begin{gdimension}{spacearoundsmallbar} Space around virgula and divisio minima. +\end{gdimension} -Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm} - -\macroname{spacearoundminor}{}{gsp-default.tex} +\begin{gdimension}{spacearoundminor} Space around divisio minor. +\end{gdimension} -Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm} - -\macroname{spacearoundmaior}{}{gsp-default.tex} +\begin{gdimension}{spacearoundmaior} Space around divisio maior. +\end{gdimension} -Default: \unit[0.1823]{cm} plus \unit[0.22787]{cm} minus \unit[0.05469]{cm} - -\macroname{spacearoundfinalis}{}{gsp-default.tex} +\begin{gdimension}{spacearoundfinalis} Space around divisio finalis. +\end{gdimension} -Default: \unit[0.1823]{cm} plus \unit[0.1823]{cm} minus \unit[0.05469]{cm} - -\macroname{spacebeforefinalfinalis}{}{gsp-default.tex} +\begin{gdimension}{spacebeforefinalfinalis} A special space for finalis, for when it is the last glyph. +\end{gdimension} -Default: \unit[0.29169]{cm} plus \unit[0.07292]{cm} minus \unit[0.27345]{cm} +\begin{gdimension}{spacearoundsmallbartext} +Space around virgula and divisio minima with text underneath. +\end{gdimension} -\macroname{spacearoundclefbars}{}{gsp-default.tex} -Additional space that will appear around bars that are preceded by a custos and followed by a key. +\begin{gdimension}{spacearoundminortext} +Space around divisio minor with text underneath. +\end{gdimension} -Default: \unit[0.03645]{cm} plus \unit[0.00455]{cm} minus \unit[0.0009]{cm} +\begin{gdimension}{spacearoundmaiortext} +Space around divisio maior with text underneath. +\end{gdimension} -\macroname{textbartextspace}{}{gsp-default.tex} -Space between the text and the text of the bar. +\begin{gdimension}{spacearoundfinalistext} +Space around divisio finalis with text underneath. +\end{gdimension} -Default: \unit[0.24611]{cm} plus \unit[0.13672]{cm} minus \unit[0.04921]{cm} +\begin{gdimension}{spacebeforefinalfinalistext} +A special space for finalis with text underneath, for when it is the last glyph. +\end{gdimension} -\macroname{notebarspace}{}{gsp-default.tex} -Minimal space between a note and a bar. +\begin{gdimension}{spacearoundclefbars} +Additional space that will appear around bars that are preceded by a custos and followed by a key. +\end{gdimension} -Default: \unit[0.31903]{cm} plus \unit[0.27345]{cm} minus \unit[0.02824]{cm} +\begin{gdimension}{textbartextspace} +Space between the text and the text of the bar. +\end{gdimension} -\macroname{maximumspacewithoutdash}{}{gsp-default.tex} -Maximal space between two syllables for which we consider a dash is not needed. +\begin{gdimension}{notebarspace} +Minimal space between a note and a bar. +\end{gdimension} -Default: \unit[0.02005]{cm} +\begin{gdimension}{maximumspacewithoutdash} +Maximal space between two syllables for which we consider a dash is not needed. +\end{gdimension} -\macroname{afterclefnospace}{}{gsp-default.tex} +\begin{gdimension}{afterclefnospace} An extensible space for the beginning of lines. +\end{gdimension} -Default: \unit[0]{cm} plus \unit[0.27345]{cm} minus \unit[0]{cm} - -\macroname{additionalcustoslineswidth}{}{gsp-default.tex} +\begin{gdimension}{additionalcustoslineswidth} Width of the additional lines, used only for the custos. The width is the one for the custos at end of lines, the line for custos in the middle of a score is the same multiplied by 2. +\end{gdimension} -Default: \unit[0.09114]{cm} - -\macroname{afterinitialshift}{}{gsp-default.tex} +\begin{gdimension}{afterinitialshift} Space between the initial and the beginning of the score. +\end{gdimension} -Default: \unit[0.2457]{cm} plus \unit[0]{cm} minus \unit[0]{cm} - -\macroname{beforeinitialshift}{}{gsp-default.tex} +\begin{gdimension}{beforeinitialshift} Space between the initial and the beginning of the score. +\end{gdimension} -Default: \unit[0.2457]{cm} plus \unit[0]{cm} minus \unit[0]{cm} - -\macroname{minimalspaceatlinebeginning}{}{gsp-default.tex} +\begin{gdimension}{minimalspaceatlinebeginning} Minimal space in front of the lyrics at the beginning of a line when \texttt{bolshift}s are enabled. +\end{gdimension} -Default: \unit[1.7]{cm} - -\macroname{manualinitialwidth}{}{gsp-default.tex} +\begin{gdimension}{manualinitialwidth} Space to force the initial width to. Ignored when 0. +\end{gdimension} -Default: \unit[0]{cm} - -\macroname{annotationseparation}{}{gsp-default.tex} +\begin{gdimension}{annotationseparation} This space is the one between lines in the annotation (text above the initial). -Default: \unit[0.85]{cm} +\textbf{Nota Bene:} This is the absolute space. If the lower line contains only short letters then it will get moved up so only this space shows (not the space above the letters on a normal line plus this space). You should use struts to control the line height of the lower line if this is a problem. +\end{gdimension} -\macroname{annotationraise}{}{gsp-default.tex} -Amount to raise (positive) or lower (negative) the annotation from it's normal position (baseline of the first line aligned with the top line of the staff). +\begin{gdimension}{annotationraise} +Amount to raise (positive) or lower (negative) the annotation from its normal position (set with \verb=\gresetannotationby= and \verb=\gresetannotationvalign=). +\end{gdimension} -Default: \unit[0]{cm} +\begin{gdimension}{commentaryseparation} +This space is the one between lines in the commentary (text above the first staff line on the right). -\macroname{noclefspace}{}{gsp-default.tex} -Space at the beginning of the lines if there is no clef. +\textbf{Nota Bene:} This is the absolute space. If the lower line contains only short letters then it will get moved up so only this space shows (not the space above the letters on a normal line plus this space). You should use struts to control the line height of the lower line if this is a problem. +\end{gdimension} -Default: \unit[0.1]{cm} +\begin{gdimension}{commentaryraise} +Distance from the commentary to the top line of the staff. +\end{gdimension} -\macroname{choralsigndownshift}{}{gsp-default.tex} +\begin{gdimension}{noclefspace} +Space at the beginning of the lines if there is no clef. +\end{gdimension} + +\begin{gdimension}{choralsigndownshift} The distance to shift choral signs down. The following choral signs are shifted down: \begin{itemize} @@ -1123,83 +1344,76 @@ The distance to shift choral signs down. The following choral signs are shifted \item High choral signs which are in a space \item Low choral signs that are lower than the note which are in a space \end{itemize} +\end{gdimension} -Default: \unit[0.00911]{cm} - -\macroname{choralsignupshift}{}{gsp-default.tex} +\begin{gdimension}{choralsignupshift} The distance to shift choral signs up. The following choral signs are shifted up: \begin{itemize} \item High choral signs which are on a line \item Low choral signs that are lower than the note which are on a line \end{itemize} +\end{gdimension} -Default: \unit[0.04556]{cm} - -\macroname{translationheight}{}{gsp-default.tex} +\begin{gdimension}{translationheight} The space for the translation. +\end{gdimension} -Default: \unit[0.5]{cm} - -\macroname{spaceabovelines}{}{gsp-default.tex} +\begin{gdimension}{spaceabovelines} The space above the lines. +\end{gdimension} -Default: \unit[0.45576]{cm} plus \unit[0.36461]{cm} minus \unit[0.09114]{cm} - -\macroname{spacelinestext}{}{gsp-default.tex} +\begin{gdimension}{spacelinestext} The space between the lines and the bottom of the text. +\end{gdimension} -Default: \unit[0.60617]{cm} plus \unit[0]{cm} minus \unit[0]{cm} - -\macroname{spacebeneathtext}{}{gsp-default.tex} +\begin{gdimension}{spacebeneathtext} The space beneath the text. +\end{gdimension} -Default: \unit[0]{cm} plus \unit[0]{cm} minus \unit[0]{cm} - -\macroname{abovelinestextraise}{}{gsp-default.tex} +\begin{gdimension}{abovelinestextraise} Height of the text above the note line. +\end{gdimension} -Default: \unit[1.7]{cm} - -\macroname{abovelinestextheight}{}{gsp-default.tex} +\begin{gdimension}{abovelinestextheight} Height that is added at the top of the lines if there is text above the lines (it must be bigger than the text for it to be taken into consideration). +\end{gdimension} -Default: \unit[0.3]{cm} - -\macroname{braceshift}{}{gsp-default.tex} +\begin{gdimension}{braceshift} An additional shift you can give to the brace above the bars. +\end{gdimension} -Default: \unit[0]{cm} - -\macroname{curlybraceaccentusshift}{}{gsp-default.tex} +\begin{gdimension}{curlybraceaccentusshift} A shift you can give to the accentus above the curly brace. +\end{gdimension} -Default: $\unit[-0.05]{cm}$ - -\macroname{nabcinterelementspace}{}{gsp-default.tex} +\begin{gdimension}{nabcinterelementspace} Space between elements in ancient notation. +\end{gdimension} -Default: \unit[0.06927]{cm} plus \unit[0.00182]{cm} minus \unit[0.00363]{cm} - -\macroname{nabclargerspace}{}{gsp-default.tex} +\begin{gdimension}{nabclargerspace} Larger space between elements in ancient notation. +\end{gdimension} -Default: \unit[0.10938]{cm} plus \unit[0.01822]{cm} minus \unit[0.00911]{cm} - -\macroname{clivisalignmentmin}{}{gsp-default.tex} +\begin{gdimension}{clivisalignmentmin} When \verb=\gre@clivisalignment= is 2, this distance is the maximum length of the consonants after vowels for which the clivis will be aligned on its center. +\end{gdimension} -Default: \unit[0.3]{cm} - -\macroname{clefchangespace}{}{gsp-default.tex} +\begin{gdimension}{clefchangespace} Space around a clef change. +\end{gdimension} -Default: \unit[0.01768]{cm} plus \unit[0.00175]{cm} minus \unit[0.01768]{cm} - -\macroname{initialraise}{}{gsp-default.tex} +\begin{gdimension}{initialraise} Distance the initial will be raised above its default baseline. The default baseline for the initial coincides with the baseline for the text below the staff. +\end{gdimension} + +\begin{gdimension}{overslurshift} +Distance an over-the-notes slur will be raised above the baseline of a note at the same height. +\end{gdimension} -Default: \unit[0]{cm} +\begin{gdimension}{underslurshift} +Distance an under-the-notes slur will be raised above the baseline of a note at the same height. +\end{gdimension} \subsection{Penalties}\label{penalties} diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex index aff6c6b7ea6..5468228666e 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_gregorio.tex @@ -20,7 +20,7 @@ respecting the annotation value in the \texttt{main.tex} file. \#2 & string & Second line text to place above the initial.\\ \end{argtable} -\macroname{\textbackslash GreBeginScore}{\#1\#2\#3\#4\#5\#6}{gregoriotex-main.tex} +\macroname{\textbackslash GreBeginScore}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-main.tex} Macro to start a score. \begin{argtable} @@ -31,12 +31,19 @@ Macro to start a score. & 1 & there is a translation line somewhere in the score\\ \#5 & 0 & there is no above lines text in the score\\ & 1 & there is above lines text somewhere in the score\\ - \#6 & string & the absolute filename of the gabc file if point-and-click is enabled. + \#6 & string & the absolute filename of the gabc file if point-and-click is enabled\\ + \#7 & integer & the number of staff lines\\ \end{argtable} \macroname{\textbackslash GreEndScore}{}{gregoriotex-main.tex} Macro to end a score. +\macroname{\textbackslash GreBeginHeaders}{}{gregoriotex-main.tex} +Macro called at the beginning of a set of gabc headers. + +\macroname{\textbackslash GreEndHeaders}{}{gregoriotex-main.tex} +Macro called at the end of a set of gabc headers. + \macroname{\textbackslash GreAccentus}{\#1\#2}{gregoriotex-signs.tex} Macro for typesetting an accentus. @@ -54,12 +61,14 @@ Macro to typeset the additional line above or below the staff. \#3 & integer & Set horizontal episema (0), horizontal episema under a note (1), line at top of staff (2), line at bottom of staff (3), choral sign (4).\\ \end{argtable} -\macroname{\textbackslash GreAdjustSecondLine}{}{gregoriotex.tex} -%didn't actually find this one in gregoriotex-write.c, classified it here based on it’s related function GreAdjustThirdLine -Macro to call before first syllable, but after \verb=\GreSetInitialClef=. +\macroname{\textbackslash GreAdHocSpaceEndOfElement}{\#1\#2}{gregoriotex-main.tex} +Macro to end an element with an ad-hoc space. -\macroname{\textbackslash GreAdjustThirdLine}{}{gregoriotex-main.tex} -Macro to call during the second line. +\begin{argtable} + \#1 & float & The factor to scale the default space for use as an ad-hoc space.\\ + \#2 & \texttt{0} & Space is breakable.\\ + & \texttt{1} & Space is unbreakable.\\ +\end{argtable} \macroname{\textbackslash GreAugmentumDuplex}{\#1\#2\#3}{gregoriotex-signs.tex} Macro for typesetting an augmentum duplex (a pair of punctum mora) @@ -101,9 +110,13 @@ Macro to typeset a vertical episema on a bar. \#1 & string & Type of glyph the episema is attached to. See \nameref{EpisemaSpecial} argument for description of options.\\ \end{argtable} -\macroname{\textbackslash GreBeginEUOUAE}{}{gregoriotex-main.tex} +\macroname{\textbackslash GreBeginEUOUAE}{\#1}{gregoriotex-main.tex} Macro to mark the beginning of a EUOUAE block. Alters spacings and prohibits a line break until the end of the block. +\begin{argtable} + \#1 & integer & The identifier of the EUOUAE block.\\ +\end{argtable} + \macroname{\textbackslash GreBeginNLBArea}{\#1\#2}{gregoriotex-main.tex} Macro called at beginning of a no line break area. @@ -114,9 +127,6 @@ Macro called at beginning of a no line break area. & \texttt{1} & Call came from translation centering. \end{argtable} -\macroname{\textbackslash GreBeginNotes}{}{gregoriotex.tex} -Macro to draw the staff lines. Comes after the initial but before the clef. - \macroname{\textbackslash GreBold}{\#1}{gregoriotex.sty and gregoriotex.tex} Makes argument bold. Accesses \LaTeX\ \verb=\textbf= (\textit{gregoriotex.sty}) or Plain \TeX\ \verb=\bf= (\textit{gregoriotex.tex}) as appropriate. Corresponds to ``<b></b>'' tags in gabc. @@ -124,15 +134,18 @@ Makes argument bold. Accesses \LaTeX\ \verb=\textbf= (\textit{gregoriotex.sty}) \#1 & string & Text to be typeset in bold.\\ \end{argtable} -\macroname{\textbackslash GreChangeClef}{\#1\#2\#3\#4}{gregoriotex-signs.tex} +\macroname{\textbackslash GreChangeClef}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex} Macro called when key changes \begin{argtable} \#1 & character & Type of new clef (c or f).\\ - \#2 & integer & Line of new clef.\\ + \#2 & \texttt{1}--\texttt{5} & Line of new clef.\\ \#3 & \texttt{0} & Print space before clef.\\ & \texttt{1} & Do not print space before clef.\\ - \#4 & integer & Height number of flat in key (\texttt{0} for no flat).\\ + \#4 & integer & Height number of flat in clef (\texttt{3} for no flat).\\ + \#5 & \texttt{c} or \texttt{f} & Type of secondary clef.\\ + \#6 & \texttt{0}--\texttt{5} & Line of secondary clef (\texttt{0} for no secondary clef).\\ + \#7 & integer & Height of flat in secondary clef (\texttt{3} for no flat).\\ \end{argtable} \macroname{\textbackslash GreCirculus}{\#1\#2}{gregoriotex-signs.tex} @@ -177,42 +190,72 @@ A Gregorio\TeX-specific discretionary. Currently only used to avoid clef change \#3 & \TeX\ code & Third argument of resulting \verb=\discretionary=.\\ \end{argtable} -\macroname{\textbackslash GreDivisioFinalis}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreDivisioFinalis}{\#1\#2}{gregoriotex-signs.tex} Macro to typeset a divisio finalis. \begin{argtable} - \#1 & \TeX\ code & Macros which may happen before the skip but after the divisio finalis (typically \verb=\grevepisema=).\\ + \#1 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#2 & \TeX\ code & Macros which may happen before the skip but after the divisio finalis (typically \verb=\grevepisema=).\\ \end{argtable} -\macroname{\textbackslash GreDivisioMaior}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreDivisioMaior}{\#1\#2}{gregoriotex-signs.tex} Macro to typeset a divisio maior. \begin{argtable} - \#1 & \TeX\ code & Macros which may happen before the skip but after the divisio maior (typically \verb=\grevepisema=).\\ + \#1 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#2 & \TeX\ code & Macros which may happen before the skip but after the divisio maior (typically \verb=\grevepisema=).\\ \end{argtable} -\macroname{\textbackslash GreDivisioMinima}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreDivisioMinima}{\#1\#2}{gregoriotex-signs.tex} Macro to typeset a divisio minima. \begin{argtable} - \#1 & \TeX\ code & Macros which may happen before the skip but after the divisio minima (typically \verb=\grevepisema=).\\ + \#1 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#2 & \TeX\ code & Macros which may happen before the skip but after the divisio minima (typically \verb=\grevepisema=).\\ \end{argtable} -\macroname{\textbackslash GreDivisioMinor}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreDivisioMinor}{\#1\#2}{gregoriotex-signs.tex} Macro to typeset a divisio minor. \begin{argtable} - \#1 & \TeX\ code & Macros which may happen before the skip but after the divisio minor (typically \verb=\grevepisema=).\\ + \#1 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#2 & \TeX\ code & Macros which may happen before the skip but after the divisio minor (typically \verb=\grevepisema=).\\ \end{argtable} -\macroname{\textbackslash GreDominica}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash GreDominica}{\#1\#2\#3}{gregoriotex-signs.tex} Macro to typeset a dominican bar. \begin{argtable} - \#1 & \texttt{1}--\texttt{6} & Type of dominican bar. Corresponds to bar types 6--11 in \verb=\grewritebar=.\\ - \#2 & \TeX\ code & Macros which may happen before the skip but after the divisio dominica (typically \verb=\grevepisema=).\\ + \#1 & \texttt{1}--\texttt{6} & Type of dominican bar. Corresponds to bar types 6--13 in \verb=\grewritebar=.\\ + \#2 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#3 & \TeX\ code & Macros which may happen before the skip but after the divisio dominica (typically \verb=\grevepisema=).\\ \end{argtable} +\macroname{\textbackslash GreDrawAdditionalLine}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Macro to draw ledger lines. + +\begin{argtable} + \#1 & \texttt{0} & Draw an over-the-staff ledger line. \\ + & \texttt{1} & Draw an under-the-staff ledger line. \\ + \#2 & distance & The length of the line, with TeX units, excluding any left or right distances coming from the rest of the arguments. \\ + \#3 & \texttt{0} & Start the line at this point. \\ + & \texttt{1} & Start the line to the left of this point by \verb=gre@dimen@additionallineswidth=. \\ + & \texttt{2} & Start the line to the left of this point by \#4. \\ + \#4 & distance & The distance to move left before starting the line if \#3 is \texttt{2}. \\ + \#5 & \texttt{0} & End the line exactly \#2 to the right of this point. \\ + & \texttt{1} & End the line \verb=gre@dimen@additionallineswidth= to the right of \#2 from this point. \\ + & \texttt{2} & End the line \#6 to the right of \#2 from this point. \\ + \#6 & distance & The distance to end the line after \#2 from this point if \#3 is \texttt{2}. \\ +\end{argtable} + +\macroname{\textbackslash GreEmptyFirstSyllableHyphen}{}{gregoriotex-syllable.tex} +Macro that indicates the position of an empty-first-syllable hyphen, should one be desired. + \macroname{\textbackslash GreEndEUOUAE}{\#1}{gregoriotex-main.tex} Macro to mark the end of a EUOUAE block. @@ -231,6 +274,7 @@ Macro to end elements. & \texttt{1} & Larger space.\\ & \texttt{2} & Glyph space.\\ & \texttt{3} & Zero-width space.\\ + & \texttt{4} & Ad-hoc space.\\ \#2 & \texttt{0} & Space is breakable.\\ & \texttt{1} & Space is unbreakable.\\ \end{argtable} @@ -254,15 +298,26 @@ Macro to end a glyph without ending the element. \#1 & \texttt{0} & Default space.\\ & \texttt{1} & Zero-width space.\\ & \texttt{2} & Space between flat or natural and a note.\\ - & \texttt{3} & Space between two puncta inclinata.\\ + & \texttt{3} & Space between two puncta inclinata, descending.\\ & \texttt{4} & Space between bivirga or trivirga.\\ & \texttt{5} & space between bistropha or tristropha.\\ & \texttt{6} & Space after a punctum mora XXX: not used yet, not so sure it is a good idea\ldots\\ - & \texttt{7} & Space between a punctum inclinatum and a punctum inclinatum debilis.\\ + & \texttt{7} & Space between a punctum inclinatum and a punctum inclinatum debilis, descending.\\ & \texttt{8} & Space between two puncta inclinata debilis.\\ & \texttt{9} & Space before a punctum (or something else) and a punctum inclinatum.\\ - & \texttt{10} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\ - & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).\\ + & \texttt{10} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd), descending.\\ + & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or 5th), descending.\\ + & \texttt{12} & Space between two puncta inclinata, ascending. \\ + & \texttt{13} & Space between a punctum inclinatum and a punctum inclinatum debilis, ascending. \\ + & \texttt{14} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd), ascending. \\ + & \texttt{15} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or 5th), ascending. \\ + & \texttt{16} & Space between a punctum inclinatum and a ``no-bar'' glyph one pitch below. \\ + & \texttt{17} & Space between a punctum inclinatum and a ``no-bar'' glyph two pitches below. \\ + & \texttt{18} & Space between a punctum inclinatum and a ``no-bar'' glyph three or four pitches below \\ + & \texttt{19} & Space between a punctum inclinatum and a ``no-bar'' glyph one pitch above. \\ + & \texttt{20} & Space between a punctum inclinatum and a ``no-bar'' glyph two pitches above. \\ + & \texttt{21} & Space between a punctum inclinatum and a ``no-bar'' glyph three or four pitches above \\ + & \texttt{22} & Half-space. \\ \end{argtable} \macroname{\textbackslash GreFinalCustos}{\#1}{gregoriotex-signs.tex} @@ -321,18 +376,24 @@ many syllables are in the word. \#1 & string & Text from the first word. \end{argtable} -\macroname{\textbackslash GreFlat}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash GreFlat}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex} Macro to typeset a flat. \begin{argtable} \#1 & integer & Height number of the flat.\\ \#2 & \texttt{0} & No flat for a key change.\\ & \texttt{1} & Indicates the flat for a key change.\\ + \#3 & \TeX\ code & signs to typeset before the glyph (typically additional bars, as they must be "behind" the glyph)\\ + \#4 & \TeX\ code & signs to typeset after the glyph (almost all signs)\\ + \#5 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled\\ \end{argtable} \macroname{\textbackslash GreForceHyphen}{}{gregoriotex-syllable.tex} Macro that indicates that a hyphen should be forced (if enabled) after the given syllable. +\macroname{\textbackslash GreFuse}{}{gregoriotex-main.tex} +Macro used between two fused glyphs. + \macroname{\textbackslash GreFuseTwo}{\#1\#2}{gregoriotex-main.tex} Macro for fusing two glyphs to create a larger neume. @@ -379,7 +440,15 @@ therefore compatible with the score. \#1 & string & Version number for Gregorio\TeX.\\ \end{argtable} -\macroname{\textbackslash GreHEpisema}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +\macroname{\textbackslash GreHeader}{\#1\#2}{gregoriotex-main.tex} +Macro used to pass headers to TeX. + +\begin{argtable} + \#1 & string & The header name.\\ + \#2 & string & The header value.\\ +\end{argtable} + +\macroname{\textbackslash GreHEpisema}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex} Macro to typeset an horizontal episema. \begin{argtable} @@ -397,9 +466,10 @@ Macro to typeset an horizontal episema. & \texttt{c} & a small episema aligned center\\ & \texttt{r} & a small episema aligned right\\ \#6 & integer & Replacement for \#1 if a bridge causes a height substitution.\\ + \#7 & \TeX\ code & code that sets heuristics\\ \end{argtable} -\macroname{\textbackslash GreHEpisemaBridge}{\#1\#2\#3}{gregoriotex-signs.tex} +\macroname{\textbackslash GreHEpisemaBridge}{\#1\#2\#3\#4}{gregoriotex-signs.tex} Macro to typeset a bridge episema for the last note of a glyph (element, syllable) if the next episema is at the same height. @@ -418,7 +488,8 @@ Macro to typeset a bridge episema for the last note of a glyph & \texttt{8} & Space between two puncta inclinata debilis.\\ & \texttt{9} & Space before a punctum (or something else) and a punctum inclinatum.\\ & \texttt{10} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\ - & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more). + & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).\\ + \#4 & \TeX\ code & code that sets heuristics\\ \end{argtable} \macroname{\textbackslash GreHighChoralSign}{\#1\#2\#3}{gregoriotex-signs.tex} @@ -434,19 +505,19 @@ Macro for typesetting high choral signs. \macroname{\textbackslash GreHyph}{}{gregoriotex-main.tex} Macro used for end of line hyphens. Defaults to \verb=\gre@char@normalhyph=. -\macroname{\textbackslash GreInDivisioFinalis}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreInDivisioFinalis}{\#1\#2}{gregoriotex-signs.tex} Same as \verb=\GreDivisioFinalis= except inside a syllable. -\macroname{\textbackslash GreInDivisioMaior}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreInDivisioMaior}{\#1\#2}{gregoriotex-signs.tex} Same as \verb=\GreDivisioMaior= except inside a syllable. -\macroname{\textbackslash GreInDivisioMinima}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreInDivisioMinima}{\#1\#2}{gregoriotex-signs.tex} Same as \verb=\GreDivisioMinima= except inside a syllable. -\macroname{\textbackslash GreInDivisioMinor}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreInDivisioMinor}{\#1\#2}{gregoriotex-signs.tex} Same as \verb=\GreDivisioMinor= except inside a syllable. -\macroname{\textbackslash GreInDominica}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash GreInDominica}{\#1\#2\#3}{gregoriotex-signs.tex} Same as \verb=\GreDominica= except inside a syllable. \macroname{\textbackslash GreInVirgula}{\#1\#2}{gregoriotex-signs.tex} @@ -498,7 +569,7 @@ Macro for typesetting low choral signs. & \texttt{1} & Choral sign occurs before last note of podatus, porrectus, or torculus resupinus.\\ \end{argtable} -\macroname{\textbackslash GreMode}{\#1}{gregoriotex-main.tex} +\macroname{\textbackslash GreMode}{\#1\#2\#3}{gregoriotex-main.tex} If the gabc file contains a mode in the header, then this function places said mode as the first (top) annotation. If the user has manually added a first annotation in the \TeX\ file, then this @@ -506,16 +577,21 @@ function does nothing. Also, if the \texttt{annotation} header field is used, then this function does nothing. \begin{argtable} - \#1 & \texttt{1}--\texttt{8} & The mode. Other values are ignored.\\ + \#1 & \TeX\ code & Mode text to place above the initial of a score in the \texttt{modeline} style.\\ + \#2 & \TeX\ code & Arbitrary code to typeset, in the \texttt{modemodifier} style, after the mode text.\\ + \#3 & \TeX\ code & Arbitrary code to typeset, in the \texttt{modedifferentia} style, after \#2.\\ \end{argtable} -\macroname{\textbackslash GreNatural}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash GreNatural}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex} Macro to typeset a natural. \begin{argtable} \#1 & integer & Height number of the natural.\\ \#2 & \texttt{0} & No flat for a key change.\\ & \texttt{1} & Indicates the flat for a key change.\\ + \#3 & \TeX\ code & signs to typeset before the glyph (typically additional bars, as they must be "behind" the glyph)\\ + \#4 & \TeX\ code & signs to typeset after the glyph (almost all signs)\\ + \#5 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled\\ \end{argtable} \macroname{\textbackslash GreNewLine}{}{gregoriotex-main.tex} @@ -532,8 +608,48 @@ where this macro is called. \#1 & integer & Height number of the custos.\\ \end{argtable} -\macroname{\textbackslash GreNoInitial}{}{gregoriotex-main.tex} -Macro called when no initial is being set. +\macroname{\textbackslash GreNextSyllableBeginsEUOUAE}{\#1}{gregoriotex-syllable.tex} +Indicates that the syllable which follows begins a EUOUAE block. + +\begin{argtable} + \#1 & integer & The identifier of the EUOUAE block.\\ +\end{argtable} + +\macroname{\textbackslash GreOriscusCavum}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Macro to typeset an oriscus cavum (the oriscus points at a higher note). + +\begin{argtable} + \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\ + \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\ + \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\ + \#4 & \TeX\ code & Macros executed before the oriscus cavum is written.\\ + \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\ + \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled. +\end{argtable} + +\macroname{\textbackslash GreOriscusCavumAuctus}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Macro to typeset a reverse oriscus cavum (the oriscus points at a lower note). + +\begin{argtable} + \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\ + \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\ + \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\ + \#4 & \TeX\ code & Macros executed before the oriscus cavum is written.\\ + \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\ + \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled. +\end{argtable} + +\macroname{\textbackslash GreOriscusCavumDeminutus}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Macro to typeset a reverse oriscus cavum with a deminutus tail. + +\begin{argtable} + \#1 & length & Argument \#2 from \verb=\GreGlyph=. Height to raise the glyph.\\ + \#2 & length & Argument \#3 from \verb=\GreGlyph=. Height of the next note.\\ + \#3 & integer & Argument \#4 from \verb=\GreGlyph=. The type of glyph.\\ + \#4 & \TeX\ code & Macros executed before the oriscus cavum is written.\\ + \#5 & character & Argument \#5 from \verb=\GreGlyph=. The signs to typeset before the glyph.\\ + \#6 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled. +\end{argtable} \macroname{\textbackslash GreOverBrace}{\#1\#2\#3\#4}{gregoriotex-signs.tex} Macro to typeset a round brace above the lines. @@ -625,8 +741,16 @@ Macro for typesetting a reversed semicirculus. \#2 & string & Type of glyph the semicirculus is attached to. See \nameref{EpisemaSpecial} argument for description of options.\\ \end{argtable} -\macroname{\textbackslash GreScoreReference}{\#1}{gregoriotex-main.tex} -Currently does nothing. +\macroname{\textbackslash GreScoreOpening}{\#1\#2\#3\#4\#5}{gregoriotex-syllable.tex} +Opens the score. + +\begin{argtable} + \#1 & \TeX\ code & Macros rendering the things after the initial but before the notes.\\ + \#2 & \TeX\ code & Macros rendering the things after starting notes but before the syllable.\\ + \#3 & \TeX\ code & Macros rendering the things before the initial.\\ + \#4 & \TeX\ control sequence & Control sequence for the syllable.\\ + \#5 & \TeX\ code & Macros rendering the first syllable; should emit the initial and populate \verb=\gre@opening@syllabletext=.\\ +\end{argtable} \macroname{\textbackslash GreSemicirculus}{\#1\#2}{gregoriotex-signs.tex} Macro for typesetting a semicirculus. @@ -636,8 +760,17 @@ Macro for typesetting a semicirculus. \#2 & string & Type of glyph the semicirculus is attached to. See \nameref{EpisemaSpecial} argument for description of options.\\ \end{argtable} -\macroname{\textbackslash GreSetBigInitial}{}{gregoriotex-main.tex} -Macro which indicates that a 2-line initial is desired. +\macroname{\textbackslash GreSetFirstSyllableText}{\#1\#2\#3\#4\#5\#6}{gregoriotex-syllable.tex} +Sets the first syllable text. + +\begin{argtable} + \#1 & \TeX\ code & Initial.\\ + \#2 & \TeX\ code & First letter after the initial.\\ + \#3 & \TeX\ code & Everything else in the syllable.\\ + \#4 & \TeX\ code & Three syllable parts when there is a separated initial.\\ + \#5 & \TeX\ code & Three syllable parts where there is no separated initial.\\ + \#6 & \TeX\ code & Extra macros to run if there is an initial.\\ +\end{argtable} \macroname{\textbackslash GreSetFixedNextTextFormat}{\#1}{gregoriotex-syllable.tex} Same as \verb=\GreSetFixedTextFormat= except for next syllable. @@ -669,31 +802,34 @@ ligatures. In this example we should call \verb=\grefixedtext{\textit{ffj}}=. & \texttt{5} & underline \end{argtable} -\macroname{\textbackslash GreSetInitial}{\#1}{gregoriotex-main.tex} -Macro to set the initial in the score. - \begin{argtable} \#1 & character & The initial letter of the score.\\ \end{argtable} -\macroname{\textbackslash GreSetInitialClef}{\#1\#2\#3}{gregoriotex-signs.tex} -Macro for writing initial key. +\macroname{\textbackslash GreSetInitialClef}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Macro for writing initial clef. \begin{argtable} \#1 & \texttt{c} or \texttt{f} & Type of clef.\\ - \#2 & \texttt{1}--\texttt{4} & Line of key.\\ - \#3 & integer & Height number of flat in key (\texttt{0} for no flat).\\ + \#2 & \texttt{1}--\texttt{5} & Line of clef.\\ + \#3 & integer & Height number of flat in clef (\texttt{3} for no flat).\\ + \#4 & \texttt{c} or \texttt{f} & Type of secondary clef.\\ + \#5 & \texttt{0}--\texttt{5} & Line of secondary clef (\texttt{0} for no secondary clef).\\ + \#6 & integer & Height of flat in secondary clef (\texttt{3} for no flat).\\ \end{argtable} -\macroname{\textbackslash GreSetLinesClef}{\#1\#2\#3\#4}{gregoriotex-main.tex} +\macroname{\textbackslash GreSetLinesClef}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-main.tex} Macro to define the clef that will appear at the beginning of the lines. \begin{argtable} \#1 & \texttt{c} or \texttt{f} & Type of clef.\\ - \#2 & \texttt{1}--\texttt{4} & Line of key.\\ + \#2 & \texttt{1}--\texttt{5} & Line of clef.\\ \#3 & \texttt{0} & No space after clef.\\ & \texttt{1} & Space after clef.\\ - \#4 & integer & Height of flat in key (\texttt{0} for no flat).\\ + \#4 & integer & Height of flat in clef (\texttt{3} for no flat).\\ + \#5 & \texttt{c} or \texttt{f} & Type of secondary clef.\\ + \#6 & \texttt{0}--\texttt{5} & Line of secondary clef (\texttt{0} for no secondary clef).\\ + \#7 & integer & Height of flat in secondary clef (\texttt{3} for no flat).\\ \end{argtable} \macroname{\textbackslash GreSetNextSyllable}{\#1\#2\#3}{gregoriotex-syllable.tex} @@ -705,6 +841,9 @@ Macro to set the text of the next syllable for spacing purposes. \#3 & string & the end letters, they don't count for alignment\\ \end{argtable} +\macroname{\textbackslash GreSetNoFirstSyllableText}{}{gregoriotex-syllable.tex} +Macro that indicates there is no next in the first syllable. + \macroname{\textbackslash GreSetTextAboveLines}{\#1}{gregoriotex-main.tex} Macro to place argument above the lines and empty \verb=\gre@currenttextabovelines= when done. @@ -722,13 +861,16 @@ Macro to set the text of the current syllable. \#3 & string & the end letters, they don't count for alignment\\ \end{argtable} -\macroname{\textbackslash GreSharp}{\#1\#2}{gregoriotex-signs.tex} +\macroname{\textbackslash GreSharp}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex} Macro to typeset a sharp. \begin{argtable} \#1 & integer & Height number of the sharp.\\ \#2 & \texttt{0} & No flat for a key change.\\ & \texttt{1} & Indicates the flat for a key change.\\ + \#3 & \TeX\ code & signs to typeset before the glyph (typically additional bars, as they must be "behind" the glyph)\\ + \#4 & \TeX\ code & signs to typeset after the glyph (almost all signs)\\ + \#5 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled\\ \end{argtable} \macroname{\textbackslash GreSmallCaps}{\#1}{gregoriotex.sty and gregoriotex.tex} @@ -740,9 +882,30 @@ in gabc. \#1 & string & Text to be typeset in small caps font.\\ \end{argtable} +\macroname{\textbackslash GreSlur}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Typesets a slur. + +\begin{argtable} + \#1 & integer & Height number of the pitch.\\ + \#2 & \texttt{-1} & The slur should appear under the note.\\ + & \texttt{1} & The slur should appear over the note.\\ + \#3 & \texttt{0} & The slur should start at the right end of the note.\\ + & \texttt{1} & The slur should start at one punctum's width to the left of the right end of the note.\\ + & \texttt{2} & The slur should start at one-half punctum's width to the left of the right end of the note.\\ + \#4 & string & The horizontal dimension of the slur.\\ + \#5 & string & The vertical dimension of the slur.\\ + \#6 & integer & Height number of the pitch.\\ +\end{argtable} + \macroname{\textbackslash GreStar}{}{gregoriotex-symbol.tex} Macro to typeset an asterisk (\GreStar). +\macroname{\textbackslash GreSupposeHighLedgerLine}{}{gregoriotex-spaces.tex} +Indicates that the system should act as if a ledger line exists above the staff. + +\macroname{\textbackslash GreSupposeLowLedgerLine}{}{gregoriotex-spaces.tex} +Indicates that the system should act as if a ledger line exists below the staff. + \macroname{\textbackslash GreSyllable}{\#1\#2\#3\#4\#5\#6\#7\#8\#9}{gregoriotex-syllable.tex} Macro to typeset the syllable. @@ -799,20 +962,29 @@ Returns its argument as-is. \#1 & string & Text to typeset without any extra styling.\\ \end{argtable} +\macroname{\textbackslash GreUpcomingNewLineForcesCustos}{\#1}{gregoriotex-syllable.tex} +Indicates that the new line in the next syllable forces a custos. + +\begin{argtable} + \#1 & \texttt{0} & The custos is forced off.\\ + & \texttt{1} & The custos is forced on.\\ +\end{argtable} + \macroname{\textbackslash GreVarBraceLength}{\#1}{gregoriotex-signs.tex} -Returns the computed length of the given brace. +Returns the computed length of the given brace or ledger line. \begin{argtable} \#1 & string & unique identifier for the brace within the score. \end{argtable} \macroname{\textbackslash GreVarBraceSavePos}{\#1\#2\#3}{gregoriotex-signs.tex} -Records positions to compute the lengths of variable-sized braces. +Records positions to compute the lengths of variable-sized braces and ledger lines. \begin{argtable} \#1 & string & unique identifier for the brace within the score.\\ \#2 & \texttt{0} & Don't shift before recording the position.\\ & \texttt{1} & Shift back a punctum's width before recording the position.\\ + & \texttt{2} & Shift back one-half a punctum's width before recording the position.\\ \#3 & \texttt{1} & Position to save is the start of brace.\\ & \texttt{2} & Position to save is the end of brace. \end{argtable} @@ -825,11 +997,13 @@ Macro for typesetting the vertical episema. \#2 & string & Type of glyph the episema is attached to. See \nameref{EpisemaSpecial} argument for description of options.\\ \end{argtable} -\macroname{\textbackslash GreVirgula}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash GreVirgula}{\#1\#2}{gregoriotex-signs.tex} Macro to typeset a virgula. \begin{argtable} - \#1 & code & Macros which may happen before the skip but after the virgula (typically \verb=\grevepisema=).\\ + \#1 & \texttt{0} & There is no text under the bar.\\ + & \texttt{1} & There is text under the bar.\\ + \#2 & code & Macros which may happen before the skip but after the virgula (typically \verb=\grevepisema=).\\ \end{argtable} \macroname{\textbackslash GreWriteTranslation}{\#1}{gregoriotex-main.tex} @@ -883,6 +1057,14 @@ Macro which sets the number of \texttt{nabc} lines in the score. \#1 & integer & the number of \texttt{nabc} lines (currently only 1 is supported)\\ \end{argtable} + +\macroname{\textbackslash GreModeNumber}{\#1}{gregoriotex-main.tex} +Macro which formats the mode in roman or arabic numerals according to the appropriate setting. + +\begin{argtable} + \#1 & \texttt{1}--\texttt{8} & The mode to be formated\\ +\end{argtable} + %%% Local Variables: %%% mode: latex %%% TeX-master: "GregorioRef" diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex index 498c940dbdf..80370990ddc 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Command_Index_internal.tex @@ -86,6 +86,9 @@ Macro for calculating \verb=\gre@textaligncenter=. \macroname{\textbackslash gre@calculate@annotationtrueraise}{}{gregoriotex-spaces.tex} Macro to calculate \verb=\gre@dimen@annotationtrueraise=. +\macroname{\textbackslash gre@calculate@commentarytrueraise}{}{gregoriotex-spaces.tex} +Macro to calculate \verb=\gre@dimen@commentarytrueraise=. + \macroname{\textbackslash gre@calculate@textlower}{}{gregoriotex-spaces.tex} Calculates the value of \texttt{textlower}. Default is \texttt{spacebeneathtext}. @@ -114,7 +117,7 @@ Calculates the baseline correction for the glyphs. Dependent on \texttt{gre@fac Aggregates all of the global distance calculations and calls them in the order needed to respect dependencies. \macroname{\textbackslash gre@calculate@glyphraisevalue}{\#1\#2}{gregoriotex-spaces.tex} -Calculates the raise values for a glyph (glyphraisevalue and addedraisevalue) based on where it is to be placed and what kind of a glyph it is. This is a time of use calculation. +Calculates the raise value for a glyph (glyphraisevalue) based on where it is to be placed and what kind of a glyph it is. This is a time of use calculation. \begin{argtable} \#1 & integer & The number for where the glyph is located. \texttt{a} in gabc is \texttt{1}, \texttt{b} is \texttt{2}, \etc\\ @@ -130,7 +133,10 @@ Calculates the raise values for a glyph (glyphraisevalue and addedraisevalue) ba & \texttt{10} & case of the low choral sign\\ & \texttt{11} & case of the high choral sign\\ & \texttt{12} & case of the low choral sign which is lower than the note\\ - & \texttt{13} & case of the brace above the bars + & \texttt{13} & case of the brace above the bars\\ + & \texttt{14} & case of the punctum mora in a space with a note on the line below it\\ + & \texttt{15} & case of the over-the-notes slur\\ + & \texttt{16} & case of the under-the-notes slur\\ \end{argtable} \macroname{\textbackslash gre@stafflinefactor}{}{gregoriotex-spaces.tex} @@ -187,27 +193,21 @@ Macro to calculate \texttt{nextbegindifference}. & $40 \le$ integer $\le 59$ & Same as below 20 except there is a natural before the notes. Subtract 40 to get the type of notes alignment. \end{argtable} -\macroname{\textbackslash gre@makein}{\#1}{gregoriotex-spaces.tex} -Strips the decimals and units from a distance. +\macroname{\textbackslash gre@strip@pt}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex} +Strips the units from a distance. Under \LaTeX{}, this is an alias to \verb=\strip@pt=. \begin{argtable} - \#1 & distance & should be in the form ``[0-9]+.[0-9]+pt’’. (\ie the result of applying \verb=\the= to a distance register) + \#1 & control sequence & should be the control sequence for the the distance register (including the leading backslash)\\ \end{argtable} -\macroname{\textbackslash gre@makenum}{\#1}{gregoriotex-spaces.tex} -Strips the units from a distance. +\macroname{\textbackslash gre@rem@pt}{\#1}{gregoriotex.tex} +Strips the units from a distance. Used internally by \verb=\gre@strip@pt=. Under \LaTeX{}, this is not defined. \begin{argtable} - \#1 & distance & should be in the form ``[0-9]+.[0-9]+pt’’. (\ie the result of applying \verb=\the= to a distance register) + \#1 & distance & should be in the form ``[0-9]+.[0-9]+pt’’. (\ie the result of applying \verb=\the= to a distance register)\\ \end{argtable} -\macroname{\textbackslash gre@unitfactor}{}{gregoriotex-spaces.tex} -Temporary count used by \verb=\gre@convertto=. - -\macroname{\textbackslash gre@basefactor}{}{gregoriotex-spaces.tex} -Temporary count used by \verb=\gre@convertto=. - -\macroname{\textbackslash gre@count@temp@**}{}{gregoriotex-spaces.tex} +\macroname{\textbackslash gre@count@temp@...}{}{gregoriotex-spaces.tex} Temporary count used in calculations. There are currently three of these. \macroname{\textbackslash gre@convertto}{\#1\#2}{gregoriotex-spaces.tex} @@ -259,22 +259,14 @@ optional argument. \#1 & string & Snippet of gabc code.\\ \end{argtable} -\macroname{\textbackslash gre@gabcsnippet@option}{[\#1]\#2}{gregoriotex-main.tex} -Macro that handles \verb=\gabcsnippet= calls when they have an optional -argument. - -\begin{argtable} - \#1 & int & Value of initial style to be passed to gregorio \\ - \#2 & string & Snippet of gabc code.\\ -\end{argtable} - -\macroname{\textbackslash gre@writemode}{\#1}{gregoriotex-main.tex} -Macro that writes its argument with \verb=\greannotation=. The -argument typically is given to this macro by \verb=\GreMode= in the -gtex file. +\macroname{\textbackslash gre@writemode}{\#1\#2\#3}{gregoriotex-main.tex} +Macro that writes its arguments with \verb=\greannotation=. This +macro is typically called by \verb=\GreMode= in the gtex file. \begin{argtable} - \#1 & string & Text to place above the initial of a score.\\ + \#1 & \TeX\ code & Mode text to place above the initial of a score in the \texttt{modeline} style.\\ + \#2 & \TeX\ code & Arbitrary code to typeset, in the \texttt{modemodifier} style, after the mode text.\\ + \#3 & \TeX\ code & Arbitrary code to typeset, in the \texttt{modedifferentia} style, after \#2.\\ \end{argtable} \macroname{\textbackslash gre@brace@common}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex} @@ -321,7 +313,7 @@ Draws a round under-brace using \MP{}. \#1 & length & the width of the brace. \end{argtable} -\macroname{\textbackslash gre@draw@roundbrace}{\#1}{gregoriotex-signs.tex} +\macroname{\textbackslash gre@draw@roundbrace}{\#1\#2\#3}{gregoriotex-signs.tex} Draws a round over- or under-brace using \MP{}. \begin{argtable} @@ -330,6 +322,17 @@ Draws a round over- or under-brace using \MP{}. \#3 & \MP{} commands & \MP{} commands to draw the brace outline. \end{argtable} +\macroname{\textbackslash gre@draw@slur}{\#1\#2\#3}{gregoriotex-signs.tex} +Draws a slur using \MP{}. + +\begin{argtable} + \#1 & length & the x-dimension of the slur.\\ + \#2 & length & the y-dimension of the slur.\\ + \#3 & \texttt{-1} & draw an under-the-notes slur.\\ + & \texttt{1} & draw an over-the-notes slur.\\ +\end{argtable} + + \macroname{\textbackslash gre@iflatex}{\#1}{gregoriotex.sty \textup{and} gregoriotex.tex} Evaluates to \verb=#1= if running under \LaTeX{}. @@ -369,13 +372,37 @@ Macro to pick the appropriate custos character. \#1 & integer & height of the custos character to be placed\\ \end{argtable} +\macroname{\textbackslash gre@nextcustos}{}{gregoriotex-signs.tex} +Macro that saves the next custos height. + +\macroname{\textbackslash gre@beginnotes}{}{gregoriotex-main.tex} +Macro to draw the staff lines. Comes after the initial but before the clef. + +\macroname{\textbackslash gre@noinitial}{}{gregoriotex-main.tex} +Macro called when no initial is being set. + +\macroname{\textbackslash gre@setbiginitial}{}{gregoriotex-main.tex} +Macro which indicates that a 2-line initial is desired. + +\macroname{\textbackslash gre@setinitial}{\#1}{gregoriotex-main.tex} +Macro to set the initial in the score. + +\macroname{\textbackslash gre@adjustsecondline}{}{gregoriotex.tex} +Macro to call before first syllable, but after \verb=\GreSetInitialClef=. + +\macroname{\textbackslash gre@adjustthirdline}{}{gregoriotex-main.tex} +Macro to call during the second line. + +\macroname{\textbackslash gre@adjustlineifnecessary}{}{gregoriotex-main.tex} +Macro that calls \verb=\gre@adjustthirdline= if indicated by \verb=\ifgre@thirdlineadjustmentnecessary=. + \macroname{\textbackslash gre@addspaceabove}{}{gregoriotex-main.tex} Macro to increase the space above the lines to account for above lines text. \macroname{\textbackslash gre@removespaceabove}{}{gregoriotex-main.tex} Macro to decrease the space above the lines as there is no longer any above lines text. -\macroname{\textbackslash gre@alteration}{\#1\#2\#3\#4}{gregoriotex-signs.tex} +\macroname{\textbackslash gre@alteration}{\#1\#2\#3\#4\#5\#6\#7}{gregoriotex-signs.tex} Macro to typeset an alteration. \begin{argtable} @@ -384,21 +411,28 @@ Macro to typeset an alteration. \#3 & character alias & the hole of the alteration\\ \#4 & \texttt{1} & the alteration is a flat for a key change\\ & \texttt{0} & all other cases\\ + \#5 & \TeX\ code & signs to typeset before the glyph (typically additional bars, as they must be "behind" the glyph)\\ + \#6 & \TeX\ code & signs to typeset after the glyph (almost all signs)\\ + \#7 & string & the line, byte offset, and column address for textedit links when point-and-click is enabled\\ \end{argtable} -\macroname{\textbackslash gre@calculate@clefnum}{\#1\#2}{gregoriotex-signs.tex} -Macro calculating the \verb=\gre@clefnum= from the letter and number. +\macroname{\textbackslash gre@clef}{}{gregoriotex-signs.tex} +Macro holding the current clef type. -\begin{argtable} - \#1 & charcter & type of clef (\texttt{c} or \texttt{f})\\ - \#2 & integer & line number\\ -\end{argtable} +\macroname{\textbackslash gre@clefheight}{}{gregoriotex-signs.tex} +Macro holding the current clef line. + +\macroname{\textbackslash gre@clefflatheight}{}{gregoriotex-signs.tex} +Macro to hold the height of the current flat for the clef (\texttt{3} if no flat). + +\macroname{\textbackslash gre@cleftwo}{}{gregoriotex-signs.tex} +Macro holding the current secondary clef type. -\macroname{\textbackslash gre@clefnum}{}{gregoriotex-signs.tex} -Count holding the current clef number. +\macroname{\textbackslash gre@cleftwoheight}{}{gregoriotex-signs.tex} +Macro holding the current secondary clef line (or 0 for no secondary clef). -\macroname{\textbackslash gre@clefflat}{}{gregoriotex-signs.tex} -Macro to hold the height of the current flat for the clef (\texttt{a} if no flat). +\macroname{\textbackslash gre@cleftwoflatheight}{}{gregoriotex-signs.tex} +Macro to hold the height of the current flat for the secondary clef (\texttt{3} if no flat). \macroname{\textbackslash gre@updatelinesclef}{}{gregoriotex-signs.tex} Macro redrawing a key from \verb=\gre@clefnum=, useful for vertical space changes. @@ -458,6 +492,21 @@ Macro called at end of a syllable, adds a penalty and a space. & \texttt{0} & otherwise\\ \end{argtable} +\macroname{\textbackslash gre@setfirstsyllabletext}{\#1\#2\#3\#4\#5\#6}{gregoriotex-syllable.tex} +Internal macro to set the first syllable text after all parts are known. + +\begin{argtable} + \#1 & \TeX\ code & First part of the syllable (before the vowel)\\ + \#2 & \TeX\ code & Middle part of the syllable (the vowel)\\ + \#3 & \TeX\ code & Last part of the syllable (after the vowel)\\ + \#4 & \TeX\ code & First letter of the syllable\\ + \#5 & \TeX\ code & Everything after the first letter of the syllable\\ + \#6 & \TeX\ code & Macros to run after the text is emitted\\ +\end{argtable} + +\macroname{\textbackslash gre@opening@syllabletext}{}{gregoriotex-syllable.tex} +Macro that stores the computed \TeX\ code for rendering the text of the first syllable. + \macroname{\textbackslash gre@exhyphencharsave}{}{gregoriotex-main.tex} Macro for saving the ex hyphen character so that it can be restored at the end of the score. @@ -518,6 +567,7 @@ Macro to typeset a horizontal line (either an additional staff line or an episem & \texttt{1} & stay at the end of the glyph; doesn’t make much sense to use this\\ & \texttt{2} & go back the width of \#1; this starts the episema at the glyph from the end that starts at \#1’s width from the end\\ & \texttt{3} & go back to the beginning of the previous glyph and then forward the width of \#1; this starts the episema at the glyph from the start that starts just after \#1’s width from the start\\ + & \texttt{4} & go back to the beginning of the previous glyph and then forward the width of \#1, then back the width of \#2; this ends the episema at the end of \#1\\ \#3 & integer &the ambitus for a two note episema at the diagonal stroke of a porrectus, porrectus flexus, orculus resupinus, or torculus resupinus flexus\\ \#4 & \texttt{0} & an horizontal episema\\ & \texttt{1} & an horizontal episema under a note\\ @@ -587,9 +637,15 @@ Macro called at the end of the score to ensure that a big initial setting doesnâ \macroname{\textbackslash greoldcatcode}{}{gregoriotex.tex} Macro to store the catcode for ``@'' so that we can use said symbol in function names under Plain \TeX\ and then restore the original catcode after the package is done loading. +\macroname{\textbackslash gre@prephepisemaledgerlineheuristics}{}{gregoriotex-spaces.tex} +Prepares the system to accept ledger line heuristics for the horizontal episema. + \macroname{\textbackslash gre@reseteolcustos}{}{gregoriotex-main.tex} Alias that resets the use of automatic custos to the value set by \verb=\greseteolcustos=. This macro is aliased to \verb=\gre@useautoeolcustos= or \verb=\gre@usemanualeolcustos= by \verb=\greseteolcustos=. +\macroname{\textbackslash gre@resetledgerlineheuristics}{}{gregoriotex-spaces.tex} +Resets the ledger line heuristic flags. + \macroname{\textbackslash gre@setstylefont}{}{gregoriotex-main.tex} Macro for opening up greextra font. @@ -606,17 +662,43 @@ The font size at which symbols are to be loaded. \macroname{\textbackslash gre@textnormal}{\#1}{gregoriotex-syllable.tex} Macro which applies the default text format. -\macroname{\textbackslash gre@typekey}{\#1\#2\#3\#4\#5}{gregoriotex-signs.tex} -Macro which typesets the key. +\macroname{\textbackslash gre@save@clef}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Saves clef information for use in \verb=gre@updatelinesclef=. + +\begin{argtable} + \#1 & character & the type of the clef: c or f\\ + \#2 & integer & the line of the clef (1 is the lowest)\\ + \#3 & integer & if \texttt{3}, it means that we must not put a flat after the clef, otherwise it’s the height of the flat\\ + \#4 & character & the type of the secondary clef: c or f\\ + \#5 & integer & the line of the secondary clef (1 is the lowest, 0 for no secondary clef)\\ + \#6 & integer & if \texttt{3}, it means that we must not put a flat after the secondary clef, otherwise it’s the height of the flat\\ +\end{argtable} + +\macroname{\textbackslash gre@typeclef}{\#1\#2\#3\#4\#5\#6\#7\#8}{gregoriotex-signs.tex} +Macro which typesets the clef. \begin{argtable} - \#1 & character & the type of the key: c or f\\ - \#2 & integer & the line of the key (1 is the lowest)\\ - \#3 & \texttt{0} & no need to use small key characters (inside a line)\\ - & \texttt{1} & we must use small key characters (inside a line)\\ - \#4 & \texttt{0} & no extra space is needed after the key\\ - & \texttt{}1 & we must type a space after the key\\ - \#5 & integer & if \texttt{3}, it means that we must not put a flat after the key, otherwise it’s the height of the flat\\ + \#1 & character & the type of the clef: c or f\\ + \#2 & integer & the line of the clef (1 is the lowest)\\ + \#3 & \texttt{0} & no need to use small clef characters (inside a line)\\ + & \texttt{1} & we must use small clef characters (inside a line)\\ + \#4 & \texttt{0} & no extra space is needed after the clef\\ + & \texttt{}1 & we must type a space after the clef\\ + \#5 & integer & if \texttt{3}, it means that we must not put a flat after the clef, otherwise it’s the height of the flat\\ + \#6 & character & the type of the secondary clef: c or f\\ + \#7 & integer & the line of the secondary clef (1 is the lowest, 0 for no secondary clef)\\ + \#8 & integer & if \texttt{3}, it means that we must not put a flat after the secondary clef, otherwise it’s the height of the flat\\ +\end{argtable} + +\macroname{\textbackslash gre@typesingleclef}{\#1\#2\#3\#4}{gregoriotex-signs.tex} +Macro which typesets a single clef. + +\begin{argtable} + \#1 & character & the type of the clef: c or f\\ + \#2 & integer & the line of the clef (1 is the lowest)\\ + \#3 & \texttt{0} & no need to use small clef characters (inside a line)\\ + & \texttt{1} & we must use small clef characters (inside a line)\\ + \#4 & integer & if \texttt{3}, it means that we must not put a flat after the clef, otherwise it’s the height of the flat\\ \end{argtable} \macroname{\textbackslash gre@updateleftbox}{}{gregoriotex-main.tex} @@ -634,7 +716,7 @@ Macro which specifies the alternate glyphs which are common to all of the styles \macroname{\textbackslash gre@widthof}{\#1}{gregoriotex-main.tex} Macro for calculating the width of its argument and storing it in \verb=\gre@dimen@temp@three=. -\macroname{\textbackslash gre@writebar}{\#1\#2\#3}{gregoriotex-signs.tex} +\macroname{\textbackslash gre@writebar}{\#1\#2\#3\#4}{gregoriotex-signs.tex} Macro to write a bar. \begin{argtable} @@ -646,7 +728,9 @@ Macro to write a bar. & \texttt{5} & the last finalis\\ \#2 & \texttt{0} & in a syllable containing only this bar\\ & \texttt{1} & in a syllable containing other notes\\ - \#3 & \TeX\ code & macros that may happen before the skip after the bar (typically GreVEpisema)\\ + \#3 & \texttt{0} & if there is no text underneath the bar\\ + & \texttt{1} & if there is text underneath the bar\\ + \#4 & \TeX\ code & macros that may happen before the skip after the bar (typically GreVEpisema)\\ \end{argtable} \macroname{\textbackslash gre@@arg}{}{gregoriotex-syllable.tex} @@ -665,6 +749,14 @@ Workhorse function behind \verb=\greannotation=. \#2 & string & the new annotation content\\ \end{argtable} +\macroname{\textbackslash gre@commentary}{[\#1]\#2}{gregoriotex-main.tex} +Workhorse function behind \verb=\grecommentary=. + +\begin{argtable} + \#1 & distance & Additional distance to be placed between the commentary and the top staff line for the next score only.\\ + \#2 & string & the new commentary content\\ +\end{argtable} + \macroname{\textbackslash gre@atletter}{}{gregoriotex-main.tex} A Lua\TeX\ catcode table which makes sure that Lua\TeX\ treats `@‘ corectly. @@ -691,7 +783,7 @@ Macro used in \verb=\GreSyllable=. Sets \verb=\gre@skip@bolshift= to the left ke \end{argtable} \macroname{\textbackslash gre@calculate@eolshift}{\#1}{gregoriotex-spaces.tex} -Macro used in \verb=\GreSyllable=. Sets \verb=\gre@skip@eolshift= to the left kern that +Macro used in \verb=\GreSyllable=. Sets \verb=\gre@dimen@eolshift= to the left kern that should appear before an end of line. The improvement is tiny: when text go further than notes in the last syllable of a line, the idea is to allow text to go a bit further right, under the custos. This shift is applied to the left after every syllable and then to the right after setting the line break penalty. If the line break occurs after this syllable, it will occur between the two shifts, pushing the shift right to the beginning of the next line where \TeX\ will ignore it as leading white space. @@ -770,15 +862,26 @@ desired case. \#1 & \texttt{0} & Default space.\\ & \texttt{1} & Zero-width space.\\ & \texttt{2} & Space between flat or natural and a note.\\ - & \texttt{3} & Space between two puncta inclinata.\\ + & \texttt{3} & Space between two puncta inclinata, descending.\\ & \texttt{4} & Space between bivirga or trivirga.\\ & \texttt{5} & space between bistropha or tristropha.\\ & \texttt{6} & Space after a punctum mora XXX: not used yet, not so sure it is a good idea\ldots\\ - & \texttt{7} & Space between a punctum inclinatum and a punctum inclinatum debilis.\\ + & \texttt{7} & Space between a punctum inclinatum and a punctum inclinatum debilis, descending.\\ & \texttt{8} & Space between two puncta inclinata debilis.\\ & \texttt{9} & Space before a punctum (or something else) and a punctum inclinatum.\\ - & \texttt{10} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd).\\ - & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or more).\\ + & \texttt{10} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd), descending.\\ + & \texttt{11} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or 5th), descending.\\ + & \texttt{12} & Space between two puncta inclinata, ascending. \\ + & \texttt{13} & Space between a punctum inclinatum and a punctum inclinatum debilis, ascending. \\ + & \texttt{14} & Space between puncta inclinata (also debilis for now), larger ambitus (range=3rd), ascending. \\ + & \texttt{15} & Space between puncta inclinata (also debilis for now), larger ambitus (range=4th or 5th), ascending. \\ + & \texttt{16} & Space between a punctum inclinatum and a ``no-bar'' glyph one pitch below. \\ + & \texttt{17} & Space between a punctum inclinatum and a ``no-bar'' glyph two pitches below. \\ + & \texttt{18} & Space between a punctum inclinatum and a ``no-bar'' glyph three or four pitches below \\ + & \texttt{19} & Space between a punctum inclinatum and a ``no-bar'' glyph one pitch above. \\ + & \texttt{20} & Space between a punctum inclinatum and a ``no-bar'' glyph two pitches above. \\ + & \texttt{21} & Space between a punctum inclinatum and a ``no-bar'' glyph three or four pitches above \\ + & \texttt{22} & Half-space. \\ \end{argtable} \macroname{\textbackslash gre@nabcfontname}{}{gregoriotex-main.tex} @@ -843,7 +946,7 @@ Macro to set the point-and-click position for above lines text. \macroname{\textbackslash gre@mark@translation}{}{gregoriotex-main.tex} Macro to set the point-and-click position for translations. -\macroname{\textbackslash gre@pitch@[a-p]}{}{gregoriotex-main.tex} +\macroname{\textbackslash gre@pitch@[a-n,p]}{}{gregoriotex-main.tex} Macros which map gabc pitch letters (the final part of the macro name) to the numerical value that Gregorio\TeX\ uses in processing note placement. \macroname{\textbackslash gre@pitch@adjust@top}{}{gregoriotex-main.tex} @@ -852,6 +955,39 @@ If any note appears above this pitch, the space above the lines must be adjusted \macroname{\textbackslash gre@pitch@adjust@bottom}{}{gregoriotex-main.tex} If any note appears below this pitch, the space below the lines must be adjusted to account for it. +\macroname{\textbackslash gre@pitch@abovestaff}{}{gregoriotex-main.tex} +The pitch above the staff. + +\macroname{\textbackslash gre@pitch@belowstaff}{}{gregoriotex-main.tex} +The pitch below the staff. + +\macroname{\textbackslash gre@pitch@ledger@above}{}{gregoriotex-main.tex} +The pitch of the ledger line above the staff. + +\macroname{\textbackslash gre@pitch@ledger@below}{}{gregoriotex-main.tex} +The pitch of the ledger line below the staff. + +\macroname{\textbackslash gre@pitch@barvepisema}{}{gregoriotex-main.tex} +The pitch of the bar episema. + +\macroname{\textbackslash gre@pitch@underbrace}{}{gregoriotex-main.tex} +The pitch of the under-the-staff brace. + +\macroname{\textbackslash gre@pitch@overbrace}{}{gregoriotex-main.tex} +The pitch of the over-the-staff brace. + +\macroname{\textbackslash gre@pitch@overbraceglyph}{}{gregoriotex-main.tex} +The pitch of the over-the-staff brace glyph. + +\macroname{\textbackslash gre@pitch@bar}{}{gregoriotex-main.tex} +The pitch of the bar glyph. + +\macroname{\textbackslash gre@pitch@raresign}{}{gregoriotex-main.tex} +The pitch of a rare sign (semicirculus, \etc). + +\macroname{\textbackslash gre@pitch@dummy}{}{gregoriotex-main.tex} +A meaningless (don't-care) pitch. + \macroname{\textbackslash gre@pointandclick}{\#1\#2}{gregoriotex-main.tex} Macro to generate the point-and-click links. @@ -918,6 +1054,71 @@ Alias for \verb=\resizebox=. \macroname{\textbackslash gre@dimension}{}{gregoriotex-spaces.tex} Workhorse function behind \verb=\grecreatedim= and \verb=\grechangedim=. +\macroname{\textbackslash gre@setstafflines}{\#1}{gregoriotex-main.tex} +Sets the number of staff lines. + +\begin{argtable} + \#1 & integer & The number of staff lines\\ +\end{argtable} + +\macroname{\textbackslash gre@stafflines}{}{gregoriotex-main.tex} +Contains the number of staff lines. + +\macroname{\textbackslash gre@romannumeral@majuscule}{\#1}{gregoriotex-main.tex} +Typesets its numeric argument as an upper-case Roman numeral. + +\begin{argtable} + \#1 & integer & The number to typeset\\ +\end{argtable} + +\macroname{\textbackslash gre@romannumeral@minuscule}{\#1}{gregoriotex-main.tex} +Typesets its numeric argument as a lower-case Roman numeral. + +\begin{argtable} + \#1 & integer & The number to typeset\\ +\end{argtable} + +\macroname{\textbackslash gre@bar@text}{\#1}{gregoriotex-symbols.tex} +Macro used to switch between spacings where bar has text and those where it doesn't. + +\begin{argtable} + \#1 & \texttt{0} & emits nothing\\ + & \texttt{1} emits \texttt{text}\\ +\end{argtable} + +\macroname{\textbackslash gre@drawadditionalline}{\#1\#2\#3\#4\#5\#6}{gregoriotex-signs.tex} +Workhorse function behind \verb=\GreDrawAdditionalLine=. + +\begin{argtable} + \#1 & \texttt{0} & Draw an over-the-staff ledger line. \\ + & \texttt{1} & Draw an under-the-staff ledger line. \\ + \#2 & distance & The length of the line, with TeX units, excluding any left or right distances coming from the rest of the arguments. \\ + \#3 & \texttt{0} & Start the line at this point. \\ + & \texttt{1} & Start the line to the left of this point by \verb=gre@dimen@additionallineswidth=. \\ + & \texttt{2} & Start the line to the left of this point by \#4. \\ + \#4 & distance & The distance to move left before starting the line if \#3 is \texttt{2}. \\ + \#5 & \texttt{0} & End the line exactly \#2 to the right of this point. \\ + & \texttt{1} & End the line \verb=gre@dimen@additionallineswidth= to the right of \#2 from this point. \\ + & \texttt{2} & End the line \#6 to the right of \#2 from this point. \\ + \#6 & distance & The distance to end the line after \#2 from this point if \#3 is \texttt{2}. \\ +\end{argtable} + +\macroname{\textbackslash gre@kern@bar@aftermora}{}{gregoriotex-signs.tex} +Macro which kerns between a punctum mora and a kern according to the setting in \verb=\gre@count@barshiftaftermora=. + +\macroname{\textbackslash gre@setgregoriofontscaled}{[\#1]\#2\#3}{gregoriotex-main.tex} +Workhorse behind \verb=\gresetgregoriofontscaled=. + +\begin{argtable} + \#1 & \textit{(omitted)} & Use the normal font and rule set.\\ + & \texttt{op} & Use the alternate Dominican font/rule set.\\ + \#2 & \texttt{greciliae} & Use the Greciliae font (default).\\ + & \texttt{gregorio} & Use the Gregorio font.\\ + & \texttt{parmesan} & Use the Parmesan font.\\ + \#3 & integer & the scaling factor\\ +\end{argtable} + + \subsection{Auxiliary File} Gregorio\TeX\ creates its own auxiliary file (extension \texttt{gaux}) which it uses to store information between successive typesetting runs. This allows for such features as the dynamic interline spacing. The following functions are used to interact with that auxiliary file. @@ -950,12 +1151,12 @@ The font for some of the extra characters, such as the bar for barred letters. \macroname{\textbackslash gre@font@nabc}{}{gregoriotex-nabc.tex} The font for ancient notation. -\macroname{\textbackslash gre@font@biginitial}{}{gregoriotex.tex} -The font for the default big initial format in Plain \TeX. - \macroname{\textbackslash gre@font@initial}{}{gregoriotex.tex} The font for the default initial format in Plain \TeX. +\macroname{\textbackslash gre@fontfactor@...}{}{gregoriotex-main.tex} +Macro holding the factor at which the font is loaded. There is one of these macros for each chant font which has been loaded with the ending of the macro name being the name of the chant font (gregorio, parmesan, \etc). + \subsection{Character Reference Aliases} To make referencing and changing them easier, Gregorio\TeX\ stores reference information for certain characters using the following macros. @@ -1084,6 +1285,15 @@ All distances in \nameref{distances} and \texttt{stafflinefactor} have a boolean indicates if the distance should scale when the staff size changes (true) or not (false). +\macroname{\textbackslash ifgre@annotationbottomline}{}{gregoriotex-main.tex} +Boolean used to indicate if the bottom line of the annotation should be used as the control line for its initial vertical alignment. + +\macroname{\textbackslash gre@count@annotationvalign}{}{gregoriotex-main.tex} +Count used to indicate which part of the annotation control line should be initially aligned with the top line of the staff. Values: \texttt{0}, top; \texttt{1}, baseline; or \texttt{2}, bottom. + +\macroname{\textbackslash ifgre@forcehyphen}{}{gregoriotex-main.tex} +Boolean used to indicate if hyphens should be forced between all syllables in a polysyllabic word. + \macroname{\textbackslash ifgre@checklength}{}{gregoriotex-spaces.tex} Boolean used in \verb=\gresetdim= to indicate if we are attempting to set a rubber length. @@ -1163,12 +1373,21 @@ Boolean which indicates if the most recent note was a punctum mora. \macroname{\textbackslash ifgre@lastispunctumsave}{}{gregoriotex-signs.tex} Boolean for storing \verb=\ifgre@lastispunctum= so that it can be restored later. +\macroname{\textbackslash ifgre@ledgerline@above}{}{gregoriotex-spaces.tex} +Boolean which indicates whether the system should act as if there is a ledger line above the staff. + +\macroname{\textbackslash ifgre@ledgerline@below}{}{gregoriotex-spaces.tex} +Boolean which indicates whether the system should act as if there is a ledger line below the staff. + \macroname{\textbackslash gre@nlbstate}{}{gregoriotex-main.tex} Macro which indicates if we are in a no line break area due to translation centering (\texttt{1}), an explicit no line break designation in the gabc (\texttt{2}), or not at all (\texttt{0}). \macroname{\textbackslash gre@nlbinitialstate}{}{gregoriotex-main.tex} Macro to store \verb=\gre@nlbstate= as we initialize or end a no line break area so that we can manipulate said flag as part of the process. +\macroname{\textbackslash ifgre@useledgerlineheuristic}{}{gregoriotex-spaces.tex} +Boolean which specifies whether ledger line heuristics will be used or not. + \macroname{\textbackslash ifgre@usestylefont}{}{gregoriotex-main.tex} Boolean which specifies whether the style font should be loaded or not. @@ -1190,6 +1409,12 @@ Count to indicated if the spacing between lines should be variable (\texttt{1}) \macroname{\textbackslash ifgre@blockeolcustos}{}{gregoriotex-main.tex} Boolean which indicates whether the custos at the end of the line should be blocked. +\macroname{\textbackslash ifgre@blockeolcustosbeforeeuouae}{}{gregoriotex-main.tex} +Boolean which indicates whether the custos at the end of the line should be blocked if a EUOUAE block immediately follows. + +\macroname{\textbackslash ifgre@raggedbreakbeforeeuouae}{}{gregoriotex-main.tex} +Boolean which indicates whether an automatic line break immediately before a EUOUAE block should be ragged. + \macroname{\textbackslash ifgre@breakintranslation}{}{gregoriotex-main.tex} Boolean which indicates if line breaks are allowed inside a translation. @@ -1217,9 +1442,26 @@ Boolean which indicates that a hyphen after an empty first syllable should be fo \macroname{\textbackslash ifgre@showhyphenafterthissyllable}{}{gregoriotex-syllable.tex} Boolean used by \verb=\GreSyllable= to decide if a hyphen should be shown after the syllable. +\macroname{\textbackslash ifgre@thirdlineadjustmentnecessary}{}{gregoriotex-syllable.tex} +Boolean which indicates that a third-line adjustment to staff line width is necessary. + \macroname{\textbackslash ifgre@scale@stafflinefactor}{}{gregoriotex-spaces.tex} Boolean indicating whether the stafflinefactor should scale with changes of \texttt{grefactor}, or not. +\macroname{\textbackslash ifgre@haslinethree}{}{gregoriotex-spaces.tex} +Boolean indicating whether the staff has a third line. + +\macroname{\textbackslash ifgre@haslinefour}{}{gregoriotex-spaces.tex} +Boolean indicating whether the staff has a fourth line. + +\macroname{\textbackslash ifgre@haslinefive}{}{gregoriotex-spaces.tex} +Boolean indicating whether the staff has a fifth line. + +\macroname{\textbackslash gre@count@barshiftaftermora}{}{gregoriotex-signs.tex} +Count indicating when the presence of a punctum mora immediately before a bar line should affect the spacing. + +\macroname{\textbackslash ifgre@allowdeprecated}{}{gregoriotex.sty \textup{and} gregoriotex.tex} +Boolean which controls whether deprecated functions raise a warning (true) or an error (false). \subsection{Boxes} @@ -1238,11 +1480,14 @@ Box which holds the initial of the score. \macroname{\textbackslash gre@box@annotation}{}{gregoriotex-main.tex} Box holding the annotation which goes above the initial. -\macroname{\textbackslash gre@box@annotation@add}{}{gregoriotex-main.tex} -Box used for the new line to be added to the annotation. +\macroname{\textbackslash gre@box@commentary}{}{gregoriotex-main.tex} +Box holding the commentary which goes above the first staff line on the right. -\macroname{\textbackslash gre@box@annotation@old}{}{gregoriotex-main.tex} -Box used for the existing lines in the annotation when a new line is being added. +\macroname{\textbackslash gre@box@add}{}{gregoriotex-main.tex} +Box used for the new line to be added to the box being built (used in multi-line commentaries and annotations). + +\macroname{\textbackslash gre@box@old}{}{gregoriotex-main.tex} +Box used for the existing lines in the box being build when a new line is being added (used in multi-line commentaries and annotations). \macroname{\textbackslash gre@box@lines}{}{gregoriotex-main.tex} Box holding the staff lines. @@ -1250,6 +1495,12 @@ Box holding the staff lines. \macroname{\textbackslash gre@box@temp@sign}{}{gregoriotex-signs.tex} Box to hold a sign so we can measure it for placement. +\macroname{\textbackslash gre@box@temp@clef}{}{gregoriotex-signs.tex} +Box for holding (and measuring) the clef when stacking non-overlapping clefs. + +\macroname{\textbackslash gre@box@temp@cleftwo}{}{gregoriotex-signs.tex} +Box for holding (and measuring) the secondary clef when stacking non-overlapping clefs. + \macroname{\textbackslash gre@box@syllablenotes}{}{gregoriotex-syllable.tex} Box holding the notes associated with a syllable. @@ -1260,10 +1511,13 @@ Box holding the text associated with a syllable. Box holding the horizontal episema. + \subsection{Distances} -All of the distances listed in \nameref{distances} have an internal -associated with them, of the form of \verb=\gre@*@*=, which stores the value of the distance (in -string representation). The first wildcard is either \texttt{skip} or \texttt{dimen} according to the distance type, while the second is the name of the distance. +All of the distances listed in \nameref{distances} have an internal associated +with them, of the form of \verb=\gre@space@*@*=, which stores the value of the +distance (in string representation). The first wildcard is either +\texttt{skip} or \texttt{dimen} according to the distance type, while the +second is the name of the distance. These additional distances are calculated by Gregorio based on the values for the user customizable distances and what may be going on in the score at the time of their use. @@ -1324,9 +1578,6 @@ The space between the lines. \macroname{\textbackslash gre@dimen@glyphraisevalue}{}{gregoriotex-spaces.tex} The value that a particular glyph must be raised to be set in the correct position. -\macroname{\textbackslash gre@dimen@addedraisevalue}{}{gregoriotex-spaces.tex} -The additional raise needed for the vertical episema and the puncta. - \macroname{\textbackslash gre@dimen@enddifference}{}{gregoriotex-spaces.tex} Distance from the end of the notes to the end of the text for the previous syllable. Positive values when notes go further than text, negative in the other case. @@ -1345,25 +1596,16 @@ The width of the last glyph. \macroname{\textbackslash gre@dimen@notesaligncenter}{}{gregoriotex-spaces.tex} Distance from beginning of notes to their point of alignment. -\macroname{\textbackslash gre@dimen@temp@**}{}{gregoriotex-spaces.tex} +\macroname{\textbackslash gre@dimen@temp@...}{}{gregoriotex-spaces.tex} Temporary dimensions used in calculations. There are currently five of these. -\macroname{\textbackslash gre@skip@temp@**}{}{gregoriotex-spaces.tex} +\macroname{\textbackslash gre@skip@temp@...}{}{gregoriotex-spaces.tex} Temporary skips used in calculations. There are currently four of these. -\macroname{\textbackslash gre@unit}{}{gregoriotex-spaces.tex} -Temporary dimension used by \verb=\gre@convertto=. - -\macroname{\textbackslash gre@base}{}{gregoriotex-spaces.tex} -Temporary dimension used by \verb=\gre@convertto=. - -\macroname{\textbackslash gre@maxlen}{}{gregoriotex-spaces.tex} -Distance holding the maximum legal length in TeX. - \macroname{\textbackslash gre@dimen@savedglyphraise}{}{gregoriotex-signs.tex} Macro to hold the value of the glyph raise so that it can be restored after some calculations which may change it are performed. -\macroname{\textbackslash gre@skip@eolshift}{}{gregoriotex-spaces.tex} +\macroname{\textbackslash gre@dimen@eolshift}{}{gregoriotex-spaces.tex} The left kern that should appear before an end of line. \macroname{\textbackslash gre@dimen@bolshift}{}{gregoriotex-spaces.tex} @@ -1375,6 +1617,9 @@ An extra space that is added to \verb=\gre@dimen@bolshift= when the first glyph \macroname{\textbackslash gre@dimen@annotationtrueraise}{}{gregoriotex-spaces.tex} The distance from the baseline of the initial to the baseline of the annotation. +\macroname{\textbackslash gre@dimen@commentarytrueraise}{}{gregoriotex-spaces.tex} +The distance from the baseline of the initial to the baseline of the commentary. + \macroname{\textbackslash gre@minTextDistance}{}{gregoriotex-spaces.tex} Minimum distance between text (meaningful alias for \verb=\gre@skip@temp@one= inside \verb=\gre@calculate@syllablefinalskip=). @@ -1402,6 +1647,9 @@ Working alias for \verb=\gre@skip@temp@one= or \verb=\gre@dimen@temp@one=, as ap \macroname{\textbackslash gre@skip@syllablefinalskip}{}{gregoriotex-spaces.tex} The final distance to skip at the end of a syllable. +\macroname{\textbackslash greslurheight}{}{gregoriotex-signs.tex} +Stores the computed height of a variable-length slur. The control sequence name +does not have the \texttt{@} symbol because this dimension is used within \MP{}. \subsection{Penalties} These are the macros that Gregorio\TeX\ uses to manipulate the penalties in order to control line and page breaks within a score without affect the surrounding text. diff --git a/Build/source/texk/gregorio/gregorio-src/doc/Gabc.tex b/Build/source/texk/gregorio/gregorio-src/doc/Gabc.tex index 13e6a70c668..cb463323859 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/Gabc.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/Gabc.tex @@ -23,39 +23,26 @@ following structure: name: incipit; gabc-copyright: copyright on this gabc file; score-copyright: copyright on the source score; -office-part: introitus/...; -occasion: in church calendar; -meter: for metrical hymns; -commentary: source of words; -arranger: name of arranger; author: if known; -date: xi c; -manuscript: ms name; -manuscript-reference: e.g. CAO reference; -manuscript-storage-place: library/monastery; -book: from which score taken; -transcriber: writer of gabc; -transcription-date: 2009; language: latin; -initial-style: 1; -user-notes: whatever other comments you wish to make; mode: 6; +mode-modifier: t.; annotation: IN.; annotation: 6; %% (clef) text(notes) \end{lstlisting} -In each case, replace whatever is between the colon and semi-colon -\texttt{(:...;)} with the appropriate character string. Of these attributes, -only name is mandatory. Descriptions of how these header fields are -intended to be used are below. If you wish to write a value over -several lines, omit the semicolon at the end of the first line, and -end the attribute value with \texttt{;;} (two semicolons). +\subsection{Headers} -\subsection{Header} +The headers, such as \texttt{name: incipit;}, above, each have a name +before the colon and a value, between the colon and the semicolon. The +header name is composed of ASCII letters and numbers, optionally separated +by dashes. If you wish to write a value over several lines, omit the +semicolon at the end of the first line, and end the header value with +\texttt{;;} (two semicolons). -Here is a detailed description of each header field: +Some headers have special meaning to Gregorio: \begin{description} \item[name] This is the name of the piece, in almost all cases the @@ -70,22 +57,9 @@ Here is a detailed description of each header field: \begin{lstlisting}[autogobble] score-copyright: (C) Abbaye de Solesmes, 1934; \end{lstlisting} -\item[office-part] The office-part is the category of chant (in Latin), according to its liturgical rôle. Examples are: antiphona, hymnus, responsorium brevium, responsorium prolixum, introitus, graduale, tractus, offertorium, communio, kyrie, gloria, credo, sanctus, benedictus, agnus dei. -\item[occasion] The occasion is the liturgical occasion, in Latin. For example, Dominica II Adventus, Commune doctorum, Feria secunda. -\item[meter] For hymns and anything else with repetitive stanzas, the meter, the numbers of syllables in each line of a stanza. For example, 8.8.8.8 for typical Ambrosian-style hymns: 4 lines each of 8 syllables. -\item[commentary] This is intended for notes about the source of the text, such as references to the Bible. -\item[arranger] The name of a modern arranger, when a traditional chant melody has been adapted for new words, or when a manuscript is transcribed into square notation. This may be a corporate name, like Solesmes. \item[author] The author of the piece, if known; of course, the author of most traditional chant is not known. -\item[date] The date of composition, or the date of earliest attestation. With most traditional chant, this will only be approximate; e.g. XI. s. for eleventh century. The convention is to put it with the latin style, like the previous examples (capital letters, roman numerals, s for seculum and the dots). -\item[manuscript] For transcriptions direct from a manuscript, the text normally used to identify the manuscript, for example Montpellier H.159 -\item[manuscript-reference] A unique reference for the piece, according to some well-known system. For example, the reference beginning cao in the Cantus database of office chants. If the reference is unclear as to which system it uses, it should be prefixed by the name of the system. Note that this should be a reference identifying the piece, not the manuscript as a whole; anything identifying the manuscript as a whole should be put in the manuscript field. -\item[manuscript-storage-place] For transcriptions direct from a manuscript, where the manuscript is held; e.g. Bibliothèque Nationale, Paris. -\item[book] For transcriptions from a modern book (such as Solesmes editions; modern goes back at least to the 19th century revival), the name of the book; e.g. Liber Usualis. -\item[transcriber] The name of the transcriber into gabc. -\item[transcription-date] The date the gabc was written, with the following convention yyyymmdd, like 20090129 for january the 29th 2009. \item[language] The language of the lyrics. -\item[initial-style] The style of the initial letter. 0 means no initial letter, 1 a normal one, and 2 a large one, on two lines. Note that if you want to use the initial on two lines, you have to specify at least the two first line breaks. -\item[user-notes] This may contain any text in addition to the other headers -- any notes the transcriber may wish. However, it is recommended to use the specific header fields where they are suitable, so that it is easier to find particular information. +\item[oriscus-orientation] If \texttt{legacy}, the orientation of an unconnected oriscus must be set manually. \item[mode] The mode of the piece. This should normally be an arabic number between 1 and 8, but may be any text required for unusual cases. The mode number will be converted to roman numerals and @@ -95,6 +69,13 @@ Here is a detailed description of each header field: \item There is a \verb=\greannotation= defined immediatly prior to \verb=\gregorioscore=. \item The \texttt{annotation} header field is defined. \end{itemize} +\item[mode-modifier] The mode ``modifier'' of the piece. This may be any + \TeX\ code to typeset after the mode, if the mode is typeset. If the mode + is not typeset, the mode-modifier will also not be typeset. +\item[mode-differentia] The mode or tone differentia of the piece. Typically, + this expresses the variant of the psalm tone to use for the piece. This may + be any \TeX\ code to typeset after the mode-modifier, if the mode is typeset. + If the mode is not typeset, the mode-differentia will also not be typeset. \item[annotation] The annotation is the text to appear above the initial letter. Usually this is an abbreviation of the office-part in the upper line, and an indication of the mode (and differentia @@ -113,9 +94,172 @@ Here is a detailed description of each header field: If the user already defined annotation(s) in the main \TeX\ file via \verb=\greannotation= then the \texttt{annotation} header field will not overwrite that definition. +\end{description} + +Although gregorio ascribes no special meaning to them, other suggested headers are: +\begin{description} +\item[office-part] The office-part is the category of chant (in Latin), according to its liturgical rôle. Examples are: antiphona, hymnus, responsorium brevium, responsorium prolixum, introitus, graduale, tractus, offertorium, communio, kyrie, gloria, credo, sanctus, benedictus, agnus dei. +\item[occasion] The occasion is the liturgical occasion, in Latin. For example, Dominica II Adventus, Commune doctorum, Feria secunda. +\item[meter] For hymns and anything else with repetitive stanzas, the meter, the numbers of syllables in each line of a stanza. For example, 8.8.8.8 for typical Ambrosian-style hymns: 4 lines each of 8 syllables. +\item[commentary] This is intended for notes about the source of the text, such as references to the Bible. +\item[arranger] The name of a modern arranger, when a traditional chant melody has been adapted for new words, or when a manuscript is transcribed into square notation. This may be a corporate name, like Solesmes. +\item[date] The date of composition, or the date of earliest attestation. With most traditional chant, this will only be approximate; e.g. XI. s. for eleventh century. The convention is to put it with the latin style, like the previous examples (capital letters, roman numerals, s for seculum and the dots). +\item[manuscript] For transcriptions direct from a manuscript, the text normally used to identify the manuscript, for example Montpellier H.159 +\item[manuscript-reference] A unique reference for the piece, according to some well-known system. For example, the reference beginning cao in the Cantus database of office chants. If the reference is unclear as to which system it uses, it should be prefixed by the name of the system. Note that this should be a reference identifying the piece, not the manuscript as a whole; anything identifying the manuscript as a whole should be put in the manuscript field. +\item[manuscript-storage-place] For transcriptions direct from a manuscript, where the manuscript is held; e.g. Bibliothèque Nationale, Paris. +\item[book] For transcriptions from a modern book (such as Solesmes editions; modern goes back at least to the 19th century revival), the name of the book; e.g. Liber Usualis. +\item[transcriber] The name of the transcriber into gabc. +\item[transcription-date] The date the gabc was written, with the following convention yyyymmdd, like 20090129 for January the 29th 2009. +\item[user-notes] This may contain any text in addition to the other headers -- any notes the transcriber may wish. However, it is recommended to use the specific header fields where they are suitable, so that it is easier to find particular information. \end{description} +\subsubsection{Mode Headers} + +The three mode headers described above (\texttt{mode}, \texttt{mode-modifier}, +and \texttt{mode-differentia}) will be typeset above the initial if neither +the \texttt{annotation} gabc header nor the \verb=\greannotation= \TeX{} +command is used. + +The mode annotation will look like +\writemode{mode}{\thinspace mode-modifier}{\thinspace mode-differentia}. + +The \texttt{mode} header is typically a number that will be typeset as a +Roman numeral using the \texttt{modeline} style. Therefore, if the first +character of \texttt{mode} is a number from one (\texttt{1}) through eight +(\texttt{8}), that number will be converted according to the +\verb=\gresetmodenumbersystem= setting. However, there are other modes, +so all other parts of \texttt{mode} will be typeset directly. If the +\texttt{mode} header is omitted, none of the other mode headers will be +typeset. + +The \texttt{mode-modifier} header is some text (typeset in the +\texttt{modemodifier} style) that appears after \texttt{mode}, but before +\texttt{mode-differentia}. This is meant for an extra notation that +indicates something without altering the mode itself. An example would be +\writemode{}{t.}{} to indicate a transposed mode. If the +\texttt{mode-modifier} header starts with punctuation, there will be no space +before it, otherwise there will be a \verb=\thinspace= before it. + +The \texttt{mode-differentia} header is some text (typeset in the +\texttt{modedifferentia} style) that appears after \texttt{mode-modifier}. +This is meant for indicating the psalm tone ending to use for the paired +psalm tone. If the \texttt{mode-differentia} header starts with punctuation, +there will be no space before it, otherwise there will be a \verb=\thinspace= +before it. + +Some examples: + +\begin{tabularx}{\textwidth}{l|l|l|X} + \texttt{mode} & \texttt{mode-modifier} & \texttt{mode-differentia} & Result \\ + \hline + \verb=6= & & & \writemode{\romannumeral 6}{}{} \\ + \verb=4A= & & & \writemode{\romannumeral 4\relax A}{}{} \\ + \verb=4a= & & & \writemode{\romannumeral 4\relax a}{}{} \\ + \verb=2*= & \verb=t.= & & \writemode{\romannumeral 2*}{\thinspace t.}{} \\ + \verb=5= & \verb=,\thinspace t.= & & \writemode{\romannumeral 5}{,\thinspace t.}{} \\ + \verb=7= & & {\scriptsize\verb=c\raise0.5ex\hbox{\small2}=} & \writemode{\romannumeral 7}{}{\thinspace c\raise0.5ex\hbox{\small2}} \\ + \verb=8= & \verb=-t.= & \verb=G*= & \writemode{\romannumeral 8}{-t.}{\thinspace G*} \\ + {\scriptsize\verb=t. irregularis=} & & & \writemode{t. irregularis}{}{} \\ +\end{tabularx} + +\subsection{Neume Fusion} + +Neume fusion allows for the composition of new shapes based on a set of +primitive neumes. These primitives are: + +\begin{tabularx}{\textwidth}{l|l|X} + Gabc & Description & Rules \\ + \hline + \texttt{g} & punctum & fuses from higher or lower notes, and can fuse to higher or lower notes \\ + \texttt{go} & oriscus & may only fuse in the direction it was fused from \\ + \texttt{gO} & oriscus scapus & at the start only, next note must be higher to fuse \\ + \texttt{gw} & quilisma & does not fuse from anything, and only fuses to a higher note \\ + \texttt{gV} & virga reversa & at the start only, next note must be lower to fuse \\ + \texttt{gf} & flexus & if not at the end, must be followed by a higher note to fuse \\ + \texttt{gh} & pes & at the end only; in non-liquescent form, the previous note must be lower to fuse \\ + \texttt{gfg} & porrectus & at the end only, previous note must be lower to fuse \\ +\end{tabularx} + +Placing the \texttt{@} character between two notes will attempt to use the above +rules to fuse the notes together. If a shape that is not fusable is used, +Gregorio will typically fall back on the non-fusable form, but in some cases +will result in a syntax error. + +Placing the \texttt{@} character before a primitive that would get a stem will +suppress the stem. Given the above list of primitives, this means the flexus +and the porrectus. + +Here are some examples of fusion: + +\gresetinitiallines{0}\gresetlyriccentering{firstletter}% +\gabcsnippet{ +(c3) h@iw@ji@j@ih<sp>~</sp>(h@iw@ji@j@ih~) +(;) d@eo@fd(d@eo@fd) +(;) IJ@kh(IJ@kh) +} + +As a convenience, a sequence of notes enclosed within \texttt{@[} and +\texttt{]} will be fused automatically based on an algorithm that breaks up +the notes into the above primitives. Using the same examples as before: + +\gabcsnippet{ +(c3) @<v>[</v>hiwjijih<sp>~</sp><v>]</v>(@[hiwjijih~]) +(;) @<v>[</v>deofd<v>]</v>(@[deofd]) +(;) @<v>[</v>IJkh<v>]</v>(@[IJkh]) +} + +\subsection{Custom Ledger Lines} + +To specify a custom ledger line, use +\texttt{[oll:}\textit{left}\texttt{;}\textit{right}\texttt{]} to create an +over-the-staff ledger line with specified lengths to the left and right of the +point where it is introduced. If \textit{left} is \texttt{0}, the ledger line +will start at the introduction point. If \textit{left} is \texttt{1}, the +ledger line will start at the \textit{additionaallineswidth} distance to the +left of the introduction point. Otherwise, the line will start at the +\textit{left} distance (taken to be an explicit length, with \TeX{} units +required) to the left of the introduction point. When using this form, +\texttt{right} must be an explicit length to the right of the introduction +point at which to end the line. + +Alternately, use +\texttt{[oll:}\textit{left}\texttt{\{}\textit{right}\texttt{]} to specify the +start of an over-the-staff ledger line, followed by \texttt{[oll:\}]} at some +point later to specify its end. When using this form, \textit{left} has the +same meaning as before. However, \textit{right} takes on similar values as +\textit{left}, which are instead applied to the right of the specified +endpoint. + +Use \texttt{ull} instead of \texttt{oll} (with either form) to create an +under-the-staff ledger line. + +When using this feature with fusion, you will not be able to start or end a +ledger line in the middle of two-note primitive shapes. To work around this, +either adjust the parameters of the ledger line or use manual fusion to break +up those two notes. + +\subsection{Simple Slurs} + +To specify a simple slur, use +\texttt{[oslur:}\textit{shift}\texttt{;}\textit{width}\texttt{,}\textit{height}\texttt{]} +to create an over-the-notes slur with the specified \textit{width} and +\textit{height}. If \textit{shift} is \texttt{0}, the slur will start on the +right side of the note to which it is atteched. If \textit{shift} is +\texttt{1}, the slur will start one punctum's width to the left of the right +side of the note to which it is attached. If \textit{shift} is \texttt{2}, +the slur will start one-half punctum's width to the left of the right side of +the note to which it is attached. + +Alternately, use +\texttt{[oslur:}\textit{shift}\texttt{\{]} to specify the start of an +over-the-notes slur, followed by \texttt{[oslur:}\textit{shift}\texttt{\}]} at +some point later to specify its end. When using this form, \textit{shift} has +the same meaning as before, but applies to both ends of the slur. + +Use \texttt{uslur} instead of \texttt{oslur} (with either form) to create an +under-the-staff slur. + \subsection{Lyric Centering} Gregorio centers the text of each syllable around the first note of each diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_0_1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_0_1.pdf Binary files differdeleted file mode 100644 index 45b11a94a7f..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_0_1.pdf +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-beta1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-beta1.pdf Binary files differnew file mode 100644 index 00000000000..4e2e7841c4e --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef-4_1_0-beta1.pdf diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef.tex b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef.tex index db4857191c8..836e75db56b 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioNabcRef.tex @@ -9,7 +9,7 @@ \usepackage{fixltx2e} \usepackage{hyperref} \usepackage{color} -\usepackage{gregoriotex} +\usepackage[allowdeprecated=false]{gregoriotex} \usepackage{longtable} \usepackage{supertabular} \usepackage{carolmin} diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_0_1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_0_1.pdf Binary files differdeleted file mode 100644 index e1f58bf0078..00000000000 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_0_1.pdf +++ /dev/null diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-beta1.pdf b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-beta1.pdf Binary files differnew file mode 100644 index 00000000000..9443d145145 --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef-4_1_0-beta1.pdf diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.lua b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.lua index ee02ff0f79c..50bd52134fc 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.lua +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.lua @@ -28,10 +28,8 @@ local EXCLUDE = { ['.null'] = true, nonmarkingreturn = true, PunctumAuctusLineBL = true, - PunctumLineBL = true, PunctumLineBLBR = true, PunctumLineBR = true, - PunctumLineTL = true, PunctumLineTR = true, PunctumSmall = true, FlexusNobar = true, @@ -41,6 +39,18 @@ local EXCLUDE = { QuilismaLineTR = true, VirgaLineBR = true, SalicusOriscus = true, + ['Virgula.2'] = true, + ['Virgula.3'] = true, + ['Virgula.5'] = true, + ['DivisioMinima.2'] = true, + ['DivisioMinima.3'] = true, + ['DivisioMinima.5'] = true, + ['DivisioMinor.2'] = true, + ['DivisioMinor.3'] = true, + ['DivisioMinor.5'] = true, + ['DivisioMaior.2'] = true, + ['DivisioMaior.3'] = true, + ['DivisioMaior.5'] = true, } local GABC = { @@ -71,6 +81,7 @@ local GABC = { FlatHole = [[\excluded{gx}]], Flexus = [[ge]], FlexusLongqueue = [[hf]], + FlexusNobar = [[@hf]], FlexusOriscus = [[goe]], FlexusOriscusScapus = [[gOe]], FlexusOriscusScapusLongqueue = [[hOf]], @@ -84,7 +95,15 @@ local GABC = { Natural = [[gy]], NaturalHole = [[\excluded{gy}]], Oriscus = [[go]], + OriscusCavum = [[gor]], + OriscusCavumDeminutus = [[gor\~{}]], + OriscusCavumDeminutusHole = [[\excluded{gor\~{}}]], + OriscusCavumHole = [[\excluded{gor}]], + OriscusCavumReversus = [[gor>]], + OriscusCavumReversusHole = [[\excluded{gor>}]], + OriscusLineBL = [[\excluded{e}@go]], OriscusReversus = [[go^^^^003c]], + OriscusReversusLineTL = [[\excluded{i}@go]], OriscusScapus = [[gO]], OriscusScapusLongqueue = [[hO]], Pes = [[gi]], @@ -98,16 +117,23 @@ local GABC = { Porrectus = [[geg]], PorrectusFlexus = [[gege]], PorrectusFlexusNobar = [[\excluded{e}gege]], - PorrectusNobar = [[\excluded{eo}geg]], + PorrectusNobar = [[@geg]], Punctum = [[g]], PunctumCavum = [[gr]], PunctumCavumHole = [[\excluded{gr}]], + PunctumCavumInclinatum = [[Gr]], + PunctumCavumInclinatumAuctus = [[Gr>]], + PunctumCavumInclinatumAuctusHole = [[\excluded{Gr>}]], + PunctumCavumInclinatumHole = [[\excluded{Gr}]], PunctumInclinatum = [[G]], PunctumInclinatumAuctus = [[G>]], + PunctumLineBL = [[\excluded{e}@g]], + PunctumLineTL = [[\excluded{i}@g]], Quilisma = [[gw]], RoundBrace = '[ob:1;6mm]', RoundBraceDown = '[ub:1;6mm]', Salicus = [[giOk]], + SalicusFlexus = [[giOki]], SalicusLongqueue = [[hjOl]], Scandicus = [[gik]], Semicirculus = [[\excluded{g}r4]], @@ -116,6 +142,7 @@ local GABC = { SharpHole = [[\excluded{g\#{}}]], Stropha = [[gs]], StrophaAucta = [[gs>]], + StrophaAuctaLongtail = [[hs>]], Torculus = [[gig]], TorculusLiquescens = [[gige]], TorculusLiquescensQuilisma = [[gwige]], @@ -131,6 +158,46 @@ local GABC = { Virgula = [[^^^^0060]], } +local GABC_FUSE = { + Upper = { + Punctum = [[\excluded{e}@]], + Oriscus = [[\excluded{e}@]], + Pes = [[\excluded{e}@]], + PesQuadratum = [[\excluded{e}@]], + PesQuadratumLongqueue = [[\excluded{f}@]], + PesQuassus = [[\excluded{e}@]], + PesQuassusLongqueue = [[\excluded{f}@]], + Flexus = [[\excluded{e}@]], + }, + Lower = { + Punctum = [[\excluded{i}@]], + Oriscus = [[\excluded{i}@]], + Pes = [[\excluded{i}@]], + PesQuadratum = [[\excluded{i}@]], + PesQuadratumLongqueue = [[\excluded{j}@]], + PesQuassus = [[\excluded{i}@]], + Flexus = [[\excluded{i}@]], + FlexusOriscus = [[\excluded{i}@]], + }, + Up = { + Punctum = [[\excluded{@ij}]], + Oriscus = [[\excluded{@ij}]], + OriscusScapus = [[\excluded{@ij}]], + OriscusScapusLongqueue = [[\excluded{@jk}]], + Quilisma = [[\excluded{@ij}]], + Flexus = [[\excluded{@gi}]], + FlexusNobar = [[\excluded{@hj}]], + }, + Down = { + Punctum = [[\excluded{@eg}]], + Oriscus = [[\excluded{@eg}]], + OriscusScapus = [[\excluded{@eg}]], + OriscusScapusLongqueue = [[\excluded{@eg}]], + VirgaReversa = [[\excluded{@eg}]], + VirgaReversaLongqueue = [[\excluded{@fg}]], + }, +} + local DEBILIS = { InitioDebilis = [[-]], [''] = [[]], @@ -154,6 +221,8 @@ function GregorioRef.emit_score_glyphs(cs_greciliae, cs_gregorio, cs_parmesan) local function index_font(csname, variants, common) local glyphs = font.fonts[font.id(csname)].resources.unicodes + -- force-load the code points of the font -- + local ignored = glyphs['___magic___'] local glyph, cp for glyph, cp in pairs(glyphs) do if cp >= 0xe000 and not EXCLUDE[glyph] and not glyph:match('^HEpisema') then @@ -189,16 +258,32 @@ function GregorioRef.emit_score_glyphs(cs_greciliae, cs_gregorio, cs_parmesan) end end - local function emit_score_glyph(shape, ambitus, debilis, liquescence) - local name = shape..ambitus..debilis..liquescence + local function emit_score_glyph(fusion, shape, ambitus, debilis, liquescence) + local name = fusion..shape..ambitus..debilis..liquescence local char = common_glyphs[name] local gabc = GABC[shape] if gabc then - gabc = '('..DEBILIS[debilis]..gabc..LIQUESCENCE[liquescence]..')' + local fuse_head = '' + local fuse_tail = '' + if fusion ~= '' then + fuse_head = GABC_FUSE[fusion][shape] + if fuse_head == nil then + tex.error('No head fusion for '..name) + end + end + local liq = liquescence + if liq == 'Up' or liq == 'Down' then + fuse_tail = GABC_FUSE[liq][shape] + if fuse_tail == nil then + tex.error('No tail fusion for '..name) + end + liq = '' + end + gabc = '('..fuse_head..DEBILIS[debilis]..gabc..LIQUESCENCE[liq]..fuse_tail..')' end tex.sprint(string.format( - [[{\scriptsize {\bfseries %s}{\itshape %s}%s%s}&{\ttfamily\small %s}&{\%s\char%d}&{\%s\char%d}&{\%s\char%d}&]], - shape, ambitus, debilis, liquescence, gabc or '', cs_greciliae, char, cs_gregorio, char, cs_parmesan, char + [[{\scriptsize %s{\bfseries %s}{\itshape %s}%s%s}&{\ttfamily\small %s}&{\%s\char%d}&{\%s\char%d}&{\%s\char%d}&]], + fusion, shape, ambitus, debilis, liquescence, gabc or '', cs_greciliae, char, cs_gregorio, char, cs_parmesan, char )) local emitted = false, i, variant for i, variant in ipairs(sort_unique_keys{greciliae[name], gregorio[name], parmesan[name]}) do @@ -222,30 +307,38 @@ function GregorioRef.emit_score_glyphs(cs_greciliae, cs_gregorio, cs_parmesan) local ambitus = P'One' + P'Two' + P'Three' + P'Four' + P'Five' local majuscule = R'AZ' local minuscule = R'az' + local fusion = P'Upper' + P'Lower' local debilis = P'InitioDebilis' - local liquescentia = P'Nothing' + P'Deminutus' + P'Ascendens' + P'Descendens' - local word = (majuscule * minuscule^0) - ambitus - debilis - liquescentia + local post_word_liquescentia = P'Nothing' + P'Deminutus' + P'Ascendens' + + P'Descendens' + local liquescentia = post_word_liquescentia + P'Up' + P'Down' + local word = (majuscule * minuscule^0) - fusion - ambitus - debilis - + post_word_liquescentia local liquescence = debilis^-1 * liquescentia^-1 - local pattern = C(word^1) * C(ambitus^0) * C(debilis^-1) * C(liquescentia^-1) * -1 + local pattern = C(fusion^-1) * C(word^1) * C(ambitus^0) * C(debilis^-1) * + C(liquescentia^-1) * -1 local only_twos = P'Two'^1 * -1 for name in pairs(common_glyphs) do - local a, b, c, d = pattern:match(name) - if a then - table.insert(glyph_names, { a, b, c, d }) + local a, b, c, d, e = pattern:match(name) + if b then + table.insert(glyph_names, { a, b, c, d, e }) else - tex.error('Unable to parse '..name) + -- if parse fails, just use the name + table.insert(glyph_names, { '', name, '', '', '' }) end end local function compare(x, y) - if x[1] < y[1] then + local nx = x[1]..x[2] + local ny = y[1]..y[2] + if nx < ny then return true - elseif x[1] == y[1] then - if x[3] < y[3] then + elseif nx == ny then + if x[4] < y[4] then return true - elseif x[3] == y[3] then - if x[4] < y[4] then + elseif x[4] == y[4] then + if x[5] < y[5] then return true - elseif x[4] == y[4] and x[2] < y[2] then + elseif x[5] == y[5] and x[3] < y[3] then return true end end @@ -257,13 +350,13 @@ function GregorioRef.emit_score_glyphs(cs_greciliae, cs_gregorio, cs_parmesan) local i, name for i, name in ipairs(glyph_names) do if not EXCLUDE[name[1]] then - if (name[2] == '' and name[4] == '') or name[2] == '' or only_twos:match(name[2]) then + if (name[3] == '' and name[5] == '') or name[3] == '' or only_twos:match(name[3]) then if first then first = false else tex.print([[\hline]]) end - emit_score_glyph(name[1], name[2], name[3], name[4]) + emit_score_glyph(name[1], name[2], name[3], name[4], name[5]) end end end @@ -294,3 +387,10 @@ function GregorioRef.emit_extra_glyphs(csname) tex.print([[&\\]]) end end + +function GregorioRef.emit_dimension(value) + value = string.gsub(value, '(-?%d+%.%d+)%s*(%a+)', [[\unit[%1]{%2}]]) + value = string.gsub(value, '(-?%d+%.)%s*(%a+)', [[\unit[%1]{%2}]]) + value = string.gsub(value, '(-?%.?%d+)%s*(%a+)', [[\unit[%1]{%2}]]) + tex.sprint(value) +end diff --git a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex index 0398eac8ff6..dd4a1ff3244 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex +++ b/Build/source/texk/gregorio/gregorio-src/doc/GregorioRef.tex @@ -33,6 +33,7 @@ \usepackage{tabulary} \usepackage{tabularx} \usepackage{adjustbox} +\usepackage{xparse} \usepackage{makeidx} \makeindex @@ -54,7 +55,7 @@ \newenvironment{gabccode}{\tt}{} -\usepackage{gregoriotex} +\usepackage[allowdeprecated=false]{gregoriotex} \usepackage{carolmin} \usepackage{mflogo} @@ -120,6 +121,24 @@ \hline}% {\endtabularx\bigskip} +\makeatletter% +\NewDocumentEnvironment{gdimension}{m}{\macroname{#1}{}{gp-default.tex}}{% + + \gre@rubberpermit{#1}% + \ifgre@rubber% + Default: \directlua{GregorioRef.emit_dimension("\luaescapestring{\csname gre@space@skip@#1\endcsname}")} + \else% + Default: \directlua{GregorioRef.emit_dimension("\luaescapestring{\csname gre@space@dimen@#1\endcsname}")} + \fi% +} + +\newcommand{\writemode}[3]{% + \gre@style@modeline #1\endgre@style@modeline % + \gre@style@modemodifier #2\endgre@style@modemodifier % + \gre@style@modedifferentia #3\endgre@style@modedifferentia % +} +\makeatother + \setlength{\parindent}{0mm} % Default is 15pt \begin{document} @@ -133,7 +152,7 @@ \vspace{1cm} - \large Version \textbf{4.0.1}, 28 December 2015 %% PARSE_VERSION_DATE + \large Version \textbf{4.1.0-beta1}, 23 January 2016 %% PARSE_VERSION_DATE \vspace{1.5cm} \end{center} @@ -141,8 +160,8 @@ \grechangestyle{lowchoralsign}{\cminfamily\small}% \grechangestyle{highchoralsign}{\cminfamily\small}% \def\GreStar{\greheightstar}% - \greannotation{\scriptsize{Comm.}}% - \greannotation{\scriptsize{VII}}% + \greannotation{\scriptsize Comm.}% + \greannotation{\scriptsize VII}% \begingroup% \color{black!60}% \setmainfont[SmallCapsFont=AlegreyaSC]{Alegreya}% diff --git a/Build/source/texk/gregorio/gregorio-src/doc/factus.gabc b/Build/source/texk/gregorio/gregorio-src/doc/factus.gabc index b152d5a8219..5c290d30f73 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/factus.gabc +++ b/Build/source/texk/gregorio/gregorio-src/doc/factus.gabc @@ -3,7 +3,6 @@ office-part: Communio; occasion: Dominica Pentecostes ad Missam in die; book: Graduale Novum; mode: 7; -initial-style: 1; user-notes: with choral annotations and episema from the non-diastematic neumes; annotation: Comm.; annotation: VII.; diff --git a/Build/source/texk/gregorio/gregorio-src/doc/veni.gabc b/Build/source/texk/gregorio/gregorio-src/doc/veni.gabc index a5ab3ab0b39..e13be15d58b 100644 --- a/Build/source/texk/gregorio/gregorio-src/doc/veni.gabc +++ b/Build/source/texk/gregorio/gregorio-src/doc/veni.gabc @@ -3,7 +3,6 @@ office-part: Alleluia; mode: 2; book: Graduale Romanum, 1908, p. 249; Graduale Triplex, 1979, p. 253; Sg. 376 p. 296; transcriber: Andrew Hinkley, Jakub JelÃnek; -initial-style: 1; nabc-lines: 1; annotation: II; %% diff --git a/Build/source/texk/gregorio/gregorio-src/examples/FactusEst.gabc b/Build/source/texk/gregorio/gregorio-src/examples/FactusEst.gabc index fc4a467e5d2..2245a652b97 100644 --- a/Build/source/texk/gregorio/gregorio-src/examples/FactusEst.gabc +++ b/Build/source/texk/gregorio/gregorio-src/examples/FactusEst.gabc @@ -8,7 +8,6 @@ office-part: Communio; mode: 7; book: Graduale Romanum, 1961, p. 296; transcriber: Andrew Hinkley, Jakub JelÃnek; -initial-style: 1; % You have to put the number of nabc lines here, only 1 is allowed for now diff --git a/Build/source/texk/gregorio/gregorio-src/examples/PopulusSion.gabc b/Build/source/texk/gregorio/gregorio-src/examples/PopulusSion.gabc index bf1476914c6..124b949546a 100644 --- a/Build/source/texk/gregorio/gregorio-src/examples/PopulusSion.gabc +++ b/Build/source/texk/gregorio/gregorio-src/examples/PopulusSion.gabc @@ -17,10 +17,10 @@ style: modern; % The syntax in this part is called gabc. Please refer to http://home.gna.org/gregorio/gabc/#basis -Pó(c3eh)pu(g)lus(h) Si(hi)on,(hgh.) *(;) ec(hihi)ce(e.) Dó(e.f!gwhhi)mi(h){n}us(h) vé(hi)ni(ig//ih)et(h.) (,) ad(iv./hig) sal(fe)ván(ghg)das(fg) gen(e_f_e_)tes(e.) :(:) +Pó(c3eh/hi)pu(h)lus(h) Si(hi)on,(hgh.) *(;) ec(hihi)ce(e.) Dó(e.f!gwhhi)mi(h){n}us(h) vé(hi)ni(ig//ih)et(h.) (,) ad(iv./hig) sal(fe~)ván(ghg)das(fg) gen(e_f_e_)tes(e.) :(:) -et(e) au(eh)dÃ(hhi)tam(i) fá(kjki)ci(i)et(i) Dó(ij)mi(ihi)nus(iv./hiHF) (,) gló(h!i'j)ri(ji!kvJI)am(ij) vo(j.i!jwk)cis(ji) su(i_j_i_)æ,(i.) (;) in(e) læ(e)tÃ(e!f'h)ti(h)a(hi!jVji) +et(e) au(eh)dÃ(hhi)tam(i) fá(kjki)ci(i)et(i) Dó(ij)mi(ihi)nus(iv./hiHF.) (,) gló(h!i'j)ri(ji/kvJI)am(ij~) vo(j.i!jwk)cis(j_i) su(i_j_i_)æ,(i.) (;) in(e) læ(e)tÃ(e!f'h)ti(h)a(hi!jvji) -cor(gh!ijI'H<)dis(ihhf!gwh) ve(e_f_e_)stri.(e) Ps.(::) Qui(ehg) re(hi)gis(i) I(i)sra(i)el,(hj) in(j)tén(ji)de(ij..) :*(:) qui(ig) de(hi)dú(i)cis(i) +cor(gh!ijI'~H~)dis(ihhf!gwh) ve(e_f_e_)stri.(e.) <i>Ps.</i>(::) Qui(ehg) re(hi)gis(i) I(i)sra(i)el,(ik) in(j)tén(ji~)de(ij..) :(:) qui(ig) de(hi)dú(i)cis(i) -vel(i)ut(i!jwk) o(i')vem(h) Jo(hhh)seph.(fe..) (::) Gló(ehg)ri(hi)a(i) Pa(i)tri.(i) (:) E(i) u(i!jwk) o(i) u(h) a(hhh) e(fe..) (::) +vel(i)ut(i!jwk) o(i')vem(h) Jo(hhh)seph.(fe..) (::) Gló(ehg)ri(hi)a(i) Pa(i)tri.(i) (:) <eu>E(i) u(i!jwk) o(i) u(h) a(hhh) e</eu>(fe..) (::) diff --git a/Build/source/texk/gregorio/gregorio-src/examples/main-lualatex.tex b/Build/source/texk/gregorio/gregorio-src/examples/main-lualatex.tex index d6ea2632c10..24b33797e65 100644 --- a/Build/source/texk/gregorio/gregorio-src/examples/main-lualatex.tex +++ b/Build/source/texk/gregorio/gregorio-src/examples/main-lualatex.tex @@ -19,7 +19,7 @@ \begin{center}\begin{huge}\textsc{Populus Sion}\end{huge}\end{center} % Here we set the space around the initial. -% Please report to http://home.gna.org/gregorio/gregoriotex/details for more details and options +% Please report to http://gregorio-project.github.io/gregoriotex/details.html for more details and options \grechangedim{beforeinitialshift}{2.2mm}{scalable} \grechangedim{afterinitialshift}{2.2mm}{scalable} @@ -30,10 +30,11 @@ \gresetlinecolor{gregoriocolor} % We set VII above the initial. -\greannotation{\small \textsc{\textbf{VII}}} - +\grechangestyle{annotation}{\small\bfseries} +\greannotation{Intr.} +\greannotation{\textsc{vii}} % We type a text in the top right corner of the score: -\grecommentary{{\small \emph{Cf. Is. 30, 19 . 30 ; Ps. 79}}} +\grecommentary{Cf. Is. 30, 19 . 30 ; Ps. 79} % and finally we include the scores. The file must be in the same directory as this one. \gregorioscore[a]{PopulusSion} diff --git a/Build/source/texk/gregorio/gregorio-src/m4/canonicalize.m4 b/Build/source/texk/gregorio/gregorio-src/m4/canonicalize.m4 new file mode 100644 index 00000000000..d8f52830026 --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/m4/canonicalize.m4 @@ -0,0 +1,124 @@ +# canonicalize.m4 serial 26 + +dnl Copyright (C) 2003-2007, 2009-2016 Free Software Foundation, Inc. + +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Provides canonicalize_file_name and canonicalize_filename_mode, but does +# not provide or fix realpath. +AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE], +[ + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_FUNCS_ONCE([canonicalize_file_name]) + AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) + AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) + if test $ac_cv_func_canonicalize_file_name = no; then + HAVE_CANONICALIZE_FILE_NAME=0 + else + case "$gl_cv_func_realpath_works" in + *yes) ;; + *) REPLACE_CANONICALIZE_FILE_NAME=1 ;; + esac + fi +]) + +# Provides canonicalize_file_name and realpath. +AC_DEFUN([gl_CANONICALIZE_LGPL], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + AC_REQUIRE([gl_CANONICALIZE_LGPL_SEPARATE]) + if test $ac_cv_func_canonicalize_file_name = no; then + HAVE_CANONICALIZE_FILE_NAME=0 + if test $ac_cv_func_realpath = no; then + HAVE_REALPATH=0 + else + case "$gl_cv_func_realpath_works" in + *yes) ;; + *) REPLACE_REALPATH=1 ;; + esac + fi + else + case "$gl_cv_func_realpath_works" in + *yes) + ;; + *) + REPLACE_CANONICALIZE_FILE_NAME=1 + REPLACE_REALPATH=1 + ;; + esac + fi +]) + +# Like gl_CANONICALIZE_LGPL, except prepare for separate compilation +# (no REPLACE_CANONICALIZE_FILE_NAME, no REPLACE_REALPATH, no AC_LIBOBJ). +AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE], +[ + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_FUNCS_ONCE([canonicalize_file_name getcwd readlink]) + AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) + AC_REQUIRE([gl_FUNC_REALPATH_WORKS]) + AC_CHECK_HEADERS_ONCE([sys/param.h]) +]) + +# Check whether realpath works. Assume that if a platform has both +# realpath and canonicalize_file_name, but the former is broken, then +# so is the latter. +AC_DEFUN([gl_FUNC_REALPATH_WORKS], +[ + AC_CHECK_FUNCS_ONCE([realpath]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether realpath works], [gl_cv_func_realpath_works], [ + touch conftest.a + mkdir conftest.d + AC_RUN_IFELSE([ + AC_LANG_PROGRAM([[ + ]GL_NOCRASH[ + #include <stdlib.h> + #include <string.h> + ]], [[ + int result = 0; + { + char *name = realpath ("conftest.a", NULL); + if (!(name && *name == '/')) + result |= 1; + } + { + char *name = realpath ("conftest.b/../conftest.a", NULL); + if (name != NULL) + result |= 2; + } + { + char *name = realpath ("conftest.a/", NULL); + if (name != NULL) + result |= 4; + } + { + char *name1 = realpath (".", NULL); + char *name2 = realpath ("conftest.d//./..", NULL); + if (strcmp (name1, name2) != 0) + result |= 8; + } + return result; + ]]) + ], + [gl_cv_func_realpath_works=yes], + [gl_cv_func_realpath_works=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_realpath_works="guessing yes" ;; + # If we don't know, assume the worst. + *) gl_cv_func_realpath_works="guessing no" ;; + esac + ]) + rm -rf conftest.a conftest.d + ]) + case "$gl_cv_func_realpath_works" in + *yes) + AC_DEFINE([FUNC_REALPATH_WORKS], [1], [Define to 1 if realpath() + can malloc memory, always gives an absolute path, and handles + trailing slash correctly.]) + ;; + esac +]) diff --git a/Build/source/texk/gregorio/gregorio-src/m4/nocrash.m4 b/Build/source/texk/gregorio/gregorio-src/m4/nocrash.m4 new file mode 100644 index 00000000000..ecc55c6172d --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/m4/nocrash.m4 @@ -0,0 +1,130 @@ +# nocrash.m4 serial 4 +dnl Copyright (C) 2005, 2009-2016 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Based on libsigsegv, from Bruno Haible and Paolo Bonzini. + +AC_PREREQ([2.13]) + +dnl Expands to some code for use in .c programs that will cause the configure +dnl test to exit instead of crashing. This is useful to avoid triggering +dnl action from a background debugger and to avoid core dumps. +dnl Usage: ... +dnl ]GL_NOCRASH[ +dnl ... +dnl int main() { nocrash_init(); ... } +AC_DEFUN([GL_NOCRASH],[[ +#include <stdlib.h> +#if defined __MACH__ && defined __APPLE__ +/* Avoid a crash on Mac OS X. */ +#include <mach/mach.h> +#include <mach/mach_error.h> +#include <mach/thread_status.h> +#include <mach/exception.h> +#include <mach/task.h> +#include <pthread.h> +/* The exception port on which our thread listens. */ +static mach_port_t our_exception_port; +/* The main function of the thread listening for exceptions of type + EXC_BAD_ACCESS. */ +static void * +mach_exception_thread (void *arg) +{ + /* Buffer for a message to be received. */ + struct { + mach_msg_header_t head; + mach_msg_body_t msgh_body; + char data[1024]; + } msg; + mach_msg_return_t retval; + /* Wait for a message on the exception port. */ + retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg), + our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); + if (retval != MACH_MSG_SUCCESS) + abort (); + exit (1); +} +static void +nocrash_init (void) +{ + mach_port_t self = mach_task_self (); + /* Allocate a port on which the thread shall listen for exceptions. */ + if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) + == KERN_SUCCESS) { + /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ + if (mach_port_insert_right (self, our_exception_port, our_exception_port, + MACH_MSG_TYPE_MAKE_SEND) + == KERN_SUCCESS) { + /* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting + for us. */ + exception_mask_t mask = EXC_MASK_BAD_ACCESS; + /* Create the thread listening on the exception port. */ + pthread_attr_t attr; + pthread_t thread; + if (pthread_attr_init (&attr) == 0 + && pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0 + && pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) { + pthread_attr_destroy (&attr); + /* Replace the exception port info for these exceptions with our own. + Note that we replace the exception port for the entire task, not only + for a particular thread. This has the effect that when our exception + port gets the message, the thread specific exception port has already + been asked, and we don't need to bother about it. + See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ + task_set_exception_ports (self, mask, our_exception_port, + EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); + } + } + } +} +#elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ +/* Avoid a crash on native Windows. */ +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#include <winerror.h> +static LONG WINAPI +exception_filter (EXCEPTION_POINTERS *ExceptionInfo) +{ + switch (ExceptionInfo->ExceptionRecord->ExceptionCode) + { + case EXCEPTION_ACCESS_VIOLATION: + case EXCEPTION_IN_PAGE_ERROR: + case EXCEPTION_STACK_OVERFLOW: + case EXCEPTION_GUARD_PAGE: + case EXCEPTION_PRIV_INSTRUCTION: + case EXCEPTION_ILLEGAL_INSTRUCTION: + case EXCEPTION_DATATYPE_MISALIGNMENT: + case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: + case EXCEPTION_NONCONTINUABLE_EXCEPTION: + exit (1); + } + return EXCEPTION_CONTINUE_SEARCH; +} +static void +nocrash_init (void) +{ + SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter); +} +#else +/* Avoid a crash on POSIX systems. */ +#include <signal.h> +/* A POSIX signal handler. */ +static void +exception_handler (int sig) +{ + exit (1); +} +static void +nocrash_init (void) +{ +#ifdef SIGSEGV + signal (SIGSEGV, exception_handler); +#endif +#ifdef SIGBUS + signal (SIGBUS, exception_handler); +#endif +} +#endif +]]) diff --git a/Build/source/texk/gregorio/gregorio-src/src/Makefile.am b/Build/source/texk/gregorio/gregorio-src/src/Makefile.am index e2424dcbec7..1bc3209ac20 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/Makefile.am +++ b/Build/source/texk/gregorio/gregorio-src/src/Makefile.am @@ -23,7 +23,7 @@ gregorio_LDADD = $(KPSE_LIBS) bin_PROGRAMS = gregorio gregorio_SOURCES = gregorio-utils.c characters.c characters.h \ - messages.c messages.h struct.c struct.h \ + messages.c messages.h struct.c struct.h enum_generator.h \ unicode.c unicode.h sha1.c sha1.h support.c support.h \ config.h bool.h plugins.h utf8strings.h dump/dump.c \ gregoriotex/gregoriotex-write.c \ diff --git a/Build/source/texk/gregorio/gregorio-src/src/characters.c b/Build/source/texk/gregorio/gregorio-src/src/characters.c index d5e3aa31f6f..dc18f5d593e 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/characters.c +++ b/Build/source/texk/gregorio/gregorio-src/src/characters.c @@ -230,7 +230,7 @@ static bool go_to_end_initial(gregorio_character **param_character) if (!current_character) { return false; } - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); /* skip past any initial */ if (!current_character->is_character && current_character->cos.s.type == ST_T_BEGIN @@ -280,6 +280,7 @@ static void style_pop(det_style **first_style, det_style *element) return; } if (element->previous_style) { + assert(*first_style != element); element->previous_style->next_style = element->next_style; if (element->next_style) { element->next_style->previous_style = element->previous_style; @@ -322,14 +323,14 @@ static void free_styles(det_style **first_style) * special-character. It places current_character to the character next to the * end of the verbatim or special_char charachters. */ -static __inline void verb_or_sp(gregorio_character **ptr_character, +static __inline void verb_or_sp(const gregorio_character **ptr_character, const grestyle_style style, FILE *const f, void (*const function) (FILE *, grewchar *)) { int i, j; grewchar *text; - gregorio_character *current_character; - gregorio_character *begin_character; + const gregorio_character *current_character; + const gregorio_character *begin_character; i = 0; j = 0; @@ -348,7 +349,7 @@ static __inline void verb_or_sp(gregorio_character **ptr_character, } } if (i == 0) { - ptr_character = ¤t_character; + *ptr_character = current_character; return; } text = (grewchar *) gregorio_malloc((i + 1) * sizeof(grewchar)); @@ -384,9 +385,9 @@ static __inline void verb_or_sp(gregorio_character **ptr_character, * complex styles. It would be a bit stupid to do such a thing, but users are * usually very creative when it comes to inventing twisted things... */ -void gregorio_write_text(const bool skip_initial, - gregorio_character *current_character, - FILE *const f, void (*const printverb) (FILE *, grewchar *), +void gregorio_write_text(const gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *const f, + void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), void (*const end) (FILE *, grestyle_style), @@ -409,7 +410,7 @@ void gregorio_write_text(const bool skip_initial, printspchar); break; case ST_INITIAL: - if (skip_initial) { + if (phase == WTP_FIRST_SYLLABLE) { while (current_character) { if (!current_character->is_character && current_character->cos.s.type == ST_T_END @@ -433,13 +434,16 @@ void gregorio_write_text(const bool skip_initial, } } - current_character = current_character->next_character; + if (current_character) { + current_character = current_character->next_character; + } } } -void gregorio_write_first_letter_alignment_text(const bool skip_initial, - gregorio_character *current_character, - FILE *const f, void (*const printverb) (FILE *, grewchar *), +void gregorio_write_first_letter_alignment_text( + const gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *const f, + void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), void (*const end) (FILE *, grestyle_style), @@ -448,7 +452,7 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* stack of styles to close and reopen */ det_style *first_style = NULL; det_style *last_style = NULL; - bool first_letter_open = true; + int first_letter_open = (phase == WTP_FIRST_SYLLABLE)? 2 : 1; if (!current_character) { return; @@ -457,7 +461,9 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* go to the first character */ gregorio_go_to_first_character(¤t_character); - begin(f, ST_SYLLABLE_INITIAL); + if (phase != WTP_FIRST_SYLLABLE) { + begin(f, ST_SYLLABLE_INITIAL); + } /* loop until there are no characters left */ for (; current_character; @@ -466,7 +472,7 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, /* found a real character */ if (current_character->is_character) { printchar(f, current_character->cos.character); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; } else switch (current_character->cos.s.type) { case ST_T_NOTHING: assert(false); @@ -476,29 +482,23 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, switch (current_character->cos.s.style) { case ST_CENTER: case ST_FORCED_CENTER: - /* ignore */ - break; case ST_INITIAL: - if (skip_initial) { - while (current_character) { - if (!current_character->is_character - && current_character->cos.s.type == ST_T_END - && current_character->cos.s.style == - ST_INITIAL) { - break; - } - current_character = current_character->next_character; - } - } /* else ignore */ + case ST_FIRST_SYLLABLE_INITIAL: + /* ignore */ break; case ST_VERBATIM: verb_or_sp(¤t_character, ST_VERBATIM, f, printverb); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; break; case ST_SPECIAL_CHAR: verb_or_sp(¤t_character, ST_SPECIAL_CHAR, f, printspchar); - close_first_letter = first_letter_open; + close_first_letter = first_letter_open != 0; break; + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + if (phase == WTP_FIRST_SYLLABLE) { + break; + } /* else fall through */ default: /* push the style onto the stack */ style_push(&first_style, current_character->cos.s.style); @@ -510,27 +510,32 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, case ST_CENTER: case ST_FORCED_CENTER: case ST_INITIAL: + case ST_FIRST_SYLLABLE_INITIAL: /* ignore */ break; case ST_VERBATIM: case ST_SPECIAL_CHAR: assert(false); break; + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + if (phase == WTP_FIRST_SYLLABLE) { + break; + } /* else fall through */ default: /* pop the style from the stack */ - assert(first_style->style == current_character->cos.s.style); + assert(first_style && first_style->style + == current_character->cos.s.style); style_pop(&first_style, first_style); end(f, current_character->cos.s.style); } break; } - if (!current_character->next_character && first_letter_open) { - close_first_letter = first_letter_open; - } - - if (close_first_letter) { - first_letter_open = false; + while (close_first_letter || (!current_character->next_character + && first_letter_open > 0)) { + close_first_letter = false; + --first_letter_open; /* close all the styles in the stack */ if (first_style) { @@ -563,12 +568,18 @@ void gregorio_write_first_letter_alignment_text(const bool skip_initial, } } + if (phase == WTP_FIRST_SYLLABLE) { + while ((--first_letter_open) >= 0) { + end(f, ST_SYLLABLE_INITIAL); + } + } + free_styles(&first_style); } /* the default behaviour is to write only the initial, that is to say things * between the styles ST_INITIAL */ -void gregorio_write_initial(gregorio_character *current_character, +void gregorio_write_initial(const gregorio_character *current_character, FILE *const f, void (*const printverb) (FILE *, grewchar *), void (*const printchar) (FILE *, grewchar), void (*const begin) (FILE *, grestyle_style), @@ -795,10 +806,12 @@ static void suppress_this_character(gregorio_character *to_suppress) return; } if (to_suppress->previous_character) { + assert(to_suppress->previous_character->next_character == to_suppress); to_suppress->previous_character->next_character = to_suppress->next_character; } if (to_suppress->next_character) { + assert(to_suppress->next_character->previous_character == to_suppress); to_suppress->next_character->previous_character = to_suppress->previous_character; } @@ -936,8 +949,9 @@ static __inline bool _suppress_char_and_end_c( return true; } else { if ((*ptr_character)->previous_character) { + gregorio_character *to_suppress = *ptr_character; (*ptr_character) = (*ptr_character)->previous_character; - suppress_this_character((*ptr_character)->next_character); + suppress_this_character(to_suppress); } else { suppress_this_character(*ptr_character); *ptr_character = NULL; @@ -963,7 +977,7 @@ static __inline bool _suppress_char_and_end_c( * in the middle of a verbatim block. */ -void gregorio_rebuild_characters(gregorio_character **param_character, +void gregorio_rebuild_characters(gregorio_character **const param_character, gregorio_center_determination center_is_determined, bool skip_initial) { /* the current_character */ @@ -979,9 +993,9 @@ void gregorio_rebuild_characters(gregorio_character **param_character, if (!current_character->next_character) { /* nothing else to rebuild, but the initial needs to be ST_CENTER */ insert_style_after(ST_T_END, ST_CENTER, ¤t_character); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); insert_style_before(ST_T_BEGIN, ST_CENTER, current_character); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; return; } @@ -989,7 +1003,7 @@ void gregorio_rebuild_characters(gregorio_character **param_character, /* move to the character after the initial */ current_character = current_character->next_character; } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } } /* first we see if there is already a center determined */ @@ -1170,12 +1184,12 @@ void gregorio_rebuild_characters(gregorio_character **param_character, if (skip_initial && go_to_end_initial(¤t_character)) { current_character = current_character->next_character; } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } insert_style_before(ST_T_BEGIN, ST_CENTER, current_character); } /* well.. you're quite brave if you reach this comment. */ - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; free_styles(&first_style); } @@ -1204,7 +1218,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, gregorio_character *first_character; gregorio_character *start_of_special; /* so, here we start: we go to the first_character */ - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); /* first we look at the styles, to see if there is a FORCED_CENTER * somewhere and we also remove the CENTER styles if the syllable starts at * CENTER */ @@ -1232,7 +1246,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, current_character = current_character->next_character; } current_character = *param_character; - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); first_character = current_character; /* now we are going to place the two INITIAL styles (begin and end) */ while (current_character) { @@ -1308,7 +1322,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, current_character = current_character->next_character; } } else { - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); } if (current_character) { bool marked_syllable_initial = false; @@ -1355,7 +1369,7 @@ void gregorio_rebuild_first_syllable(gregorio_character **param_character, } current_character = *param_character; - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); (*param_character) = current_character; } @@ -1390,6 +1404,6 @@ void gregorio_set_first_word(gregorio_character **const character) /* else there are no more characters here */ if (*character) { - gregorio_go_to_first_character(character); + gregorio_go_to_first_character_c(character); } } diff --git a/Build/source/texk/gregorio/gregorio-src/src/characters.h b/Build/source/texk/gregorio/gregorio-src/src/characters.h index 1575fc0d1c9..06486dadc9b 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/characters.h +++ b/Build/source/texk/gregorio/gregorio-src/src/characters.h @@ -57,23 +57,28 @@ typedef struct det_style { gregorio_character *gregorio_first_text(gregorio_score *score); -void gregorio_write_text(bool skip_initial, - gregorio_character *current_character, - FILE *f, void (*printverb) (FILE *, grewchar *), +typedef enum gregorio_write_text_phase { + WTP_NORMAL, + WTP_FIRST_SYLLABLE +} gregorio_write_text_phase; + +void gregorio_write_text(gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *f, + void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), void (*end) (FILE *, grestyle_style), void (*printspchar) (FILE *, grewchar *)); -void gregorio_write_first_letter_alignment_text(bool skip_initial, - gregorio_character *current_character, - FILE *f, void (*printverb) (FILE *, grewchar *), +void gregorio_write_first_letter_alignment_text(gregorio_write_text_phase phase, + const gregorio_character *current_character, FILE *f, + void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), void (*end) (FILE *, grestyle_style), void (*printspchar) (FILE *, grewchar *)); -void gregorio_write_initial(gregorio_character *current_character, +void gregorio_write_initial(const gregorio_character *current_character, FILE *f, void (*printverb) (FILE *, grewchar *), void (*printchar) (FILE *, grewchar), void (*begin) (FILE *, grestyle_style), diff --git a/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c b/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c index f1c8fc6b8c9..f2adafa80c5 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c +++ b/Build/source/texk/gregorio/gregorio-src/src/dump/dump.c @@ -30,78 +30,15 @@ #include "plugins.h" #include "support.h" -static const char *unknown(int value) { - static char buf[20]; - gregorio_snprintf(buf, 20, "?%d", value); - return buf; -} - -static const char *dump_translation_type_to_string(gregorio_tr_centering - translation_type) -{ - switch (translation_type) { - case TR_NORMAL: - return "TR_NORMAL"; - case TR_WITH_CENTER_BEGINNING: - return "TR_WITH_CENTER_BEGINNING"; - case TR_WITH_CENTER_END: - return "TR_WITH_CENTER_END"; - } - return unknown(translation_type); -} - -static const char *dump_nlba_to_string(gregorio_nlba no_linebreak_area) -{ - switch (no_linebreak_area) { - case NLBA_NORMAL: - return "NLBA_NORMAL"; - case NLBA_BEGINNING: - return "NLBA_BEGINNING"; - case NLBA_END: - return "NLBA_END"; - } - return unknown(no_linebreak_area); -} - static const char *dump_style_to_string(grestyle_style style) { - switch (style) { - case ST_NO_STYLE: - return " ST_NO_STYLE"; - case ST_ITALIC: - return " ST_ITALIC"; - case ST_CENTER: - return " ST_CENTER"; - case ST_FORCED_CENTER: - return " ST_FORCED_CENTER"; - case ST_INITIAL: - return " ST_INITIAL"; - case ST_BOLD: - return " ST_BOLD"; - case ST_TT: - return " ST_TT"; - case ST_UNDERLINED: - return " ST_UNDERLINED"; - case ST_COLORED: - return " ST_COLORED"; - case ST_SMALL_CAPS: - return " ST_SMALL_CAPS"; - case ST_SPECIAL_CHAR: - return " ST_SPECIAL_CHAR"; - case ST_VERBATIM: - return " ST_VERBATIM"; - case ST_FIRST_WORD: - return " ST_FIRST_WORD"; - case ST_FIRST_SYLLABLE: - return "ST_FIRST_SYLLABLE"; - case ST_FIRST_SYLLABLE_INITIAL: - return "ST_FIRST_SYLLABLE_INITIAL"; - default: - return unknown(style); - } + static char buf[50]; + + gregorio_snprintf(buf, sizeof buf, "%16s", grestyle_style_to_string(style)); + return buf; } -static void dump_write_characters(FILE *const f, +void dump_write_characters(FILE *const f, const gregorio_character * current_character) { while (current_character) { @@ -124,399 +61,18 @@ static void dump_write_characters(FILE *const f, } } -static const char *dump_key_to_char(const int key) -{ - switch (key) { - case -2: - return "f1"; - case 0: - return "f2"; - case 2: - return "f3"; - case 4: - return "f4"; - case 1: - return "c1"; - case 3: - return "c2"; - case 5: - return "c3"; - case 7: - return "c4"; - } - return "no key defined"; -} - -static const char *dump_syllable_position(gregorio_word_position pos) -{ - switch (pos) { - case WORD_BEGINNING: - return "WORD_BEGINNING"; - case WORD_MIDDLE: - return "WORD_MIDDLE"; - case WORD_END: - return "WORD_END"; - case WORD_ONE_SYLLABLE: - return "WORD_ONE_SYLLABLE"; - } - return "unknown"; -} - -static const char *dump_type(gregorio_type type) -{ - switch (type) { - case GRE_NOTE: - return "GRE_NOTE"; - case GRE_GLYPH: - return "GRE_GLYPH"; - case GRE_ELEMENT: - return "GRE_ELEMENT"; - case GRE_FLAT: - return "GRE_FLAT"; - case GRE_SHARP: - return "GRE_SHARP"; - case GRE_NATURAL: - return "GRE_NATURAL"; - case GRE_C_KEY_CHANGE: - return "GRE_C_KEY_CHANGE"; - case GRE_F_KEY_CHANGE: - return "GRE_F_KEY_CHANGE"; - case GRE_END_OF_LINE: - return "GRE_END_OF_LINE"; - case GRE_END_OF_PAR: - return "GRE_END_OF_PAR"; - case GRE_CUSTOS: - return "GRE_CUSTOS"; - case GRE_SPACE: - return "GRE_SPACE"; - case GRE_BAR: - return "GRE_BAR"; - case GRE_SYLLABLE: - return "GRE_SYLLABLE"; - case GRE_TEXVERB_GLYPH: - return "GRE_TEXVERB_GLYPH"; - case GRE_TEXVERB_ELEMENT: - return "GRE_TEXVERB_ELEMENT"; - case GRE_NLBA: - return "GRE_NLBA"; - case GRE_ALT: - return "GRE_ALT"; - case GRE_MANUAL_CUSTOS: - return "GRE_MANUAL_CUSTOS"; - default: - return "unknown"; - } -} - -static const char *dump_bar_type(gregorio_bar element_type) -{ - switch (element_type) { - case B_NO_BAR: - return "B_NO_BAR"; - case B_VIRGULA: - return "B_VIRGULA"; - case B_DIVISIO_MINIMA: - return "B_DIVISIO_MINIMA"; - case B_DIVISIO_MINOR: - return "B_DIVISIO_MINOR"; - case B_DIVISIO_MAIOR: - return "B_DIVISIO_MAIOR"; - case B_DIVISIO_FINALIS: - return "B_DIVISIO_FINALIS"; - case B_DIVISIO_MINOR_D1: - return "B_DIVISIO_MINOR_D1"; - case B_DIVISIO_MINOR_D2: - return "B_DIVISIO_MINOR_D2"; - case B_DIVISIO_MINOR_D3: - return "B_DIVISIO_MINOR_D3"; - case B_DIVISIO_MINOR_D4: - return "B_DIVISIO_MINOR_D4"; - case B_DIVISIO_MINOR_D5: - return "B_DIVISIO_MINOR_D5"; - case B_DIVISIO_MINOR_D6: - return "B_DIVISIO_MINOR_D6"; - } - return "unknown"; -} - -static const char *dump_space_type(gregorio_space element_type) -{ - switch (element_type) { - case SP_DEFAULT: - return "SP_DEFAULT"; - case SP_NO_SPACE: - return "SP_NO_SPACE"; - case SP_ZERO_WIDTH: - return "SP_ZERO_WIDTH"; - case SP_NEUMATIC_CUT: - return "SP_NEUMATIC_CUT"; - case SP_LARGER_SPACE: - return "SP_LARGER_SPACE"; - case SP_GLYPH_SPACE: - return "SP_GLYPH_SPACE"; - case SP_GLYPH_SPACE_NB: - return "SP_GLYPH_SPACE_NB"; - case SP_LARGER_SPACE_NB: - return "SP_LARGER_SPACE_NB"; - case SP_NEUMATIC_CUT_NB: - return "SP_NEUMATIC_CUT_NB"; - } - return "unknown"; -} - -static const char *dump_liquescentia(gregorio_liquescentia liquescentia) -{ - switch (liquescentia) { - case L_NO_LIQUESCENTIA: - return "L_NO_LIQUESCENTIA"; - case L_DEMINUTUS: - return "L_DEMINUTUS"; - case L_AUCTUS_ASCENDENS: - return "L_AUCTUS_ASCENDENS"; - case L_AUCTUS_DESCENDENS: - return "L_AUCTUS_DESCENDENS"; - case L_AUCTA: - return "L_AUCTA"; - case L_INITIO_DEBILIS: - return "L_INITIO_DEBILIS"; - case L_DEMINUTUS_INITIO_DEBILIS: - return "L_DEMINUTUS_INITIO_DEBILIS"; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - return "L_AUCTUS_ASCENDENS_INITIO_DEBILIS"; - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - return "L_AUCTUS_DESCENDENS_INITIO_DEBILIS"; - case L_AUCTA_INITIO_DEBILIS: - return "L_AUCTA_INITIO_DEBILIS"; - } - return "unknown"; -} - -static const char *dump_glyph_type(gregorio_glyph_type glyph_type) -{ - switch (glyph_type) { - case G_PUNCTUM_INCLINATUM: - return "G_PUNCTUM_INCLINATUM"; - case G_2_PUNCTA_INCLINATA_DESCENDENS: - return "G_2_PUNCTA_INCLINATA_DESCENDENS"; - case G_3_PUNCTA_INCLINATA_DESCENDENS: - return "G_3_PUNCTA_INCLINATA_DESCENDENS"; - case G_4_PUNCTA_INCLINATA_DESCENDENS: - return "G_4_PUNCTA_INCLINATA_DESCENDENS"; - case G_5_PUNCTA_INCLINATA_DESCENDENS: - return "G_5_PUNCTA_INCLINATA_DESCENDENS"; - case G_2_PUNCTA_INCLINATA_ASCENDENS: - return "G_2_PUNCTA_INCLINATA_ASCENDENS"; - case G_3_PUNCTA_INCLINATA_ASCENDENS: - return "G_3_PUNCTA_INCLINATA_ASCENDENS"; - case G_4_PUNCTA_INCLINATA_ASCENDENS: - return "G_4_PUNCTA_INCLINATA_ASCENDENS"; - case G_5_PUNCTA_INCLINATA_ASCENDENS: - return "G_5_PUNCTA_INCLINATA_ASCENDENS"; - case G_TRIGONUS: - return "G_TRIGONUS"; - case G_PUNCTA_INCLINATA: - return "G_PUNCTA_INCLINATA"; - case G_UNDETERMINED: - return "G_UNDETERMINED"; - case G_VIRGA: - return "G_VIRGA"; - case G_VIRGA_REVERSA: - return "G_VIRGA_REVERSA"; - case G_STROPHA: - return "G_STROPHA"; - case G_STROPHA_AUCTA: - return "G_STROPHA_AUCTA"; - case G_PUNCTUM: - return "G_PUNCTUM"; - case G_PODATUS: - return "G_PODATUS"; - case G_PES_QUADRATUM: - return "G_PES_QUADRATUM"; - case G_FLEXA: - return "G_FLEXA"; - case G_TORCULUS: - return "G_TORCULUS"; - case G_TORCULUS_RESUPINUS: - return "G_TORCULUS_RESUPINUS"; - case G_TORCULUS_RESUPINUS_FLEXUS: - return "G_TORCULUS_RESUPINUS_FLEXUS"; - case G_PORRECTUS: - return "G_PORRECTUS"; - case G_PORRECTUS_FLEXUS: - return "G_PORRECTUS_FLEXUS"; - case G_BIVIRGA: - return "G_BIVIRGA"; - case G_TRIVIRGA: - return "G_TRIVIRGA"; - case G_DISTROPHA: - return "G_DISTROPHA"; - case G_DISTROPHA_AUCTA: - return "G_DISTROPHA_AUCTA"; - case G_TRISTROPHA: - return "G_TRISTROPHA"; - case G_ANCUS: - return "G_ANCUS"; - case G_TRISTROPHA_AUCTA: - return "G_TRISTROPHA_AUCTA"; - case G_PES_QUADRATUM_FIRST_PART: - return "G_PES_QUADRATUM_FIRST_PART"; - case G_SCANDICUS: - return "G_SCANDICUS"; - case G_SALICUS: - return "G_SALICUS"; - case G_VIRGA_STRATA: - return "G_VIRGA_STRATA"; - case G_TORCULUS_LIQUESCENS: - return "G_TORCULUS_LIQUESCENS"; - default: - return "unknown"; - } -} - -static const char *dump_shape(gregorio_shape shape) -{ - switch (shape) { - case S_UNDETERMINED: - return "S_UNDETERMINED"; - case S_PUNCTUM: - return "S_PUNCTUM"; - case S_PUNCTUM_END_OF_GLYPH: - return "S_PUNCTUM_END_OF_GLYPH"; - case S_PUNCTUM_INCLINATUM: - return "S_PUNCTUM_INCLINATUM"; - case S_PUNCTUM_INCLINATUM_DEMINUTUS: - return "S_PUNCTUM_INCLINATUM_DEMINUTUS"; - case S_PUNCTUM_INCLINATUM_AUCTUS: - return "S_PUNCTUM_INCLINATUM_AUCTUS"; - case S_VIRGA: - return "S_VIRGA"; - case S_VIRGA_REVERSA: - return "S_VIRGA_REVERSA"; - case S_BIVIRGA: - return "S_BIVIRGA"; - case S_TRIVIRGA: - return "S_TRIVIRGA"; - case S_ORISCUS: - return "S_ORISCUS"; - case S_ORISCUS_AUCTUS: - return "S_ORISCUS_AUCTUS"; - case S_ORISCUS_DEMINUTUS: - return "S_ORISCUS_DEMINUTUS"; - case S_ORISCUS_SCAPUS: - return "S_ORISCUS_SCAPUS"; - case S_QUILISMA: - return "S_QUILISMA"; - case S_STROPHA: - return "S_STROPHA"; - case S_STROPHA_AUCTA: - return "S_STROPHA_AUCTA"; - case S_DISTROPHA: - return "S_DISTROPHA"; - case S_DISTROPHA_AUCTA: - return "S_DISTROPHA_AUCTA"; - case S_TRISTROPHA: - return "S_TRISTROPHA"; - case S_TRISTROPHA_AUCTA: - return "S_TRISTROPHA_AUCTA"; - case S_QUADRATUM: - return "S_QUADRATUM"; - case S_PUNCTUM_CAVUM: - return "S_PUNCTUM_CAVUM"; - case S_LINEA_PUNCTUM: - return "S_LINEA_PUNCTUM"; - case S_LINEA_PUNCTUM_CAVUM: - return "S_LINEA_PUNCTUM_CAVUM"; - case S_LINEA: - return "S_LINEA"; - case S_PUNCTUM_CAVUM_INCLINATUM: - return "S_PUNCTUM_CAVUM_INCLINATUM"; - case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: - return "S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS"; - default: - return "unknown"; - } -} - -static const char *dump_signs(gregorio_sign signs) -{ - switch (signs) { - case _NO_SIGN: - return "_NO_SIGN"; - case _PUNCTUM_MORA: - return "_PUNCTUM_MORA"; - case _AUCTUM_DUPLEX: - return "_AUCTUM_DUPLEX"; - case _V_EPISEMA: - return "_V_EPISEMA"; - case _V_EPISEMA_PUNCTUM_MORA: - return "_V_EPISEMA_PUNCTUM_MORA"; - case _V_EPISEMA_AUCTUM_DUPLEX: - return "_V_EPISEMA_AUCTUM_DUPLEX"; - default: - return "unknown"; - } -} - -/* a function dumping special signs */ -static const char *dump_special_sign(gregorio_sign special_sign) -{ - switch (special_sign) { - case _ACCENTUS: - return "_ACCENTUS"; - case _ACCENTUS_REVERSUS: - return "_ACCENTUS_REVERSUS"; - case _CIRCULUS: - return "_CIRCULUS"; - case _SEMI_CIRCULUS: - return "_SEMI_CIRCULUS"; - case _SEMI_CIRCULUS_REVERSUS: - return "_SEMI_CIRCULUS_REVERSUS"; - case _V_EPISEMA: - return "_V_EPISEMA"; - case _V_EPISEMA_BAR_H_EPISEMA: - return "_V_EPISEMA_BAR_H_EPISEMA"; - case _BAR_H_EPISEMA: - return "_BAR_H_EPISEMA"; - default: - return "unknown"; - } -} - -static const char *dump_h_episema_size(grehepisema_size size) -{ - switch (size) { - case H_NORMAL: - return "H_NORMAL"; - case H_SMALL_LEFT: - return "H_SMALL_LEFT"; - case H_SMALL_CENTRE: - return "H_SMALL_CENTRE"; - case H_SMALL_RIGHT: - return "H_SMALL_RIGHT"; - } - return "unknown"; -} - static const char *dump_bool(bool value) { return value? "true" : "false"; } -static const char *dump_vposition(gregorio_vposition vpos) { - switch (vpos) { - case VPOS_AUTO: - return "VPOS_AUTO"; - case VPOS_ABOVE: - return "VPOS_ABOVE"; - case VPOS_BELOW: - return "VPOS_BELOW"; - } - return "unknown"; -} - -static const char *dump_pitch(const char height) { +static const char *dump_pitch(const char height, const char highest_pitch) { static char buf[20]; - if (height >= LOWEST_PITCH && height <= HIGHEST_PITCH) { - gregorio_snprintf(buf, 20, "%c", height + 'a' - LOWEST_PITCH); + if (height >= LOWEST_PITCH && height <= highest_pitch) { + char pitch = height + 'a' - LOWEST_PITCH; + if (pitch == 'o') { + pitch = 'p'; + } + gregorio_snprintf(buf, 20, "%c", pitch); } else { gregorio_snprintf(buf, 20, "?%d", height); } @@ -529,6 +85,7 @@ void dump_write_score(FILE *f, gregorio_score *score) int i; int annotation_num; gregorio_syllable *syllable; + gregorio_header *header; if (!f) { gregorio_message(_("call with NULL file"), "gregoriotex_write_score", @@ -552,63 +109,33 @@ void dump_write_score(FILE *f, gregorio_score *score) if (score->score_copyright) { fprintf(f, " score_copyright %s\n", score->score_copyright); } - if (score->office_part) { - fprintf(f, " office_part %s\n", score->office_part); - } - if (score->occasion) { - fprintf(f, " occasion %s\n", score->occasion); - } - if (score->meter) { - fprintf(f, " meter %s\n", score->meter); - } - if (score->commentary) { - fprintf(f, " commentary %s\n", score->commentary); - } - if (score->arranger) { - fprintf(f, " arranger %s\n", score->arranger); - } - if (score->si.author) { - fprintf(f, " author %s\n", score->si.author); - } - if (score->si.date) { - fprintf(f, " date %s\n", score->si.date); - } - if (score->si.manuscript) { - fprintf(f, " manuscript %s\n", score->si.manuscript); - } - if (score->si.manuscript_reference) { - fprintf(f, " manuscript_reference %s\n", - score->si.manuscript_reference); - } - if (score->si.manuscript_storage_place) { - fprintf(f, " manuscript_storage_place %s\n", - score->si.manuscript_storage_place); + if (score->author) { + fprintf(f, " author %s\n", score->author); } - if (score->si.book) { - fprintf(f, " book %s\n", score->si.book); - } - if (score->si.transcriber) { - fprintf(f, " transcriber %s\n", score->si.transcriber); - } - if (score->si.transcription_date) { - fprintf(f, " transcription_date %s\n", - score->si.transcription_date); + if (score->mode) { + fprintf(f, " mode %s\n", score->mode); } - if (score->gregoriotex_font) { - fprintf(f, " gregoriotex_font %s\n", - score->gregoriotex_font); + if (score->mode_modifier) { + fprintf(f, " mode_modifier %s\n", score->mode_modifier); } - if (score->mode) { - fprintf(f, " mode %d\n", score->mode); + if (score->mode_differentia) { + fprintf(f, " mode_differentia %s\n", score->mode_differentia); } - if (score->initial_style) { - fprintf(f, " initial_style %d\n", score->initial_style); + if (score->staff_lines != 4) { + fprintf(f, " staff_lines %d\n", (int)score->staff_lines); } if (score->nabc_lines) { - fprintf (f, " nabc_lines %d\n", (int)score->nabc_lines); + fprintf(f, " nabc_lines %d\n", (int)score->nabc_lines); + } + if (score->legacy_oriscus_orientation) { + fprintf(f, " oriscus-orientation legacy\n"); } - if (score->user_notes) { - fprintf(f, " user_notes %s\n", score->user_notes); + fprintf(f, "\n\n" + "=====================================================================\n" + " HEADERS\n" + "=====================================================================\n"); + for (header = score->headers; header; header = header->next) { + fprintf(f, " %-25s %s\n", header->name, header->value); } fprintf(f, "\n\n" "=====================================================================\n" @@ -616,13 +143,23 @@ void dump_write_score(FILE *f, gregorio_score *score) "=====================================================================\n"); for (i = 0; i < score->number_of_voices; i++) { fprintf(f, " Voice %d\n", i + 1); - if (voice_info->initial_key) { - fprintf(f, " initial_key %d (%s)\n", - voice_info->initial_key, - dump_key_to_char(voice_info->initial_key)); - if (voice_info->flatted_key) { + if (voice_info->initial_clef.line) { + fprintf(f, " initial_key %d (%c%d)\n", + gregorio_calculate_new_key(voice_info->initial_clef), + gregorio_clef_to_char(voice_info->initial_clef.clef), + voice_info->initial_clef.line); + if (voice_info->initial_clef.flatted) { fprintf(f, " flatted_key true\n"); } + if (voice_info->initial_clef.secondary_line) { + fprintf(f, " secondary_clef %c%d\n", + gregorio_clef_to_char( + voice_info->initial_clef.secondary_clef), + voice_info->initial_clef.secondary_line); + if (voice_info->initial_clef.secondary_flatted) { + fprintf(f, " secondary_flatted_key true\n"); + } + } } for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { @@ -631,13 +168,6 @@ void dump_write_score(FILE *f, gregorio_score *score) score->annotation[annotation_num]); } } - if (voice_info->style) { - fprintf(f, " style %s\n", voice_info->style); - } - if (voice_info->virgula_position) { - fprintf(f, " virgula_position %s\n", - voice_info->virgula_position); - } voice_info = voice_info->next_voice_info; } fprintf(f, "\n\n" @@ -649,20 +179,20 @@ void dump_write_score(FILE *f, gregorio_score *score) gregorio_element *element; if (syllable->type) { fprintf(f, " type %d (%s)\n", - syllable->type, dump_type(syllable->type)); + syllable->type, gregorio_type_to_string(syllable->type)); } if (syllable->position) { fprintf(f, " position %d (%s)\n", syllable->position, - dump_syllable_position(syllable->position)); + gregorio_word_position_to_string(syllable->position)); } if (syllable->special_sign) { fprintf(f, " special sign %s\n", - dump_special_sign(syllable->special_sign)); + gregorio_sign_to_string(syllable->special_sign)); } if (syllable->no_linebreak_area != NLBA_NORMAL) { fprintf(f, " no line break area %s\n", - dump_nlba_to_string(syllable->no_linebreak_area)); + gregorio_nlba_to_string(syllable->no_linebreak_area)); } if (syllable->text) { if (syllable->translation) { @@ -674,7 +204,7 @@ void dump_write_score(FILE *f, gregorio_score *score) && syllable->translation_type != TR_WITH_CENTER_END) || syllable->translation_type == TR_WITH_CENTER_END) { fprintf(f, "\n Translation type %s", - dump_translation_type_to_string + gregorio_tr_centering_to_string (syllable->translation_type)); if (syllable->translation_type == TR_WITH_CENTER_END) { fprintf(f, "\n"); @@ -692,13 +222,14 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "---------------------------------------------------------------------\n"); if (element->type) { fprintf(f, " type %d (%s)\n", - element->type, dump_type(element->type)); + element->type, gregorio_type_to_string(element->type)); } switch (element->type) { case GRE_CUSTOS: if (element->u.misc.pitched.pitch) { fprintf(f, " pitch %s\n", - dump_pitch(element->u.misc.pitched.pitch)); + dump_pitch(element->u.misc.pitched.pitch, + score->highest_pitch)); } if (element->u.misc.pitched.force_pitch) { fprintf(f, " force_pitch true\n"); @@ -706,10 +237,13 @@ void dump_write_score(FILE *f, gregorio_score *score) break; case GRE_SPACE: if (element->u.misc.unpitched.info.space) { - fprintf(f, " space %d (%s)\n", + char *factor = element->u.misc.unpitched.info. + ad_hoc_space_factor; + fprintf(f, " space %d (%s)%s%s\n", element->u.misc.unpitched.info.space, - dump_space_type(element->u.misc.unpitched.info. - space)); + gregorio_space_to_string( + element->u.misc.unpitched.info.space), + factor? " x " : "", factor? factor : ""); } break; case GRE_TEXVERB_ELEMENT: @@ -719,7 +253,7 @@ void dump_write_score(FILE *f, gregorio_score *score) case GRE_NLBA: fprintf(f, " nlba %d (%s)\n", element->u.misc.unpitched.info.nlba, - dump_nlba_to_string(element->u.misc.unpitched.info. + gregorio_nlba_to_string(element->u.misc.unpitched.info. nlba)); break; case GRE_ALT: @@ -730,40 +264,44 @@ void dump_write_score(FILE *f, gregorio_score *score) if (element->u.misc.unpitched.info.bar) { fprintf(f, " bar %d (%s)\n", element->u.misc.unpitched.info.bar, - dump_bar_type(element->u.misc.unpitched.info.bar)); + gregorio_bar_to_string(element->u.misc.unpitched. + info.bar)); if (element->u.misc.unpitched.special_sign) { fprintf(f, " special sign %d (%s)\n", element->u.misc.unpitched.special_sign, - dump_special_sign(element->u.misc.unpitched. - special_sign)); + gregorio_sign_to_string(element-> + u.misc.unpitched.special_sign)); } } break; - case GRE_C_KEY_CHANGE: - if (element->u.misc.pitched.pitch) { - fprintf(f, " clef %d (c%d)\n", - element->u.misc.pitched.pitch, - element->u.misc.pitched.pitch - '0'); - if (element->u.misc.pitched.flatted_key) { + case GRE_CLEF: + if (element->u.misc.clef.line) { + fprintf(f, " clef %d (%c%d)\n", + gregorio_calculate_new_key(element->u.misc.clef), + gregorio_clef_to_char(element->u.misc.clef.clef), + element->u.misc.clef.line); + if (element->u.misc.clef.flatted) { fprintf(f, " flatted_key true\n"); } - } - break; - case GRE_F_KEY_CHANGE: - if (element->u.misc.pitched.pitch) { - fprintf(f, " clef %d (f%d)\n", - element->u.misc.pitched.pitch, - element->u.misc.pitched.pitch - '0'); - if (element->u.misc.pitched.flatted_key) { - fprintf(f, " flatted_key true\n"); + if (element->u.misc.clef.secondary_line) { + fprintf(f, " secondary_clef %c%d\n", + gregorio_clef_to_char( + element->u.misc.clef.secondary_clef), + element->u.misc.clef.secondary_line); + if (element->u.misc.clef.secondary_flatted) { + fprintf(f, " secondary_flatted_key true\n"); + } } } break; case GRE_END_OF_LINE: - if (element->u.misc.unpitched.info.sub_type) { - fprintf(f, " sub_type %d (%s)\n", - element->u.misc.unpitched.info.sub_type, - dump_type(element->u.misc.unpitched.info.sub_type)); + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, " ragged true\n"); + } + if (element->u.misc.unpitched.info.eol_forces_custos) { + fprintf(f, " forces custos %s\n", + dump_bool(element + ->u.misc.unpitched.info.eol_forces_custos_on)); } break; case GRE_ELEMENT: @@ -773,7 +311,8 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); if (glyph->type) { fprintf(f, " type %d (%s)\n", - glyph->type, dump_type(glyph->type)); + glyph->type, gregorio_type_to_string(glyph-> + type)); } switch (glyph->type) { case GRE_TEXVERB_GLYPH: @@ -784,39 +323,33 @@ void dump_write_score(FILE *f, gregorio_score *score) case GRE_SPACE: fprintf(f, " space %d (%s)\n", glyph->u.misc.unpitched.info.space, - dump_space_type(glyph->u.misc.unpitched.info. - space)); + gregorio_space_to_string(glyph->u.misc. + unpitched.info.space)); break; case GRE_BAR: fprintf(f, " glyph_type %d (%s)\n", glyph->u.misc.unpitched.info.bar, - dump_bar_type(glyph->u.misc.unpitched.info. - bar)); + gregorio_bar_to_string(glyph->u.misc.unpitched. + info.bar)); if (glyph->u.misc.unpitched.special_sign) { fprintf(f, " special sign %d (%s)\n", glyph->u.misc.unpitched.special_sign, - dump_special_sign(glyph->u.misc.unpitched. - special_sign)); + gregorio_sign_to_string(glyph-> + u.misc.unpitched.special_sign)); } break; - case GRE_FLAT: - case GRE_NATURAL: - case GRE_SHARP: - fprintf(f, " pitch %s\n", - dump_pitch(glyph->u.misc.pitched.pitch)); - break; - case GRE_GLYPH: fprintf(f, " glyph_type %d (%s)\n", glyph->u.notes.glyph_type, - dump_glyph_type(glyph->u.notes.glyph_type)); + gregorio_glyph_type_to_string(glyph->u.notes. + glyph_type)); if (glyph->u.notes.liquescentia) { fprintf(f, " liquescentia %d (%s)\n", glyph->u.notes.liquescentia, - dump_liquescentia(glyph->u.notes. - liquescentia)); + gregorio_liquescentia_to_string( + glyph->u.notes.liquescentia)); } break; @@ -830,24 +363,27 @@ void dump_write_score(FILE *f, gregorio_score *score) fprintf(f, "- - - - - - - - - - - - - - - - - - - - - - - \n"); if (note->type) { fprintf(f, " type %d (%s)\n", - note->type, dump_type(note->type)); + note->type, + gregorio_type_to_string(note->type)); } switch (note->type) { case GRE_NOTE: if (note->u.note.pitch) { fprintf(f, " pitch %s\n", - dump_pitch(note->u.note.pitch)); + dump_pitch(note->u.note.pitch, + score->highest_pitch)); } if (note->u.note.shape) { fprintf(f, " shape %d (%s)\n", note->u.note.shape, - dump_shape(note->u.note.shape)); + gregorio_shape_to_string( + note->u.note.shape)); } if (note->u.note.liquescentia) { fprintf(f, " liquescentia %d (%s)\n", note->u.note.liquescentia, - dump_liquescentia(note->u.note. - liquescentia)); + gregorio_liquescentia_to_string( + note->u.note.liquescentia)); } break; @@ -865,7 +401,8 @@ void dump_write_score(FILE *f, gregorio_score *score) } if (note->signs) { fprintf(f, " signs %d (%s)\n", - note->signs, dump_signs(note->signs)); + note->signs, + gregorio_sign_to_string(note->signs)); } if (note->signs & _V_EPISEMA && note->v_episema_height) { if (note->v_episema_height < note->u.note.pitch) { @@ -879,18 +416,21 @@ void dump_write_score(FILE *f, gregorio_score *score) || note->signs == _V_EPISEMA_PUNCTUM_MORA) && note->mora_vposition) { fprintf(f, " mora vposition %s\n", - dump_vposition(note->mora_vposition)); + gregorio_vposition_to_string(note-> + mora_vposition)); } if (note->special_sign) { fprintf(f, " special sign %d (%s)\n", note->special_sign, - dump_special_sign(note->special_sign)); + gregorio_sign_to_string( + note->special_sign)); } if (note->h_episema_above == HEPISEMA_AUTO && note->h_episema_below == HEPISEMA_AUTO) { fprintf(f, " auto hepisema size %d (%s)\n", note->h_episema_above_size, - dump_h_episema_size(note->h_episema_above_size)); + grehepisema_size_to_string(note-> + h_episema_above_size)); fprintf(f, " auto hepisema bridge %s\n", dump_bool(note->h_episema_above_connect)); } @@ -898,18 +438,28 @@ void dump_write_score(FILE *f, gregorio_score *score) if (note->h_episema_above == HEPISEMA_FORCED) { fprintf(f, " above hepisema size %d (%s)\n", note->h_episema_above_size, - dump_h_episema_size(note->h_episema_above_size)); + grehepisema_size_to_string(note-> + h_episema_above_size)); fprintf(f, " above hepisema bridge %s\n", dump_bool(note->h_episema_above_connect)); } if (note->h_episema_below == HEPISEMA_FORCED) { fprintf(f, " below hepisema size %d (%s)\n", note->h_episema_below_size, - dump_h_episema_size(note->h_episema_below_size)); + grehepisema_size_to_string(note-> + h_episema_below_size)); fprintf(f, " below hepisema bridge %s\n", dump_bool(note->h_episema_below_connect)); } } + if (note->explicit_high_ledger_line) { + fprintf(f, " explicit high line %s\n", + dump_bool(note->supposed_high_ledger_line)); + } + if (note->explicit_low_ledger_line) { + fprintf(f, " explicit low line %s\n", + dump_bool(note->supposed_low_ledger_line)); + } } } } diff --git a/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h b/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h new file mode 100644 index 00000000000..e6c6ae1049e --- /dev/null +++ b/Build/source/texk/gregorio/gregorio-src/src/enum_generator.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md) + * + * This file is part of Gregorio. + * + * Gregorio is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Gregorio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Gregorio. If not, see <http://www.gnu.org/licenses/>. + */ + +/* These macros are used for generating enum code. This is based on the + * technique described in http://stackoverflow.com/a/202511 + * + * Two of these macros are meant for use outside this set of macros: + * + * - ENUM declares the enum itself and a prototype for the function that + * returns the string value of the enum's numeric value. This is meant to be + * used from a header file. + * - ENUM_TO_STRING defines the function whose prototype was declared by ENUM. + * This is meant to be used from a code file. + * + * These two macros both take the following two arguments: + * + * - TYPE is the name to use for the enum. + * - DEF is the name of a macro that generates the bodies of the enum and the + * to-string function. DEF should take four arguments, in the following + * order (with suggested names): + * - A is a macro that generates an enum value with a specifiec numeric + * value. It takes two arguments, the name and the numeric value. + * - E is a macro that generates an enum value that has no specific numeric + * value. It takes one argument, the name. + * - X is a macro that generates the last enum value when it has a specific + * numeric value. It takes the same two arguments as A. + * - L is a macro that generates the last enum value when it has no specific + * numeric value. It takes the same argument as E. + * + * Note: If we were supporting C11, we could take empty macro arguments and + * would be able to get away with only two arguments to DEF. + */ + +#ifndef ENUM_GENERATOR_H +#define ENUM_GENERATOR_H + +/* for enum values */ +#define ENUM_VALUE(NAME,VALUE) NAME = VALUE, +#define ENUM_ENTRY(NAME) NAME, +#define ENUM_LAST_VALUE(NAME,VALUE) NAME = VALUE +#define ENUM_LAST_ENTRY(NAME) NAME + +/* for enum case */ +#define ENUM_VALUE_CASE(NAME,VALUE) case NAME: return #NAME; +#define ENUM_ENTRY_CASE(NAME) case NAME: return #NAME; + +/* enum declaration */ +#define ENUM(TYPE,DEF) \ + typedef enum TYPE { \ + DEF(ENUM_VALUE, ENUM_ENTRY, ENUM_LAST_VALUE, ENUM_LAST_ENTRY) \ + } TYPE; \ + const char *TYPE##_to_string(TYPE value) + +/* enum *_to_string function defintiion */ +#define ENUM_TO_STRING(TYPE,DEF) \ + const char *TYPE##_to_string(TYPE value) \ + { \ + switch(value) { \ + DEF(ENUM_VALUE_CASE, ENUM_ENTRY_CASE, ENUM_VALUE_CASE, ENUM_ENTRY_CASE) \ + default: return gregorio_unknown(value); \ + } \ + } + +#endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c index 3991760f8ee..a0291dd50e3 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-elements-determination.c @@ -128,26 +128,21 @@ static gregorio_element *gabc_det_elements_from_glyphs( while (current_glyph) { if (current_glyph->type != GRE_GLYPH) { - /* we ignore flats and naturals, except if they are alone */ - if (current_glyph->type == GRE_NATURAL - || current_glyph->type == GRE_FLAT - || current_glyph->type == GRE_SHARP) { - if (!current_glyph->next) { - first_element = current_element; - close_element(¤t_element, &first_glyph, current_glyph); - } - current_glyph = current_glyph->next; - continue; - } - /* we must not cut after a zero_width_space */ - if (current_glyph->type == GRE_SPACE - && current_glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH) { - if (!current_glyph->next) { - close_element(¤t_element, &first_glyph, current_glyph); + /* we must not cut after a glyph-level space */ + if (current_glyph->type == GRE_SPACE) { + switch (current_glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + case SP_HALF_SPACE: + if (!current_glyph->next) { + close_element(¤t_element, &first_glyph, current_glyph); + } + current_glyph = current_glyph->next; + do_not_cut = true; + continue; + default: + /* any other space should be handled normally */ + break; } - current_glyph = current_glyph->next; - do_not_cut = true; - continue; } /* we must not cut after a zero_width_space */ if (current_glyph->type == GRE_TEXVERB_GLYPH) { @@ -161,16 +156,19 @@ static gregorio_element *gabc_det_elements_from_glyphs( cut_before(current_glyph, &first_glyph, &previous_glyph, ¤t_element); /* if statement to make neumatic cuts not appear in elements, as - * there is always one between elements */ + * there is always one between elements, unless the next element + * is a space */ if (current_glyph->type != GRE_SPACE - || current_glyph->u.misc.unpitched.info.space != SP_NEUMATIC_CUT) - /* clef change or space other thant neumatic cut */ - { + || current_glyph->u.misc.unpitched.info.space + != SP_NEUMATIC_CUT + || (current_glyph->next + && current_glyph->next->type == GRE_SPACE)) { + /* clef change or space other than neumatic cut */ if (!first_element) { first_element = current_element; } gregorio_add_misc_element(¤t_element, current_glyph->type, - current_glyph->u.misc, + &(current_glyph->u.misc), current_glyph->texverb); } first_glyph = current_glyph->next; @@ -191,6 +189,7 @@ static gregorio_element *gabc_det_elements_from_glyphs( } switch (current_glyph_type) { case G_PUNCTA_ASCENDENS: + case G_ALTERATION: if (!do_not_cut) { cut_before(current_glyph, &first_glyph, &previous_glyph, ¤t_element); @@ -264,21 +263,24 @@ static gregorio_element *gabc_det_elements_from_glyphs( */ static gregorio_element *gabc_det_elements_from_notes( - gregorio_note *current_note, int *current_key) + gregorio_note *current_note, int *current_key, + const gregorio_score *const score) { gregorio_element *final = NULL; - gregorio_glyph *tmp = gabc_det_glyphs_from_notes(current_note, current_key); + gregorio_glyph *tmp = gabc_det_glyphs_from_notes(current_note, current_key, + score); final = gabc_det_elements_from_glyphs(tmp); return final; } -gregorio_element *gabc_det_elements_from_string(char *const str, int *const current_key, - char *macros[10], gregorio_scanner_location *const loc) +gregorio_element *gabc_det_elements_from_string(char *const str, + int *const current_key, char *macros[10], + gregorio_scanner_location *const loc, const gregorio_score *const score) { gregorio_element *final; gregorio_note *tmp; - tmp = gabc_det_notes_from_string(str, macros, loc); - final = gabc_det_elements_from_notes(tmp, current_key); + tmp = gabc_det_notes_from_string(str, macros, loc, score); + final = gabc_det_elements_from_notes(tmp, current_key, score); return final; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c index 37328ee1d95..b54369e9e7b 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-glyphs-determination.c @@ -43,184 +43,6 @@ static __inline gregorio_scanner_location *copy_note_location( /**************************** * - * First see the comments of - * gabc_det_glyphs_from_notes. This function is used when - * we have finished to determine a glyph. We have the last glyph that - * have been added: last_glyph. The glyph we want to add is given by - * glyph_type and liquescentia. - * - * The glyph we want to add goes from first_note to current_note, we - * isolate these notes from the notes that won't be in the glyph, and - * we add the glyph to the list_of_glyphs. - * -****************************/ - -static gregorio_note *close_glyph(gregorio_glyph **last_glyph, - gregorio_glyph_type glyph_type, gregorio_note **first_note, - gregorio_liquescentia liquescentia, gregorio_note *current_note) -{ - gregorio_note *new_current_note = current_note; - gregorio_scanner_location loc; - /* a variable necessary for the patch for G_BIVIRGA & co. */ - gregorio_note *added_notes = NULL; - gregorio_note *next_note = NULL; - - /* patch to have good glyph type in the case where a glyph ends by a note - * with shape S_QUADRATUM */ - if (glyph_type == G_PES_QUADRATUM_FIRST_PART - || glyph_type == G_PES_QUILISMA_QUADRATUM_FIRST_PART) { - glyph_type = G_PUNCTUM; - } - - gregorio_add_glyph(last_glyph, glyph_type, *first_note, liquescentia); - if (current_note->next) { - current_note->next->previous = NULL; - *first_note = current_note->next; - current_note->next = NULL; - } - /* here we "patch" the structure for bivirga, tristropha, etc. */ - /* the idea is not to have a S_BIVIRGA in the shape of the note (which is - * dirty) but rather a G_BIVIRGA in the glyph (which is the case now) and - * two virgas */ - - if (glyph_type == G_BIVIRGA || glyph_type == G_DISTROPHA - || glyph_type == G_TRIVIRGA || glyph_type == G_TRISTROPHA - || glyph_type == G_DISTROPHA_AUCTA - || glyph_type == G_TRISTROPHA_AUCTA) { - gregorio_go_to_first_note(¤t_note); - while (current_note) { - if (current_note->type == GRE_NOTE) { - switch (current_note->u.note.shape) { - case S_TRIVIRGA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, - copy_note_location(current_note, &loc)); - case S_BIVIRGA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_VIRGA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - case S_TRISTROPHA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - case S_DISTROPHA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - case S_TRISTROPHA_AUCTA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - case S_DISTROPHA_AUCTA: - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, - current_note, - copy_note_location(current_note, &loc)); - gregorio_add_note(&added_notes, current_note->u.note.pitch, - S_STROPHA_AUCTA, current_note->signs, - current_note->u.note.liquescentia, current_note, - copy_note_location(current_note, &loc)); - break; - default: - break; - } - } - /* this is the case of two separate virga that have been spotted - * as a bivirga */ - if (!added_notes) { - break; - } - next_note = current_note->next; - /* now we have what we want, we set up the links and free the old - * note */ - if (next_note) { - current_note->next->previous = added_notes; - added_notes->next = next_note; - } - gregorio_go_to_first_note(&added_notes); - if (current_note->previous) { - current_note->previous->next = added_notes; - added_notes->previous = current_note->previous; - } else { - new_current_note = added_notes; - } - /* Detaching current_note is not strictly necessary here because we - * are effectively plucking out added_notes into its own glyph; - * however, detaching the note is safer if this behavior changes in - * the future because gregorio_free_one_note nullifies surrounding - * pointers */ - current_note->next = NULL; - current_note->previous = NULL; - gregorio_free_one_note(¤t_note); - if (!next_note) { - current_note = added_notes; - break; - } - current_note = next_note; - } - gregorio_go_to_first_note(¤t_note); - /* finally we set the just added glyph first_note to current_note */ - (*last_glyph)->u.notes.first_note = current_note; - } - return new_current_note; -} - -/* a small function to automatically determine the pitch of a custo : it is - * the pitch of the next note, but we must take care of the clef changes, as - * custo are (normally and for now) only present before clef changes. */ -/* TODO: there may be a side effect with the flated keys... */ - -static char gabc_determine_custo_pitch(gregorio_note *current_note, - int current_key) -{ - int pitch_difference = 0; - int newkey; - while (current_note) { - if (current_note->type == GRE_C_KEY_CHANGE - || current_note->type == GRE_C_KEY_CHANGE_FLATED) { - newkey = gregorio_calculate_new_key(C_KEY, - current_note->u.note.pitch - '0'); - pitch_difference = newkey - current_key; - } - if (current_note->type == GRE_F_KEY_CHANGE - || current_note->type == GRE_F_KEY_CHANGE_FLATED) { - newkey = gregorio_calculate_new_key(F_KEY, - current_note->u.note.pitch - '0'); - pitch_difference = newkey - current_key; - } - if (current_note->type == GRE_NOTE) { - pitch_difference = - (int) current_note->u.note.pitch - pitch_difference; - while (pitch_difference < LOWEST_PITCH) { - pitch_difference += 7; - } - while (pitch_difference > HIGHEST_PITCH) { - pitch_difference -= 7; - } - assert(pitch_difference >= LOWEST_PITCH - && pitch_difference <= HIGHEST_PITCH); - return (char) pitch_difference; - } - current_note = current_note->next; - } - return DUMMY_PITCH; -} - -/**************************** - * * This function is the basis of all the determination of glyphs. The * phylosophy of the function is to say : We have a glyph that we have * determined, and we have the following note, can we "add" it to the @@ -247,17 +69,17 @@ static char gabc_determine_custo_pitch(gregorio_note *current_note, * DET_END_OF_CURRENT: we have been able to add the note to the glyph, * but we won't be able to add more notes to the glyph, we can close * it. The new type is returned. - - * DET_END_OF_BOTH: we have'nt been able to add the note to the glyph, + * + * DET_END_OF_BOTH: we haven't been able to add the note to the glyph, * and we won't be able to add notes to the new glyph. This special * case is quite rare, we use it for trivirga, tristropha, etc. - + * * When we encouter a S_QUADRATUM (or S_QUILISMA_QUADRATUM), we build * a new glyph with the (temporary) shape G_PES_QUADRATUM_FIRST_PART * (or G_PES_QUILISMA_QUADRATUM_FIRST_PART), and we wait for the next * note. * -****************************/ + ****************************/ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, char current_pitch, char last_pitch, gregorio_shape shape, @@ -290,6 +112,12 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, next_glyph_type = G_PUNCTUM; *end_of_glyph = DET_END_OF_BOTH; break; + case S_FLAT: + case S_SHARP: + case S_NATURAL: + next_glyph_type = G_ALTERATION; + *end_of_glyph = DET_END_OF_BOTH; + break; case S_PUNCTUM: /* * we determine here the shape of the thing if it is made of puncta @@ -342,6 +170,14 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, case G_VIRGA_STRATA: if (current_pitch > last_pitch) { next_glyph_type = G_SALICUS; + } else { + next_glyph_type = G_PUNCTUM; + *end_of_glyph = DET_END_OF_PREVIOUS; + } + break; + case G_SALICUS: + if (current_pitch < last_pitch) { + next_glyph_type = G_SALICUS_FLEXUS; *end_of_glyph = DET_END_OF_CURRENT; } else { next_glyph_type = G_PUNCTUM; @@ -391,18 +227,14 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, break; } break; - case S_ORISCUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; - case S_ORISCUS_AUCTUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: - *end_of_glyph = DET_END_OF_PREVIOUS; - next_glyph_type = G_PUNCTUM; - break; + case S_ORISCUS_CAVUM_UNDETERMINED: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: case S_QUILISMA: *end_of_glyph = DET_END_OF_PREVIOUS; next_glyph_type = G_PUNCTUM; @@ -603,6 +435,362 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, /**************************** * + * First see the comments of + * gabc_det_glyphs_from_notes. This function is used when + * we have finished to determine a glyph. We have the last glyph that + * have been added: last_glyph. The glyph we want to add is given by + * glyph_type and liquescentia. + * + * The glyph we want to add goes from first_note to current_note, we + * isolate these notes from the notes that won't be in the glyph, and + * we add the glyph to the list_of_glyphs. + * +****************************/ + +static gregorio_note *close_normal_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + gregorio_note *new_current_note = current_note; + gregorio_scanner_location loc; + /* a variable necessary for the patch for G_BIVIRGA & co. */ + gregorio_note *added_notes = NULL; + gregorio_note *next_note = NULL; + + /* patch to have good glyph type in the case where a glyph ends by a note + * with shape S_QUADRATUM */ + if (glyph_type == G_PES_QUADRATUM_FIRST_PART + || glyph_type == G_PES_QUILISMA_QUADRATUM_FIRST_PART) { + glyph_type = G_PUNCTUM; + } + + gregorio_add_glyph(last_glyph, glyph_type, *first_note, liquescentia); + if (current_note->next) { + current_note->next->previous = NULL; + *first_note = current_note->next; + current_note->next = NULL; + } + /* here we "patch" the structure for bivirga, tristropha, etc. */ + /* the idea is not to have a S_BIVIRGA in the shape of the note (which is + * dirty) but rather a G_BIVIRGA in the glyph (which is the case now) and + * two virgas */ + + if (glyph_type == G_BIVIRGA || glyph_type == G_DISTROPHA + || glyph_type == G_TRIVIRGA || glyph_type == G_TRISTROPHA + || glyph_type == G_DISTROPHA_AUCTA + || glyph_type == G_TRISTROPHA_AUCTA) { + gregorio_go_to_first_note(¤t_note); + while (current_note) { + if (current_note->type == GRE_NOTE) { + switch (current_note->u.note.shape) { + case S_TRIVIRGA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, + copy_note_location(current_note, &loc)); + case S_BIVIRGA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, _NO_SIGN, L_NO_LIQUESCENTIA, current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_VIRGA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + case S_TRISTROPHA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + case S_DISTROPHA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + case S_TRISTROPHA_AUCTA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + case S_DISTROPHA_AUCTA: + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA, _NO_SIGN, L_NO_LIQUESCENTIA, + current_note, + copy_note_location(current_note, &loc)); + gregorio_add_note(&added_notes, current_note->u.note.pitch, + S_STROPHA_AUCTA, current_note->signs, + current_note->u.note.liquescentia, current_note, + copy_note_location(current_note, &loc)); + break; + default: + break; + } + } + /* this is the case of two separate virga that have been spotted + * as a bivirga */ + if (!added_notes) { + break; + } + next_note = current_note->next; + /* now we have what we want, we set up the links and free the old + * note */ + if (next_note) { + current_note->next->previous = added_notes; + added_notes->next = next_note; + } + gregorio_go_to_first_note(&added_notes); + if (current_note->previous) { + current_note->previous->next = added_notes; + added_notes->previous = current_note->previous; + } else { + new_current_note = added_notes; + } + /* Detaching current_note is not strictly necessary here because we + * are effectively plucking out added_notes into its own glyph; + * however, detaching the note is safer if this behavior changes in + * the future because gregorio_free_one_note nullifies surrounding + * pointers */ + current_note->next = NULL; + current_note->previous = NULL; + gregorio_free_one_note(¤t_note); + if (!next_note) { + current_note = added_notes; + break; + } + current_note = next_note; + } + gregorio_go_to_first_note(¤t_note); + /* finally we set the just added glyph first_note to current_note */ + (*last_glyph)->u.notes.first_note = current_note; + } + return new_current_note; +} + +static gregorio_note *close_fused_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + (*first_note)->u.note.liquescentia |= (liquescentia & L_FUSED); + return close_normal_glyph(last_glyph, glyph_type, first_note, liquescentia, + current_note); +} + +static gregorio_note *next_non_texverb_note(gregorio_note *first_note, + gregorio_note *last_note) +{ + if (first_note == NULL) { + return NULL; + } + + if (first_note == last_note) { + if (first_note->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at start of iteration"), + "next_non_texverb_note", VERBOSITY_ERROR, 0); + } + return first_note; + } + + for (first_note = first_note->next; first_note && first_note != last_note; + first_note = first_note->next) { + if (first_note->type != GRE_TEXVERB_GLYPH) { + return first_note; + } + } + + if (first_note && first_note->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at end of iteration"), + "next_non_texverb_note", VERBOSITY_ERROR, 0); + } + + return last_note; +} + +static void add_intervening_texverbs(gregorio_glyph **last_glyph, + gregorio_note *first_note, gregorio_note *last_note) +{ + for ( ; first_note && first_note->type == GRE_TEXVERB_GLYPH; ) { + bool on_last_note = (first_note == last_note); + + gregorio_add_unpitched_element_as_glyph(last_glyph, first_note->type, + &(first_note->u.other), _NO_SIGN, first_note->texverb); + first_note->texverb = NULL; + gregorio_free_one_note(&first_note); + + if (on_last_note) { + break; + } + } +} + +static gregorio_note *close_fusion_glyph(gregorio_glyph **last_glyph, + gregorio_note **first_note, gregorio_liquescentia liquescentia, + gregorio_note *real_last_note) +{ + bool first = true; + gregorio_note *last_note, *texverb_tail; + gregorio_note *next; + int prev_shift = 0, shift, shift2; + gregorio_note *result; + + if ((*first_note)->type == GRE_TEXVERB_GLYPH) { + gregorio_message(_("Unexpected texverb at start of fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return real_last_note; + } + + for (last_note = real_last_note; + last_note != *first_note && last_note->type == GRE_TEXVERB_GLYPH; + last_note = last_note->previous) { + /* skip over the trailing texverbs */ + } + texverb_tail = (last_note == real_last_note)? NULL : last_note->next; + + for (;;) { + bool processed = false; + + /* fusion must work through glyph-level texverbs */ + if ((*first_note)->type == GRE_TEXVERB_GLYPH) { + gregorio_add_unpitched_element_as_glyph(last_glyph, + (*first_note)->type, &((*first_note)->u.other), _NO_SIGN, + (*first_note)->texverb); + (*first_note)->texverb = NULL; + if (*first_note == last_note) { + gregorio_message(_("Unexpected texverb at end of fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + gregorio_free_one_note(first_note); + } + + if (*first_note == last_note || !(next = (*first_note)->next)) { + gregorio_message(_("Unexpected single note during fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + + next = next_non_texverb_note(*first_note, last_note); + + shift = next->u.note.pitch - (*first_note)->u.note.pitch; + if (shift != 0 && next == last_note) { + /* there are exactly two notes left, so we end fusion */ + add_intervening_texverbs(last_glyph, (*first_note)->next, next); + result = close_fused_glyph(last_glyph, + shift < 0? G_FLEXA : G_PODATUS, first_note, + liquescentia, last_note); + if (texverb_tail) { + add_intervening_texverbs(last_glyph, texverb_tail, + real_last_note); + } + return result; + } + if (prev_shift >= 0 && shift < 0) { + /* check for a porrectus-like flexus */ + gregorio_note *next_next = next_non_texverb_note(next, last_note); + if (!next_next) { + gregorio_message(_("Unexpected end of notes during fusion"), + "close_fusion_glyph", VERBOSITY_ERROR, 0); + return last_note; + } + shift2 = next_next->u.note.pitch - next->u.note.pitch; + if (shift2 > 0) { + if (next_next == last_note) { + /* there are exactly three notes left in a porrectus shape, + * so we end fusion */ + add_intervening_texverbs(last_glyph, (*first_note)->next, + next); + add_intervening_texverbs(last_glyph, next->next, next_next); + result = close_fused_glyph(last_glyph, + G_PORRECTUS, first_note, + liquescentia, last_note); + add_intervening_texverbs(last_glyph, texverb_tail, + real_last_note); + return result; + } + /* found a porrectus-like flexus */ + add_intervening_texverbs(last_glyph, *first_note, next); + close_fused_glyph(last_glyph, + shift < 0? G_FLEXA : G_PODATUS, first_note, + liquescentia & ~TAIL_LIQUESCENTIA_MASK, next); + prev_shift = shift2; + processed = true; + } + } + + if (!processed) { + /* didn't find anything interesting, so fuse the single note */ + gabc_determination ignored; + gregorio_glyph_type next_glyph_type = + gregorio_add_note_to_a_glyph(G_UNDETERMINED, + (*first_note)->u.note.pitch, 0, (*first_note)->u.note.shape, + (*first_note)->u.note.liquescentia, *first_note, &ignored); + close_fused_glyph(last_glyph, next_glyph_type, first_note, + liquescentia & ~TAIL_LIQUESCENTIA_MASK, *first_note); + prev_shift = shift; + } + + if (first) { + first = false; + liquescentia = (liquescentia & TAIL_LIQUESCENTIA_MASK) | L_FUSED; + } + } +} + +static gregorio_note *close_glyph(gregorio_glyph **last_glyph, + gregorio_glyph_type glyph_type, gregorio_note **first_note, + gregorio_liquescentia liquescentia, gregorio_note *current_note) +{ + if (glyph_type == G_FUSED) { + return close_fusion_glyph(last_glyph, first_note, liquescentia, + current_note); + } else { + return close_normal_glyph(last_glyph, glyph_type, first_note, + liquescentia, current_note); + } +} + +/* a small function to automatically determine the pitch of a custo : it is + * the pitch of the next note, but we must take care of the clef changes, as + * custo are (normally and for now) only present before clef changes. */ +/* TODO: there may be a side effect with the flated keys... */ + +static char gabc_determine_custo_pitch(gregorio_note *current_note, + int current_key, const gregorio_score *const score) +{ + int pitch_difference = 0; + int newkey; + for (; current_note; current_note = current_note->next) { + switch (current_note->type) { + case GRE_CLEF: + newkey = gregorio_calculate_new_key(current_note->u.clef); + pitch_difference = newkey - current_key; + break; + + case GRE_NOTE: + pitch_difference = + (int) current_note->u.note.pitch - pitch_difference; + while (pitch_difference < LOWEST_PITCH) { + pitch_difference += 7; + } + while (pitch_difference > score->highest_pitch) { + pitch_difference -= 7; + } + assert(pitch_difference >= LOWEST_PITCH + && pitch_difference <= score->highest_pitch); + return (char) pitch_difference; + + default: + break; + } + } + return DUMMY_PITCH; +} + +/**************************** + * * Function called with a list of gregorio_notes as argument, this * list is determined from gabc notation by the function * gabc_det_notes_from_string. @@ -640,7 +828,7 @@ static char gregorio_add_note_to_a_glyph(gregorio_glyph_type current_glyph_type, /* this function updates current_key with the new values (with clef changes) */ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, - int *current_key) + int *current_key, const gregorio_score *const score) { /* the first note of the current glyph, to be able to close it well: * later we will cut the link (next_notes and previous_note) between @@ -655,8 +843,6 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, gregorio_glyph_type current_glyph_type = G_UNDETERMINED; gregorio_glyph_type next_glyph_type = G_UNDETERMINED; char last_pitch = USELESS_VALUE; - /* a variable for the signs of bars and to tell if a key is flatted or - * not */ gregorio_note *next_note = NULL; /* determination of end of glyphs, see comments on @@ -665,6 +851,8 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, /* a char representing the liquescentia of the current glyph */ gregorio_liquescentia liquescentia = L_NO_LIQUESCENTIA; + gregorio_liquescentia head_liquescentia; + bool autofuse = false, first_autofused_note = false; if (current_note == NULL) { return NULL; @@ -673,14 +861,20 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, gregorio_go_to_first_note(¤t_note); while (current_note) { + bool add = true; + next_note = current_note->next; if (current_note->type != GRE_NOTE) { gregorio_type type = current_note->type; char pitch = USELESS_VALUE; - bool flat = false; bool force = false; gregorio_sign sign = _NO_SIGN; + if (current_glyph_type == G_FUSED && type == GRE_TEXVERB_GLYPH) { + current_note = next_note; + continue; + } + if (current_glyph_type != G_UNDETERMINED) { close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, liquescentia, @@ -690,33 +884,14 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, } switch (type) { - case GRE_C_KEY_CHANGE: + case GRE_CLEF: pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0'); - break; - - case GRE_F_KEY_CHANGE: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0'); - break; - - case GRE_C_KEY_CHANGE_FLATED: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(C_KEY, pitch - '0'); - type = GRE_C_KEY_CHANGE; - flat = true; - break; - - case GRE_F_KEY_CHANGE_FLATED: - pitch = current_note->u.note.pitch; - *current_key = gregorio_calculate_new_key(F_KEY, pitch - '0'); - type = GRE_F_KEY_CHANGE; - flat = true; + *current_key = gregorio_calculate_new_key(current_note->u.clef); break; case GRE_CUSTOS: pitch = gabc_determine_custo_pitch(current_note->next, - *current_key); + *current_key, score); break; case GRE_MANUAL_CUSTOS: @@ -741,10 +916,15 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, } break; - case GRE_FLAT: - case GRE_SHARP: - case GRE_NATURAL: - pitch = current_note->u.note.pitch; + case GRE_AUTOFUSE_START: + autofuse = true; + first_autofused_note = true; + add = false; + break; + + case GRE_AUTOFUSE_END: + autofuse = false; + add = false; break; default: @@ -752,12 +932,18 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, break; } - if (pitch == USELESS_VALUE) { - gregorio_add_unpitched_element_as_glyph(&last_glyph, type, - current_note->u.other, sign, current_note->texverb); - } else { - gregorio_add_pitched_element_as_glyph(&last_glyph, type, pitch, - flat, force, current_note->texverb); + if (add) { + if (pitch == USELESS_VALUE) { + gregorio_add_unpitched_element_as_glyph(&last_glyph, type, + &(current_note->u.other), sign, + current_note->texverb); + } else if (type == GRE_CLEF) { + gregorio_add_clef_as_glyph(&last_glyph, + current_note->u.clef, current_note->texverb); + } else { + gregorio_add_pitched_element_as_glyph(&last_glyph, type, + pitch, force, current_note->texverb); + } } current_glyph_first_note = current_note->next; current_note->texverb = NULL; @@ -766,31 +952,86 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, continue; } - /* - * first we do what must be done with liquescentia - */ - if (is_initio_debilis(current_note->u.note.liquescentia)) { - /* - * meaning that the note is an initio debilis, maybe more - */ + /* first we do what must be done with liquescentia */ + head_liquescentia = current_note->u.note.liquescentia + & (L_INITIO_DEBILIS | L_FUSED); + if (head_liquescentia) { + /* initio debilis or fused */ if (current_glyph_type != G_UNDETERMINED) { - /* - * if it is not the first glyph - */ + /* if it is not the first glyph */ close_glyph(&last_glyph, current_glyph_type, ¤t_glyph_first_note, liquescentia, current_note->previous); current_glyph_type = G_UNDETERMINED; } - liquescentia = L_INITIO_DEBILIS; + liquescentia = head_liquescentia; + } + + if (autofuse) { + if (current_glyph_first_note == current_note) { + if (first_autofused_note) { + first_autofused_note = false; + } else { + if (!(current_note->u.note.liquescentia & L_INITIO_DEBILIS)) { + current_note->u.note.liquescentia |= L_FUSED; + liquescentia |= L_FUSED; + } + } + } else { + /* only handle the multi-note case here; the single-note + * case will be added normally by the state machine */ + if (is_tail_liquescentia(current_note->u.note.liquescentia) + && current_glyph_type > G_PUNCTA_INCLINATA) { + /* once we hit a liquescent, that's the end of a string of + * fused notes */ + liquescentia |= current_note->u.note.liquescentia; + current_note = close_glyph(&last_glyph, G_FUSED, + ¤t_glyph_first_note, liquescentia, + current_note); + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; + add = false; + } else { + switch (current_note->u.note.shape) { + case S_PUNCTUM: + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_SCAPUS: + case S_QUILISMA: + case S_QUADRATUM: + case S_QUILISMA_QUADRATUM: + /* these are fusible */ + if (current_glyph_type <= G_PUNCTA_INCLINATA) { + /* if we had some puncta inclinata, then end them */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, + liquescentia, current_note->previous); + if (!(current_note->u.note.liquescentia + & L_INITIO_DEBILIS)) { + current_note->u.note.liquescentia |= L_FUSED; + liquescentia |= L_FUSED; + } + } + next_glyph_type = current_glyph_type = G_FUSED; + add = false; + break; + + default: + /* not fusible; will be added normally by the state + * machine */ + break; + } + } + } } - next_glyph_type = - gregorio_add_note_to_a_glyph(current_glyph_type, - current_note->u.note.pitch, last_pitch, - current_note->u.note.shape, - current_note->u.note.liquescentia, - current_glyph_first_note, &end_of_glyph); + if (add) { + next_glyph_type = + gregorio_add_note_to_a_glyph(current_glyph_type, + current_note->u.note.pitch, last_pitch, + current_note->u.note.shape, + current_note->u.note.liquescentia, + current_glyph_first_note, &end_of_glyph); + } /* patch to have good shapes in the special cases of pes quadratum and * pes quilisma quadratum. */ @@ -808,186 +1049,190 @@ gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, break; } - /* see comments on gregorio_add_note_to_a_glyph for the meaning of - * end_of_glyph */ - switch (end_of_glyph) { - case DET_NO_END: - current_glyph_type = next_glyph_type; - /* - * we deal with liquescentia - */ - if (is_liquescentia(current_note->u.note.liquescentia)) { - /* special cases of oriscus auctus, treated like normal oriscus - * in some cases. */ - if (current_note->u.note.shape == S_ORISCUS_AUCTUS - && current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.pitch < - current_note->u.note.pitch) { - last_pitch = current_note->u.note.pitch; - current_note->u.note.shape = S_ORISCUS; - current_note->u.note.liquescentia = L_NO_LIQUESCENTIA; - current_note = next_note; - continue; - } - /* special cases of the punctum inclinatum deminutus and - * auctus */ - if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { - if (current_note->u.note.liquescentia == L_DEMINUTUS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_DEMINUTUS; + if (add) { + /* see comments on gregorio_add_note_to_a_glyph for the meaning of + * end_of_glyph */ + switch (end_of_glyph) { + case DET_NO_END: + current_glyph_type = next_glyph_type; + /* + * we deal with liquescentia + */ + if (is_tail_liquescentia(current_note->u.note.liquescentia)) { + /* special cases of oriscus descendens, treated like normal + * oriscus in some cases. */ + if (score->legacy_oriscus_orientation) { + if ((current_note->u.note.shape == S_ORISCUS_DESCENDENS + || current_note->u.note.shape + == S_ORISCUS_CAVUM_DESCENDENS) + && current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.pitch < + current_note->u.note.pitch) { + last_pitch = current_note->u.note.pitch; + current_note->u.note.shape = + current_note->u.note.shape + == S_ORISCUS_DESCENDENS? S_ORISCUS_ASCENDENS + : S_ORISCUS_CAVUM_ASCENDENS; + current_note->u.note.liquescentia = + L_NO_LIQUESCENTIA; + current_note = next_note; + continue; + } } - if (current_note->u.note.liquescentia == L_AUCTA - || current_note->u.note.liquescentia == - L_AUCTUS_DESCENDENS - || current_note->u.note.liquescentia == - L_AUCTUS_ASCENDENS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_AUCTUS; + /* special cases of the punctum inclinatum deminutus and + * auctus */ + if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { + if (current_note->u.note.liquescentia == L_DEMINUTUS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_DEMINUTUS; + } + if (current_note->u.note.liquescentia == + L_AUCTUS_DESCENDENS + || current_note->u.note.liquescentia == + L_AUCTUS_ASCENDENS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_AUCTUS; + } + + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + last_pitch = current_note->u.note.pitch; + current_note = next_note; + continue; + } } + if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { + switch (current_note->u.note.liquescentia + & TAIL_LIQUESCENTIA_MASK) { + case L_AUCTUS_DESCENDENS: + case L_AUCTUS_ASCENDENS: + current_note->u.note.shape = + S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; + break; + + default: + /* do nothing */ + break; + } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - last_pitch = current_note->u.note.pitch; - current_note = next_note; - continue; + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + last_pitch = current_note->u.note.pitch; + current_note = next_note; + continue; + } } + liquescentia |= current_note->u.note.liquescentia; + /* once again, only works with the good values in the header + * file */ + current_note = close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, current_note); + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; } - if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { - switch (current_note->u.note.liquescentia) { - case L_AUCTA: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - current_note->u.note.shape = - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; - break; - - default: - /* do nothing */ - break; + break; + case DET_END_OF_PREVIOUS: + if (current_note->previous) + { + /* we don't want to close previous glyph twice */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, + current_note->previous); + } + current_glyph_type = next_glyph_type; + liquescentia = L_NO_LIQUESCENTIA; + last_pitch = USELESS_VALUE; + /* we deal with liquescentia */ + if (is_tail_liquescentia(current_note->u.note.liquescentia)) + /* not an initio debilis, because we considered it in the first + * part... */ + { + /* special cases of the punctum inclinatum deminutus and + * auctus */ + if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { + if (current_note->u.note.liquescentia == L_DEMINUTUS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_DEMINUTUS; + } + if (current_note->u.note.liquescentia == + L_AUCTUS_DESCENDENS + || current_note->u.note.liquescentia == + L_AUCTUS_ASCENDENS) { + current_note->u.note.shape = + S_PUNCTUM_INCLINATUM_AUCTUS; + } + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + current_note = next_note; + continue; + } } + if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { + switch (current_note->u.note.liquescentia + & TAIL_LIQUESCENTIA_MASK) { + case L_AUCTUS_DESCENDENS: + case L_AUCTUS_ASCENDENS: + current_note->u.note.shape = + S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; + break; + + default: + /* do nothing */ + break; + } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - last_pitch = current_note->u.note.pitch; - current_note = next_note; - continue; + if (current_note->next + && current_note->next->type == GRE_NOTE + && current_note->next->u.note.shape == + S_PUNCTUM_INCLINATUM + && current_note->next->u.note.liquescentia == + L_DEMINUTUS) { + current_note = next_note; + continue; + } } + current_note = close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, + current_note->u.note.liquescentia, current_note); + current_glyph_type = G_UNDETERMINED; } + break; + case DET_END_OF_CURRENT: liquescentia += current_note->u.note.liquescentia; - /* once again, only works with the good values in the header - * file */ - current_note = close_glyph(&last_glyph, current_glyph_type, + /* once again, only works with the good values in the header file */ + current_note = close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, liquescentia, current_note); current_glyph_type = G_UNDETERMINED; liquescentia = L_NO_LIQUESCENTIA; - } - break; - case DET_END_OF_PREVIOUS: - if (current_note->previous) - { - /* we don't want to close previous glyph twice */ - close_glyph(&last_glyph, current_glyph_type, - ¤t_glyph_first_note, liquescentia, - current_note->previous); - } - current_glyph_type = next_glyph_type; - liquescentia = L_NO_LIQUESCENTIA; - last_pitch = USELESS_VALUE; - /* we deal with liquescentia */ - if (is_liquescentia(current_note->u.note.liquescentia)) - /* not an initio debilis, because we considered it in the first - * part... */ - { - /* special cases of the punctum inclinatum deminutus and - * auctus */ - if (current_note->u.note.shape == S_PUNCTUM_INCLINATUM) { - if (current_note->u.note.liquescentia == L_DEMINUTUS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_DEMINUTUS; - } - if (current_note->u.note.liquescentia == L_AUCTA - || current_note->u.note.liquescentia == - L_AUCTUS_DESCENDENS - || current_note->u.note.liquescentia == - L_AUCTUS_ASCENDENS) { - current_note->u.note.shape = - S_PUNCTUM_INCLINATUM_AUCTUS; - } - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - current_note = next_note; - continue; - } - } - if (current_note->u.note.shape == S_PUNCTUM_CAVUM_INCLINATUM) { - switch (current_note->u.note.liquescentia) { - case L_AUCTA: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - current_note->u.note.shape = - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS; - break; - - default: - /* do nothing */ - break; - } - - if (current_note->next - && current_note->next->type == GRE_NOTE - && current_note->next->u.note.shape == - S_PUNCTUM_INCLINATUM - && current_note->next->u.note.liquescentia == - L_DEMINUTUS) { - current_note = next_note; - continue; - } + break; + case DET_END_OF_BOTH: + if (current_note->previous) + { + /* we don't want to close previous glyph twice */ + close_glyph(&last_glyph, current_glyph_type, + ¤t_glyph_first_note, liquescentia, + current_note->previous); } - current_note = close_glyph(&last_glyph, current_glyph_type, + current_glyph_type = G_UNDETERMINED; + liquescentia = L_NO_LIQUESCENTIA; + current_note = close_glyph(&last_glyph, next_glyph_type, ¤t_glyph_first_note, current_note->u.note.liquescentia, current_note); - current_glyph_type = G_UNDETERMINED; - } - break; - case DET_END_OF_CURRENT: - liquescentia += current_note->u.note.liquescentia; - /* once again, only works with the good values in the header file */ - current_note = close_glyph(&last_glyph, next_glyph_type, - ¤t_glyph_first_note, liquescentia, current_note); - current_glyph_type = G_UNDETERMINED; - liquescentia = L_NO_LIQUESCENTIA; - break; - default: /* case DET_END_OF_BOTH: */ - if (current_note->previous) - { - /* we don't want to close previous glyph twice */ - close_glyph(&last_glyph, current_glyph_type, - ¤t_glyph_first_note, liquescentia, - current_note->previous); + break; } - current_glyph_type = G_UNDETERMINED; - liquescentia = L_NO_LIQUESCENTIA; - current_note = close_glyph(&last_glyph, next_glyph_type, - ¤t_glyph_first_note, - current_note->u.note.liquescentia, current_note); - break; } if (!next_note && current_glyph_type != G_UNDETERMINED) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c index cf07911a96c..28602e9290d 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination-l.c @@ -403,1212 +403,1212 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, - 28, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 29, 30, 26, 26, 26, 31, 26, 32, - - 26, 26, 26, 26, 33, 34, 35, 36, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 37, 38, - 39, 40, 41, 26, 26, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 26, 43, - 26, 26, 44, 26, 26, 26, 45, 46, 26, 26, - 47, 48, 26, 26, 26, 49, 50, 51, 51, 52, - 51, 51, 53, 51, 51, 51, 51, 51, 51, 51, - 26, 54, 26, 55, 56, 57, 26, 26, 58, 59, - 26, 26, 60, 61, 26, 62, 63, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26 - }, - - { - 25, 26, 26, 26, 26, 26, 26, 26, 26, 27, - 28, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 29, 30, 26, 26, 26, 31, 26, 32, - 26, 26, 26, 26, 33, 34, 35, 36, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 37, 38, - 39, 40, 41, 26, 26, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42, 42, 26, 43, - - 26, 26, 44, 26, 26, 26, 45, 46, 26, 26, - 47, 48, 26, 26, 26, 49, 50, 51, 51, 52, - 51, 51, 53, 51, 51, 51, 51, 51, 51, 51, - 26, 54, 26, 55, 56, 57, 26, 26, 58, 59, - 26, 26, 60, 61, 26, 62, 63, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26 - }, - - { - 25, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64 - }, - - { - 25, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64 - - }, - - { - 25, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66 - }, - - { - 25, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 65, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66 - }, - - { - 25, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 65, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67 - }, - - { - 25, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 65, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, 67, 67 - }, - - { - 25, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 65, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - - }, - - { - 25, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 65, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - }, - - { - 25, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 65, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69 - }, - - { - 25, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 65, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, - 69, 69, 69, 69, 69, 69 - }, - - { - 25, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 65, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70 - }, - - { - 25, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 65, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70 - - }, - - { - 25, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 72, 71, 71, 72, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71 - }, - - { - 25, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 72, 71, 71, 72, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71 - }, - - { - 25, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 65, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73 - }, - - { - 25, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 65, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73 - }, - - { - 25, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 65, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74 - - }, - - { - 25, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 65, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74 - }, - - { - 25, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 65, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75 - }, - - { - 25, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 65, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75 - }, - - { - 25, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 65, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76 - }, - - { - 25, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 65, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76 - - }, - - { - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25, -25, -25, -25, -25, - -25, -25, -25, -25, -25, -25 - }, - - { - 25, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - - -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26 - }, - - { - 25, -27, -27, -27, -27, -27, -27, -27, -27, 77, - 77, -27, -27, 77, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27 - }, - - { - 25, -28, -28, -28, -28, -28, -28, -28, -28, 77, - 77, -28, -28, 77, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, -28, -28 - }, - - { - 25, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29 - - }, - - { - 25, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 79, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 80, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78 - }, - - { - 25, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - - -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, - -31, -31, -31, -31, -31, -31 - }, - - { - 25, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, 81, 81, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32 - }, - - { - 25, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, 82, - 83, 84, 85, 86, 87, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33 - }, - - { - 25, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - - -34, -34, -34, -34, -34, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, 88, 88, 88, + 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, + 42, 40, 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 43, 44, 40, 45, 40, 46, 40, 47, + + 40, 40, 40, 40, 48, 49, 50, 51, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 52, 53, + 54, 55, 56, 40, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, + 58, 40, 60, 40, 40, 40, 61, 62, 40, 40, + 63, 64, 40, 65, 40, 66, 67, 68, 68, 69, + 68, 68, 69, 68, 68, 68, 68, 68, 68, 68, + 68, 70, 68, 71, 72, 73, 40, 40, 74, 75, + 76, 77, 78, 79, 40, 80, 81, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40 + }, + + { + 39, 40, 40, 40, 40, 40, 40, 40, 40, 41, + 42, 40, 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 43, 44, 40, 45, 40, 46, 40, 47, + 40, 40, 40, 40, 48, 49, 50, 51, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 52, 53, + 54, 55, 56, 40, 57, 58, 58, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, + + 58, 40, 60, 40, 40, 40, 61, 62, 40, 40, + 63, 64, 40, 65, 40, 66, 67, 68, 68, 69, + 68, 68, 69, 68, 68, 68, 68, 68, 68, 68, + 68, 70, 68, 71, 72, 73, 40, 40, 74, 75, + 76, 77, 78, 79, 40, 80, 81, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40 + }, + + { + 39, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82 + }, + + { + 39, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 83, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82 + + }, + + { + 39, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 83, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84 + }, + + { + 39, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 83, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84 + }, + + { + 39, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 83, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85 + }, + + { + 39, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 83, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85 + }, + + { + 39, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 83, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86 + + }, + + { + 39, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 83, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86 + }, + + { + 39, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 83, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87 + }, + + { + 39, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 83, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87 + }, + + { + 39, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, -34, -34, -34, -34, -34 - - }, - - { - 25, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, 89, 89, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, -35, -35, -35, -35, -35 - }, - - { - 25, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, 90, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - - -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36 - }, - - { - 25, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, 91, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37 - }, - - { - 25, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, 92, - 93, 94, 95, 96, 97, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38 - }, - - { - 25, -39, -39, -39, -39, -39, -39, -39, -39, -39, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 83, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88 + }, + + { + 39, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 83, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88 + + }, + + { + 39, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 90, 89, 89, 90, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89 + }, + + { + 39, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 90, 89, 89, 90, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89 + }, + + { + 39, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 83, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 39, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 83, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91 + }, + + { + 39, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 83, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 + + }, + + { + 39, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 83, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 + }, + + { + 39, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 83, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93 + }, + + { + 39, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 83, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 93, 93, 93, 93, 93 + }, + + { + 39, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 83, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94 + }, + + { + 39, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 83, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, + 94, 94, 94, 94, 94, 94 + + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 96, 97, 95, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 96, 97, 95, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 99, 100, 95, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 99, 100, 95, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 95, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 95, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102 + + }, + + { + 39, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 95, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 95, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 103, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 104, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 103, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 104, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 95, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105 + }, + + { + 39, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 95, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 95, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, + 105, 105, 105, 105, 105, 105 + + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 106, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 107, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 106, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 107, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + 39, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 83, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95 + }, + + { + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39, 98, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, @@ -1616,7 +1616,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, - 99, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, @@ -1636,7 +1636,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -40, -40, -40, -40, -40, -40, -40, -40, -40, + 39, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, @@ -1667,8 +1667,8 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -41, -41, -41, -41, -41, -41, -41, -41, -41, - -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, + 39, -41, -41, -41, -41, -41, -41, -41, -41, 108, + 108, -41, -41, 108, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, @@ -1699,20 +1699,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -42, -42, -42, -42, -42, -42, -42, -42, -42, + 39, -42, -42, -42, -42, -42, -42, -42, -42, 108, + 108, -42, -42, 108, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, 100, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, -42, 101, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, - -42, -42, -42, -42, -42, 102, -42, -42, 103, -42, - 104, 105, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, + -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, @@ -1730,7 +1730,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -43, -43, -43, -43, -43, -43, -43, -43, -43, + 39, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, @@ -1762,39 +1762,39 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + 39, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 110, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 111, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, -44, -44, -44 + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109 }, { - 25, -45, -45, -45, -45, -45, -45, -45, -45, -45, + 39, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, @@ -1825,7 +1825,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -46, -46, -46, -46, -46, -46, -46, -46, -46, + 39, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, @@ -1857,11 +1857,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -47, -47, -47, -47, -47, -47, -47, -47, -47, - -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + 39, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -47, -47, -47, -47, -47, -47, -47, -47, 112, 112, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, @@ -1888,19 +1888,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -48, -48, -48, -48, -48, -48, -48, -48, -48, + 39, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, 113, + 113, 113, 113, 113, 113, 113, 113, -48, -48, -48, + -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48, 106, -48, 107, - -48, 108, -48, 109, -48, -48, -48, -48, -48, -48, - 110, 111, -48, -48, -48, -48, -48, 112, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, @@ -1920,19 +1920,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, - -49, -49, -49, -49, -49, -49, -49, -49, 113, 113, - 113, 113, 113, 113, -49, -49, -49, -49, -49, -49, - - -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + 39, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + + -49, -49, -49, -49, -49, 114, 114, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, -49, + 114, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -49, -49, -49, -49, -49, -49, -49, 114, 114, 114, + 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, + 114, -49, 114, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, @@ -1952,11 +1952,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + 39, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + -50, -50, -50, -50, -50, -50, -50, -50, 115, 115, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, @@ -1983,20 +1983,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -51, -51, -51, -51, -51, -51, -51, -51, -51, + 39, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, 100, -51, -51, -51, -51, - -51, -51, -51, 114, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, 116, 117, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, -51, 101, -51, -51, -51, + -51, 118, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, 102, -51, -51, 103, -51, - 104, 105, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, @@ -2015,20 +2015,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -52, -52, -52, -52, -52, -52, -52, -52, -52, + 39, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, 100, -52, -52, -52, -52, - -52, -52, -52, 114, -52, -52, -52, -52, -52, 115, - 115, 115, 115, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, 119, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, 101, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52, -52, 116, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, 102, -52, -52, 103, -52, - 104, 105, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, @@ -2046,21 +2046,21 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -53, -53, -53, -53, -53, -53, -53, -53, -53, + 39, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, 100, -53, -53, -53, -53, - -53, -53, -53, 114, -53, -53, -53, -53, -53, 115, - 115, 115, 115, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, 113, + 113, 113, 113, 113, 113, 113, 113, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, 101, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53, -53, 116, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, 102, -53, -53, 103, -53, - 104, 105, -53, -53, -53, -53, -53, -53, -53, -53, + -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, @@ -2078,11 +2078,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + 39, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + -54, -54, -54, -54, -54, -54, -54, 120, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, @@ -2090,7 +2090,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, - -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, + 121, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, @@ -2110,7 +2110,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -55, -55, -55, -55, -55, -55, -55, -55, -55, + 39, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, @@ -2141,13 +2141,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -56, -56, -56, -56, -56, -56, -56, -56, -56, + 39, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, -56, -56, -56, -56, -56, -56, -56, 117, 118, - 119, 120, 121, 122, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, + -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, -56, @@ -2173,19 +2173,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 39, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, -57, -57, -57, -57, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, + 122, -57, -57, -57, -57, -57, -57, -57, -57, -57, + -57, 123, -57, -57, -57, -57, -57, 122, 122, 124, + 122, 122, 124, 122, 122, 122, 122, 122, 122, 122, + 122, -57, 122, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, @@ -2204,7 +2204,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -58, -58, -58, -58, -58, -58, -58, -58, -58, + 39, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, @@ -2213,10 +2213,10 @@ static yyconst flex_int32_t yy_nxt[][256] = -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, -58, 125, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, + -58, -58, -58, -58, -58, 126, -58, -58, 127, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, @@ -2236,7 +2236,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -59, -59, -59, -59, -59, -59, -59, -59, -59, + 39, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, @@ -2268,11 +2268,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -60, -60, -60, -60, -60, -60, -60, -60, -60, + 39, -60, -60, -60, -60, -60, -60, -60, -60, -60, + -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, -60, -60, -60, -60, -60, -60, -60, 123, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, @@ -2299,7 +2299,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -61, -61, -61, -61, -61, -61, -61, -61, -61, + 39, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, @@ -2331,7 +2331,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -62, -62, -62, -62, -62, -62, -62, -62, -62, + 39, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, @@ -2362,12 +2362,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -63, -63, -63, -63, -63, -63, -63, -63, -63, + 39, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, - -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, + -63, -63, -63, 128, -63, 129, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, @@ -2394,39 +2394,39 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 39, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, -64, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, 130, -64, 131, + -64, 132, -64, 133, 134, -64, -64, -64, 135, -64, + 136, 137, -64, -64, -64, -64, -64, 138, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124 + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, + -64, -64, -64, -64, -64, -64 }, { - 25, -65, -65, -65, -65, -65, -65, -65, -65, -65, + 39, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, @@ -2457,202 +2457,202 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, -66, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125 - }, - - { - 25, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, -67, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126 - }, - - { - 25, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, -68, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127 - }, - - { - 25, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, -69, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128 - - }, - - { - 25, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, -70, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129 - }, - - { - 25, 130, 130, 130, 130, 130, 130, 130, 130, 130, - -71, 130, 130, -71, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130 - }, - - { - 25, -72, -72, -72, -72, -72, -72, -72, -72, -72, - 131, -72, -72, 131, -72, -72, -72, -72, -72, -72, - -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 39, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, 139, 139, + 139, 139, 139, 139, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + + -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, + -66, -66, -66, -66, -66, -66 + }, + + { + 39, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, + -67, -67, -67, -67, -67, -67 + }, + + { + 39, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, 140, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, 125, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, 126, -68, -68, 127, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68, -68, -68, -68, -68, + -68, -68, -68, -68, -68, -68 + }, + + { + 39, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, 140, -69, -69, -69, -69, -69, 141, + 141, 141, 141, 141, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, 125, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, 142, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, 126, -69, -69, 127, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69, -69, -69, -69, -69, + -69, -69, -69, -69, -69, -69 + + }, + + { + 39, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70, -70, -70, -70, -70, + -70, -70, -70, -70, -70, -70 + }, + + { + 39, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + + -71, -71, -71, -71, -71, -71, -71, -71, -71, -71, + -71, -71, -71, -71, -71, -71 + }, + + { + 39, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + -72, -72, -72, -72, -72, -72, -72, -72, 143, 144, + 145, 146, 147, 148, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, @@ -2678,135 +2678,135 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, -73, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132 - }, - - { - 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, -74, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133 - - }, - - { - 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, -75, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134 - }, - - { - 25, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, -76, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135 - }, - - { - 25, -77, -77, -77, -77, -77, -77, -77, -77, 77, - 77, -77, -77, 77, -77, -77, -77, -77, -77, -77, + 39, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73, -73, -73, -73, -73, + -73, -73, -73, -73, -73, -73 + }, + + { + 39, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, + -74, -74, -74, -74, -74, -74 + + }, + + { + 39, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, + -75, -75, -75, -75, -75, -75 + }, + + { + 39, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + + -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, + -76, -76, -76, -76, -76, -76 + }, + + { + 39, -77, -77, -77, -77, -77, -77, -77, -77, -77, + -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, @@ -2836,12 +2836,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -78, -78, -78, -78, -78, -78, -78, -78, -78, + 39, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, - -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, + -78, -78, -78, 149, -78, 150, -78, -78, 151, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, @@ -2868,7 +2868,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -79, -79, -79, -79, -79, -79, -79, -79, -79, + 39, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, @@ -2900,11 +2900,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -80, -80, -80, -80, -80, -80, -80, -80, -80, + 39, -80, -80, -80, -80, -80, -80, -80, -80, -80, + -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, - -80, -80, -80, -80, -80, -80, -80, 136, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, @@ -2931,7 +2931,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -81, -81, -81, -81, -81, -81, -81, -81, -81, + 39, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, @@ -2963,38 +2963,38 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 39, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, -82, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82 + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152 }, { - 25, -83, -83, -83, -83, -83, -83, -83, -83, -83, + 39, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, @@ -3026,198 +3026,198 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, - -84, -84, -84, -84, -84, -84 - - }, - - { - 25, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85, -85, -85, -85, -85, - -85, -85, -85, -85, -85, -85 - }, - - { - 25, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - - -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, - -86, -86, -86, -86, -86, -86 - }, - - { - 25, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, - -87, -87, -87, -87, -87, -87 - }, - - { - 25, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88, -88, -88, -88, -88, - -88, -88, -88, -88, -88, -88 - }, - - { - 25, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, - -89, -89, -89, -89, -89, -89 - - }, - - { - 25, -90, -90, -90, -90, -90, -90, -90, -90, -90, - -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 39, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, -84, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153 + + }, + + { + 39, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, -85, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154 + }, + + { + 39, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, -86, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155 + }, + + { + 39, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, -87, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156 + }, + + { + 39, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, -88, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157 + }, + + { + 39, 158, 158, 158, 158, 158, 158, 158, 158, 158, + -89, 158, 158, -89, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158 + + }, + + { + 39, -90, -90, -90, -90, -90, -90, -90, -90, -90, + 159, -90, -90, 159, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, @@ -3247,134 +3247,134 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - - -91, -91, -91, -91, -91, -91, -91, -91, -91, -91, - -91, -91, -91, -91, -91, -91 - }, - - { - 25, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92, -92, -92, -92, -92, - -92, -92, -92, -92, -92, -92 - }, - - { - 25, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93, -93, -93, -93, -93, - -93, -93, -93, -93, -93, -93 - }, - - { - 25, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94, -94, -94, -94, -94, - -94, -94, -94, -94, -94, -94 - - }, - - { - 25, -95, -95, -95, -95, -95, -95, -95, -95, -95, + 39, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, -91, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160 + }, + + { + 39, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, -92, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161 + }, + + { + 39, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, -93, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162 + }, + + { + 39, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, -94, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163 + + }, + + { + 39, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, -95, @@ -3405,13 +3405,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -96, -96, -96, -96, -96, -96, -96, -96, -96, + 39, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, - -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, + -96, -96, -96, -96, -96, -96, 164, -96, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, -96, @@ -3437,12 +3437,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, - -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, + 39, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, + -97, -97, -97, -97, -97, -97, -97, -97, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, -97, @@ -3468,19 +3468,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -98, -98, -98, -98, -98, -98, -98, -98, -98, + 39, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, -98, -98, -98, 167, -98, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, + -98, -98, -98, 168, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, - 137, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, @@ -3500,18 +3500,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + 39, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, + -99, -99, -99, -99, -99, -99, 169, -99, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, - -99, -99, -99, -99, -99, -99, -99, -99, 138, -99, + -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, -99, @@ -3532,12 +3532,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, - -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + 39, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, + -100, -100, -100, -100, -100, -100, -100, -100, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, @@ -3563,17 +3563,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -101, -101, -101, -101, -101, -101, -101, -101, -101, + 39, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, -101, -101, -101, 172, -101, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, - -101, -101, -101, -101, -101, -101, 139, -101, -101, -101, - -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, + -101, -101, -101, 173, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, -101, @@ -3595,197 +3595,197 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, 140, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102, -102, -102, -102, -102, - -102, -102, -102, -102, -102, -102 - }, - - { - 25, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, 141, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103, -103, -103, -103, -103, - -103, -103, -103, -103, -103, -103 - }, - - { - 25, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104, -104, -104, -104, -104, - -104, -104, -104, -104, -104, -104 - - }, - - { - 25, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105, -105, -105, -105, -105, - -105, -105, -105, -105, -105, -105 - }, - - { - 25, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, 142, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - - -106, -106, -106, -106, -106, -106, -106, -106, -106, -106, - -106, -106, -106, -106, -106, -106 - }, - - { - 25, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - 143, -107, -107, -107, -107, 144, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107, -107, -107, -107, -107, - -107, -107, -107, -107, -107, -107 - }, - - { - 25, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + 39, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, -102, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, -102, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174 + }, + + { + 39, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, -103, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175 + }, + + { + 39, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, -104, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176 + + }, + + { + 39, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, -105, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, -105, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177 + }, + + { + 39, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, -106, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178 + }, + + { + 39, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, -107, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179 + }, + + { + 39, -108, -108, -108, -108, -108, -108, -108, -108, 108, + 108, -108, -108, 108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, @@ -3795,8 +3795,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, - -108, -108, -108, -108, -108, -108, -108, -108, -108, 145, - -108, -108, -108, -108, -108, -108, -108, -108, 146, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, + -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, -108, @@ -3816,7 +3816,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -109, -109, -109, -109, -109, -109, -109, -109, -109, + 39, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, @@ -3827,8 +3827,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, - -109, -109, -109, -109, -109, -109, -109, -109, -109, 147, - -109, -109, -109, -109, -109, -109, -109, -109, 148, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, + -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, -109, @@ -3848,7 +3848,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -110, -110, -110, -110, -110, -110, -110, -110, -110, + 39, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, @@ -3859,8 +3859,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, - -110, -110, -110, -110, -110, -110, -110, -110, -110, 149, - -110, -110, -110, -110, -110, -110, -110, -110, 150, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, + -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, -110, @@ -3879,17 +3879,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -111, -111, -111, -111, -111, -111, -111, -111, -111, + 39, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, + -111, -111, -111, -111, -111, -111, -111, 180, 117, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, - -111, -111, -111, -111, -111, -111, -111, -111, 151, 152, + -111, 181, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, -111, @@ -3911,7 +3911,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -112, -112, -112, -112, -112, -112, -112, -112, -112, + 39, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, @@ -3921,7 +3921,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, - -112, -112, -112, -112, -112, -112, -112, -112, 153, -112, + -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, -112, @@ -3942,13 +3942,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -113, -113, -113, -113, -113, -113, -113, -113, -113, + 39, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, - -113, -113, -113, -113, -113, -113, -113, -113, 113, 113, - 113, 113, 113, 113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, + -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, -113, @@ -3974,7 +3974,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -114, -114, -114, -114, -114, -114, -114, -114, -114, + 39, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, -114, @@ -4006,7 +4006,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -115, -115, -115, -115, -115, -115, -115, -115, -115, + 39, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, -115, @@ -4037,18 +4037,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -116, -116, -116, -116, -116, -116, -116, -116, -116, + 39, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, 154, - 154, 154, 154, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, + -116, 182, -116, -116, -116, -116, -116, -116, -116, -116, + -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, @@ -4069,7 +4069,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -117, -117, -117, -117, -117, -117, -117, -117, -117, + 39, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, -117, @@ -4100,7 +4100,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -118, -118, -118, -118, -118, -118, -118, -118, -118, + 39, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, -118, @@ -4132,7 +4132,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -119, -119, -119, -119, -119, -119, -119, -119, -119, + 39, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, -119, @@ -4164,7 +4164,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -120, -120, -120, -120, -120, -120, -120, -120, -120, + 39, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, @@ -4176,7 +4176,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, - -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, + 183, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, -120, @@ -4195,7 +4195,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -121, -121, -121, -121, -121, -121, -121, -121, -121, + 39, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, @@ -4206,7 +4206,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, - -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, + -121, -121, -121, -121, -121, -121, -121, -121, 184, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, -121, @@ -4227,7 +4227,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -122, -122, -122, -122, -122, -122, -122, -122, -122, + 39, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, -122, @@ -4258,7 +4258,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -123, -123, -123, -123, -123, -123, -123, -123, -123, + 39, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, -123, @@ -4290,233 +4290,232 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, -124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124 - - }, - - { - 25, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, -125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, - 125, 125, 125, 125, 125, 125 - }, - - { - 25, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, -126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - - 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, - 126, 126, 126, 126, 126, 126 - }, - - { - 25, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, -127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127 - }, - - { - 25, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, -128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128 - }, - - { - 25, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, -129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129 - - }, - - { - 25, 130, 130, 130, 130, 130, 130, 130, 130, 130, - -130, 130, 130, -130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130 - }, - - { - 25, -131, -131, -131, -131, -131, -131, -131, -131, -131, - 131, -131, -131, 131, -131, -131, -131, -131, -131, -131, + 39, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, 185, + 185, 185, 185, 185, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, 186, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124, -124, -124, -124, -124, + -124, -124, -124, -124, -124, -124 + + }, + + { + 39, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, 187, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, + -125, -125, -125, -125, -125, -125 + }, + + { + 39, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, 188, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + + -126, -126, -126, -126, -126, -126, -126, -126, -126, -126, + -126, -126, -126, -126, -126, -126 + }, + + { + 39, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, 189, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127, -127, -127, -127, -127, + -127, -127, -127, -127, -127, -127 + }, + + { + 39, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128, -128, -128, -128, -128, + -128, -128, -128, -128, -128, -128 + }, + + { + 39, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129, -129, -129, -129, -129, + -129, -129, -129, -129, -129, -129 + + }, + + { + 39, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + + -130, -130, -130, -130, -130, -130, -130, -130, 190, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130, -130, -130, -130, -130, + -130, -130, -130, -130, -130, -130 + }, + + { + 39, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, - -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, @@ -4524,6 +4523,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, + 191, -131, -131, -131, -131, 192, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, -131, @@ -4543,133 +4543,133 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, -132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132 - }, - - { - 25, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, -133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133 - }, - - { - 25, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, -134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134 - - }, - - { - 25, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, -135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135 - }, - - { - 25, -136, -136, -136, -136, -136, -136, -136, -136, -136, + 39, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, 193, + -132, -132, -132, -132, -132, -132, -132, -132, 194, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132, -132, -132, -132, -132, + -132, -132, -132, -132, -132, -132 + }, + + { + 39, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, 195, + -133, -133, -133, -133, -133, -133, -133, -133, 196, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133, -133, -133, -133, -133, + -133, -133, -133, -133, -133, -133 + }, + + { + 39, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, 197, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134, -134, -134, -134, -134, + -134, -134, -134, -134, -134, -134 + + }, + + { + 39, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + + -135, -135, -135, -135, -135, -135, -135, -135, 198, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135, -135, -135, -135, -135, + -135, -135, -135, -135, -135, -135 + }, + + { + 39, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, @@ -4680,8 +4680,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, - -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, + -136, -136, -136, -136, -136, -136, -136, -136, -136, 199, + -136, -136, -136, -136, -136, -136, -136, -136, 200, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, -136, @@ -4701,7 +4701,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -137, -137, -137, -137, -137, -137, -137, -137, -137, + 39, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, @@ -4711,9 +4711,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, - -137, -137, -137, -137, -137, -137, -137, -137, 155, -137, - -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, + -137, -137, -137, -137, -137, -137, -137, -137, 201, 202, + -137, -137, -137, -137, -137, -137, -137, -137, 203, -137, + -137, -137, -137, -137, -137, 204, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, -137, @@ -4732,7 +4732,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -138, -138, -138, -138, -138, -138, -138, -138, -138, + 39, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, @@ -4742,9 +4742,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, -138, -138, -138, -138, -138, 156, -138, - -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, - -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, + -138, -138, -138, -138, -138, -138, -138, -138, 205, -138, + -138, -138, -138, -138, -138, -138, -138, -138, 206, -138, + -138, -138, -138, -138, -138, 207, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, @@ -4764,16 +4764,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, + 39, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, + -139, -139, -139, -139, -139, -139, -139, -139, 139, 139, + 139, 139, 139, 139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, - -139, -139, -139, -139, -139, -139, 157, -139, -139, -139, + -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, -139, @@ -4796,19 +4796,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -140, -140, -140, -140, -140, -140, -140, -140, -140, + 39, -140, -140, -140, -140, -140, -140, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - 158, -140, 158, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, 159, -140, -140, -140, -140, + -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, -140, @@ -4827,7 +4827,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -141, -141, -141, -141, -141, -141, -141, -141, -141, + 39, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, @@ -4839,7 +4839,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, - -141, -141, -141, -141, -141, -141, -141, -141, 160, -141, + -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, -141, @@ -4859,19 +4859,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, + 39, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, + -142, -142, -142, -142, -142, -142, -142, -142, -142, 208, + 208, 208, 208, 208, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, - -142, -142, -142, -142, -142, -142, 161, -142, -142, -142, + -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, -142, @@ -4890,13 +4890,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -143, -143, -143, -143, -143, -143, -143, -143, -143, + 39, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, - -143, -143, -143, -143, -143, -143, -143, -143, 162, -143, + -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, -143, @@ -4922,12 +4922,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -144, -144, -144, -144, -144, -144, -144, -144, -144, + 39, -144, -144, -144, -144, -144, -144, -144, -144, -144, + -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, - -144, -144, -144, -144, -144, -144, -144, -144, 163, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, -144, @@ -4954,12 +4954,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -145, -145, -145, -145, -145, -145, -145, -145, -145, + 39, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, + -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, - -145, -145, -145, -145, -145, -145, -145, -145, -145, 164, - 164, 164, 164, 164, 164, 164, 164, 164, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, -145, @@ -4985,13 +4985,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -146, -146, -146, -146, -146, -146, -146, -146, -146, + 39, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, -146, -146, -146, -146, -146, 165, -146, + -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, @@ -5017,12 +5017,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -147, -147, -147, -147, -147, -147, -147, -147, -147, + 39, -147, -147, -147, -147, -147, -147, -147, -147, -147, + -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, + -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, - -147, -147, -147, -147, -147, -147, -147, -147, -147, 166, - 166, 166, 166, 166, 166, 166, 166, 166, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, -147, @@ -5048,13 +5048,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -148, -148, -148, -148, -148, -148, -148, -148, -148, + 39, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, - -148, -148, -148, -148, -148, -148, -148, -148, 167, -148, + -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, -148, @@ -5080,12 +5080,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -149, -149, -149, -149, -149, -149, -149, -149, -149, + 39, -149, -149, -149, -149, -149, -149, -149, -149, -149, + -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, + -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, - -149, -149, -149, -149, -149, -149, -149, -149, -149, 168, - 168, 168, 168, 168, 168, 168, 168, 168, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, -149, @@ -5112,12 +5112,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -150, -150, -150, -150, -150, -150, -150, -150, -150, + 39, -150, -150, -150, -150, -150, -150, -150, -150, -150, + -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, - -150, -150, -150, -150, -150, -150, -150, -150, 169, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, -150, @@ -5143,13 +5143,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -151, -151, -151, -151, -151, -151, -151, -151, -151, + 39, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, - -151, -151, -151, -151, -151, -151, -151, -151, 170, -151, + -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, -151, @@ -5175,235 +5175,235 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, 171, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152, -152, -152, -152, -152, - -152, -152, -152, -152, -152, -152 - }, - - { - 25, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, 172, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153, -153, -153, -153, -153, - -153, -153, -153, -153, -153, -153 - }, - - { - 25, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154 - - }, - - { - 25, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, 173, -155, - - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, - -155, -155, -155, -155, -155, -155 - }, - - { - 25, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, 174, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - - -156, -156, -156, -156, -156, -156, -156, -156, -156, -156, - -156, -156, -156, -156, -156, -156 - }, - - { - 25, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, - -157, -157, -157, -157, -157, -157 - }, - - { - 25, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158, -158, -158, -158, -158, - -158, -158, -158, -158, -158, -158 - }, - - { - 25, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, + 39, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, -152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152 + }, + + { + 39, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, -153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 153 + }, + + { + 39, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, -154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, + 154, 154, 154, 154, 154, 154 + + }, + + { + 39, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, -155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155 + }, + + { + 39, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, -156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 156, 156, 156, 156 + }, + + { + 39, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, -157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157 + }, + + { + 39, 158, 158, 158, 158, 158, 158, 158, 158, 158, + -158, 158, 158, -158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + 158, 158, 158, 158, 158, 158 + }, + + { + 39, -159, -159, -159, -159, -159, -159, -159, -159, -159, + 159, -159, -159, 159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, - 175, -159, 175, -159, -159, -159, -159, -159, -159, -159, + -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, @@ -5428,143 +5428,143 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160, -160, -160, -160, -160, - -160, -160, -160, -160, -160, -160 - }, - - { - 25, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, 176, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, 177, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - - -161, -161, -161, -161, -161, -161, -161, -161, -161, -161, - -161, -161, -161, -161, -161, -161 - }, - - { - 25, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162, -162, -162, -162, -162, - -162, -162, -162, -162, -162, -162 - }, - - { - 25, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163, -163, -163, -163, -163, - -163, -163, -163, -163, -163, -163 - }, - - { - 25, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + 39, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, -160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, + 160, 160, 160, 160, 160, 160 + }, + + { + 39, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, -161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 161, 161, 161, 161, 161 + }, + + { + 39, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, -162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162 + }, + + { + 39, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, -163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 163 + }, + + { + 39, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, - -164, -164, -164, 178, -164, -164, -164, -164, -164, -164, + -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, -164, @@ -5586,16 +5586,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, - -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + 39, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, -165, -165, -165, 167, -165, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, + -165, -165, -165, 168, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, @@ -5617,17 +5617,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -166, -166, -166, -166, -166, -166, -166, -166, -166, + 39, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, + -166, -166, -166, -166, -166, -166, -166, -166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, - -166, -166, -166, 179, -166, -166, -166, -166, -166, -166, + -166, -166, -166, 168, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, @@ -5649,17 +5649,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + 39, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, -167, -167, -167, -167, -167, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, - -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, + -167, -167, -167, 168, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, @@ -5680,7 +5680,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -168, -168, -168, -168, -168, -168, -168, -168, -168, + 39, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, @@ -5690,7 +5690,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, - -168, -168, -168, 180, -168, -168, -168, -168, -168, -168, + -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, @@ -5712,12 +5712,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + 39, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, @@ -5744,16 +5744,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + 39, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, - -170, -170, -170, -170, -170, -170, -170, -170, 181, 181, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, -170, -170, -170, -170, -170, 172, -170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, + -170, -170, -170, 173, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, @@ -5775,17 +5775,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -171, -171, -171, -171, -171, -171, -171, -171, -171, + 39, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, + -171, -171, -171, -171, -171, -171, -171, -171, 171, 171, + 171, 171, 171, 171, 171, 171, 171, 171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, -171, 182, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, - -171, -171, -171, -171, -171, -171, -171, 183, -171, -171, + -171, -171, -171, 173, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, -171, @@ -5807,17 +5807,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + 39, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, 184, 184, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + -172, -172, -172, -172, -172, -172, -172, -172, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, + -172, -172, -172, 173, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, @@ -5838,7 +5838,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -173, -173, -173, -173, -173, -173, -173, -173, -173, + 39, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, @@ -5848,7 +5848,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, - -173, -173, -173, -173, -173, -173, -173, 185, -173, -173, + -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, -173, @@ -5870,198 +5870,197 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - - -174, -174, 186, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174, -174, -174, -174, -174, - -174, -174, -174, -174, -174, -174 - - }, - - { - 25, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175, -175, -175, -175, -175, - -175, -175, -175, -175, -175, -175 - }, - - { - 25, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - - -176, -176, -176, -176, -176, -176, -176, -176, -176, -176, - -176, -176, -176, -176, -176, -176 - }, - - { - 25, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, 187, - 187, 187, 187, 187, 187, 187, 187, 187, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177, -177, -177, -177, -177, - -177, -177, -177, -177, -177, -177 - }, - - { - 25, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178 - }, - - { - 25, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179, -179, -179, -179, -179, - -179, -179, -179, -179, -179, -179 - - }, - - { - 25, -180, -180, -180, -180, -180, -180, -180, -180, -180, - -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + 39, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, -174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, -174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 174, 174, 174 + + }, + + { + 39, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, -175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175 + }, + + { + 39, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, -176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, + 176, 176, 176, 176, 176, 176 + }, + + { + 39, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, -177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, -177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177 + }, + + { + 39, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, -178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178 + }, + + { + 39, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, -179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179 + + }, + + { + 39, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, @@ -6070,6 +6069,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, + -180, 211, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, -180, @@ -6091,20 +6091,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -181, -181, -181, -181, -181, -181, -181, -181, -181, + 39, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, -181, -181, -181, -181, -181, -181, 188, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, 189, -181, 190, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, + -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, @@ -6123,11 +6123,11 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -182, -182, -182, -182, -182, -182, -182, -182, -182, + 39, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, - -182, -182, -182, -182, -182, -182, -182, -182, 191, 191, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, @@ -6154,18 +6154,18 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -183, -183, -183, -183, -183, -183, -183, -183, -183, + 39, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, - -183, -183, -183, -183, -183, -183, -183, -183, 192, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -183, -183, -183, -183, -183, -183, 212, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, @@ -6186,20 +6186,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -184, -184, -184, -184, -184, -184, -184, -184, -184, + 39, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, -184, -184, -184, -184, -184, -184, 193, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, + -184, -184, -184, -184, -184, -184, -184, -184, 213, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, - -184, -184, -184, 194, -184, 195, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, -184, @@ -6218,13 +6218,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -185, -185, -185, -185, -185, -185, -185, -185, -185, + 39, -185, -185, -185, -185, -185, -185, -185, -185, -185, + -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, - -185, -185, 196, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, -185, @@ -6249,13 +6249,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -186, -186, -186, -186, -186, -186, -186, -186, -186, + 39, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, - -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, + -186, -186, -186, -186, -186, -186, -186, -186, -186, 214, + 214, 214, 214, 214, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, -186, @@ -6281,7 +6281,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -187, -187, -187, -187, -187, -187, -187, -187, -187, + 39, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, @@ -6290,8 +6290,8 @@ static yyconst flex_int32_t yy_nxt[][256] = -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, + -187, -187, -187, -187, -187, -187, 215, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, - -187, -187, -187, 197, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, -187, @@ -6312,19 +6312,19 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 39, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, + 216, -188, 216, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, - -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, + -188, -188, -188, -188, -188, 217, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, -188, @@ -6344,7 +6344,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -189, -189, -189, -189, -189, -189, -189, -189, -189, + 39, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, @@ -6354,9 +6354,9 @@ static yyconst flex_int32_t yy_nxt[][256] = -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, - -189, -189, -189, 198, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, + -189, -189, -189, -189, -189, -189, -189, -189, 218, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, -189, @@ -6376,7 +6376,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -190, -190, -190, -190, -190, -190, -190, -190, -190, + 39, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, @@ -6385,10 +6385,10 @@ static yyconst flex_int32_t yy_nxt[][256] = -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, - -190, -190, -190, 199, -190, -190, -190, -190, -190, -190, - -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, + -190, -190, -190, -190, -190, -190, 219, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, -190, @@ -6407,20 +6407,20 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -191, -191, -191, -191, -191, -191, -191, -191, -191, + 39, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, -191, -191, -191, -191, -191, -191, 200, + -191, -191, -191, -191, -191, -191, -191, -191, 220, -191, + -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, - -191, -191, -191, 201, -191, 202, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, -191, @@ -6439,12 +6439,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -192, -192, -192, -192, -192, -192, -192, -192, -192, + 39, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, - -192, -192, -192, -192, -192, -192, -192, -192, 203, 203, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, + -192, -192, -192, -192, -192, -192, -192, -192, 221, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, @@ -6470,13 +6470,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -193, -193, -193, -193, -193, -193, -193, -193, -193, + 39, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, - -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, + -193, -193, -193, -193, -193, -193, -193, -193, -193, 222, + 222, 222, 222, 222, 222, 222, 222, 222, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, -193, @@ -6502,17 +6502,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + 39, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, 223, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, - -194, -194, -194, 204, -194, -194, -194, -194, -194, -194, + -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, -194, @@ -6534,16 +6534,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -195, -195, -195, -195, -195, -195, -195, -195, -195, + 39, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, + -195, -195, -195, -195, -195, -195, -195, -195, -195, 224, + 224, 224, 224, 224, 224, 224, 224, 224, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, - -195, -195, -195, 205, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, -195, @@ -6565,13 +6565,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -196, -196, -196, -196, -196, -196, -196, -196, -196, + 39, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, - -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, + -196, -196, -196, -196, -196, -196, -196, -196, 225, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, -196, @@ -6597,12 +6597,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -197, -197, -197, -197, -197, -197, -197, -197, -197, - -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, + 39, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, + -197, -197, -197, -197, -197, -197, -197, -197, 226, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, -197, @@ -6628,13 +6628,13 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -198, -198, -198, -198, -198, -198, -198, -198, -198, + 39, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, - -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, + -198, -198, -198, -198, -198, -198, -198, -198, 227, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, -198, @@ -6660,12 +6660,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, - -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, + 39, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, + -199, -199, -199, -199, -199, -199, -199, -199, -199, 228, + 228, 228, 228, 228, 228, 228, 228, 228, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, -199, @@ -6692,12 +6692,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, + 39, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, + -200, -200, -200, -200, -200, -200, -200, -200, 229, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, @@ -6723,17 +6723,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -201, -201, -201, -201, -201, -201, -201, -201, -201, + 39, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, + -201, -201, -201, -201, -201, -201, -201, -201, 230, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, - -201, -201, -201, 206, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, -201, @@ -6755,7 +6755,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -202, -202, -202, -202, -202, -202, -202, -202, -202, + 39, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, @@ -6765,7 +6765,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, - -202, -202, -202, 207, -202, -202, -202, -202, -202, -202, + -202, -202, -202, -202, -202, -202, -202, -202, 231, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, -202, @@ -6786,21 +6786,21 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -203, -203, -203, -203, -203, -203, -203, -203, -203, + 39, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, -203, -203, -203, -203, -203, -203, 208, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, 232, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, - -203, -203, -203, 209, -203, 210, -203, -203, -203, -203, + -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, -203, @@ -6818,7 +6818,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -204, -204, -204, -204, -204, -204, -204, -204, -204, + 39, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, @@ -6829,7 +6829,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, - -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, + -204, -204, -204, -204, -204, -204, -204, -204, 233, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, -204, @@ -6850,12 +6850,12 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -205, -205, -205, -205, -205, -205, -205, -205, -205, - -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + 39, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, + -205, -205, -205, -205, -205, -205, -205, -205, 234, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, -205, @@ -6881,7 +6881,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -206, -206, -206, -206, -206, -206, -206, -206, -206, + 39, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, @@ -6892,7 +6892,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, - -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, + -206, -206, -206, -206, -206, -206, -206, -206, 235, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, -206, @@ -6913,7 +6913,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -207, -207, -207, -207, -207, -207, -207, -207, -207, + 39, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, @@ -6924,7 +6924,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, - -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, + -207, -207, -207, -207, -207, -207, -207, -207, 236, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, -207, @@ -6944,7 +6944,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -208, -208, -208, -208, -208, -208, -208, -208, -208, + 39, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, -208, @@ -6976,17 +6976,17 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + 39, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, + -209, -209, -209, -209, -209, -209, -209, -209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, - -209, -209, -209, 211, -209, -209, -209, -209, -209, -209, + -209, -209, -209, 168, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, -209, @@ -7008,16 +7008,16 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + 39, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, + -210, -210, -210, -210, -210, -210, -210, -210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, 212, -210, -210, -210, -210, -210, -210, + -210, -210, -210, 173, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, @@ -7039,7 +7039,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -211, -211, -211, -211, -211, -211, -211, -211, -211, + 39, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, -211, @@ -7071,7 +7071,7 @@ static yyconst flex_int32_t yy_nxt[][256] = }, { - 25, -212, -212, -212, -212, -212, -212, -212, -212, -212, + 39, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, @@ -7081,7 +7081,7 @@ static yyconst flex_int32_t yy_nxt[][256] = -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, - -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, + -212, -212, -212, -212, -212, -212, -212, -212, 237, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, -212, @@ -7101,6 +7101,3293 @@ static yyconst flex_int32_t yy_nxt[][256] = -212, -212, -212, -212, -212, -212 }, + { + 39, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, 238, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213 + }, + + { + 39, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214, -214, -214, -214, -214, + -214, -214, -214, -214, -214, -214 + + }, + + { + 39, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215, -215, -215, -215, -215, + -215, -215, -215, -215, -215, -215 + }, + + { + 39, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + + -216, -216, -216, -216, -216, -216, -216, -216, -216, -216, + -216, -216, -216, -216, -216, -216 + }, + + { + 39, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + 239, -217, 239, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217, -217, -217, -217, -217, + -217, -217, -217, -217, -217, -217 + }, + + { + 39, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218, -218, -218, -218, -218, + -218, -218, -218, -218, -218, -218 + }, + + { + 39, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, 240, -219, + + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, 241, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219, -219, -219, -219, -219, + -219, -219, -219, -219, -219, -219 + + }, + + { + 39, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220, -220, -220, -220, -220, + -220, -220, -220, -220, -220, -220 + }, + + { + 39, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + + -221, -221, -221, -221, -221, -221, -221, -221, -221, -221, + -221, -221, -221, -221, -221, -221 + }, + + { + 39, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, 242, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222, -222, -222, -222, -222, + -222, -222, -222, -222, -222, -222 + }, + + { + 39, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223, -223, -223, -223, -223, + -223, -223, -223, -223, -223, -223 + }, + + { + 39, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, 243, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224, -224, -224, -224, -224, + -224, -224, -224, -224, -224, -224 + + }, + + { + 39, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225, -225, -225, -225, -225, + -225, -225, -225, -225, -225, -225 + }, + + { + 39, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, 244, 245, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + + -226, -226, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, -226 + }, + + { + 39, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, 246, 247, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227, -227, -227, -227, -227, + -227, -227, -227, -227, -227, -227 + }, + + { + 39, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, 248, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228, -228, -228, -228, -228, + -228, -228, -228, -228, -228, -228 + }, + + { + 39, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229, -229, -229, -229, -229, + -229, -229, -229, -229, -229, -229 + + }, + + { + 39, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, 249, 249, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230, -230, -230, -230, -230, + -230, -230, -230, -230, -230, -230 + }, + + { + 39, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, 250, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, 251, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + + -231, -231, -231, -231, -231, -231, -231, -231, -231, -231, + -231, -231, -231, -231, -231, -231 + }, + + { + 39, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, 252, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232, -232, -232, -232, -232, + -232, -232, -232, -232, -232, -232 + }, + + { + 39, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, 253, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233, -233, -233, -233, -233, + -233, -233, -233, -233, -233, -233 + }, + + { + 39, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, 254, 254, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234, -234, -234, -234, -234, + -234, -234, -234, -234, -234, -234 + + }, + + { + 39, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, 255, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235, -235, -235, -235, -235, + -235, -235, -235, -235, -235, -235 + }, + + { + 39, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, 256, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + + -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, + -236, -236, -236, -236, -236, -236 + }, + + { + 39, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, 257, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237 + }, + + { + 39, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, 258, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238, -238, -238, -238, -238, + -238, -238, -238, -238, -238, -238 + }, + + { + 39, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239, -239, -239, -239, -239, + -239, -239, -239, -239, -239, -239 + + }, + + { + 39, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240, -240, -240, -240, -240, + -240, -240, -240, -240, -240, -240 + }, + + { + 39, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, 259, + 259, 259, 259, 259, 259, 259, 259, 259, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + + -241, -241, -241, -241, -241, -241, -241, -241, -241, -241, + -241, -241, -241, -241, -241, -241 + }, + + { + 39, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242, -242, -242, -242, -242, + -242, -242, -242, -242, -242, -242 + }, + + { + 39, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243, -243, -243, -243, -243, + -243, -243, -243, -243, -243, -243 + }, + + { + 39, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, 260, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244, -244, -244, -244, -244, + -244, -244, -244, -244, -244, -244 + + }, + + { + 39, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, 261, -245, -245, -245, -245, -245, -245, + + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245, -245, -245, -245, -245, + -245, -245, -245, -245, -245, -245 + }, + + { + 39, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, 262, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + + -246, -246, -246, -246, -246, -246, -246, -246, -246, -246, + -246, -246, -246, -246, -246, -246 + }, + + { + 39, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, 263, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247, -247, -247, -247, -247, + -247, -247, -247, -247, -247, -247 + }, + + { + 39, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248, -248, -248, -248, -248, + -248, -248, -248, -248, -248, -248 + }, + + { + 39, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, 264, + + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, 265, -249, 266, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249, -249, -249, -249, -249, + -249, -249, -249, -249, -249, -249 + + }, + + { + 39, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, 267, 267, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250, -250, -250, -250, -250, + -250, -250, -250, -250, -250, -250 + }, + + { + 39, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, 268, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + + -251, -251, -251, -251, -251, -251, -251, -251, -251, -251, + -251, -251, -251, -251, -251, -251 + }, + + { + 39, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, 269, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252, -252, -252, -252, -252, + -252, -252, -252, -252, -252, -252 + }, + + { + 39, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, 270, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253, -253, -253, -253, -253, + -253, -253, -253, -253, -253, -253 + }, + + { + 39, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, 271, + + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, 272, -254, 273, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254, -254, -254, -254, -254, + -254, -254, -254, -254, -254, -254 + + }, + + { + 39, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, 274, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, -255, -255, -255 + }, + + { + 39, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, 275, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + + -256, -256, -256, -256, -256, -256, -256, -256, -256, -256, + -256, -256, -256, -256, -256, -256 + }, + + { + 39, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, 276, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257, -257, -257, -257, -257, + -257, -257, -257, -257, -257, -257 + }, + + { + 39, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, -258, -258, + -258, -258, -258, -258, -258, -258 + }, + + { + 39, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, 277, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259, -259, -259, -259, -259, + -259, -259, -259, -259, -259, -259 + + }, + + { + 39, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260, -260, -260, -260, -260, + -260, -260, -260, -260, -260, -260 + }, + + { + 39, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + + -261, -261, -261, -261, -261, -261, -261, -261, -261, -261, + -261, -261, -261, -261, -261, -261 + }, + + { + 39, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262, -262, -262, -262, -262, + -262, -262, -262, -262, -262, -262 + }, + + { + 39, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263, -263, -263, -263, -263, + -263, -263, -263, -263, -263, -263 + }, + + { + 39, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264, -264, -264, -264, -264, + -264, -264, -264, -264, -264, -264 + + }, + + { + 39, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, 278, -265, -265, -265, -265, -265, -265, + + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, + -265, -265, -265, -265, -265, -265 + }, + + { + 39, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, 279, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + + -266, -266, -266, -266, -266, -266, -266, -266, -266, -266, + -266, -266, -266, -266, -266, -266 + }, + + { + 39, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, 280, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, 281, -267, 282, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267, -267, -267, -267, -267, + -267, -267, -267, -267, -267, -267 + }, + + { + 39, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, 283, 283, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268, -268, -268, -268, -268, + -268, -268, -268, -268, -268, -268 + }, + + { + 39, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, 284, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, + -269, -269, -269, -269, -269, -269 + + }, + + { + 39, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, 285, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, + -270, -270, -270, -270, -270, -270 + }, + + { + 39, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271 + }, + + { + 39, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 286, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272 + }, + + { + 39, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, 287, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273 + }, + + { + 39, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, 288, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, + -274, -274, -274, -274, -274, -274 + + }, + + { + 39, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, 289, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275, -275, -275, -275, -275, + -275, -275, -275, -275, -275, -275 + }, + + { + 39, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, -276, -276 + }, + + { + 39, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277, -277, -277, -277, -277, + -277, -277, -277, -277, -277, -277 + }, + + { + 39, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, + -278, -278, -278, -278, -278, -278 + }, + + { + 39, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279 + + }, + + { + 39, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280 + }, + + { + 39, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 290, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 + }, + + { + 39, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, 291, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282, -282, -282, -282, -282, + -282, -282, -282, -282, -282, -282 + }, + + { + 39, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, 292, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, 293, -283, 294, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, + -283, -283, -283, -283, -283, -283 + }, + + { + 39, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284, -284, -284, -284, -284, + -284, -284, -284, -284, -284, -284 + + }, + + { + 39, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, 295, 295, + 295, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285 + }, + + { + 39, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + + -286, -286, -286, -286, -286, -286, -286, -286, -286, -286, + -286, -286, -286, -286, -286, -286 + }, + + { + 39, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287, -287, -287, -287, -287, + -287, -287, -287, -287, -287, -287 + }, + + { + 39, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288 + }, + + { + 39, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 296, 296, + 296, -289, -289, -289, -289, -289, -289, -289, -289, -289, + + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289 + + }, + + { + 39, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, + -290, -290, -290, -290, -290, -290 + }, + + { + 39, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291 + }, + + { + 39, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292, -292, -292, -292, -292, + -292, -292, -292, -292, -292, -292 + }, + + { + 39, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, 297, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293, -293, -293, -293, -293, + -293, -293, -293, -293, -293, -293 + }, + + { + 39, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, 298, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294, -294, -294, -294, -294, + -294, -294, -294, -294, -294, -294 + + }, + + { + 39, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, 299, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, 300, -295, 301, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295, -295, -295, -295, -295, + -295, -295, -295, -295, -295, -295 + }, + + { + 39, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, 302, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, 303, -296, 304, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + + -296, -296, -296, -296, -296, -296, -296, -296, -296, -296, + -296, -296, -296, -296, -296, -296 + }, + + { + 39, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297, -297, -297, -297, -297, + -297, -297, -297, -297, -297, -297 + }, + + { + 39, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298 + }, + + { + 39, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, -299, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305 + + }, + + { + 39, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, 306, -300, -300, -300, -300, -300, -300, + + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300 + }, + + { + 39, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, 307, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + + -301, -301, -301, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301 + }, + + { + 39, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, -302, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308 + }, + + { + 39, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, 309, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303, -303, -303, -303, -303, + -303, -303, -303, -303, -303, -303 + }, + + { + 39, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, 310, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304 + + }, + + { + 39, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 311, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305 + }, + + { + 39, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + + -306, -306, -306, -306, -306, -306, -306, -306, -306, -306, + -306, -306, -306, -306, -306, -306 + }, + + { + 39, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307, -307, -307, -307, -307, + -307, -307, -307, -307, -307, -307 + }, + + { + 39, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 312, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308 + }, + + { + 39, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309, -309, -309, -309, -309, + -309, -309, -309, -309, -309, -309 + + }, + + { + 39, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310 + }, + + { + 39, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, -311, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313 + }, + + { + 39, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, -312, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314 + }, + + { + 39, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 315, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313 + }, + + { + 39, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 316, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, 314, 314, 314 + + }, + + { + 39, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, -315 + }, + + { + 39, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + + -316, -316, -316, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316 + }, + } ; static yy_state_type yy_get_previous_state (void ); @@ -7118,8 +10405,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 109 -#define YY_END_OF_BUFFER 110 +#define YY_NUM_RULES 134 +#define YY_END_OF_BUFFER 135 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -7127,63 +10414,85 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int32_t yy_accept[213] = +static yyconst flex_int32_t yy_accept[317] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 110, 108, 42, 42, 78, 108, - 1, 94, 49, 108, 96, 76, 63, 56, 99, 83, - 98, 92, 102, 66, 106, 104, 45, 108, 95, 48, - 92, 92, 92, 101, 100, 65, 107, 105, 103, 43, - 39, 40, 97, 34, 38, 35, 36, 32, 33, 37, - 3, 2, 28, 29, 30, 31, 42, 82, 81, 79, - 94, 50, 51, 52, 53, 54, 55, 93, 96, 77, - 64, 57, 58, 59, 60, 61, 62, 0, 0, 74, - - 0, 0, 0, 73, 75, 0, 0, 0, 0, 0, - 0, 0, 95, 41, 46, 0, 67, 68, 69, 70, - 71, 72, 44, 34, 35, 36, 32, 33, 37, 3, - 2, 28, 29, 30, 31, 80, 0, 0, 86, 88, - 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 47, 0, 0, 87, 89, 90, 85, - 0, 5, 4, 0, 24, 0, 23, 0, 22, 0, - 0, 0, 0, 0, 91, 25, 0, 20, 19, 18, - 0, 0, 0, 0, 0, 26, 0, 6, 0, 0, - 0, 0, 7, 0, 0, 27, 21, 10, 14, 8, - - 0, 0, 0, 11, 15, 12, 16, 9, 0, 0, - 13, 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 133, + 64, 64, 97, 133, 91, 1, 115, 77, 133, 117, + 94, 80, 79, 120, 103, 119, 133, 112, 123, 83, + 127, 125, 69, 133, 29, 116, 76, 112, 112, 122, + 121, 82, 128, 126, 124, 90, 92, 66, 61, 62, + 118, 36, 54, 37, 38, 34, 35, 39, 3, 2, + 30, 31, 32, 33, 134, 134, 134, 134, 134, 134, + + 134, 46, 134, 134, 51, 134, 134, 64, 102, 101, + 98, 115, 78, 113, 117, 96, 93, 40, 81, 0, + 0, 114, 28, 114, 0, 0, 0, 70, 71, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 116, 63, + 72, 0, 84, 85, 86, 87, 88, 89, 67, 68, + 65, 36, 37, 38, 34, 35, 39, 3, 2, 30, + 31, 32, 33, 0, 0, 0, 0, 41, 0, 0, + 0, 0, 43, 46, 47, 48, 51, 52, 53, 100, + 42, 95, 0, 0, 74, 0, 106, 108, 104, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, + 99, 0, 0, 75, 107, 109, 110, 105, 0, 5, + 4, 0, 24, 0, 23, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 111, 25, + 0, 20, 19, 0, 0, 0, 0, 18, 0, 0, + 0, 45, 0, 0, 50, 0, 0, 26, 0, 130, + 129, 132, 131, 6, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 27, 21, 10, 14, 8, + 0, 0, 0, 44, 0, 11, 15, 49, 0, 12, + 16, 9, 0, 0, 0, 0, 13, 17, 0, 0, + + 0, 0, 0, 0, 0, 56, 57, 0, 59, 60, + 0, 0, 0, 0, 55, 58 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; -static yyconst yy_state_type yy_NUL_trans[213] = +static yyconst yy_state_type yy_NUL_trans[317] = { 0, - 26, 26, 64, 64, 66, 66, 67, 67, 68, 68, - 69, 69, 70, 70, 71, 71, 73, 73, 74, 74, - 75, 75, 76, 76, 0, 0, 0, 0, 0, 78, + 40, 40, 82, 82, 84, 84, 85, 85, 86, 86, + 87, 87, 88, 88, 89, 89, 91, 91, 92, 92, + 93, 93, 94, 94, 95, 95, 95, 95, 102, 102, + 95, 95, 105, 105, 95, 95, 95, 95, 0, 0, + 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 153, 154, 155, 156, 157, 158, 0, + 160, 161, 162, 163, 0, 0, 0, 0, 0, 0, + + 0, 174, 175, 176, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 0, 125, 126, 127, 128, 129, - 130, 0, 132, 133, 134, 135, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 153, 154, 155, 156, 157, 158, 0, 160, + 161, 162, 163, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 175, 176, 177, 178, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 124, 125, 126, 127, 128, 129, 130, - 0, 132, 133, 134, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 305, 0, + + 0, 308, 0, 0, 305, 0, 0, 308, 0, 0, + 313, 314, 313, 314, 0, 0 } ; extern int gabc_notes_determination__flex_debug; @@ -7242,12 +10551,35 @@ static char char_for_brace; static unsigned int nbof_isolated_episema; static char *notesmacros[10]; static char tempstr[256]; -static int brace_var_counter; -static int overbrace_var, underbrace_var; +static int brace_var_counter = 0; +static int overbrace_var = 0, underbrace_var = 0; static const char *overbrace_var_kind; +static int before_ledger_type; +static char *before_ledger_length = NULL; +static int ledger_var[2] = { 0, 0 }; +static unsigned char staff_lines; +static signed char highest_pitch; +static bool legacy_oriscus_orientation; +static int slur_var[2] = { 0, 0 }; +static char slur_shift[2] = { '\0', '\0' }; +static gregorio_note *slur_start[] = { NULL, NULL }; + +typedef enum ledger_line_type { + LL_OVER = 0, + LL_UNDER = 1 +} ledger_line_type; static __inline char pitch_letter_to_height(const char pitch) { - return pitch - 'a' + LOWEST_PITCH; + char result = pitch - 'a' + LOWEST_PITCH; + if (pitch == 'p') { + --result; + } + if (result > highest_pitch) { + gregorio_messagef("pitch_letter_to_height", VERBOSITY_ERROR, 0, + _("invalid pitch for %u lines: %c"), (unsigned int)staff_lines, + pitch); + } + return result; } static gregorio_shape punctum(const char pitch) @@ -7263,9 +10595,19 @@ static __inline void lex_add_note(int i, gregorio_shape shape, char signs, char liquescentia) { nbof_isolated_episema = 0; - gregorio_add_note(¤t_note, - pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])), + gregorio_add_note(¤t_note, pitch_letter_to_height( + tolower((unsigned char)gabc_notes_determination_text[i])), shape, signs, liquescentia, NULL, ¬es_lloc); + + if (ledger_var[LL_OVER]) { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + + if (ledger_var[LL_UNDER]) { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } } static __inline void add_bar_as_note(gregorio_bar bar) @@ -7281,7 +10623,8 @@ static __inline void error(void) gabc_notes_determination_text[3] - '0'); } -static void add_h_episema(void) { +static void add_h_episema(void) +{ grehepisema_size size = H_NORMAL; gregorio_vposition vposition = VPOS_AUTO; bool disable_bridge = false; @@ -7321,7 +10664,8 @@ static void add_h_episema(void) { &nbof_isolated_episema); } -static void add_sign(gregorio_sign sign) { +static void add_sign(gregorio_sign sign) +{ gregorio_vposition vposition = VPOS_AUTO; switch(gabc_notes_determination_text[1]) { case '0': @@ -7334,24 +10678,285 @@ static void add_sign(gregorio_sign sign) { gregorio_add_sign(current_note, sign, vposition); } -static __inline void add_alteration(const gregorio_type type) { - gregorio_add_alteration_as_note(¤t_note, type, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); +static void save_before_ledger(const char *const before_ledger) +{ + if (strcmp(before_ledger, "0") == 0) { + before_ledger_type = 0; + before_ledger_length = ""; + } else if (strcmp(before_ledger, "1") == 0) { + before_ledger_type = 1; + before_ledger_length = ""; + } else { + before_ledger_type = 2; + before_ledger_length = gregorio_strdup(before_ledger); + } +} + +static void add_static_ledger(const ledger_line_type type, const char *length) { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreDrawAdditionalLine{%d}{%s}{%d}{%s}{0}{}", + type, length + 1, before_ledger_type, before_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); +} + +static __inline const char *ledger_type_name(const ledger_line_type type) { + switch (type) { + case LL_OVER: + return "over"; + case LL_UNDER: + return "under"; + } + gregorio_messagef("ledger_type_name", VERBOSITY_ERROR, 0, + _("invalid ledger type %d"), type); + return NULL; +} + +static void add_variable_ledger(const ledger_line_type type, + const char *after_ledger) +{ + if (ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("add_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line without termination of " + "previous %s-staff ledger line"), typename, typename); + } else { + int after_ledger_type; + const char *after_ledger_length; + + ++after_ledger; + + if (strcmp(after_ledger, "0") == 0) { + after_ledger_type = 0; + after_ledger_length = ""; + } else if (strcmp(after_ledger, "1") == 0) { + after_ledger_type = 1; + after_ledger_length = ""; + } else { + after_ledger_type = 2; + after_ledger_length = after_ledger; + } + + ledger_var[type] = ++brace_var_counter; + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{1}" + "\\GreDrawAdditionalLine{%d}{\\GreVarBraceLength{%d}}" + "{%d}{%s}{%d}{%s}", + ledger_var[type], type, ledger_var[type], before_ledger_type, + before_ledger_length, after_ledger_type, after_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static void end_variable_ledger(const ledger_line_type type) +{ + if (!ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("end_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line termination without variable " + "%s-staff ledger line start"), typename, typename); + } else { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{2}", ledger_var[type]); + ledger_var[type] = 0; + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } } +static __inline int parse_clef_line(char line) +{ + line -= '0'; + if (line < 0 || line > staff_lines) { + gregorio_messagef("parse_clef_line", VERBOSITY_ERROR, 0, + _("invalid clef line for %u lines: %d"), + (unsigned int)staff_lines, (int)line); + return 1; + } + return line; +} +static __inline gregorio_bar parse_dominican_bar(char bar) +{ + bar -= '0'; + if (bar < 1 || bar > (2 * (staff_lines - 1))) { + gregorio_messagef("parse_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar for %u lines: ;%d"), + (unsigned int)staff_lines, (int)bar); + } + switch (bar) { + case 1: + return B_DIVISIO_MINOR_D1; + case 2: + return B_DIVISIO_MINOR_D2; + case 3: + return B_DIVISIO_MINOR_D3; + case 4: + return B_DIVISIO_MINOR_D4; + case 5: + return B_DIVISIO_MINOR_D5; + case 6: + return B_DIVISIO_MINOR_D6; + case 7: + return B_DIVISIO_MINOR_D7; + case 8: + return B_DIVISIO_MINOR_D8; + } + gregorio_messagef("check_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar: %d"), (int)bar); + return B_NO_BAR; +} +static __inline gregorio_clef letter_to_clef(char letter) +{ + switch (letter) { + case 'c': + return CLEF_C; + case 'f': + return CLEF_F; + } + gregorio_messagef("letter_to_clef", VERBOSITY_ERROR, 0, + _("invalid clef: %c"), letter); + return CLEF_C; +} + +static __inline void slur_assert(char *fn, bool test) { + if (!test) { + gregorio_message(_("invalid slur text"), fn, VERBOSITY_FATAL, 0); + exit(1); + } +} + +static char *parse_slur_shift(char *shift) +{ + char *c; + + c = strchr(gabc_notes_determination_text, ':'); + slur_assert("parse_slur_shift", c != NULL); + slur_assert("parse_slur_shift", *(++c) != '\0'); + *shift = *c; + return c; +} +static void parse_slur(int direction) +{ + char shift, *width, *height, *end; + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "parse_slur", VERBOSITY_ERROR, 0); + return; + } + end = parse_slur_shift(&shift); + width = strchr(end, ';'); + slur_assert("parse_slur", width != NULL); + height = strchr(++width, ','); + slur_assert("parse_slur", height != NULL); + *height = '\0'; + end = strchr(++height, ']'); + slur_assert("parse_slur", end != NULL); + *end = '\0'; + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreSlur{%d}{%d}{%c}{%s}{%s}{}", + current_note->u.note.pitch + direction, direction, shift, width, + height); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); +} +static void start_var_slur(int index) +{ + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + if (slur_var[index]) { + gregorio_message( + _("variable slur without termination of previous slur"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + slur_var[index] = ++brace_var_counter; + parse_slur_shift(slur_shift + index); + slur_start[index] = current_note; +} -#line 7355 "gabc/gabc-notes-determination-l.c" +static void end_var_slur(int direction, int index) +{ + char shift; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (!slur_var[index] || !slur_shift[index] || !slur_start[index]) { + gregorio_message(_("variable slur end without variable slur start"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + parse_slur_shift(&shift); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{1}" + "\\GreSlur{%d}{%d}{%c}{\\GreVarBraceLength{%d}}{}{%d}", + slur_var[index], slur_shift[index], + slur_start[index]->u.note.pitch + direction, direction, + slur_shift[index], slur_var[index], + current_note->u.note.pitch + direction); + gregorio_add_texverb_to_note(slur_start[index], gregorio_strdup(tempstr)); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{2}", slur_var[index], shift); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); + + + slur_var[index] = 0; + slur_shift[index] = '\0'; + slur_start[index] = NULL; +} + + + + + + + + + + + + + + + + + +#line 10960 "gabc/gabc-notes-determination-l.c" #define INITIAL 0 #define texverbnote 1 @@ -7365,6 +10970,13 @@ static __inline void add_alteration(const gregorio_type type) { #define underbrace 9 #define overcurlybrace 10 #define overcurlyaccentusbrace 11 +#define space 12 +#define nbspace 13 +#define overledger 14 +#define overledger2 15 +#define underledger 16 +#define underledger2 17 +#define endledger 18 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -7573,9 +11185,9 @@ YY_DECL } { -#line 172 "gabc/gabc-notes-determination.l" +#line 468 "gabc/gabc-notes-determination.l" -#line 7579 "gabc/gabc-notes-determination-l.c" +#line 11191 "gabc/gabc-notes-determination-l.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -7622,7 +11234,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 173 "gabc/gabc-notes-determination.l" +#line 469 "gabc/gabc-notes-determination.l" { BEGIN(comments); } @@ -7630,35 +11242,35 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 176 "gabc/gabc-notes-determination.l" +#line 472 "gabc/gabc-notes-determination.l" { BEGIN(INITIAL); } YY_BREAK case 3: YY_RULE_SETUP -#line 179 "gabc/gabc-notes-determination.l" +#line 475 "gabc/gabc-notes-determination.l" { /* ignored */ } YY_BREAK case 4: YY_RULE_SETUP -#line 182 "gabc/gabc-notes-determination.l" +#line 478 "gabc/gabc-notes-determination.l" { BEGIN(choralsign); } YY_BREAK case 5: YY_RULE_SETUP -#line 185 "gabc/gabc-notes-determination.l" +#line 481 "gabc/gabc-notes-determination.l" { BEGIN(choralnabc); } YY_BREAK case 6: YY_RULE_SETUP -#line 188 "gabc/gabc-notes-determination.l" +#line 484 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[4]-'0'; BEGIN(overbrace); @@ -7666,7 +11278,7 @@ YY_RULE_SETUP YY_BREAK case 7: YY_RULE_SETUP -#line 192 "gabc/gabc-notes-determination.l" +#line 488 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[4]-'0'; BEGIN(underbrace); @@ -7674,7 +11286,7 @@ YY_RULE_SETUP YY_BREAK case 8: YY_RULE_SETUP -#line 196 "gabc/gabc-notes-determination.l" +#line 492 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[5]-'0'; BEGIN(overcurlybrace); @@ -7682,7 +11294,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 200 "gabc/gabc-notes-determination.l" +#line 496 "gabc/gabc-notes-determination.l" { char_for_brace = gabc_notes_determination_text[6]-'0'; BEGIN(overcurlyaccentusbrace); @@ -7690,7 +11302,7 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 204 "gabc/gabc-notes-determination.l" +#line 500 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7704,13 +11316,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 11: YY_RULE_SETUP -#line 220 "gabc/gabc-notes-determination.l" +#line 516 "gabc/gabc-notes-determination.l" { if (underbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7723,13 +11335,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", underbrace_var, char_for_brace, underbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 12: YY_RULE_SETUP -#line 235 "gabc/gabc-notes-determination.l" +#line 531 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7743,13 +11355,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 13: YY_RULE_SETUP -#line 251 "gabc/gabc-notes-determination.l" +#line 547 "gabc/gabc-notes-determination.l" { if (overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7763,13 +11375,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 14: YY_RULE_SETUP -#line 267 "gabc/gabc-notes-determination.l" +#line 563 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7786,13 +11398,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 15: YY_RULE_SETUP -#line 286 "gabc/gabc-notes-determination.l" +#line 582 "gabc/gabc-notes-determination.l" { if (!underbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7804,13 +11416,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var, char_for_brace); underbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 16: YY_RULE_SETUP -#line 300 "gabc/gabc-notes-determination.l" +#line 596 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7827,13 +11439,13 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 17: YY_RULE_SETUP -#line 319 "gabc/gabc-notes-determination.l" +#line 615 "gabc/gabc-notes-determination.l" { if (!overbrace_var) { gregorio_messagef("gabc_notes_determination", VERBOSITY_ERROR, 0, @@ -7850,23 +11462,23 @@ YY_RULE_SETUP "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } YY_BREAK case 18: YY_RULE_SETUP -#line 338 "gabc/gabc-notes-determination.l" +#line 634 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(notesmacros[gabc_notes_determination_text[3]-'0'])); } else error(); } YY_BREAK case 19: YY_RULE_SETUP -#line 344 "gabc/gabc-notes-determination.l" +#line 640 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7877,7 +11489,7 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 351 "gabc/gabc-notes-determination.l" +#line 647 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[3]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7888,7 +11500,7 @@ YY_RULE_SETUP YY_BREAK case 21: YY_RULE_SETUP -#line 358 "gabc/gabc-notes-determination.l" +#line 654 "gabc/gabc-notes-determination.l" { if (notesmacros[gabc_notes_determination_text[5]-'0']) { gregorio_add_texverb_as_note(¤t_note, @@ -7899,683 +11511,916 @@ YY_RULE_SETUP YY_BREAK case 22: YY_RULE_SETUP -#line 365 "gabc/gabc-notes-determination.l" +#line 661 "gabc/gabc-notes-determination.l" { BEGIN(texverbnote); } YY_BREAK case 23: YY_RULE_SETUP -#line 368 "gabc/gabc-notes-determination.l" +#line 664 "gabc/gabc-notes-determination.l" { BEGIN(texverbglyph); } YY_BREAK case 24: YY_RULE_SETUP -#line 371 "gabc/gabc-notes-determination.l" +#line 667 "gabc/gabc-notes-determination.l" { BEGIN(texverbelement); } YY_BREAK case 25: YY_RULE_SETUP -#line 374 "gabc/gabc-notes-determination.l" +#line 670 "gabc/gabc-notes-determination.l" { BEGIN(alt); } YY_BREAK case 26: YY_RULE_SETUP -#line 377 "gabc/gabc-notes-determination.l" +#line 673 "gabc/gabc-notes-determination.l" { gregorio_add_nlba_as_note(¤t_note, NLBA_BEGINNING, ¬es_lloc); } YY_BREAK case 27: YY_RULE_SETUP -#line 380 "gabc/gabc-notes-determination.l" +#line 676 "gabc/gabc-notes-determination.l" { gregorio_add_nlba_as_note(¤t_note, NLBA_END, ¬es_lloc); } YY_BREAK case 28: -/* rule 28 can match eol */ YY_RULE_SETUP -#line 383 "gabc/gabc-notes-determination.l" +#line 679 "gabc/gabc-notes-determination.l" { - gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverBrace{%s}{0pt}{0pt}{%d}", - gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_start_autofuse(¤t_note, ¬es_lloc); } YY_BREAK case 29: -/* rule 29 can match eol */ YY_RULE_SETUP -#line 389 "gabc/gabc-notes-determination.l" +#line 682 "gabc/gabc-notes-determination.l" { - gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", - gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_end_autofuse(¤t_note, ¬es_lloc); } YY_BREAK case 30: /* rule 30 can match eol */ YY_RULE_SETUP -#line 395 "gabc/gabc-notes-determination.l" +#line 685 "gabc/gabc-notes-determination.l" { gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", + "\\GreOverBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 31: /* rule 31 can match eol */ YY_RULE_SETUP -#line 401 "gabc/gabc-notes-determination.l" +#line 691 "gabc/gabc-notes-determination.l" { gregorio_snprintf(tempstr, sizeof tempstr, - "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", + "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 32: /* rule 32 can match eol */ YY_RULE_SETUP -#line 407 "gabc/gabc-notes-determination.l" +#line 697 "gabc/gabc-notes-determination.l" { - gregorio_add_cs_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), false); + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", + gabc_notes_determination_text, char_for_brace); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP -#line 411 "gabc/gabc-notes-determination.l" +#line 703 "gabc/gabc-notes-determination.l" { - gregorio_add_cs_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), true); + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", + gabc_notes_determination_text, char_for_brace); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } YY_BREAK case 34: /* rule 34 can match eol */ YY_RULE_SETUP -#line 415 "gabc/gabc-notes-determination.l" +#line 709 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_to_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text)); + gregorio_add_cs_to_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), false); } YY_BREAK case 35: /* rule 35 can match eol */ YY_RULE_SETUP -#line 419 "gabc/gabc-notes-determination.l" +#line 713 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), - GRE_TEXVERB_GLYPH, ¬es_lloc); + gregorio_add_cs_to_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), true); } YY_BREAK case 36: /* rule 36 can match eol */ YY_RULE_SETUP -#line 424 "gabc/gabc-notes-determination.l" +#line 717 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), - GRE_TEXVERB_ELEMENT, ¬es_lloc); + gregorio_add_texverb_to_note(current_note, + gregorio_strdup(gabc_notes_determination_text)); } YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP -#line 429 "gabc/gabc-notes-determination.l" +#line 721 "gabc/gabc-notes-determination.l" { gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup(gabc_notes_determination_text), GRE_ALT, - ¬es_lloc); + gregorio_strdup(gabc_notes_determination_text), + GRE_TEXVERB_GLYPH, ¬es_lloc); } YY_BREAK case 38: +/* rule 38 can match eol */ YY_RULE_SETUP -#line 434 "gabc/gabc-notes-determination.l" +#line 726 "gabc/gabc-notes-determination.l" { - BEGIN(INITIAL); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup(gabc_notes_determination_text), + GRE_TEXVERB_ELEMENT, ¬es_lloc); } YY_BREAK case 39: +/* rule 39 can match eol */ YY_RULE_SETUP -#line 437 "gabc/gabc-notes-determination.l" +#line 731 "gabc/gabc-notes-determination.l" { gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, + gregorio_strdup(gabc_notes_determination_text), GRE_ALT, ¬es_lloc); } YY_BREAK case 40: YY_RULE_SETUP -#line 442 "gabc/gabc-notes-determination.l" +#line 736 "gabc/gabc-notes-determination.l" { - gregorio_add_texverb_as_note(¤t_note, - gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), - GRE_TEXVERB_ELEMENT, ¬es_lloc); + BEGIN(space); } YY_BREAK case 41: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 447 "gabc/gabc-notes-determination.l" +#line 739 "gabc/gabc-notes-determination.l" { - gregorio_add_manual_custos_as_note(¤t_note, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); } YY_BREAK case 42: -/* rule 42 can match eol */ YY_RULE_SETUP -#line 452 "gabc/gabc-notes-determination.l" -/* ignore ends of line and tabs */; +#line 743 "gabc/gabc-notes-determination.l" +{ + BEGIN(nbspace); + } YY_BREAK case 43: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 453 "gabc/gabc-notes-determination.l" +#line 746 "gabc/gabc-notes-determination.l" { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_LINE, - ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE_NB, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); } YY_BREAK case 44: YY_RULE_SETUP -#line 457 "gabc/gabc-notes-determination.l" +#line 750 "gabc/gabc-notes-determination.l" { - gregorio_add_custo_as_note(¤t_note, ¬es_lloc); + end_variable_ledger(LL_OVER); } YY_BREAK case 45: YY_RULE_SETUP -#line 460 "gabc/gabc-notes-determination.l" +#line 753 "gabc/gabc-notes-determination.l" { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_PAR, - ¬es_lloc); + BEGIN(overledger); } YY_BREAK case 46: +/* rule 46 can match eol */ YY_RULE_SETUP -#line 464 "gabc/gabc-notes-determination.l" +#line 756 "gabc/gabc-notes-determination.l" { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, GRE_C_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, GRE_F_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } + save_before_ledger(gabc_notes_determination_text); + BEGIN(overledger2); } YY_BREAK case 47: +/* rule 47 can match eol */ YY_RULE_SETUP -#line 473 "gabc/gabc-notes-determination.l" +#line 760 "gabc/gabc-notes-determination.l" { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, - GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, - GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } + add_static_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 48: +/* rule 48 can match eol */ YY_RULE_SETUP -#line 484 "gabc/gabc-notes-determination.l" +#line 764 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_VIRGULA); + add_variable_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 49: YY_RULE_SETUP -#line 487 "gabc/gabc-notes-determination.l" +#line 768 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINIMA); + end_variable_ledger(LL_UNDER); } YY_BREAK case 50: YY_RULE_SETUP -#line 490 "gabc/gabc-notes-determination.l" +#line 771 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D1); + BEGIN(underledger); } YY_BREAK case 51: +/* rule 51 can match eol */ YY_RULE_SETUP -#line 493 "gabc/gabc-notes-determination.l" +#line 774 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D2); + save_before_ledger(gabc_notes_determination_text); + BEGIN(underledger2); } YY_BREAK case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 496 "gabc/gabc-notes-determination.l" +#line 778 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D3); + add_static_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 53: +/* rule 53 can match eol */ YY_RULE_SETUP -#line 499 "gabc/gabc-notes-determination.l" +#line 782 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D4); + add_variable_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); } YY_BREAK case 54: YY_RULE_SETUP -#line 502 "gabc/gabc-notes-determination.l" +#line 786 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D5); + BEGIN(INITIAL); } YY_BREAK case 55: +/* rule 55 can match eol */ YY_RULE_SETUP -#line 505 "gabc/gabc-notes-determination.l" +#line 789 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D6); + parse_slur(1); } YY_BREAK case 56: YY_RULE_SETUP -#line 508 "gabc/gabc-notes-determination.l" +#line 792 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR); + start_var_slur(0); } YY_BREAK case 57: YY_RULE_SETUP -#line 511 "gabc/gabc-notes-determination.l" +#line 795 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D1); + end_var_slur(1, 0); } YY_BREAK case 58: +/* rule 58 can match eol */ YY_RULE_SETUP -#line 514 "gabc/gabc-notes-determination.l" +#line 798 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D2); + parse_slur(-1); } YY_BREAK case 59: YY_RULE_SETUP -#line 517 "gabc/gabc-notes-determination.l" +#line 801 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D3); + start_var_slur(1); } YY_BREAK case 60: YY_RULE_SETUP -#line 520 "gabc/gabc-notes-determination.l" +#line 804 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D4); + end_var_slur(-1, 1); } YY_BREAK case 61: YY_RULE_SETUP -#line 523 "gabc/gabc-notes-determination.l" +#line 807 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D5); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, + ¬es_lloc); } YY_BREAK case 62: YY_RULE_SETUP -#line 526 "gabc/gabc-notes-determination.l" +#line 812 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MINOR_D6); + gregorio_add_texverb_as_note(¤t_note, + gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), + GRE_TEXVERB_ELEMENT, ¬es_lloc); } YY_BREAK case 63: YY_RULE_SETUP -#line 529 "gabc/gabc-notes-determination.l" +#line 817 "gabc/gabc-notes-determination.l" { - add_bar_as_note(B_DIVISIO_MAIOR); + gregorio_add_manual_custos_as_note(¤t_note, + pitch_letter_to_height(gabc_notes_determination_text[0]), + ¬es_lloc); } YY_BREAK case 64: +/* rule 64 can match eol */ YY_RULE_SETUP -#line 532 "gabc/gabc-notes-determination.l" -{ - add_bar_as_note(B_DIVISIO_FINALIS); - } +#line 822 "gabc/gabc-notes-determination.l" +/* ignore ends of line and tabs */; YY_BREAK case 65: YY_RULE_SETUP -#line 535 "gabc/gabc-notes-determination.l" +#line 823 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_PUNCTUM_CAVUM); + gregorio_add_custo_as_note(¤t_note, ¬es_lloc); } YY_BREAK case 66: YY_RULE_SETUP -#line 538 "gabc/gabc-notes-determination.l" +#line 826 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM); + gregorio_add_end_of_line_as_note(¤t_note, false, false, false, + ¬es_lloc); } YY_BREAK case 67: YY_RULE_SETUP -#line 541 "gabc/gabc-notes-determination.l" +#line 830 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM); + gregorio_add_end_of_line_as_note(¤t_note, false, true, true, + ¬es_lloc); } YY_BREAK case 68: YY_RULE_SETUP -#line 544 "gabc/gabc-notes-determination.l" +#line 834 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _ACCENTUS); + gregorio_add_end_of_line_as_note(¤t_note, false, true, false, + ¬es_lloc); } YY_BREAK case 69: YY_RULE_SETUP -#line 547 "gabc/gabc-notes-determination.l" +#line 838 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS); + gregorio_add_end_of_line_as_note(¤t_note, true, false, false, + ¬es_lloc); } YY_BREAK case 70: YY_RULE_SETUP -#line 550 "gabc/gabc-notes-determination.l" +#line 842 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _CIRCULUS); + gregorio_add_end_of_line_as_note(¤t_note, true, true, true, + ¬es_lloc); } YY_BREAK case 71: YY_RULE_SETUP -#line 553 "gabc/gabc-notes-determination.l" +#line 846 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _SEMI_CIRCULUS); + gregorio_add_end_of_line_as_note(¤t_note, true, true, false, + ¬es_lloc); } YY_BREAK case 72: YY_RULE_SETUP -#line 556 "gabc/gabc-notes-determination.l" +#line 850 "gabc/gabc-notes-determination.l" { - gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[1]), false, + ¬es_lloc); } YY_BREAK case 73: YY_RULE_SETUP -#line 559 "gabc/gabc-notes-determination.l" +#line 856 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_FLAT); + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[2]), true, + ¬es_lloc); } YY_BREAK case 74: YY_RULE_SETUP -#line 562 "gabc/gabc-notes-determination.l" +#line 862 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_SHARP); + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[2]), false); } YY_BREAK case 75: YY_RULE_SETUP -#line 565 "gabc/gabc-notes-determination.l" +#line 867 "gabc/gabc-notes-determination.l" { - add_alteration(GRE_NATURAL); + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[3]), true); } YY_BREAK case 76: YY_RULE_SETUP -#line 568 "gabc/gabc-notes-determination.l" +#line 872 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, ¬es_lloc); + add_bar_as_note(B_VIRGULA); } YY_BREAK case 77: YY_RULE_SETUP -#line 571 "gabc/gabc-notes-determination.l" +#line 875 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, ¬es_lloc); + add_bar_as_note(B_DIVISIO_MINIMA); } YY_BREAK case 78: YY_RULE_SETUP -#line 574 "gabc/gabc-notes-determination.l" +#line 878 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, ¬es_lloc); + add_bar_as_note(parse_dominican_bar(gabc_notes_determination_text[1])); } YY_BREAK case 79: YY_RULE_SETUP -#line 577 "gabc/gabc-notes-determination.l" +#line 881 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_MINOR); } YY_BREAK case 80: YY_RULE_SETUP -#line 581 "gabc/gabc-notes-determination.l" +#line 884 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_MAIOR); } YY_BREAK case 81: YY_RULE_SETUP -#line 585 "gabc/gabc-notes-determination.l" +#line 887 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, - ¬es_lloc); + add_bar_as_note(B_DIVISIO_FINALIS); } YY_BREAK case 82: -/* rule 82 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ -YY_LINENO_REWIND_TO(yy_bp + 1); -(yy_c_buf_p) = yy_cp = yy_bp + 1; -YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 589 "gabc/gabc-notes-determination.l" +#line 890 "gabc/gabc-notes-determination.l" { - gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, ¬es_lloc); + gregorio_change_shape(current_note, S_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } YY_BREAK case 83: YY_RULE_SETUP -#line 592 "gabc/gabc-notes-determination.l" +#line 894 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_LINEA); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM, + legacy_oriscus_orientation); } YY_BREAK case 84: YY_RULE_SETUP -#line 595 "gabc/gabc-notes-determination.l" +#line 898 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } YY_BREAK case 85: YY_RULE_SETUP -#line 598 "gabc/gabc-notes-determination.l" +#line 902 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _ACCENTUS); } YY_BREAK case 86: YY_RULE_SETUP -#line 601 "gabc/gabc-notes-determination.l" +#line 905 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _ACCENTUS_REVERSUS); } YY_BREAK case 87: YY_RULE_SETUP -#line 604 "gabc/gabc-notes-determination.l" +#line 908 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _CIRCULUS); } YY_BREAK case 88: YY_RULE_SETUP -#line 607 "gabc/gabc-notes-determination.l" +#line 911 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_add_special_sign(current_note, _SEMI_CIRCULUS); } YY_BREAK case 89: YY_RULE_SETUP -#line 610 "gabc/gabc-notes-determination.l" +#line 914 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA); + gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); } YY_BREAK case 90: YY_RULE_SETUP -#line 613 "gabc/gabc-notes-determination.l" +#line 917 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_FLAT, legacy_oriscus_orientation); } YY_BREAK case 91: YY_RULE_SETUP -#line 616 "gabc/gabc-notes-determination.l" +#line 920 "gabc/gabc-notes-determination.l" { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA); + gregorio_change_shape(current_note, S_SHARP, + legacy_oriscus_orientation); } YY_BREAK case 92: YY_RULE_SETUP -#line 619 "gabc/gabc-notes-determination.l" +#line 924 "gabc/gabc-notes-determination.l" { - lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, - L_NO_LIQUESCENTIA); + gregorio_change_shape(current_note, S_NATURAL, + legacy_oriscus_orientation); } YY_BREAK case 93: YY_RULE_SETUP -#line 623 "gabc/gabc-notes-determination.l" +#line 928 "gabc/gabc-notes-determination.l" { - lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, - L_INITIO_DEBILIS); + gregorio_add_space_as_note(¤t_note, SP_HALF_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 94: YY_RULE_SETUP -#line 627 "gabc/gabc-notes-determination.l" +#line 932 "gabc/gabc-notes-determination.l" { - add_sign(_V_EPISEMA); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } YY_BREAK case 95: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 630 "gabc/gabc-notes-determination.l" +#line 936 "gabc/gabc-notes-determination.l" { - add_h_episema(); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } YY_BREAK case 96: YY_RULE_SETUP -#line 633 "gabc/gabc-notes-determination.l" +#line 940 "gabc/gabc-notes-determination.l" { - add_sign(_PUNCTUM_MORA); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 97: YY_RULE_SETUP -#line 636 "gabc/gabc-notes-determination.l" +#line 944 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_DEMINUTUS); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, NULL, + ¬es_lloc); } YY_BREAK case 98: YY_RULE_SETUP -#line 639 "gabc/gabc-notes-determination.l" +#line 948 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); } YY_BREAK case 99: +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +(yy_c_buf_p) = yy_cp = yy_bp + 2; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 642 "gabc/gabc-notes-determination.l" +#line 952 "gabc/gabc-notes-determination.l" { - gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); } YY_BREAK case 100: YY_RULE_SETUP -#line 645 "gabc/gabc-notes-determination.l" +#line 956 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUADRATUM); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, NULL, + ¬es_lloc); } YY_BREAK case 101: YY_RULE_SETUP -#line 648 "gabc/gabc-notes-determination.l" +#line 960 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_ORISCUS); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, NULL, + ¬es_lloc); } YY_BREAK case 102: +/* rule 102 can match eol */ +*yy_cp = (yy_hold_char); /* undo effects of setting up gabc_notes_determination_text */ +YY_LINENO_REWIND_TO(yy_bp + 1); +(yy_c_buf_p) = yy_cp = yy_bp + 1; +YY_DO_BEFORE_ACTION; /* set up gabc_notes_determination_text again */ YY_RULE_SETUP -#line 651 "gabc/gabc-notes-determination.l" +#line 964 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_ORISCUS_SCAPUS); + gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, NULL, + ¬es_lloc); } YY_BREAK case 103: YY_RULE_SETUP -#line 654 "gabc/gabc-notes-determination.l" +#line 968 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUILISMA); + gregorio_change_shape(current_note, S_LINEA, + legacy_oriscus_orientation); } YY_BREAK case 104: YY_RULE_SETUP -#line 657 "gabc/gabc-notes-determination.l" +#line 972 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM); + lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 105: YY_RULE_SETUP -#line 660 "gabc/gabc-notes-determination.l" +#line 975 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_VIRGA); + lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 106: YY_RULE_SETUP -#line 663 "gabc/gabc-notes-determination.l" +#line 978 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_VIRGA_REVERSA); + lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 107: YY_RULE_SETUP -#line 666 "gabc/gabc-notes-determination.l" +#line 981 "gabc/gabc-notes-determination.l" { - gregorio_change_shape(current_note, S_STROPHA); + lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } YY_BREAK case 108: YY_RULE_SETUP -#line 669 "gabc/gabc-notes-determination.l" +#line 984 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 987 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); + } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 990 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); + } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 993 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); + } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 996 "gabc/gabc-notes-determination.l" +{ + lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, + L_NO_LIQUESCENTIA); + } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 1000 "gabc/gabc-notes-determination.l" +{ + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_INITIO_DEBILIS); + } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 1004 "gabc/gabc-notes-determination.l" +{ + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_FUSED); + } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 1008 "gabc/gabc-notes-determination.l" +{ + add_sign(_V_EPISEMA); + } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 1011 "gabc/gabc-notes-determination.l" +{ + add_h_episema(); + } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 1014 "gabc/gabc-notes-determination.l" +{ + add_sign(_PUNCTUM_MORA); + } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 1017 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_DEMINUTUS, + legacy_oriscus_orientation); + } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 1021 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_DESCENDENS, + legacy_oriscus_orientation); + } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 1025 "gabc/gabc-notes-determination.l" +{ + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_ASCENDENS, + legacy_oriscus_orientation); + } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 1029 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUADRATUM, + legacy_oriscus_orientation); + } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 1033 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, legacy_oriscus_orientation + ? S_ORISCUS_ASCENDENS : S_ORISCUS_UNDETERMINED, + legacy_oriscus_orientation); + } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 1038 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_ORISCUS_SCAPUS, + legacy_oriscus_orientation); + } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 1042 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUILISMA, + legacy_oriscus_orientation); + } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 1046 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM, + legacy_oriscus_orientation); + } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 1050 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_VIRGA, + legacy_oriscus_orientation); + } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 1054 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_VIRGA_REVERSA, + legacy_oriscus_orientation); + } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 1058 "gabc/gabc-notes-determination.l" +{ + gregorio_change_shape(current_note, S_STROPHA, + legacy_oriscus_orientation); + } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 1062 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 1066 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_high_ledger_line = false; + current_note->explicit_high_ledger_line = true; + } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 1070 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 1074 "gabc/gabc-notes-determination.l" +{ + current_note->supposed_low_ledger_line = false; + current_note->explicit_low_ledger_line = true; + } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 1078 "gabc/gabc-notes-determination.l" { gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0, _("unrecognized character: \"%c\""), gabc_notes_determination_text[0]); } YY_BREAK -case 109: +case 134: YY_RULE_SETUP -#line 675 "gabc/gabc-notes-determination.l" +#line 1084 "gabc/gabc-notes-determination.l" ECHO; YY_BREAK -#line 8579 "gabc/gabc-notes-determination-l.c" +#line 12424 "gabc/gabc-notes-determination-l.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(texverbnote): case YY_STATE_EOF(texverbglyph): @@ -8588,6 +12433,13 @@ case YY_STATE_EOF(overbrace): case YY_STATE_EOF(underbrace): case YY_STATE_EOF(overcurlybrace): case YY_STATE_EOF(overcurlyaccentusbrace): +case YY_STATE_EOF(space): +case YY_STATE_EOF(nbspace): +case YY_STATE_EOF(overledger): +case YY_STATE_EOF(overledger2): +case YY_STATE_EOF(underledger): +case YY_STATE_EOF(underledger2): +case YY_STATE_EOF(endledger): yyterminate(); case YY_END_OF_BUFFER: @@ -9547,12 +13399,12 @@ void gabc_notes_determination_free (void * ptr ) #define YYTABLES_NAME "yytables" -#line 675 "gabc/gabc-notes-determination.l" +#line 1084 "gabc/gabc-notes-determination.l" gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], - gregorio_scanner_location *loc) + gregorio_scanner_location *loc, const gregorio_score *const score) { int i; YY_BUFFER_STATE buf; @@ -9565,6 +13417,10 @@ gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], notes_lloc.last_column = loc->first_column; notes_lloc.last_offset = loc->first_offset; + staff_lines = score->staff_lines; + highest_pitch = score->highest_pitch; + legacy_oriscus_orientation = score->legacy_oriscus_orientation; + /* a small optimization could uccur here: we could do it only once at the * beginning of the score, not at each syllable */ for (i = 0; i < 10; i++) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l index f48875aea4a..c3813238d43 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-notes-determination.l @@ -42,12 +42,35 @@ static char char_for_brace; static unsigned int nbof_isolated_episema; static char *notesmacros[10]; static char tempstr[256]; -static int brace_var_counter; -static int overbrace_var, underbrace_var; +static int brace_var_counter = 0; +static int overbrace_var = 0, underbrace_var = 0; static const char *overbrace_var_kind; +static int before_ledger_type; +static char *before_ledger_length = NULL; +static int ledger_var[2] = { 0, 0 }; +static unsigned char staff_lines; +static signed char highest_pitch; +static bool legacy_oriscus_orientation; +static int slur_var[2] = { 0, 0 }; +static char slur_shift[2] = { '\0', '\0' }; +static gregorio_note *slur_start[] = { NULL, NULL }; + +typedef enum ledger_line_type { + LL_OVER = 0, + LL_UNDER = 1 +} ledger_line_type; static __inline char pitch_letter_to_height(const char pitch) { - return pitch - 'a' + LOWEST_PITCH; + char result = pitch - 'a' + LOWEST_PITCH; + if (pitch == 'p') { + --result; + } + if (result > highest_pitch) { + gregorio_messagef("pitch_letter_to_height", VERBOSITY_ERROR, 0, + _("invalid pitch for %u lines: %c"), (unsigned int)staff_lines, + pitch); + } + return result; } static gregorio_shape punctum(const char pitch) @@ -63,9 +86,19 @@ static __inline void lex_add_note(int i, gregorio_shape shape, char signs, char liquescentia) { nbof_isolated_episema = 0; - gregorio_add_note(¤t_note, - pitch_letter_to_height(tolower((unsigned char)gabc_notes_determination_text[i])), + gregorio_add_note(¤t_note, pitch_letter_to_height( + tolower((unsigned char)gabc_notes_determination_text[i])), shape, signs, liquescentia, NULL, ¬es_lloc); + + if (ledger_var[LL_OVER]) { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } + + if (ledger_var[LL_UNDER]) { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } } static __inline void add_bar_as_note(gregorio_bar bar) @@ -81,7 +114,8 @@ static __inline void error(void) gabc_notes_determination_text[3] - '0'); } -static void add_h_episema(void) { +static void add_h_episema(void) +{ grehepisema_size size = H_NORMAL; gregorio_vposition vposition = VPOS_AUTO; bool disable_bridge = false; @@ -121,7 +155,8 @@ static void add_h_episema(void) { &nbof_isolated_episema); } -static void add_sign(gregorio_sign sign) { +static void add_sign(gregorio_sign sign) +{ gregorio_vposition vposition = VPOS_AUTO; switch(gabc_notes_determination_text[1]) { case '0': @@ -134,10 +169,266 @@ static void add_sign(gregorio_sign sign) { gregorio_add_sign(current_note, sign, vposition); } -static __inline void add_alteration(const gregorio_type type) { - gregorio_add_alteration_as_note(¤t_note, type, - pitch_letter_to_height(gabc_notes_determination_text[0]), - ¬es_lloc); +static void save_before_ledger(const char *const before_ledger) +{ + if (strcmp(before_ledger, "0") == 0) { + before_ledger_type = 0; + before_ledger_length = ""; + } else if (strcmp(before_ledger, "1") == 0) { + before_ledger_type = 1; + before_ledger_length = ""; + } else { + before_ledger_type = 2; + before_ledger_length = gregorio_strdup(before_ledger); + } +} + +static void add_static_ledger(const ledger_line_type type, const char *length) { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreDrawAdditionalLine{%d}{%s}{%d}{%s}{0}{}", + type, length + 1, before_ledger_type, before_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); +} + +static __inline const char *ledger_type_name(const ledger_line_type type) { + switch (type) { + case LL_OVER: + return "over"; + case LL_UNDER: + return "under"; + } + gregorio_messagef("ledger_type_name", VERBOSITY_ERROR, 0, + _("invalid ledger type %d"), type); + return NULL; +} + +static void add_variable_ledger(const ledger_line_type type, + const char *after_ledger) +{ + if (ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("add_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line without termination of " + "previous %s-staff ledger line"), typename, typename); + } else { + int after_ledger_type; + const char *after_ledger_length; + + ++after_ledger; + + if (strcmp(after_ledger, "0") == 0) { + after_ledger_type = 0; + after_ledger_length = ""; + } else if (strcmp(after_ledger, "1") == 0) { + after_ledger_type = 1; + after_ledger_length = ""; + } else { + after_ledger_type = 2; + after_ledger_length = after_ledger; + } + + ledger_var[type] = ++brace_var_counter; + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{1}" + "\\GreDrawAdditionalLine{%d}{\\GreVarBraceLength{%d}}" + "{%d}{%s}{%d}{%s}", + ledger_var[type], type, ledger_var[type], before_ledger_type, + before_ledger_length, after_ledger_type, after_ledger_length); + + if (before_ledger_type == 2) { + free(before_ledger_length); + before_ledger_length = NULL; + } + + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static void end_variable_ledger(const ledger_line_type type) +{ + if (!ledger_var[type]) { + const char *const typename = ledger_type_name(type); + gregorio_messagef("end_variable_ledger", VERBOSITY_ERROR, 0, + _("variable %s-staff ledger line termination without variable " + "%s-staff ledger line start"), typename, typename); + } else { + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{0}{2}", ledger_var[type]); + ledger_var[type] = 0; + gregorio_add_texverb_as_note(¤t_note, gregorio_strdup(tempstr), + GRE_TEXVERB_GLYPH, ¬es_lloc); + } +} + +static __inline int parse_clef_line(char line) +{ + line -= '0'; + if (line < 0 || line > staff_lines) { + gregorio_messagef("parse_clef_line", VERBOSITY_ERROR, 0, + _("invalid clef line for %u lines: %d"), + (unsigned int)staff_lines, (int)line); + return 1; + } + return line; +} + +static __inline gregorio_bar parse_dominican_bar(char bar) +{ + bar -= '0'; + if (bar < 1 || bar > (2 * (staff_lines - 1))) { + gregorio_messagef("parse_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar for %u lines: ;%d"), + (unsigned int)staff_lines, (int)bar); + } + + switch (bar) { + case 1: + return B_DIVISIO_MINOR_D1; + case 2: + return B_DIVISIO_MINOR_D2; + case 3: + return B_DIVISIO_MINOR_D3; + case 4: + return B_DIVISIO_MINOR_D4; + case 5: + return B_DIVISIO_MINOR_D5; + case 6: + return B_DIVISIO_MINOR_D6; + case 7: + return B_DIVISIO_MINOR_D7; + case 8: + return B_DIVISIO_MINOR_D8; + } + + gregorio_messagef("check_dominican_line", VERBOSITY_ERROR, 0, + _("invalid dominican bar: %d"), (int)bar); + return B_NO_BAR; +} + +static __inline gregorio_clef letter_to_clef(char letter) +{ + switch (letter) { + case 'c': + return CLEF_C; + case 'f': + return CLEF_F; + } + gregorio_messagef("letter_to_clef", VERBOSITY_ERROR, 0, + _("invalid clef: %c"), letter); + return CLEF_C; +} + +static __inline void slur_assert(char *fn, bool test) { + if (!test) { + gregorio_message(_("invalid slur text"), fn, VERBOSITY_FATAL, 0); + exit(1); + } +} + +static char *parse_slur_shift(char *shift) +{ + char *c; + + c = strchr(gabc_notes_determination_text, ':'); + slur_assert("parse_slur_shift", c != NULL); + slur_assert("parse_slur_shift", *(++c) != '\0'); + *shift = *c; + return c; +} + +static void parse_slur(int direction) +{ + char shift, *width, *height, *end; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "parse_slur", VERBOSITY_ERROR, 0); + return; + } + + end = parse_slur_shift(&shift); + width = strchr(end, ';'); + slur_assert("parse_slur", width != NULL); + height = strchr(++width, ','); + slur_assert("parse_slur", height != NULL); + *height = '\0'; + end = strchr(++height, ']'); + slur_assert("parse_slur", end != NULL); + *end = '\0'; + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreSlur{%d}{%d}{%c}{%s}{%s}{}", + current_note->u.note.pitch + direction, direction, shift, width, + height); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); +} + +static void start_var_slur(int index) +{ + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (slur_var[index]) { + gregorio_message( + _("variable slur without termination of previous slur"), + "start_var_slur", VERBOSITY_ERROR, 0); + return; + } + + slur_var[index] = ++brace_var_counter; + parse_slur_shift(slur_shift + index); + slur_start[index] = current_note; +} + +static void end_var_slur(int direction, int index) +{ + char shift; + + if (!current_note || current_note->type != GRE_NOTE) { + gregorio_message( + _("cannot add a slur to something that is not a note"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + if (!slur_var[index] || !slur_shift[index] || !slur_start[index]) { + gregorio_message(_("variable slur end without variable slur start"), + "end_var_slur", VERBOSITY_ERROR, 0); + return; + } + + parse_slur_shift(&shift); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{1}" + "\\GreSlur{%d}{%d}{%c}{\\GreVarBraceLength{%d}}{}{%d}", + slur_var[index], slur_shift[index], + slur_start[index]->u.note.pitch + direction, direction, + slur_shift[index], slur_var[index], + current_note->u.note.pitch + direction); + gregorio_add_texverb_to_note(slur_start[index], gregorio_strdup(tempstr)); + + gregorio_snprintf(tempstr, sizeof tempstr, + "\\GreVarBraceSavePos{%d}{%c}{2}", slur_var[index], shift); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); + + + slur_var[index] = 0; + slur_shift[index] = '\0'; + slur_start[index] = NULL; } %} @@ -168,6 +459,11 @@ static __inline void add_alteration(const gregorio_type type) { %x underbrace %x overcurlybrace %x overcurlyaccentusbrace +%x space +%x nbspace +%x overledger overledger2 +%x underledger underledger2 +%x endledger %% <INITIAL>\% { @@ -214,7 +510,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ub:[01]\{\] { @@ -229,7 +525,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreUnderBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}", underbrace_var, char_for_brace, underbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocb:[01]\{\] { @@ -245,7 +541,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{0}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocba:[01]\{\] { @@ -261,7 +557,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{1}" "\\GreOverCurlyBrace{\\GreVarBraceLength{%d}}{0pt}{0pt}{%d}{1}", overbrace_var, char_for_brace, overbrace_var, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ob:[01]\}\] { @@ -280,7 +576,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ub:[01]\}\] { @@ -294,7 +590,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", underbrace_var, char_for_brace); underbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocb:[01]\}\] { @@ -313,7 +609,7 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[ocba:[01]\}\] { @@ -332,12 +628,12 @@ static __inline void add_alteration(const gregorio_type type) { "\\GreVarBraceSavePos{%d}{%d}{2}", overbrace_var, char_for_brace); overbrace_var = 0; - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } } <INITIAL>\[nm[1-9]\] { if (notesmacros[gabc_notes_determination_text[3]-'0']) { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(notesmacros[gabc_notes_determination_text[3]-'0'])); } else error(); } @@ -380,29 +676,35 @@ static __inline void add_alteration(const gregorio_type type) { <INITIAL><\/nlba> { gregorio_add_nlba_as_note(¤t_note, NLBA_END, ¬es_lloc); } +<INITIAL>@\[ { + gregorio_start_autofuse(¤t_note, ¬es_lloc); + } +<INITIAL>\] { + gregorio_end_autofuse(¤t_note, ¬es_lloc); + } <overbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <underbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreUnderBrace{%s}{0pt}{0pt}{%d}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <overcurlybrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{0}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <overcurlyaccentusbrace>[^\]]+ { gregorio_snprintf(tempstr, sizeof tempstr, "\\GreOverCurlyBrace{%s}{0pt}{0pt}{%d}{1}", gabc_notes_determination_text, char_for_brace); - gregorio_add_texverb_to_note(¤t_note, gregorio_strdup(tempstr)); + gregorio_add_texverb_to_note(current_note, gregorio_strdup(tempstr)); } <choralsign>[^\]]+ { gregorio_add_cs_to_note(¤t_note, @@ -413,7 +715,7 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup(gabc_notes_determination_text), true); } <texverbnote>[^\]]+ { - gregorio_add_texverb_to_note(¤t_note, + gregorio_add_texverb_to_note(current_note, gregorio_strdup(gabc_notes_determination_text)); } <texverbglyph>[^\]]+ { @@ -431,9 +733,77 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup(gabc_notes_determination_text), GRE_ALT, ¬es_lloc); } -<texverbnote,texverbglyph,texverbelement,choralsign,choralnabc,alt,overcurlyaccentusbrace,overcurlybrace,overbrace,underbrace>\] { +<INITIAL>\/\[ { + BEGIN(space); + } +<space>-?(\.[0-9]+|[0-9]+(\.[0-9]*)?)/\] { + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); + } +<INITIAL>!\/\[ { + BEGIN(nbspace); + } +<nbspace>-?(\.[0-9]+|[0-9]+(\.[0-9]*)?)/\] { + gregorio_add_space_as_note(¤t_note, SP_AD_HOC_SPACE_NB, + gregorio_strdup(gabc_notes_determination_text), ¬es_lloc); + } +<INITIAL>\[oll:\}\] { + end_variable_ledger(LL_OVER); + } +<INITIAL>\[oll: { + BEGIN(overledger); + } +<overledger>[^;{]+ { + save_before_ledger(gabc_notes_determination_text); + BEGIN(overledger2); + } +<overledger2>;[^\]]+ { + add_static_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); + } +<overledger2>\{[^\]]+ { + add_variable_ledger(LL_OVER, gabc_notes_determination_text); + BEGIN(endledger); + } +<INITIAL>\[ull:\}\] { + end_variable_ledger(LL_UNDER); + } +<INITIAL>\[ull: { + BEGIN(underledger); + } +<underledger>[^;{]+ { + save_before_ledger(gabc_notes_determination_text); + BEGIN(underledger2); + } +<underledger2>;[^\]]+ { + add_static_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); + } +<underledger2>\{[^\]]+ { + add_variable_ledger(LL_UNDER, gabc_notes_determination_text); + BEGIN(endledger); + } +<texverbnote,texverbglyph,texverbelement,choralsign,choralnabc,alt,overcurlyaccentusbrace,overcurlybrace,overbrace,underbrace,space,nbspace,endledger>\] { BEGIN(INITIAL); } +<INITIAL>\[oslur:[012];[^,]+,[^\]]+\] { + parse_slur(1); + } +<INITIAL>\[oslur:[012]\{\] { + start_var_slur(0); + } +<INITIAL>\[oslur:[012]\}\] { + end_var_slur(1, 0); + } +<INITIAL>\[uslur:[012];[^,]+,[^\]]+\] { + parse_slur(-1); + } +<INITIAL>\[uslur:[012]\{\] { + start_var_slur(1); + } +<INITIAL>\[uslur:[012]\}\] { + end_var_slur(-1, 1); + } \{ { gregorio_add_texverb_as_note(¤t_note, gregorio_strdup("\\hbox to 0pt{"), GRE_TEXVERB_ELEMENT, @@ -444,88 +814,73 @@ static __inline void add_alteration(const gregorio_type type) { gregorio_strdup("\\hss%\n}%\n\\GreNoBreak\\relax "), GRE_TEXVERB_ELEMENT, ¬es_lloc); } -[a-m]\+ { +[a-np]\+ { gregorio_add_manual_custos_as_note(¤t_note, pitch_letter_to_height(gabc_notes_determination_text[0]), ¬es_lloc); } [\t\r\n]+ /* ignore ends of line and tabs */; +z0 { + gregorio_add_custo_as_note(¤t_note, ¬es_lloc); + } z { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_LINE, + gregorio_add_end_of_line_as_note(¤t_note, false, false, false, ¬es_lloc); } -z0 { - gregorio_add_custo_as_note(¤t_note, ¬es_lloc); +z\+ { + gregorio_add_end_of_line_as_note(¤t_note, false, true, true, + ¬es_lloc); } -Z { - gregorio_add_end_of_line_as_note(¤t_note, GRE_END_OF_PAR, +z- { + gregorio_add_end_of_line_as_note(¤t_note, false, true, false, ¬es_lloc); } -(c|f)[1-4] { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, GRE_C_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, GRE_F_KEY_CHANGE, - gabc_notes_determination_text[1], ¬es_lloc); - } +Z { + gregorio_add_end_of_line_as_note(¤t_note, true, false, false, + ¬es_lloc); } -(cb|fb)[1-4] { - if (gabc_notes_determination_text[0]=='c') { - gregorio_add_clef_change_as_note(¤t_note, - GRE_C_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } else { - gregorio_add_clef_change_as_note(¤t_note, - GRE_F_KEY_CHANGE_FLATED, gabc_notes_determination_text[2], - ¬es_lloc); - } +Z\+ { + gregorio_add_end_of_line_as_note(¤t_note, true, true, true, + ¬es_lloc); } -` { - add_bar_as_note(B_VIRGULA); +Z- { + gregorio_add_end_of_line_as_note(¤t_note, true, true, false, + ¬es_lloc); } -, { - add_bar_as_note(B_DIVISIO_MINIMA); +[cf][1-5] { + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[1]), false, + ¬es_lloc); } -,1 { - add_bar_as_note(B_DIVISIO_MINOR_D1); +[cf]b[1-5] { + gregorio_add_clef_as_note(¤t_note, + letter_to_clef(gabc_notes_determination_text[0]), + parse_clef_line(gabc_notes_determination_text[2]), true, + ¬es_lloc); } -,2 { - add_bar_as_note(B_DIVISIO_MINOR_D2); +@[cf][1-5] { + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[2]), false); } -,3 { - add_bar_as_note(B_DIVISIO_MINOR_D3); +@[cf]b[1-5] { + gregorio_add_secondary_clef_to_note(current_note, + letter_to_clef(gabc_notes_determination_text[1]), + parse_clef_line(gabc_notes_determination_text[3]), true); } -,4 { - add_bar_as_note(B_DIVISIO_MINOR_D4); +` { + add_bar_as_note(B_VIRGULA); } -,5 { - add_bar_as_note(B_DIVISIO_MINOR_D5); +, { + add_bar_as_note(B_DIVISIO_MINIMA); } -,6 { - add_bar_as_note(B_DIVISIO_MINOR_D6); +[,;][1-8] { + add_bar_as_note(parse_dominican_bar(gabc_notes_determination_text[1])); } ; { add_bar_as_note(B_DIVISIO_MINOR); } -;1 { - add_bar_as_note(B_DIVISIO_MINOR_D1); - } -;2 { - add_bar_as_note(B_DIVISIO_MINOR_D2); - } -;3 { - add_bar_as_note(B_DIVISIO_MINOR_D3); - } -;4 { - add_bar_as_note(B_DIVISIO_MINOR_D4); - } -;5 { - add_bar_as_note(B_DIVISIO_MINOR_D5); - } -;6 { - add_bar_as_note(B_DIVISIO_MINOR_D6); - } : { add_bar_as_note(B_DIVISIO_MAIOR); } @@ -533,13 +888,16 @@ Z { add_bar_as_note(B_DIVISIO_FINALIS); } r { - gregorio_change_shape(current_note, S_PUNCTUM_CAVUM); + gregorio_change_shape(current_note, S_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } R { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM, + legacy_oriscus_orientation); } r0 { - gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM); + gregorio_change_shape(current_note, S_LINEA_PUNCTUM_CAVUM, + legacy_oriscus_orientation); } r1 { gregorio_add_special_sign(current_note, _ACCENTUS); @@ -556,74 +914,97 @@ r4 { r5 { gregorio_add_special_sign(current_note, _SEMI_CIRCULUS_REVERSUS); } -[a-mA-M]x { - add_alteration(GRE_FLAT); +x { + gregorio_change_shape(current_note, S_FLAT, legacy_oriscus_orientation); } -[a-mA-M]# { - add_alteration(GRE_SHARP); +# { + gregorio_change_shape(current_note, S_SHARP, + legacy_oriscus_orientation); } -[a-mA-M]y { - add_alteration(GRE_NATURAL); +y { + gregorio_change_shape(current_note, S_NATURAL, + legacy_oriscus_orientation); + } +!?\/0 { + gregorio_add_space_as_note(¤t_note, SP_HALF_SPACE, NULL, + ¬es_lloc); } \/ { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); + } +\//\/\[ { + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT, NULL, + ¬es_lloc); } \/\/ { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE, NULL, + ¬es_lloc); } \ { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE, NULL, + ¬es_lloc); } !\/ { - gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, + ¬es_lloc); + } +!\//\/\[ { + gregorio_add_space_as_note(¤t_note, SP_NEUMATIC_CUT_NB, NULL, ¬es_lloc); } !\/\/ { - gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, + gregorio_add_space_as_note(¤t_note, SP_LARGER_SPACE_NB, NULL, ¬es_lloc); } !\ { - gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, + gregorio_add_space_as_note(¤t_note, SP_GLYPH_SPACE_NB, NULL, ¬es_lloc); } !/[^\/ ] { - gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, ¬es_lloc); + gregorio_add_space_as_note(¤t_note, SP_ZERO_WIDTH, NULL, + ¬es_lloc); } = { - gregorio_change_shape(current_note, S_LINEA); + gregorio_change_shape(current_note, S_LINEA, + legacy_oriscus_orientation); } -[a-mA-M]vv { +[a-npA-NP]vv { lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]vvv { +[a-npA-NP]vvv { lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]VV { +[a-npA-NP]VV { lex_add_note(0, S_BIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]VVV { +[a-npA-NP]VVV { lex_add_note(0, S_TRIVIRGA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]ss { +[a-npA-NP]ss { lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]ss(\<|\>) { - lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTA); +[a-npA-NP]ss(\<|\>) { + lex_add_note(0, S_DISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); } -[a-mA-M]sss { +[a-npA-NP]sss { lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_NO_LIQUESCENTIA); } -[a-mA-M]sss(\<|\>) { - lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTA); +[a-npA-NP]sss(\<|\>) { + lex_add_note(0, S_TRISTROPHA, _NO_SIGN, L_AUCTUS_ASCENDENS); } -[a-mA-M] { +[a-npA-NP] { lex_add_note(0, punctum(gabc_notes_determination_text[0]), _NO_SIGN, L_NO_LIQUESCENTIA); } --[a-mA-M] { +-[a-npA-NP] { lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, L_INITIO_DEBILIS); } +@[a-npA-NP] { + lex_add_note(1, punctum(gabc_notes_determination_text[1]), _NO_SIGN, + L_FUSED); + } \'[01]? { add_sign(_V_EPISEMA); } @@ -634,37 +1015,65 @@ _[0-5]* { add_sign(_PUNCTUM_MORA); } ~ { - gregorio_add_liquescentia(current_note, L_DEMINUTUS); + gregorio_add_tail_liquescentia(current_note, L_DEMINUTUS, + legacy_oriscus_orientation); } > { - gregorio_add_liquescentia(current_note, L_AUCTUS_DESCENDENS); + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_DESCENDENS, + legacy_oriscus_orientation); } \< { - gregorio_add_liquescentia(current_note, L_AUCTUS_ASCENDENS); + gregorio_add_tail_liquescentia(current_note, L_AUCTUS_ASCENDENS, + legacy_oriscus_orientation); } q { - gregorio_change_shape(current_note, S_QUADRATUM); + gregorio_change_shape(current_note, S_QUADRATUM, + legacy_oriscus_orientation); } o { - gregorio_change_shape(current_note, S_ORISCUS); + gregorio_change_shape(current_note, legacy_oriscus_orientation + ? S_ORISCUS_ASCENDENS : S_ORISCUS_UNDETERMINED, + legacy_oriscus_orientation); } O { - gregorio_change_shape(current_note, S_ORISCUS_SCAPUS); + gregorio_change_shape(current_note, S_ORISCUS_SCAPUS, + legacy_oriscus_orientation); } w { - gregorio_change_shape(current_note, S_QUILISMA); + gregorio_change_shape(current_note, S_QUILISMA, + legacy_oriscus_orientation); } W { - gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM); + gregorio_change_shape(current_note, S_QUILISMA_QUADRATUM, + legacy_oriscus_orientation); } v { - gregorio_change_shape(current_note, S_VIRGA); + gregorio_change_shape(current_note, S_VIRGA, + legacy_oriscus_orientation); } V { - gregorio_change_shape(current_note, S_VIRGA_REVERSA); + gregorio_change_shape(current_note, S_VIRGA_REVERSA, + legacy_oriscus_orientation); } s { - gregorio_change_shape(current_note, S_STROPHA); + gregorio_change_shape(current_note, S_STROPHA, + legacy_oriscus_orientation); + } +\[hl:1\] { + current_note->supposed_high_ledger_line = true; + current_note->explicit_high_ledger_line = true; + } +\[hl:0\] { + current_note->supposed_high_ledger_line = false; + current_note->explicit_high_ledger_line = true; + } +\[ll:1\] { + current_note->supposed_low_ledger_line = true; + current_note->explicit_low_ledger_line = true; + } +\[ll:0\] { + current_note->supposed_low_ledger_line = false; + current_note->explicit_low_ledger_line = true; } . { gregorio_messagef("det_notes_from_string", VERBOSITY_ERROR, 0, @@ -675,7 +1084,7 @@ s { %% gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], - gregorio_scanner_location *loc) + gregorio_scanner_location *loc, const gregorio_score *const score) { int i; YY_BUFFER_STATE buf; @@ -688,6 +1097,10 @@ gregorio_note *gabc_det_notes_from_string(char *str, char *newmacros[10], notes_lloc.last_column = loc->first_column; notes_lloc.last_offset = loc->first_offset; + staff_lines = score->staff_lines; + highest_pitch = score->highest_pitch; + legacy_oriscus_orientation = score->legacy_oriscus_orientation; + /* a small optimization could uccur here: we could do it only once at the * beginning of the score, not at each syllable */ for (i = 0; i < 10; i++) { diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c index fe52c82613f..03994f45487 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-l.c @@ -384,8 +384,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 83 -#define YY_END_OF_BUFFER 84 +#define YY_NUM_RULES 70 +#define YY_END_OF_BUFFER 71 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -393,55 +393,42 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int32_t yy_accept[430] = +static yyconst flex_int32_t yy_accept[307] = { 0, - 0, 1, 7, 7, 0, 0, 78, 78, 59, 59, - 65, 65, 62, 62, 5, 5, 70, 70, 84, 41, - 83, 41, 41, 6, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 2, 2, - 3, 3, 1, 7, 7, 83, 42, 60, 77, 66, - 75, 76, 67, 68, 78, 79, 81, 80, 59, 66, - 65, 66, 62, 61, 5, 4, 70, 66, 40, 0, - 39, 6, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 1, 7, - - 7, 0, 7, 7, 0, 7, 8, 8, 42, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 78, 82, 59, 0, 65, 0, 62, 61, 5, - 4, 70, 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 53, 51, 0, 43, 0, 0, - 0, 0, 0, 63, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 0, 0, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, - - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 0, 55, 57, 47, 49, 54, 52, - 46, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 34, 0, 0, 0, 73, - 0, 69, 0, 56, 58, 48, 50, 0, 0, 0, - 23, 0, 0, 9, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 44, 71, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 45, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 32, 0, 0, 0, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, - 17, 0, 0, 0, 0, 0, 25, 37, 0, 0, - 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 29, 0, 0, 0, 0, - 19, 30, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 12, 0, 0, 31, 36, 0, - 0, 10, 0, 35, 0, 0, 0, 0, 0, 33, - 0, 0, 26, 0, 0, 0, 0, 27, 0 + 0, 1, 7, 7, 0, 0, 65, 65, 46, 46, + 52, 52, 49, 49, 5, 5, 57, 57, 71, 27, + 70, 27, 27, 24, 6, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 2, 2, 3, 3, 1, 7, + 7, 70, 28, 47, 64, 29, 53, 62, 63, 54, + 55, 65, 66, 68, 67, 46, 53, 52, 53, 49, + 48, 5, 4, 57, 53, 26, 0, 25, 0, 24, + 6, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 2, 1, 7, 7, 0, 7, 7, + 0, 7, 8, 8, 28, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 65, 69, 46, + 0, 52, 0, 49, 48, 5, 4, 57, 0, 25, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 7, 0, 0, 0, 40, 38, + 0, 30, 0, 0, 0, 0, 0, 50, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, + 24, 24, 24, 15, 24, 11, 24, 24, 24, 24, + 0, 0, 0, 59, 0, 42, 44, 34, 36, 41, + 39, 33, 0, 0, 0, 0, 51, 0, 24, 24, + 24, 0, 24, 24, 0, 0, 24, 24, 24, 24, + + 60, 0, 56, 0, 43, 45, 35, 37, 0, 24, + 19, 9, 24, 24, 24, 24, 24, 24, 24, 24, + 0, 0, 0, 31, 58, 24, 24, 24, 24, 24, + 24, 24, 0, 24, 24, 24, 32, 24, 24, 0, + 20, 24, 24, 24, 24, 0, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 18, 24, + 24, 24, 24, 22, 0, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 21, 24, 24, 24, 24, + 24, 24, 24, 24, 14, 24, 16, 24, 24, 24, + 13, 24, 24, 24, 24, 24, 24, 24, 12, 17, + + 10, 24, 24, 24, 23, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -452,305 +439,291 @@ static yyconst flex_int32_t yy_ec[256] = 1, 5, 1, 1, 6, 1, 7, 8, 1, 9, 10, 1, 1, 1, 11, 1, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 15, 16, - 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 17, 1, 1, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 19, 1, 20, 1, 18, 1, 21, 22, 23, 24, + + 25, 26, 27, 28, 29, 18, 18, 30, 31, 32, + 33, 34, 18, 35, 36, 37, 38, 39, 18, 18, + 40, 18, 41, 42, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 18, 1, 19, 1, 1, 1, 20, 21, 22, 23, - - 24, 25, 26, 27, 28, 1, 29, 30, 31, 32, - 33, 34, 1, 35, 36, 37, 38, 39, 1, 40, - 41, 1, 42, 43, 44, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, - 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, + 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 47, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[48] = +static yyconst flex_int32_t yy_meta[47] = { 0, 1, 1, 2, 3, 1, 1, 4, 5, 4, 5, - 1, 1, 1, 1, 6, 7, 1, 4, 4, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 8, 5, 8, 1, 1, 1 + 6, 1, 7, 1, 8, 9, 1, 7, 4, 4, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 10, 5, 10, 1, 1, 1 } ; -static yyconst flex_int32_t yy_base[451] = +static yyconst flex_int32_t yy_base[329] = { 0, - 0, 37, 1, 9, 70, 78, 7, 19, 3, 36, - 634, 633, 5, 31, 50, 52, 632, 631, 646, 651, - 651, 88, 634, 639, 66, 610, 48, 22, 82, 610, - 621, 83, 70, 39, 78, 605, 603, 610, 106, 115, - 651, 120, 83, 122, 128, 130, 0, 651, 651, 134, - 625, 651, 651, 651, 0, 651, 136, 651, 0, 124, - 0, 624, 0, 146, 0, 148, 0, 623, 156, 160, - 0, 651, 602, 598, 595, 598, 598, 598, 591, 602, - 605, 593, 600, 595, 590, 589, 583, 596, 90, 587, - 595, 591, 582, 573, 593, 588, 576, 165, 129, 174, - - 176, 178, 595, 180, 0, 182, 184, 651, 0, 81, - 579, 591, 590, 568, 588, 574, 113, 566, 572, 584, - 581, 0, 196, 0, 181, 0, 560, 0, 201, 0, - 203, 0, 578, 0, 564, 576, 568, 565, 556, 561, - 567, 579, 567, 564, 561, 549, 559, 546, 559, 558, - 559, 556, 558, 558, 549, 541, 545, 542, 538, 546, - 556, 532, 539, 531, 651, 651, 550, 651, 545, 548, - 547, 546, 545, 651, 651, 544, 543, 542, 131, 521, - 527, 539, 525, 517, 521, 519, 651, 527, 526, 651, - 518, 537, 512, 513, 517, 506, 507, 507, 651, 530, - - 651, 516, 503, 516, 513, 512, 499, 523, 495, 515, - 510, 513, 651, 509, 651, 651, 651, 651, 651, 651, - 651, 511, 510, 509, 508, 651, 487, 503, 496, 486, - 485, 487, 505, 27, 497, 481, 495, 494, 491, 651, - 482, 476, 482, 485, 497, 651, 485, 474, 475, 651, - 484, 651, 486, 651, 651, 651, 651, 485, 464, 476, - 651, 471, 461, 651, 464, 472, 458, 466, 463, 466, - 456, 462, 478, 455, 476, 464, 450, 451, 463, 465, - 651, 651, 453, 445, 447, 458, 443, 441, 451, 441, - 462, 448, 443, 438, 436, 436, 433, 433, 437, 427, - - 452, 651, 429, 651, 435, 425, 418, 422, 434, 419, - 419, 651, 420, 429, 427, 651, 431, 416, 187, 425, - 414, 415, 435, 404, 409, 415, 431, 417, 403, 402, - 402, 426, 401, 394, 410, 396, 396, 398, 651, 394, - 651, 401, 395, 406, 386, 384, 413, 651, 384, 385, - 386, 385, 391, 651, 382, 395, 390, 383, 373, 402, - 382, 175, 378, 651, 382, 651, 376, 380, 380, 379, - 651, 651, 380, 380, 379, 365, 373, 374, 367, 361, - 373, 359, 362, 651, 369, 360, 370, 364, 379, 361, - 357, 651, 355, 362, 348, 347, 331, 333, 322, 324, - - 310, 309, 308, 285, 651, 200, 184, 651, 651, 191, - 188, 651, 175, 651, 164, 170, 168, 168, 150, 651, - 133, 108, 651, 69, 73, 49, 1, 651, 651, 221, - 229, 237, 245, 253, 261, 269, 277, 285, 293, 301, - 309, 317, 323, 331, 337, 345, 353, 361, 369, 377 + 0, 44, 49, 51, 84, 121, 50, 55, 33, 40, + 688, 687, 58, 64, 66, 68, 686, 685, 700, 705, + 705, 75, 688, 687, 692, 48, 62, 64, 66, 73, + 85, 88, 94, 96, 98, 107, 705, 109, 76, 120, + 135, 139, 0, 705, 705, 705, 153, 684, 705, 705, + 705, 0, 705, 142, 705, 0, 136, 0, 683, 0, + 111, 0, 148, 0, 682, 152, 156, 0, 0, 682, + 705, 138, 97, 142, 95, 155, 147, 156, 166, 162, + 158, 161, 160, 192, 154, 198, 200, 202, 677, 204, + 0, 206, 208, 705, 0, 191, 661, 673, 672, 650, + + 670, 656, 191, 648, 654, 666, 662, 0, 224, 0, + 208, 0, 642, 0, 229, 0, 231, 0, 659, 0, + 668, 209, 211, 667, 213, 227, 230, 236, 232, 237, + 238, 239, 241, 240, 662, 638, 645, 637, 705, 705, + 656, 705, 650, 654, 653, 652, 651, 705, 705, 650, + 649, 648, 231, 627, 633, 645, 631, 242, 245, 629, + 648, 248, 247, 647, 646, 645, 256, 257, 258, 260, + 638, 632, 636, 705, 631, 705, 705, 705, 705, 705, + 705, 705, 634, 633, 632, 631, 705, 610, 252, 259, + 261, 623, 271, 276, 260, 613, 277, 278, 616, 613, + + 705, 587, 705, 590, 705, 705, 705, 705, 581, 282, + 586, 583, 284, 279, 287, 289, 288, 291, 561, 290, + 542, 533, 429, 705, 705, 293, 294, 434, 285, 297, + 300, 295, 410, 430, 292, 302, 705, 296, 304, 404, + 428, 319, 321, 322, 323, 405, 324, 325, 327, 326, + 328, 329, 330, 331, 423, 335, 332, 337, 422, 340, + 341, 342, 344, 421, 392, 349, 352, 353, 355, 360, + 363, 368, 364, 369, 357, 419, 372, 373, 374, 380, + 381, 384, 385, 365, 417, 388, 416, 390, 392, 393, + 207, 394, 397, 396, 398, 403, 400, 407, 175, 172, + + 125, 408, 409, 415, 120, 705, 447, 457, 467, 477, + 487, 497, 507, 517, 522, 529, 539, 549, 559, 567, + 577, 585, 595, 605, 615, 625, 50, 635 } ; -static yyconst flex_int32_t yy_def[451] = +static yyconst flex_int32_t yy_def[329] = { 0, - 430, 430, 431, 431, 432, 432, 433, 433, 434, 434, - 435, 435, 436, 436, 437, 437, 438, 438, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 439, 440, 441, 442, 429, 429, 429, - 429, 429, 429, 429, 443, 429, 429, 429, 444, 50, - 445, 429, 446, 429, 447, 429, 448, 429, 429, 429, - 449, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 439, - - 440, 441, 440, 440, 450, 441, 429, 429, 442, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 443, 429, 444, 429, 445, 429, 446, 429, 447, - 429, 448, 429, 449, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 450, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 0, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429 + 306, 1, 307, 307, 308, 308, 309, 309, 310, 310, + 311, 311, 312, 312, 313, 313, 314, 314, 306, 306, + 306, 306, 306, 315, 306, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 306, 306, 306, 306, 306, 316, + 317, 318, 319, 306, 306, 306, 306, 306, 306, 306, + 306, 320, 306, 306, 306, 321, 47, 322, 306, 323, + 306, 324, 306, 325, 306, 306, 306, 326, 327, 315, + 306, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 306, 306, 316, 317, 318, 317, 317, + 328, 318, 306, 306, 319, 306, 306, 306, 306, 306, + + 306, 306, 306, 306, 306, 306, 306, 320, 306, 321, + 306, 322, 306, 323, 306, 324, 306, 325, 306, 326, + 327, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 328, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 315, 315, 327, + 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 315, 315, + 327, 327, 315, 315, 327, 327, 315, 315, 315, 315, + + 306, 306, 306, 306, 306, 306, 306, 306, 306, 315, + 315, 327, 327, 315, 315, 327, 327, 327, 315, 315, + 327, 327, 306, 306, 306, 315, 327, 315, 315, 327, + 327, 327, 327, 315, 327, 327, 306, 315, 327, 327, + 315, 327, 327, 327, 327, 327, 327, 327, 315, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 315, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, + + 327, 327, 327, 327, 327, 0, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306 } ; -static yyconst flex_int32_t yy_nxt[699] = +static yyconst flex_int32_t yy_nxt[752] = { 0, - 429, 429, 21, 45, 45, 429, 22, 64, 64, 429, - 23, 45, 45, 24, 56, 46, 57, 429, 60, 25, - 26, 27, 28, 46, 428, 29, 56, 30, 57, 31, - 32, 33, 34, 64, 64, 35, 36, 37, 38, 39, - 40, 79, 41, 42, 53, 80, 54, 23, 265, 58, - 24, 60, 66, 66, 66, 66, 25, 26, 27, 28, - 91, 58, 29, 92, 30, 266, 31, 32, 33, 34, - 427, 77, 35, 36, 37, 38, 48, 53, 49, 54, - 78, 43, 43, 43, 48, 50, 49, 51, 52, 89, - 69, 69, 426, 50, 70, 51, 52, 73, 425, 93, - - 74, 81, 86, 75, 162, 82, 87, 90, 98, 98, - 151, 53, 163, 54, 94, 88, 83, 98, 98, 53, - 152, 54, 69, 69, 101, 101, 70, 99, 99, 99, - 104, 104, 107, 107, 170, 125, 102, 123, 123, 123, - 123, 424, 105, 429, 108, 110, 171, 429, 129, 129, - 131, 131, 222, 111, 112, 113, 423, 114, 69, 69, - 422, 115, 69, 69, 223, 116, 70, 98, 98, 117, - 118, 119, 120, 99, 99, 99, 101, 101, 104, 104, - 429, 429, 104, 104, 101, 101, 107, 107, 102, 421, - 105, 420, 429, 419, 105, 418, 102, 123, 123, 123, - - 123, 176, 177, 129, 129, 131, 131, 335, 178, 375, - 376, 417, 163, 416, 415, 414, 179, 180, 181, 413, - 336, 20, 20, 20, 20, 20, 20, 20, 20, 44, - 44, 44, 44, 44, 44, 44, 44, 47, 47, 47, - 47, 47, 47, 47, 47, 55, 55, 55, 55, 55, - 55, 55, 55, 59, 59, 59, 59, 59, 59, 59, - 59, 61, 61, 61, 61, 61, 61, 61, 61, 63, - 63, 63, 63, 63, 63, 63, 63, 65, 65, 65, - 65, 65, 65, 65, 65, 67, 67, 67, 67, 67, - 67, 67, 67, 100, 100, 100, 100, 100, 100, 100, - - 100, 103, 103, 103, 103, 103, 103, 103, 103, 106, - 106, 106, 106, 106, 106, 106, 106, 109, 109, 109, - 412, 109, 109, 122, 122, 122, 122, 411, 122, 122, - 122, 124, 124, 124, 124, 124, 124, 126, 126, 126, - 126, 126, 126, 410, 126, 128, 409, 408, 128, 128, - 128, 128, 128, 130, 407, 406, 130, 130, 130, 130, - 130, 132, 132, 132, 132, 132, 132, 405, 132, 134, - 404, 134, 134, 134, 134, 134, 134, 161, 161, 161, - 161, 161, 403, 161, 161, 402, 401, 400, 399, 398, - 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, - - 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, - 377, 374, 373, 372, 371, 370, 369, 368, 367, 366, - 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, - 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 334, - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, - 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, - 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - - 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, - 273, 272, 271, 270, 269, 268, 267, 264, 263, 262, - 261, 260, 259, 258, 257, 256, 255, 254, 253, 252, - 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, - 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, - 231, 230, 229, 228, 227, 226, 225, 224, 221, 220, - 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, - 105, 209, 208, 207, 206, 205, 204, 203, 202, 201, - 200, 199, 198, 197, 196, 195, 194, 193, 192, 191, - 190, 189, 188, 187, 186, 185, 184, 183, 182, 175, - - 174, 173, 172, 169, 168, 167, 166, 165, 164, 105, - 160, 159, 158, 157, 156, 155, 154, 153, 150, 149, - 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, - 138, 137, 136, 135, 133, 127, 121, 97, 96, 95, - 85, 84, 76, 72, 71, 429, 68, 68, 62, 62, - 19, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429 - + 20, 20, 21, 20, 20, 20, 22, 20, 20, 20, + 23, 20, 24, 25, 20, 20, 20, 24, 20, 20, + 26, 24, 24, 27, 24, 24, 28, 24, 29, 30, + 31, 32, 33, 24, 24, 34, 24, 24, 24, 24, + 20, 20, 20, 20, 20, 20, 35, 36, 57, 37, + 38, 41, 41, 41, 41, 57, 121, 53, 69, 54, + 61, 61, 53, 42, 54, 42, 61, 61, 63, 63, + 63, 63, 69, 50, 69, 51, 69, 66, 66, 72, + 50, 67, 51, 69, 75, 73, 74, 39, 39, 39, + 44, 55, 45, 77, 46, 69, 55, 76, 69, 47, + + 84, 84, 48, 49, 69, 69, 69, 69, 79, 84, + 84, 66, 66, 115, 115, 67, 125, 78, 82, 85, + 85, 85, 87, 87, 50, 80, 51, 44, 81, 45, + 69, 46, 83, 123, 88, 69, 47, 90, 90, 48, + 49, 93, 93, 109, 109, 109, 109, 111, 69, 91, + 117, 117, 69, 94, 66, 66, 306, 69, 66, 66, + 306, 50, 67, 51, 96, 69, 69, 124, 69, 122, + 69, 69, 69, 97, 98, 99, 69, 100, 127, 128, + 134, 101, 69, 126, 102, 69, 132, 129, 103, 104, + 105, 106, 131, 133, 84, 84, 130, 85, 85, 85, + + 87, 87, 90, 90, 306, 306, 90, 90, 87, 87, + 93, 93, 88, 144, 91, 136, 306, 69, 91, 69, + 88, 69, 137, 69, 145, 109, 109, 109, 109, 150, + 151, 115, 115, 117, 117, 161, 152, 69, 159, 137, + 69, 158, 69, 153, 154, 155, 69, 69, 69, 69, + 69, 69, 69, 183, 165, 69, 163, 69, 69, 167, + 164, 166, 69, 162, 184, 170, 69, 69, 69, 69, + 69, 69, 210, 212, 168, 169, 193, 190, 189, 198, + 197, 69, 199, 216, 194, 200, 69, 69, 69, 69, + 217, 214, 69, 211, 69, 69, 215, 69, 69, 69, + + 69, 69, 69, 69, 69, 69, 69, 69, 228, 241, + 69, 219, 69, 229, 69, 220, 227, 230, 226, 232, + 231, 238, 242, 243, 247, 234, 244, 239, 249, 69, + 248, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 250, 252, 69, 254, 69, 255, 253, + 69, 69, 69, 262, 69, 263, 258, 257, 259, 69, + 260, 268, 69, 69, 261, 69, 264, 69, 269, 266, + 69, 267, 272, 69, 69, 69, 271, 274, 69, 69, + 270, 277, 69, 69, 69, 283, 275, 279, 276, 278, + 69, 69, 280, 282, 69, 69, 281, 285, 69, 284, + + 69, 291, 69, 69, 69, 286, 69, 69, 69, 288, + 69, 290, 293, 69, 287, 289, 298, 69, 69, 69, + 295, 297, 296, 300, 292, 69, 69, 69, 294, 69, + 273, 69, 69, 265, 299, 301, 303, 256, 69, 251, + 246, 304, 245, 302, 240, 237, 305, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 43, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 56, 56, 56, + 56, 56, 56, 56, 56, 56, 56, 58, 58, 58, + 58, 58, 58, 58, 58, 58, 58, 60, 60, 60, + + 60, 60, 60, 60, 60, 60, 60, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 70, 70, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 95, + 95, 95, 236, 95, 235, 95, 95, 108, 108, 108, + 108, 233, 108, 108, 108, 108, 108, 110, 110, 110, + 110, 110, 110, 110, 110, 112, 112, 112, 112, 112, + 112, 112, 112, 69, 112, 114, 69, 225, 114, 114, + + 114, 114, 114, 114, 114, 116, 224, 223, 116, 116, + 116, 116, 116, 116, 116, 118, 118, 118, 118, 118, + 118, 118, 118, 222, 118, 120, 221, 120, 120, 120, + 120, 120, 120, 120, 120, 135, 135, 135, 135, 135, + 135, 135, 218, 135, 135, 213, 209, 208, 207, 206, + 205, 204, 203, 202, 201, 69, 196, 195, 192, 191, + 188, 187, 186, 185, 182, 181, 180, 179, 178, 177, + 176, 175, 174, 173, 172, 171, 91, 160, 69, 157, + 156, 149, 148, 147, 146, 143, 142, 141, 140, 139, + 138, 91, 69, 119, 113, 107, 71, 69, 68, 306, + + 65, 65, 59, 59, 19, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306 } ; -static yyconst flex_int32_t yy_chk[699] = +static yyconst flex_int32_t yy_chk[752] = { 0, - 0, 0, 1, 3, 3, 0, 1, 13, 13, 0, - 1, 4, 4, 1, 7, 3, 7, 0, 9, 1, - 1, 1, 1, 4, 427, 1, 8, 1, 8, 1, - 1, 1, 1, 14, 14, 1, 1, 1, 1, 2, - 2, 28, 2, 2, 9, 28, 9, 2, 234, 7, - 2, 10, 15, 15, 16, 16, 2, 2, 2, 2, - 34, 8, 2, 34, 2, 234, 2, 2, 2, 2, - 426, 27, 2, 2, 2, 2, 5, 10, 5, 10, - 27, 2, 2, 2, 6, 5, 6, 5, 5, 33, - 22, 22, 425, 6, 22, 6, 6, 25, 424, 35, - - 25, 29, 32, 25, 110, 29, 32, 33, 39, 39, - 89, 5, 110, 5, 35, 32, 29, 40, 40, 6, - 89, 6, 42, 42, 44, 44, 42, 43, 43, 43, - 45, 45, 46, 46, 117, 60, 44, 57, 57, 57, - 57, 422, 45, 60, 46, 50, 117, 60, 64, 64, - 66, 66, 179, 50, 50, 50, 421, 50, 69, 69, - 419, 50, 70, 70, 179, 50, 70, 98, 98, 50, - 50, 50, 50, 99, 99, 99, 100, 100, 101, 101, - 102, 102, 104, 104, 106, 106, 107, 107, 100, 418, - 101, 417, 102, 416, 104, 415, 106, 123, 123, 123, - - 123, 125, 125, 129, 129, 131, 131, 319, 125, 362, - 362, 413, 125, 411, 410, 407, 125, 125, 125, 406, - 319, 430, 430, 430, 430, 430, 430, 430, 430, 431, - 431, 431, 431, 431, 431, 431, 431, 432, 432, 432, - 432, 432, 432, 432, 432, 433, 433, 433, 433, 433, - 433, 433, 433, 434, 434, 434, 434, 434, 434, 434, - 434, 435, 435, 435, 435, 435, 435, 435, 435, 436, - 436, 436, 436, 436, 436, 436, 436, 437, 437, 437, - 437, 437, 437, 437, 437, 438, 438, 438, 438, 438, - 438, 438, 438, 439, 439, 439, 439, 439, 439, 439, - - 439, 440, 440, 440, 440, 440, 440, 440, 440, 441, - 441, 441, 441, 441, 441, 441, 441, 442, 442, 442, - 404, 442, 442, 443, 443, 443, 443, 403, 443, 443, - 443, 444, 444, 444, 444, 444, 444, 445, 445, 445, - 445, 445, 445, 402, 445, 446, 401, 400, 446, 446, - 446, 446, 446, 447, 399, 398, 447, 447, 447, 447, - 447, 448, 448, 448, 448, 448, 448, 397, 448, 449, - 396, 449, 449, 449, 449, 449, 449, 450, 450, 450, - 450, 450, 395, 450, 450, 394, 393, 391, 390, 389, - 388, 387, 386, 385, 383, 382, 381, 380, 379, 378, - - 377, 376, 375, 374, 373, 370, 369, 368, 367, 365, - 363, 361, 360, 359, 358, 357, 356, 355, 353, 352, - 351, 350, 349, 347, 346, 345, 344, 343, 342, 340, - 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, - 328, 327, 326, 325, 324, 323, 322, 321, 320, 318, - 317, 315, 314, 313, 311, 310, 309, 308, 307, 306, - 305, 303, 301, 300, 299, 298, 297, 296, 295, 294, - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - 283, 280, 279, 278, 277, 276, 275, 274, 273, 272, - 271, 270, 269, 268, 267, 266, 265, 263, 262, 260, - - 259, 258, 253, 251, 249, 248, 247, 245, 244, 243, - 242, 241, 239, 238, 237, 236, 235, 233, 232, 231, - 230, 229, 228, 227, 225, 224, 223, 222, 214, 212, - 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, - 200, 198, 197, 196, 195, 194, 193, 192, 191, 189, - 188, 186, 185, 184, 183, 182, 181, 180, 178, 177, - 176, 173, 172, 171, 170, 169, 167, 164, 163, 162, - 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, - 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, - 141, 140, 139, 138, 137, 136, 135, 133, 127, 121, - - 120, 119, 118, 116, 115, 114, 113, 112, 111, 103, - 97, 96, 95, 94, 93, 92, 91, 90, 88, 87, - 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, - 76, 75, 74, 73, 68, 62, 51, 38, 37, 36, - 31, 30, 26, 24, 23, 19, 18, 17, 12, 11, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429, 429, 429, - 429, 429, 429, 429, 429, 429, 429, 429 - + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 9, 2, + 2, 3, 3, 4, 4, 10, 327, 7, 26, 7, + 13, 13, 8, 3, 8, 4, 14, 14, 15, 15, + 16, 16, 27, 9, 28, 9, 29, 22, 22, 26, + 10, 22, 10, 30, 28, 26, 27, 2, 2, 2, + 5, 7, 5, 30, 5, 31, 8, 29, 32, 5, + + 35, 35, 5, 5, 33, 75, 34, 73, 32, 36, + 36, 38, 38, 61, 61, 38, 75, 31, 34, 39, + 39, 39, 40, 40, 5, 32, 5, 6, 33, 6, + 305, 6, 34, 73, 40, 301, 6, 41, 41, 6, + 6, 42, 42, 54, 54, 54, 54, 57, 72, 41, + 63, 63, 74, 42, 66, 66, 57, 77, 67, 67, + 57, 6, 67, 6, 47, 76, 78, 74, 81, 72, + 83, 82, 80, 47, 47, 47, 79, 47, 77, 78, + 83, 47, 300, 76, 47, 299, 81, 79, 47, 47, + 47, 47, 80, 82, 84, 84, 79, 85, 85, 85, + + 86, 86, 87, 87, 88, 88, 90, 90, 92, 92, + 93, 93, 86, 103, 87, 96, 88, 291, 90, 122, + 92, 123, 96, 125, 103, 109, 109, 109, 109, 111, + 111, 115, 115, 117, 117, 125, 111, 126, 123, 111, + 127, 122, 129, 111, 111, 111, 128, 130, 131, 132, + 134, 133, 158, 153, 129, 159, 127, 163, 162, 131, + 128, 130, 189, 126, 153, 134, 167, 168, 169, 190, + 170, 191, 189, 191, 132, 133, 162, 159, 158, 168, + 167, 193, 169, 195, 163, 170, 194, 197, 198, 214, + 195, 193, 210, 190, 213, 229, 194, 215, 217, 216, + + 220, 218, 235, 226, 227, 232, 238, 230, 214, 229, + 231, 197, 236, 215, 239, 198, 213, 216, 210, 218, + 217, 226, 230, 231, 235, 220, 232, 227, 238, 242, + 236, 243, 244, 245, 247, 248, 250, 249, 251, 252, + 253, 254, 257, 239, 242, 256, 244, 258, 245, 243, + 260, 261, 262, 252, 263, 253, 248, 247, 249, 266, + 250, 258, 267, 268, 251, 269, 254, 275, 260, 256, + 270, 257, 263, 271, 273, 284, 262, 266, 272, 274, + 261, 269, 277, 278, 279, 275, 267, 271, 268, 270, + 280, 281, 272, 274, 282, 283, 273, 278, 286, 277, + + 288, 284, 289, 290, 292, 279, 294, 293, 295, 281, + 297, 283, 288, 296, 280, 282, 294, 298, 302, 303, + 290, 293, 292, 296, 286, 304, 287, 285, 289, 276, + 265, 264, 259, 255, 295, 297, 302, 246, 241, 240, + 234, 303, 233, 298, 228, 223, 304, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 312, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 314, 314, 314, + 314, 314, 314, 314, 314, 314, 314, 315, 315, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 319, + 319, 319, 222, 319, 221, 319, 319, 320, 320, 320, + 320, 219, 320, 320, 320, 320, 320, 321, 321, 321, + 321, 321, 321, 321, 321, 322, 322, 322, 322, 322, + 322, 322, 322, 212, 322, 323, 211, 209, 323, 323, + + 323, 323, 323, 323, 323, 324, 204, 202, 324, 324, + 324, 324, 324, 324, 324, 325, 325, 325, 325, 325, + 325, 325, 325, 200, 325, 326, 199, 326, 326, 326, + 326, 326, 326, 326, 326, 328, 328, 328, 328, 328, + 328, 328, 196, 328, 328, 192, 188, 186, 185, 184, + 183, 175, 173, 172, 171, 166, 165, 164, 161, 160, + 157, 156, 155, 154, 152, 151, 150, 147, 146, 145, + 144, 143, 141, 138, 137, 136, 135, 124, 121, 119, + 113, 107, 106, 105, 104, 102, 101, 100, 99, 98, + 97, 89, 70, 65, 59, 48, 25, 24, 23, 19, + + 18, 17, 12, 11, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306 } ; static yy_state_type yy_last_accepting_state; @@ -798,6 +771,7 @@ char *gabc_score_determination_text; #include <string.h> #include "struct.h" #include "messages.h" +#include "bool.h" #include "support.h" #include "gabc.h" @@ -805,6 +779,7 @@ char *gabc_score_determination_text; #include "gabc-score-determination-y.h" static unsigned char style_stack = 0; +static bool eof_found = false; #define YY_NO_INPUT @@ -853,7 +828,7 @@ static unsigned char style_stack = 0; for (a) single-line values, ending with a semicolon at end of line or a double semicolon, (b) multi-line values, which end at a double semicolon. */ -#line 857 "gabc/gabc-score-determination-l.c" +#line 832 "gabc/gabc-score-determination-l.c" #define INITIAL 0 #define attribute 1 @@ -1075,9 +1050,9 @@ YY_DECL } { -#line 106 "gabc/gabc-score-determination.l" +#line 108 "gabc/gabc-score-determination.l" -#line 1081 "gabc/gabc-score-determination-l.c" +#line 1056 "gabc/gabc-score-determination-l.c" while ( 1 ) /* loops until end-of-file is reached */ { @@ -1105,13 +1080,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 651 ); + while ( yy_base[yy_current_state] != 705 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1137,7 +1112,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 107 "gabc/gabc-score-determination.l" +#line 109 "gabc/gabc-score-determination.l" { /* BOM written by a lot of windows softwares when they write UTF-8 */ } @@ -1145,14 +1120,14 @@ YY_RULE_SETUP case 2: /* rule 2 can match eol */ YY_RULE_SETUP -#line 110 "gabc/gabc-score-determination.l" +#line 112 "gabc/gabc-score-determination.l" { /* ignoring empty lines */ } YY_BREAK case 3: YY_RULE_SETUP -#line 113 "gabc/gabc-score-determination.l" +#line 115 "gabc/gabc-score-determination.l" { BEGIN(inicomments); } @@ -1160,21 +1135,21 @@ YY_RULE_SETUP case 4: /* rule 4 can match eol */ YY_RULE_SETUP -#line 116 "gabc/gabc-score-determination.l" +#line 118 "gabc/gabc-score-determination.l" { BEGIN(INITIAL); } YY_BREAK case 5: YY_RULE_SETUP -#line 119 "gabc/gabc-score-determination.l" +#line 121 "gabc/gabc-score-determination.l" { /* ignored */ } YY_BREAK case 6: YY_RULE_SETUP -#line 122 "gabc/gabc-score-determination.l" +#line 124 "gabc/gabc-score-determination.l" { BEGIN(attribute); return COLON; @@ -1183,7 +1158,7 @@ YY_RULE_SETUP case 7: /* rule 7 can match eol */ YY_RULE_SETUP -#line 126 "gabc/gabc-score-determination.l" +#line 128 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); @@ -1193,7 +1168,7 @@ YY_RULE_SETUP case 8: /* rule 8 can match eol */ YY_RULE_SETUP -#line 131 "gabc/gabc-score-determination.l" +#line 133 "gabc/gabc-score-determination.l" { BEGIN(INITIAL); return SEMICOLON; @@ -1201,7 +1176,7 @@ YY_RULE_SETUP YY_BREAK case 9: YY_RULE_SETUP -#line 135 "gabc/gabc-score-determination.l" +#line 137 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.character = gabc_score_determination_text[5]; return DEF_MACRO; @@ -1209,268 +1184,206 @@ YY_RULE_SETUP YY_BREAK case 10: YY_RULE_SETUP -#line 139 "gabc/gabc-score-determination.l" +#line 141 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NUMBER_OF_VOICES; } YY_BREAK case 11: YY_RULE_SETUP -#line 142 "gabc/gabc-score-determination.l" +#line 146 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NAME; } YY_BREAK case 12: YY_RULE_SETUP -#line 145 "gabc/gabc-score-determination.l" +#line 151 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return SCORE_COPYRIGHT; } YY_BREAK case 13: YY_RULE_SETUP -#line 148 "gabc/gabc-score-determination.l" +#line 156 "gabc/gabc-score-determination.l" { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return GABC_COPYRIGHT; } YY_BREAK case 14: YY_RULE_SETUP -#line 151 "gabc/gabc-score-determination.l" +#line 161 "gabc/gabc-score-determination.l" { - return OFFICE_PART; + /* DEPRECATED by 4.1 */ + return INITIAL_STYLE; } YY_BREAK case 15: YY_RULE_SETUP -#line 154 "gabc/gabc-score-determination.l" +#line 165 "gabc/gabc-score-determination.l" { - return OCCASION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE; } YY_BREAK case 16: YY_RULE_SETUP -#line 157 "gabc/gabc-score-determination.l" +#line 170 "gabc/gabc-score-determination.l" { - return METER; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_MODIFIER; } YY_BREAK case 17: YY_RULE_SETUP -#line 160 "gabc/gabc-score-determination.l" +#line 175 "gabc/gabc-score-determination.l" { - return COMMENTARY; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_DIFFERENTIA; } YY_BREAK case 18: YY_RULE_SETUP -#line 163 "gabc/gabc-score-determination.l" +#line 180 "gabc/gabc-score-determination.l" { - return ARRANGER; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ANNOTATION; } YY_BREAK case 19: YY_RULE_SETUP -#line 166 "gabc/gabc-score-determination.l" +#line 185 "gabc/gabc-score-determination.l" { - return GABC_VERSION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return AUTHOR; } YY_BREAK case 20: YY_RULE_SETUP -#line 169 "gabc/gabc-score-determination.l" +#line 190 "gabc/gabc-score-determination.l" { - return INITIAL_STYLE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return LANGUAGE; } YY_BREAK case 21: YY_RULE_SETUP -#line 172 "gabc/gabc-score-determination.l" +#line 195 "gabc/gabc-score-determination.l" { - return MODE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return STAFF_LINES; } YY_BREAK case 22: YY_RULE_SETUP -#line 175 "gabc/gabc-score-determination.l" +#line 200 "gabc/gabc-score-determination.l" { - return ANNOTATION; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return NABC_LINES; } YY_BREAK case 23: YY_RULE_SETUP -#line 178 "gabc/gabc-score-determination.l" +#line 205 "gabc/gabc-score-determination.l" { - return AUTHOR; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ORISCUS_ORIENTATION; } YY_BREAK case 24: YY_RULE_SETUP -#line 181 "gabc/gabc-score-determination.l" +#line 210 "gabc/gabc-score-determination.l" { - return DATE; + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return OTHER_HEADER; } YY_BREAK case 25: YY_RULE_SETUP -#line 184 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 187 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT_REFERENCE; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 190 "gabc/gabc-score-determination.l" -{ - return MANUSCRIPT_STORAGE_PLACE; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 193 "gabc/gabc-score-determination.l" -{ - return BOOK; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 196 "gabc/gabc-score-determination.l" -{ - return TRANSCRIBER; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 199 "gabc/gabc-score-determination.l" -{ - return GENERATED_BY; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 202 "gabc/gabc-score-determination.l" -{ - return CENTERING_SCHEME; - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 205 "gabc/gabc-score-determination.l" -{ - return LANGUAGE; - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 208 "gabc/gabc-score-determination.l" -{ - return TRANSCRIPTION_DATE; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 211 "gabc/gabc-score-determination.l" -{ - return STYLE; - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 214 "gabc/gabc-score-determination.l" -{ - return VIRGULA_POSITION; - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 217 "gabc/gabc-score-determination.l" -{ - return GREGORIOTEX_FONT; - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 220 "gabc/gabc-score-determination.l" -{ - return NABC_LINES; - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 223 "gabc/gabc-score-determination.l" -{ - return USER_NOTES; - } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 226 "gabc/gabc-score-determination.l" +#line 215 "gabc/gabc-score-determination.l" { return VOICE_CHANGE; } YY_BREAK -case 40: -/* rule 40 can match eol */ +case 26: +/* rule 26 can match eol */ YY_RULE_SETUP -#line 229 "gabc/gabc-score-determination.l" +#line 218 "gabc/gabc-score-determination.l" { BEGIN(score); return END_OF_DEFINITIONS; } YY_BREAK -case 41: +case 27: YY_RULE_SETUP -#line 233 "gabc/gabc-score-determination.l" +#line 222 "gabc/gabc-score-determination.l" { gregorio_messagef("det_score", VERBOSITY_ERROR, 0, _("unrecognized character: \"%c\" in definition part"), gabc_score_determination_text[0]); } YY_BREAK -case 42: -/* rule 42 can match eol */ +case 28: +/* rule 28 can match eol */ YY_RULE_SETUP -#line 238 "gabc/gabc-score-determination.l" +#line 227 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 43: +case 29: YY_RULE_SETUP -#line 243 "gabc/gabc-score-determination.l" +#line 232 "gabc/gabc-score-determination.l" +{ + return HYPHEN; + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 235 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return I_BEGINNING; } YY_BREAK -case 44: +case 31: YY_RULE_SETUP -#line 248 "gabc/gabc-score-determination.l" +#line 240 "gabc/gabc-score-determination.l" { return BNLBA; } YY_BREAK -case 45: +case 32: YY_RULE_SETUP -#line 251 "gabc/gabc-score-determination.l" +#line 243 "gabc/gabc-score-determination.l" { return ENLBA; } YY_BREAK -case 46: +case 33: YY_RULE_SETUP -#line 254 "gabc/gabc-score-determination.l" +#line 246 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1479,18 +1392,18 @@ YY_RULE_SETUP return I_END; } YY_BREAK -case 47: +case 34: YY_RULE_SETUP -#line 261 "gabc/gabc-score-determination.l" +#line 253 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return TT_BEGINNING; } YY_BREAK -case 48: +case 35: YY_RULE_SETUP -#line 266 "gabc/gabc-score-determination.l" +#line 258 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1499,18 +1412,18 @@ YY_RULE_SETUP return TT_END; } YY_BREAK -case 49: +case 36: YY_RULE_SETUP -#line 273 "gabc/gabc-score-determination.l" +#line 265 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return UL_BEGINNING; } YY_BREAK -case 50: +case 37: YY_RULE_SETUP -#line 278 "gabc/gabc-score-determination.l" +#line 270 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1519,18 +1432,18 @@ YY_RULE_SETUP return UL_END; } YY_BREAK -case 51: +case 38: YY_RULE_SETUP -#line 285 "gabc/gabc-score-determination.l" +#line 277 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return C_BEGINNING; } YY_BREAK -case 52: +case 39: YY_RULE_SETUP -#line 290 "gabc/gabc-score-determination.l" +#line 282 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1539,18 +1452,18 @@ YY_RULE_SETUP return C_END; } YY_BREAK -case 53: +case 40: YY_RULE_SETUP -#line 297 "gabc/gabc-score-determination.l" +#line 289 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return B_BEGINNING; } YY_BREAK -case 54: +case 41: YY_RULE_SETUP -#line 302 "gabc/gabc-score-determination.l" +#line 294 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1559,18 +1472,18 @@ YY_RULE_SETUP return B_END; } YY_BREAK -case 55: +case 42: YY_RULE_SETUP -#line 309 "gabc/gabc-score-determination.l" +#line 301 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return SC_BEGINNING; } YY_BREAK -case 56: +case 43: YY_RULE_SETUP -#line 314 "gabc/gabc-score-determination.l" +#line 306 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1579,18 +1492,18 @@ YY_RULE_SETUP return SC_END; } YY_BREAK -case 57: +case 44: YY_RULE_SETUP -#line 321 "gabc/gabc-score-determination.l" +#line 313 "gabc/gabc-score-determination.l" { BEGIN(style); style_stack ++; return SP_BEGINNING; } YY_BREAK -case 58: +case 45: YY_RULE_SETUP -#line 326 "gabc/gabc-score-determination.l" +#line 318 "gabc/gabc-score-determination.l" { style_stack --; if (style_stack == 0) { @@ -1599,49 +1512,49 @@ YY_RULE_SETUP return SP_END; } YY_BREAK -case 59: -/* rule 59 can match eol */ +case 46: +/* rule 46 can match eol */ YY_RULE_SETUP -#line 333 "gabc/gabc-score-determination.l" +#line 325 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 60: +case 47: YY_RULE_SETUP -#line 338 "gabc/gabc-score-determination.l" +#line 330 "gabc/gabc-score-determination.l" { BEGIN(comments); } YY_BREAK -case 61: -/* rule 61 can match eol */ +case 48: +/* rule 48 can match eol */ YY_RULE_SETUP -#line 341 "gabc/gabc-score-determination.l" +#line 333 "gabc/gabc-score-determination.l" { BEGIN(score); } YY_BREAK -case 62: +case 49: YY_RULE_SETUP -#line 344 "gabc/gabc-score-determination.l" +#line 336 "gabc/gabc-score-determination.l" { /* ignored */ } YY_BREAK -case 63: +case 50: YY_RULE_SETUP -#line 347 "gabc/gabc-score-determination.l" +#line 339 "gabc/gabc-score-determination.l" { BEGIN(verb); return VERB_BEGINNING; } YY_BREAK -case 64: +case 51: YY_RULE_SETUP -#line 351 "gabc/gabc-score-determination.l" +#line 343 "gabc/gabc-score-determination.l" { if (style_stack == 0) { BEGIN(score); @@ -1651,155 +1564,149 @@ YY_RULE_SETUP return VERB_END; } YY_BREAK -case 65: -/* rule 65 can match eol */ +case 52: +/* rule 52 can match eol */ YY_RULE_SETUP -#line 359 "gabc/gabc-score-determination.l" +#line 351 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 66: +case 53: YY_RULE_SETUP -#line 364 "gabc/gabc-score-determination.l" +#line 356 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 67: +case 54: YY_RULE_SETUP -#line 369 "gabc/gabc-score-determination.l" +#line 361 "gabc/gabc-score-determination.l" { return CENTER_BEGINNING; } YY_BREAK -case 68: +case 55: YY_RULE_SETUP -#line 372 "gabc/gabc-score-determination.l" +#line 364 "gabc/gabc-score-determination.l" { return CENTER_END; } YY_BREAK -case 69: +case 56: YY_RULE_SETUP -#line 375 "gabc/gabc-score-determination.l" +#line 367 "gabc/gabc-score-determination.l" { BEGIN(alt); return ALT_BEGIN; } YY_BREAK -case 70: -/* rule 70 can match eol */ +case 57: +/* rule 57 can match eol */ YY_RULE_SETUP -#line 379 "gabc/gabc-score-determination.l" +#line 371 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } YY_BREAK -case 71: +case 58: YY_RULE_SETUP -#line 384 "gabc/gabc-score-determination.l" +#line 376 "gabc/gabc-score-determination.l" { BEGIN(score); return ALT_END; } YY_BREAK -case 72: +case 59: YY_RULE_SETUP -#line 388 "gabc/gabc-score-determination.l" +#line 380 "gabc/gabc-score-determination.l" { return EUOUAE_B; } YY_BREAK -case 73: +case 60: YY_RULE_SETUP -#line 391 "gabc/gabc-score-determination.l" +#line 383 "gabc/gabc-score-determination.l" { return EUOUAE_E; } YY_BREAK -case 74: +case 61: YY_RULE_SETUP -#line 394 "gabc/gabc-score-determination.l" +#line 386 "gabc/gabc-score-determination.l" { return TRANSLATION_CENTER_END; } YY_BREAK -case 75: +case 62: YY_RULE_SETUP -#line 397 "gabc/gabc-score-determination.l" +#line 389 "gabc/gabc-score-determination.l" { return TRANSLATION_BEGINNING; } YY_BREAK -case 76: +case 63: YY_RULE_SETUP -#line 400 "gabc/gabc-score-determination.l" +#line 392 "gabc/gabc-score-determination.l" { return TRANSLATION_END; } YY_BREAK -case 77: +case 64: YY_RULE_SETUP -#line 403 "gabc/gabc-score-determination.l" +#line 395 "gabc/gabc-score-determination.l" { BEGIN(notes); return OPENING_BRACKET; } YY_BREAK -case 78: -/* rule 78 can match eol */ +case 65: +/* rule 65 can match eol */ YY_RULE_SETUP -#line 407 "gabc/gabc-score-determination.l" +#line 399 "gabc/gabc-score-determination.l" { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return NOTES; } YY_BREAK -case 79: +case 66: YY_RULE_SETUP -#line 412 "gabc/gabc-score-determination.l" +#line 404 "gabc/gabc-score-determination.l" { return VOICE_CUT; } YY_BREAK -case 80: +case 67: YY_RULE_SETUP -#line 415 "gabc/gabc-score-determination.l" +#line 407 "gabc/gabc-score-determination.l" { return NABC_CUT; } YY_BREAK -case 81: +case 68: YY_RULE_SETUP -#line 418 "gabc/gabc-score-determination.l" +#line 410 "gabc/gabc-score-determination.l" { BEGIN(score); return CLOSING_BRACKET; } YY_BREAK -case 82: -/* rule 82 can match eol */ +case 69: +/* rule 69 can match eol */ YY_RULE_SETUP -#line 422 "gabc/gabc-score-determination.l" +#line 414 "gabc/gabc-score-determination.l" { BEGIN(score); return CLOSING_BRACKET_WITH_SPACE; } YY_BREAK -case 83: -YY_RULE_SETUP -#line 426 "gabc/gabc-score-determination.l" -ECHO; - YY_BREAK -#line 1803 "gabc/gabc-score-determination-l.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(attribute): case YY_STATE_EOF(score): @@ -1809,7 +1716,22 @@ case YY_STATE_EOF(verb): case YY_STATE_EOF(comments): case YY_STATE_EOF(inicomments): case YY_STATE_EOF(alt): - yyterminate(); +#line 418 "gabc/gabc-score-determination.l" +{ + if (!eof_found) { + eof_found = true; + return END_OF_FILE; + } else { + yyterminate(); + } + } + YY_BREAK +case 70: +YY_RULE_SETUP +#line 426 "gabc/gabc-score-determination.l" +ECHO; + YY_BREAK +#line 1735 "gabc/gabc-score-determination-l.c" case YY_END_OF_BUFFER: { @@ -2101,7 +2023,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2129,11 +2051,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 430 ) + if ( yy_current_state >= 307 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 429); + yy_is_jam = (yy_current_state == 306); return yy_is_jam ? 0 : yy_current_state; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c index f3ecdfb6f08..2f27b7c54d1 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.c @@ -168,8 +168,9 @@ static int voice; static gregorio_center_determination center_is_determined; /* current_key is... the current key... updated by each notes determination * (for key changes) */ -static int current_key = DEFAULT_KEY; +static int current_key; static bool got_language = false; +static bool got_staff_lines = false; static bool started_first_word = false; static struct sha1_ctx digester; @@ -187,7 +188,7 @@ static void gabc_score_determination_error(const char *error_str) VERBOSITY_ERROR, 0); } -static void gabc_fix_custos(gregorio_score *score_to_check) +static void fix_custos(gregorio_score *score_to_check) { gregorio_syllable *current_syllable; gregorio_element *current_element; @@ -200,7 +201,8 @@ static void gabc_fix_custos(gregorio_score *score_to_check) || !score_to_check->first_voice_info) { return; } - current_key = score_to_check->first_voice_info->initial_key; + current_key = gregorio_calculate_new_key( + score_to_check->first_voice_info->initial_clef); current_syllable = score_to_check->first_syllable; while (current_syllable) { current_element = (current_syllable->elements)[0]; @@ -210,55 +212,34 @@ static void gabc_fix_custos(gregorio_score *score_to_check) pitch = custo_element->u.misc.pitched.pitch; /* we look for the key */ while (current_element) { - switch (current_element->type) { - case GRE_C_KEY_CHANGE: - case GRE_C_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, + if (current_element->type == GRE_CLEF) { + pitch = gregorio_determine_next_pitch( current_syllable, current_element, NULL); - newkey = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); + newkey = gregorio_calculate_new_key( + current_element->u.misc.clef); pitch_difference = (char) newkey - (char) current_key; pitch -= pitch_difference; current_key = newkey; - break; - case GRE_F_KEY_CHANGE: - case GRE_F_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, - current_element, NULL); - newkey = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); - pitch_difference = (char) newkey - (char) current_key; - pitch -= pitch_difference; - current_key = newkey; - break; - default: - break; } if (!custo_element->u.misc.pitched.force_pitch) { while (pitch < LOWEST_PITCH) { pitch += 7; } - while (pitch > HIGHEST_PITCH) { + while (pitch > score_to_check->highest_pitch) { pitch -= 7; } custo_element->u.misc.pitched.pitch = pitch; } assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH && custo_element->u.misc.pitched.pitch - <= HIGHEST_PITCH); + <= score_to_check->highest_pitch); current_element = current_element->next; } } if (current_element) { - if (current_element->type == GRE_C_KEY_CHANGE - || current_element->type == GRE_C_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); - } - if (current_element->type == GRE_F_KEY_CHANGE - || current_element->type == GRE_F_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); + if (current_element->type == GRE_CLEF) { + current_key = gregorio_calculate_new_key( + current_element->u.misc.clef); } current_element = current_element->next; } @@ -317,9 +298,12 @@ static void initialize_variables(void) no_linebreak_area = NLBA_NORMAL; euouae = EUOUAE_NORMAL; center_is_determined = CENTER_NOT_DETERMINED; + current_key = gregorio_calculate_new_key(gregorio_default_clef); for (i = 0; i < 10; i++) { macros[i] = NULL; } + got_language = false; + got_staff_lines = false; started_first_word = false; } @@ -340,8 +324,7 @@ static void free_variables(void) /* see whether a voice_info is empty */ static int voice_info_is_not_empty(const gregorio_voice_info *voice_info) { - return (voice_info->initial_key != 5 || voice_info->style - || voice_info->virgula_position); + return (voice_info->initial_clef.line); } /* @@ -492,24 +475,23 @@ static void gregorio_set_translation_center_beginning( static void rebuild_characters(void) { - bool has_initial = score->initial_style != NO_INITIAL; - /* we rebuild the first syllable text if it is the first syllable, or if * it is the second when the first has no text. * it is a patch for cases like (c4) Al(ab)le(ab) */ - if ((!score->first_syllable && has_initial && current_character) + if ((!score->first_syllable && current_character) || (current_syllable && !current_syllable->previous_syllable && !current_syllable->text && current_character)) { - gregorio_rebuild_first_syllable(¤t_character, has_initial); + /* leave the first syllable text untouched at this time */ + gregorio_go_to_first_character_c(¤t_character); started_first_word = true; - } - - gregorio_rebuild_characters(¤t_character, center_is_determined, - has_initial); + } else { + gregorio_rebuild_characters(¤t_character, center_is_determined, + false); - if (started_first_word) { - gregorio_set_first_word(¤t_character); + if (started_first_word) { + gregorio_set_first_word(¤t_character); + } } } @@ -597,26 +579,6 @@ static void gregorio_gabc_add_text(char *mbcharacters) } /* - * the function called when centering_scheme is seen in gabc - */ -static void set_centering_scheme(char *sc) -{ - gregorio_message("\"centering-scheme\" header is deprecated. Please use " - "\\gresetlyriccentering in TeX instead.", "set_centering_scheme", - VERBOSITY_DEPRECATION, 0); - if (strncmp((const char *) sc, "latine", 6) == 0) { - score->centering = SCHEME_VOWEL; - return; - } - if (strncmp((const char *) sc, "english", 6) == 0) { - score->centering = SCHEME_SYLLABLE; - return; - } - gregorio_message("centering-scheme unknown value: must be \"latine\" " - "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0); -} - -/* * * The two functions called when lex returns a style, we simply add it. All the * complex things will be done by the function after... @@ -638,6 +600,96 @@ void gabc_digest(const void *const buf, const size_t size) sha1_process_bytes(buf, size, &digester); } +static void determine_oriscus_orientation(gregorio_score *score) { + gregorio_syllable *syllable; + gregorio_element *element; + gregorio_glyph *glyph; + gregorio_note *note; + gregorio_note *oriscus = NULL; + + for (syllable = score->first_syllable; syllable; + syllable = syllable->next_syllable) { + for (element = syllable->elements[0]; element; + element = element->next) { + if (element->type == GRE_ELEMENT) { + for (glyph = element->u.first_glyph; glyph; + glyph = glyph->next) { + if (glyph->type == GRE_GLYPH) { + for (note = glyph->u.notes.first_note; note; + note = note->next) { + if (note->type == GRE_NOTE) { + if (oriscus) { + if (note->u.note.pitch + < oriscus->u.note.pitch) { + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } else { /* ascending or the same */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_ASCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_ASCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } + oriscus = NULL; + } + + switch (note->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus = note; + break; + + default: + break; + } + } + } + } + } + } + } + } + + if (oriscus) { + /* oriscus at the end of the score */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } +} + /* * The "main" function. It is the function that is called when we have to read * a gabc file. It takes a file descriptor, that is to say a file that is @@ -662,8 +714,11 @@ gregorio_score *gabc_read_score(FILE *f_in) /* the flex/bison main call, it will build the score (that we have * initialized) */ gabc_score_determination_parse(); - gregorio_fix_initial_keys(score, DEFAULT_KEY); - gabc_fix_custos(score); + if (!score->legacy_oriscus_orientation) { + determine_oriscus_orientation(score); + } + gregorio_fix_initial_keys(score, gregorio_default_clef); + fix_custos(score); free_variables(); /* the we check the validity and integrity of the score we have built. */ if (!check_score_integrity(score)) { @@ -685,11 +740,11 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { if (nabc_state == 0) { if (!elements[voice]) { elements[voice] = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); current_element = elements[voice]; } else { new_elements = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); last_element = elements[voice]; while(last_element->next) { last_element = last_element->next; @@ -716,7 +771,7 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { } } -#line 720 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */ +#line 775 "gabc/gabc-score-determination-y.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -751,35 +806,35 @@ extern int gabc_score_determination_debug; # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - COLON = 259, - SEMICOLON = 260, - OFFICE_PART = 261, - ANNOTATION = 262, - AUTHOR = 263, - DATE = 264, - MANUSCRIPT = 265, - MANUSCRIPT_REFERENCE = 266, - MANUSCRIPT_STORAGE_PLACE = 267, - TRANSCRIBER = 268, - TRANSCRIPTION_DATE = 269, - BOOK = 270, - STYLE = 271, - VIRGULA_POSITION = 272, - INITIAL_STYLE = 273, - MODE = 274, - GREGORIOTEX_FONT = 275, - GENERATED_BY = 276, - NAME = 277, - OPENING_BRACKET = 278, - NOTES = 279, - VOICE_CUT = 280, - CLOSING_BRACKET = 281, - NUMBER_OF_VOICES = 282, - VOICE_CHANGE = 283, - END_OF_DEFINITIONS = 284, - SPACE = 285, - CHARACTERS = 286, + NAME = 258, + AUTHOR = 259, + GABC_COPYRIGHT = 260, + SCORE_COPYRIGHT = 261, + NUMBER_OF_VOICES = 262, + LANGUAGE = 263, + STAFF_LINES = 264, + ORISCUS_ORIENTATION = 265, + DEF_MACRO = 266, + OTHER_HEADER = 267, + ANNOTATION = 268, + MODE = 269, + MODE_MODIFIER = 270, + MODE_DIFFERENTIA = 271, + INITIAL_STYLE = 272, + VOICE_CUT = 273, + VOICE_CHANGE = 274, + END_OF_DEFINITIONS = 275, + END_OF_FILE = 276, + COLON = 277, + SEMICOLON = 278, + SPACE = 279, + CHARACTERS = 280, + NOTES = 281, + HYPHEN = 282, + ATTRIBUTE = 283, + OPENING_BRACKET = 284, + CLOSING_BRACKET = 285, + CLOSING_BRACKET_WITH_SPACE = 286, I_BEGINNING = 287, I_END = 288, TT_BEGINNING = 289, @@ -799,61 +854,49 @@ extern int gabc_score_determination_debug; VERB_END = 303, CENTER_BEGINNING = 304, CENTER_END = 305, - CLOSING_BRACKET_WITH_SPACE = 306, - TRANSLATION_BEGINNING = 307, - TRANSLATION_END = 308, - GABC_COPYRIGHT = 309, - SCORE_COPYRIGHT = 310, - OCCASION = 311, - METER = 312, - COMMENTARY = 313, - ARRANGER = 314, - GABC_VERSION = 315, - USER_NOTES = 316, - DEF_MACRO = 317, - ALT_BEGIN = 318, - ALT_END = 319, - CENTERING_SCHEME = 320, - TRANSLATION_CENTER_END = 321, - BNLBA = 322, - ENLBA = 323, - EUOUAE_B = 324, - EUOUAE_E = 325, - NABC_CUT = 326, - NABC_LINES = 327, - LANGUAGE = 328 + TRANSLATION_BEGINNING = 306, + TRANSLATION_END = 307, + TRANSLATION_CENTER_END = 308, + ALT_BEGIN = 309, + ALT_END = 310, + BNLBA = 311, + ENLBA = 312, + EUOUAE_B = 313, + EUOUAE_E = 314, + NABC_CUT = 315, + NABC_LINES = 316 }; #endif /* Tokens. */ -#define ATTRIBUTE 258 -#define COLON 259 -#define SEMICOLON 260 -#define OFFICE_PART 261 -#define ANNOTATION 262 -#define AUTHOR 263 -#define DATE 264 -#define MANUSCRIPT 265 -#define MANUSCRIPT_REFERENCE 266 -#define MANUSCRIPT_STORAGE_PLACE 267 -#define TRANSCRIBER 268 -#define TRANSCRIPTION_DATE 269 -#define BOOK 270 -#define STYLE 271 -#define VIRGULA_POSITION 272 -#define INITIAL_STYLE 273 -#define MODE 274 -#define GREGORIOTEX_FONT 275 -#define GENERATED_BY 276 -#define NAME 277 -#define OPENING_BRACKET 278 -#define NOTES 279 -#define VOICE_CUT 280 -#define CLOSING_BRACKET 281 -#define NUMBER_OF_VOICES 282 -#define VOICE_CHANGE 283 -#define END_OF_DEFINITIONS 284 -#define SPACE 285 -#define CHARACTERS 286 +#define NAME 258 +#define AUTHOR 259 +#define GABC_COPYRIGHT 260 +#define SCORE_COPYRIGHT 261 +#define NUMBER_OF_VOICES 262 +#define LANGUAGE 263 +#define STAFF_LINES 264 +#define ORISCUS_ORIENTATION 265 +#define DEF_MACRO 266 +#define OTHER_HEADER 267 +#define ANNOTATION 268 +#define MODE 269 +#define MODE_MODIFIER 270 +#define MODE_DIFFERENTIA 271 +#define INITIAL_STYLE 272 +#define VOICE_CUT 273 +#define VOICE_CHANGE 274 +#define END_OF_DEFINITIONS 275 +#define END_OF_FILE 276 +#define COLON 277 +#define SEMICOLON 278 +#define SPACE 279 +#define CHARACTERS 280 +#define NOTES 281 +#define HYPHEN 282 +#define ATTRIBUTE 283 +#define OPENING_BRACKET 284 +#define CLOSING_BRACKET 285 +#define CLOSING_BRACKET_WITH_SPACE 286 #define I_BEGINNING 287 #define I_END 288 #define TT_BEGINNING 289 @@ -873,29 +916,17 @@ extern int gabc_score_determination_debug; #define VERB_END 303 #define CENTER_BEGINNING 304 #define CENTER_END 305 -#define CLOSING_BRACKET_WITH_SPACE 306 -#define TRANSLATION_BEGINNING 307 -#define TRANSLATION_END 308 -#define GABC_COPYRIGHT 309 -#define SCORE_COPYRIGHT 310 -#define OCCASION 311 -#define METER 312 -#define COMMENTARY 313 -#define ARRANGER 314 -#define GABC_VERSION 315 -#define USER_NOTES 316 -#define DEF_MACRO 317 -#define ALT_BEGIN 318 -#define ALT_END 319 -#define CENTERING_SCHEME 320 -#define TRANSLATION_CENTER_END 321 -#define BNLBA 322 -#define ENLBA 323 -#define EUOUAE_B 324 -#define EUOUAE_E 325 -#define NABC_CUT 326 -#define NABC_LINES 327 -#define LANGUAGE 328 +#define TRANSLATION_BEGINNING 306 +#define TRANSLATION_END 307 +#define TRANSLATION_CENTER_END 308 +#define ALT_BEGIN 309 +#define ALT_END 310 +#define BNLBA 311 +#define ENLBA 312 +#define EUOUAE_B 313 +#define EUOUAE_E 314 +#define NABC_CUT 315 +#define NABC_LINES 316 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -927,7 +958,7 @@ int gabc_score_determination_parse (void); /* Copy the second part of user declarations. */ -#line 931 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */ +#line 962 "gabc/gabc-score-determination-y.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1171,21 +1202,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 4 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 194 +#define YYLAST 175 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 74 +#define YYNTOKENS 62 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 51 +#define YYNNTS 23 /* YYNRULES -- Number of rules. */ -#define YYNRULES 118 +#define YYNRULES 82 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 162 +#define YYNSTATES 117 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 328 +#define YYMAXUTOK 316 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1225,26 +1256,22 @@ static const yytype_uint8 yytranslate[] = 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73 + 55, 56, 57, 58, 59, 60, 61 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 672, 672, 676, 681, 682, 686, 699, 706, 717, - 724, 733, 740, 747, 757, 764, 771, 778, 785, 792, - 802, 812, 823, 832, 843, 850, 857, 864, 872, 880, - 887, 894, 902, 913, 926, 933, 939, 943, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 984, - 985, 989, 1011, 1034, 1047, 1060, 1065, 1074, 1077, 1080, - 1083, 1086, 1089, 1092, 1095, 1098, 1107, 1110, 1113, 1116, - 1119, 1122, 1125, 1128, 1131, 1140, 1143, 1149, 1152, 1158, - 1159, 1162, 1163, 1164, 1165, 1168, 1169, 1173, 1179, 1182, - 1188, 1194, 1199, 1205, 1208, 1214, 1215, 1218, 1219 + 0, 736, 736, 740, 745, 746, 750, 754, 760, 770, + 775, 784, 790, 795, 800, 805, 810, 815, 823, 831, + 841, 850, 855, 859, 862, 867, 868, 872, 894, 917, + 930, 943, 948, 957, 958, 959, 963, 966, 969, 972, + 975, 978, 981, 984, 987, 996, 999, 1002, 1005, 1008, + 1011, 1014, 1017, 1020, 1029, 1032, 1038, 1041, 1047, 1048, + 1051, 1052, 1053, 1054, 1058, 1061, 1066, 1067, 1068, 1072, + 1078, 1081, 1087, 1093, 1098, 1106, 1109, 1118, 1121, 1127, + 1128, 1131, 1132 }; #endif @@ -1253,40 +1280,25 @@ static const yytype_uint16 yyrline[] = First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "ATTRIBUTE", "COLON", "SEMICOLON", - "OFFICE_PART", "ANNOTATION", "AUTHOR", "DATE", "MANUSCRIPT", - "MANUSCRIPT_REFERENCE", "MANUSCRIPT_STORAGE_PLACE", "TRANSCRIBER", - "TRANSCRIPTION_DATE", "BOOK", "STYLE", "VIRGULA_POSITION", - "INITIAL_STYLE", "MODE", "GREGORIOTEX_FONT", "GENERATED_BY", "NAME", - "OPENING_BRACKET", "NOTES", "VOICE_CUT", "CLOSING_BRACKET", - "NUMBER_OF_VOICES", "VOICE_CHANGE", "END_OF_DEFINITIONS", "SPACE", - "CHARACTERS", "I_BEGINNING", "I_END", "TT_BEGINNING", "TT_END", - "UL_BEGINNING", "UL_END", "C_BEGINNING", "C_END", "B_BEGINNING", "B_END", - "SC_BEGINNING", "SC_END", "SP_BEGINNING", "SP_END", "VERB_BEGINNING", - "VERB", "VERB_END", "CENTER_BEGINNING", "CENTER_END", - "CLOSING_BRACKET_WITH_SPACE", "TRANSLATION_BEGINNING", "TRANSLATION_END", - "GABC_COPYRIGHT", "SCORE_COPYRIGHT", "OCCASION", "METER", "COMMENTARY", - "ARRANGER", "GABC_VERSION", "USER_NOTES", "DEF_MACRO", "ALT_BEGIN", - "ALT_END", "CENTERING_SCHEME", "TRANSLATION_CENTER_END", "BNLBA", - "ENLBA", "EUOUAE_B", "EUOUAE_E", "NABC_CUT", "NABC_LINES", "LANGUAGE", - "$accept", "score", "all_definitions", "definitions", - "number_of_voices_definition", "macro_definition", "name_definition", - "centering_scheme_definition", "language_definition", - "gabc_copyright_definition", "score_copyright_definition", - "gregoriotex_font_definition", "office_part_definition", - "occasion_definition", "meter_definition", "commentary_definition", - "arranger_definition", "gabc_version_definition", "mode_definition", - "nabc_lines_definition", "initial_style_definition", - "annotation_definition", "author_definition", "date_definition", - "manuscript_definition", "manuscript_reference_definition", - "manuscript_storage_place_definition", "book_definition", - "transcriber_definition", "transcription_date_definition", - "style_definition", "virgula_position_definition", - "generated_by_definition", "user_notes_definition", "attribute", - "definition", "notes", "note", "style_beginning", "style_end", "euouae", - "linebreak_area", "character", "text", "translation_beginning", - "translation", "above_line_text", "syllable_with_notes", - "notes_without_word", "syllable", "syllables", YY_NULLPTR + "$end", "error", "$undefined", "NAME", "AUTHOR", "GABC_COPYRIGHT", + "SCORE_COPYRIGHT", "NUMBER_OF_VOICES", "LANGUAGE", "STAFF_LINES", + "ORISCUS_ORIENTATION", "DEF_MACRO", "OTHER_HEADER", "ANNOTATION", "MODE", + "MODE_MODIFIER", "MODE_DIFFERENTIA", "INITIAL_STYLE", "VOICE_CUT", + "VOICE_CHANGE", "END_OF_DEFINITIONS", "END_OF_FILE", "COLON", + "SEMICOLON", "SPACE", "CHARACTERS", "NOTES", "HYPHEN", "ATTRIBUTE", + "OPENING_BRACKET", "CLOSING_BRACKET", "CLOSING_BRACKET_WITH_SPACE", + "I_BEGINNING", "I_END", "TT_BEGINNING", "TT_END", "UL_BEGINNING", + "UL_END", "C_BEGINNING", "C_END", "B_BEGINNING", "B_END", "SC_BEGINNING", + "SC_END", "SP_BEGINNING", "SP_END", "VERB_BEGINNING", "VERB", "VERB_END", + "CENTER_BEGINNING", "CENTER_END", "TRANSLATION_BEGINNING", + "TRANSLATION_END", "TRANSLATION_CENTER_END", "ALT_BEGIN", "ALT_END", + "BNLBA", "ENLBA", "EUOUAE_B", "EUOUAE_E", "NABC_CUT", "NABC_LINES", + "$accept", "score", "all_definitions", "definitions", "attribute", + "definition", "notes", "note", "closing_bracket_with_space", + "style_beginning", "style_end", "euouae", "linebreak_area", "character", + "text_hyphen", "text", "translation_beginning", "translation", + "above_line_text", "syllable_with_notes", "notes_without_word", + "syllable", "syllables", YY_NULLPTR }; #endif @@ -1301,15 +1313,14 @@ static const yytype_uint16 yytoknum[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328 + 315, 316 }; # endif -#define YYPACT_NINF -83 +#define YYPACT_NINF -55 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-83))) + (!!((Yystate) == (-55))) #define YYTABLE_NINF -3 @@ -1320,23 +1331,18 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int8 yypact[] = { - -83, 20, -83, -6, -83, 17, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, -83, -83, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, 53, -83, 2, -83, -83, -83, 21, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, 6, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -2, -83, -83, -83, -83, -83, -83, -83, -83, -83, - 8, -83, 93, -83, 28, -83, -7, -83, -83, -83, - 6, -30, -83, -83, 6, -83, -83, -83, -83, -83, - -83, 6 + -55, 26, -55, -1, -55, 1, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, -55, -55, 5, -55, -55, -55, -55, 36, -55, + 2, -55, -55, -55, 0, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -6, -55, -8, -55, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, + -55, -55, -55, 7, -55, -55, -55, -55, -55, -55, + -55, -55, -55, 99, 8, -55, 71, -55, -55, 6, + 4, 15, 17, -55, -55, -55, 10, -6, -15, -55, + -55, -55, -55, -55, -6, -55, -55, 15, -55, -55, + -55, -55, -6, -55, -55, -6, -6 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1344,153 +1350,127 @@ static const yytype_int8 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 117, 0, 1, 105, 0, 0, 0, 0, + 4, 0, 81, 0, 1, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 40, - 39, 66, 67, 41, 42, 64, 56, 57, 58, 59, - 60, 61, 63, 52, 62, 55, 54, 53, 50, 49, - 48, 51, 47, 46, 45, 44, 43, 65, 5, 69, - 107, 109, 0, 105, 0, 115, 116, 118, 0, 14, - 23, 24, 25, 26, 27, 28, 30, 31, 29, 32, - 33, 22, 20, 13, 34, 8, 6, 11, 12, 15, - 16, 17, 18, 19, 35, 7, 9, 21, 10, 113, - 69, 100, 77, 86, 78, 87, 79, 88, 80, 89, - 81, 90, 82, 91, 84, 93, 83, 92, 85, 94, - 0, 97, 98, 95, 96, 101, 102, 104, 103, 106, - 0, 99, 0, 69, 0, 37, 0, 75, 76, 70, - 111, 0, 69, 108, 114, 36, 73, 71, 72, 74, - 110, 112 + 0, 24, 3, 0, 5, 25, 69, 71, 0, 66, + 0, 79, 80, 82, 0, 10, 21, 12, 13, 8, + 11, 17, 22, 9, 23, 20, 14, 15, 16, 19, + 18, 77, 59, 64, 25, 36, 45, 37, 46, 38, + 47, 39, 48, 40, 49, 41, 50, 43, 52, 42, + 51, 44, 53, 0, 56, 57, 54, 55, 60, 61, + 63, 62, 67, 0, 0, 58, 0, 25, 7, 0, + 0, 31, 33, 26, 32, 25, 0, 73, 0, 65, + 68, 25, 64, 70, 78, 6, 29, 27, 30, 28, + 35, 34, 74, 25, 72, 75, 76 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, -83, -83, -83, -83, -83, -83, - -83, -83, -83, -83, 157, -83, -82, -83, -83, -83, - -83, -83, -83, -38, -83, -36, -83, -83, -83, -83, - -83 + -55, -55, -55, -55, 152, -55, -54, -55, -46, -55, + -55, -55, -55, -37, -55, 19, -55, -11, -55, -55, + -55, -55, -55 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = +static const yytype_int8 yydefgoto[] = { - -1, 1, 2, 3, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 79, 68, 109, 149, 135, 136, - 137, 138, 139, 72, 73, 74, 141, 75, 76, 77, - 5 + -1, 1, 2, 3, 35, 24, 51, 93, 94, 78, + 79, 80, 81, 82, 83, 28, 29, 30, 85, 31, + 32, 33, 5 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_int8 yytable[] = { - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, -2, 156, 157, - 4, 23, 24, 25, 144, 143, 145, 78, 150, 151, - 146, 152, 147, 155, 160, 142, 140, 0, 0, 0, - 69, 0, 0, 0, 158, 0, 0, 0, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 148, 0, 35, - 0, 154, 0, 0, 159, 0, 36, 37, 0, 70, - 161, 0, 0, 0, 0, 0, 110, 0, 0, 0, - 0, 0, 0, 71, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 130, 0, 0, 71, - 131, 132, 133, 134, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 0, 127, 128, 129, 0, 0, 153, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, - 131, 132, 133, 134, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 0, 0, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108 + 97, -2, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 84, 21, 22, + 90, 95, 106, 88, 91, 92, 4, 34, 89, 105, + 25, 87, 98, 104, 107, 92, 110, 101, 111, 113, + 114, 112, 96, 26, 109, 27, 100, 115, 86, 0, + 0, 0, 26, 0, 27, 0, 0, 0, 0, 116, + 23, 52, 0, 53, 108, 54, 0, 0, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 0, 70, 71, 72, 26, 0, 27, + 73, 0, 74, 75, 76, 77, 52, 0, 102, 0, + 0, 0, 0, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 0, 70, + 71, 72, 0, 103, 52, 73, 99, 74, 75, 76, + 77, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 0, 70, 71, 72, + 0, 0, 0, 73, 0, 74, 75, 76, 77, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 0, 0, 50 }; -static const yytype_int16 yycheck[] = +static const yytype_int8 yycheck[] = { - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 0, 25, 26, - 0, 27, 28, 29, 3, 23, 5, 4, 110, 31, - 24, 23, 26, 5, 64, 73, 72, -1, -1, -1, - 23, -1, -1, -1, 51, -1, -1, -1, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 51, -1, 65, - -1, 143, -1, -1, 71, -1, 72, 73, -1, 52, - 152, -1, -1, -1, -1, -1, 23, -1, -1, -1, - -1, -1, -1, 66, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, -1, 52, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, -1, -1, 66, - 67, 68, 69, 70, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, - 67, 68, 69, 70, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, -1, -1, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37 + 54, 0, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 28, 19, 20, + 26, 29, 18, 23, 30, 31, 0, 22, 28, 23, + 29, 29, 25, 87, 30, 31, 21, 29, 21, 29, + 55, 95, 53, 51, 90, 53, 83, 101, 29, -1, + -1, -1, 51, -1, 53, -1, -1, -1, -1, 113, + 61, 25, -1, 27, 60, 29, -1, -1, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, 48, 49, 50, 51, -1, 53, + 54, -1, 56, 57, 58, 59, 25, -1, 27, -1, + -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, -1, 48, + 49, 50, -1, 52, 25, 54, 27, 56, 57, 58, + 59, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, -1, 48, 49, 50, + -1, -1, -1, 54, -1, 56, 57, 58, 59, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, 23 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 75, 76, 77, 0, 124, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 27, 28, 29, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 65, 72, 73, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 109, 23, - 52, 66, 117, 118, 119, 121, 122, 123, 4, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, 108, 110, - 23, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, - 63, 67, 68, 69, 70, 112, 113, 114, 115, 116, - 119, 120, 117, 23, 3, 5, 24, 26, 51, 111, - 110, 31, 23, 53, 110, 5, 25, 26, 51, 71, - 64, 110 + 0, 63, 64, 65, 0, 84, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 19, 20, 61, 67, 29, 51, 53, 77, 78, + 79, 81, 82, 83, 22, 66, 66, 66, 66, 66, + 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, + 66, 68, 25, 27, 29, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 48, 49, 50, 54, 56, 57, 58, 59, 71, 72, + 73, 74, 75, 76, 79, 80, 77, 29, 23, 28, + 26, 30, 31, 69, 70, 29, 79, 68, 25, 27, + 75, 29, 27, 52, 68, 23, 18, 30, 60, 70, + 21, 21, 68, 29, 55, 68, 68 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 74, 75, 76, 77, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 108, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, 109, 110, - 110, 111, 111, 111, 111, 111, 111, 112, 112, 112, - 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 114, 114, 115, 115, 116, - 116, 116, 116, 116, 116, 117, 117, 118, 119, 119, - 120, 121, 121, 122, 122, 123, 123, 124, 124 + 0, 62, 63, 64, 65, 65, 66, 66, 67, 67, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, + 67, 67, 67, 67, 67, 68, 68, 69, 69, 69, + 69, 69, 69, 70, 70, 70, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 73, 73, 74, 74, 75, 75, + 75, 75, 75, 75, 76, 76, 77, 77, 77, 78, + 79, 79, 80, 81, 81, 81, 81, 82, 82, 83, + 83, 84, 84 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { - 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 2, 2, 2, 0, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 1, 1, + 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, + 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 3, 1, - 3, 3, 4, 2, 3, 1, 1, 0, 2 + 1, 1, 1, 1, 1, 2, 0, 2, 3, 1, + 3, 1, 3, 3, 4, 4, 5, 2, 3, 1, + 1, 0, 2 }; @@ -2076,7 +2056,7 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ /* User initialization code. */ -#line 646 "gabc/gabc-score-determination.y" /* yacc.c:1429 */ +#line 701 "gabc/gabc-score-determination.y" /* yacc.c:1429 */ { yylloc.first_line = 1; yylloc.first_column = 0; @@ -2086,7 +2066,7 @@ yyparse (void) yylloc.last_offset = 0; } -#line 2090 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */ +#line 2070 "gabc/gabc-score-determination-y.c" /* yacc.c:1429 */ yylsp[0] = yylloc; goto yysetstate; @@ -2273,351 +2253,221 @@ yyreduce: switch (yyn) { case 3: -#line 676 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 740 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { end_definitions(); } -#line 2281 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2261 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 6: -#line 686 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 750 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + (yyval).text = (yyvsp[-1]).text; + } +#line 2269 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 7: +#line 754 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + (yyval).text = NULL; + } +#line 2277 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 8: +#line 760 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); number_of_voices=atoi((yyvsp[0]).text); - free((yyvsp[0]).text); if (number_of_voices > MAX_NUMBER_OF_VOICES) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("can't define %d voices, maximum is %d"), number_of_voices, MAX_NUMBER_OF_VOICES); } - gregorio_set_score_number_of_voices (score, number_of_voices); + score->number_of_voices = number_of_voices; } -#line 2296 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2292 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 7: -#line 699 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 9: +#line 770 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + /* these definitions are not passed through */ free(macros[(yyvsp[-1]).character - '0']); macros[(yyvsp[-1]).character - '0'] = (yyvsp[0]).text; } -#line 2305 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2302 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 8: -#line 706 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 10: +#line 775 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - if ((yyvsp[0]).text==NULL) { + if ((yyvsp[0]).text == NULL) { gregorio_message("name can't be empty","det_score", VERBOSITY_WARNING, 0); } check_multiple("name", score->name != NULL); - gregorio_set_score_name (score, (yyvsp[0]).text); - } -#line 2318 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 9: -#line 717 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - set_centering_scheme((yyvsp[0]).text); - free((yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->name = (yyvsp[0]).text; } -#line 2327 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2316 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 10: -#line 724 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 11: +#line 784 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { check_multiple("language", got_language); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); gregorio_set_centering_language((yyvsp[0]).text); - free((yyvsp[0]).text); got_language = true; } -#line 2338 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 11: -#line 733 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("gabc-copyright", score->gabc_copyright != NULL); - gregorio_set_score_gabc_copyright (score, (yyvsp[0]).text); - } -#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2327 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 12: -#line 740 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 790 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("score_copyright", score->score_copyright != NULL); - gregorio_set_score_score_copyright (score, (yyvsp[0]).text); + check_multiple("gabc-copyright", score->gabc_copyright != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->gabc_copyright = (yyvsp[0]).text; } -#line 2356 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2337 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 13: -#line 747 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 795 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - gregorio_message("\"gregoriotex-font\" header is deprecated. " - "Please use \\gresetgregoriofont in TeX instead.", - "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0); - check_multiple("GregorioTeX font", score->gregoriotex_font != NULL); - score->gregoriotex_font=(yyvsp[0]).text; + check_multiple("score_copyright", score->score_copyright != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->score_copyright = (yyvsp[0]).text; } -#line 2368 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2347 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 14: -#line 757 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 800 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("office part", score->office_part != NULL); - gregorio_set_score_office_part (score, (yyvsp[0]).text); + check_multiple("mode", score->mode != 0); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode = (yyvsp[0]).text; } -#line 2377 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2357 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 15: -#line 764 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 805 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("occasion", score->occasion != NULL); - gregorio_set_score_occasion (score, (yyvsp[0]).text); + check_multiple("mode-modifier", score->mode_modifier != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode_modifier = (yyvsp[0]).text; } -#line 2386 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2367 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 16: -#line 771 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 810 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("meter", score->meter != NULL); - gregorio_set_score_meter (score, (yyvsp[0]).text); + check_multiple("mode-differentia", score->mode_differentia != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->mode_differentia = (yyvsp[0]).text; } -#line 2395 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2377 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; case 17: -#line 778 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("commentary", score->commentary != NULL); - gregorio_set_score_commentary (score, (yyvsp[0]).text); - } -#line 2404 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 18: -#line 785 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("arranger", score->arranger != NULL); - gregorio_set_score_arranger (score, (yyvsp[0]).text); - } -#line 2413 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 19: -#line 792 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ +#line 815 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - /* Deprecated */ - gregorio_message("\"gabc-version\" header is deprecated and will be " - "ignored.", "gabc_score_determination_parse", - VERBOSITY_DEPRECATION, 0); - free((yyvsp[0]).text); - } -#line 2425 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 20: -#line 802 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("mode", score->mode != 0); + check_multiple("staff-lines", got_staff_lines); if ((yyvsp[0]).text) { - score->mode=atoi((yyvsp[0]).text); - free((yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + gregorio_set_score_staff_lines(score, atoi((yyvsp[0]).text)); + got_staff_lines = true; } } -#line 2437 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2390 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 21: -#line 812 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 18: +#line 823 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { check_multiple("nabc lines", score->nabc_lines != 0); if ((yyvsp[0]).text) { + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); nabc_lines=atoi((yyvsp[0]).text); score->nabc_lines=nabc_lines; - free((yyvsp[0]).text); } } -#line 2450 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2403 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 22: -#line 823 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 19: +#line 831 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if ((yyvsp[0]).text) { - score->initial_style=atoi((yyvsp[0]).text); + /* DEPRECATED by 4.1 */ + gregorio_message("\"initial-style\" header is deprecated. Please " + "use \\gresetinitiallines in TeX instead.", + "gabc_score_determination_parse", VERBOSITY_DEPRECATION, 0); + score->initial_style = atoi((yyvsp[0]).text); free((yyvsp[0]).text); } } -#line 2461 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2418 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 23: -#line 832 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 20: +#line 841 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (score->annotation [MAX_ANNOTATIONS - 1]) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("too many definitions of annotation found, only the " "first %d will be taken"), MAX_ANNOTATIONS); } - gregorio_set_score_annotation (score, (yyvsp[0]).text); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + gregorio_set_score_annotation(score, (yyvsp[0]).text); } -#line 2474 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2432 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 24: -#line 843 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("author", score->si.author != NULL); - gregorio_set_score_author (score, (yyvsp[0]).text); - } -#line 2483 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 25: + case 21: #line 850 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - check_multiple("date", score->si.date != NULL); - gregorio_set_score_date (score, (yyvsp[0]).text); - } -#line 2492 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 26: -#line 857 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript", score->si.manuscript != NULL); - gregorio_set_score_manuscript (score, (yyvsp[0]).text); + check_multiple("author", score->author != NULL); + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->author = (yyvsp[0]).text; } -#line 2501 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2442 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 27: -#line 864 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript-reference", - score->si.manuscript_reference != NULL); - gregorio_set_score_manuscript_reference (score, (yyvsp[0]).text); - } -#line 2511 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 28: -#line 872 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("manuscript-storage-place", - score->si.manuscript_storage_place != NULL); - gregorio_set_score_manuscript_storage_place (score, (yyvsp[0]).text); - } -#line 2521 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 29: -#line 880 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("book", score->si.book != NULL); - gregorio_set_score_book (score, (yyvsp[0]).text); - } -#line 2530 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 30: -#line 887 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("transcriber", score->si.transcriber != NULL); - gregorio_set_score_transcriber (score, (yyvsp[0]).text); - } -#line 2539 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 31: -#line 894 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - check_multiple("transcription date", - score->si.transcription_date != NULL); - gregorio_set_score_transcription_date (score, (yyvsp[0]).text); - } -#line 2549 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 32: -#line 902 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - if (current_voice_info->style) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of style found for voice %d, only " - "the last will be taken into consideration"), voice); - } - gregorio_set_voice_style (current_voice_info, (yyvsp[0]).text); - } -#line 2562 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 33: -#line 913 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - if (current_voice_info->virgula_position) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of virgula position found for " - "voice %d, only the last will be taken into consideration"), - voice); - } - gregorio_set_voice_virgula_position (current_voice_info, (yyvsp[0]).text); - } -#line 2576 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 34: -#line 926 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - /* set_voice_generated_by (current_voice_info, $2.text); */ - free((yyvsp[0]).text); - } -#line 2585 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 35: -#line 933 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ - { - gregorio_set_score_user_notes (score, (yyvsp[0]).text); - } -#line 2593 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ - break; - - case 36: -#line 939 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 22: +#line 855 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - (yyval).text = (yyvsp[-1]).text; + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); + score->legacy_oriscus_orientation = (strcmp((yyvsp[0]).text, "legacy") == 0); } -#line 2601 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2451 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 37: -#line 943 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 23: +#line 859 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { - (yyval).text = NULL; + gregorio_add_score_header(score, (yyvsp[-1]).text, (yyvsp[0]).text); } -#line 2609 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2459 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 68: -#line 979 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 24: +#line 862 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { next_voice_info(); } -#line 2617 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2467 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 71: -#line 989 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 27: +#line 872 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2640,11 +2490,11 @@ yyreduce: voice=0; nabc_state=0; } -#line 2644 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2494 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 72: -#line 1011 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 28: +#line 894 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2668,11 +2518,11 @@ yyreduce: nabc_state=0; update_position_with_space(); } -#line 2672 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2522 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 73: -#line 1034 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 29: +#line 917 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (voice<number_of_voices) { gabc_y_add_notes((yyvsp[-1]).text, (yylsp[-1])); @@ -2686,11 +2536,11 @@ yyreduce: number_of_voices), voice+1, number_of_voices); } } -#line 2690 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2540 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 74: -#line 1047 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 30: +#line 930 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (!nabc_lines) { gregorio_message(_("You used character \"|\" in gabc without " @@ -2704,288 +2554,328 @@ yyreduce: nabc_state = (nabc_state + 1) % (nabc_lines+1); } } -#line 2708 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2558 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 75: -#line 1060 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 31: +#line 943 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { elements[voice]=NULL; voice=0; nabc_state=0; } -#line 2718 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2568 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 76: -#line 1065 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 32: +#line 948 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { elements[voice]=NULL; voice=0; nabc_state=0; update_position_with_space(); } -#line 2729 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2579 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 77: -#line 1074 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 36: +#line 963 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_ITALIC); } -#line 2737 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2587 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 78: -#line 1077 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 37: +#line 966 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_TT); } -#line 2745 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2595 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 79: -#line 1080 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 38: +#line 969 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_UNDERLINED); } -#line 2753 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2603 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 80: -#line 1083 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 39: +#line 972 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_COLORED); } -#line 2761 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2611 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 81: -#line 1086 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 40: +#line 975 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_BOLD); } -#line 2769 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2619 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 82: -#line 1089 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 41: +#line 978 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_SMALL_CAPS); } -#line 2777 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2627 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 83: -#line 1092 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 42: +#line 981 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_VERBATIM); } -#line 2785 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2635 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 84: -#line 1095 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 43: +#line 984 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_style(ST_SPECIAL_CHAR); } -#line 2793 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2643 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 85: -#line 1098 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 44: +#line 987 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (!center_is_determined) { gregorio_gabc_add_style(ST_FORCED_CENTER); center_is_determined=CENTER_HALF_DETERMINED; } } -#line 2804 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2654 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 86: -#line 1107 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 45: +#line 996 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_ITALIC); } -#line 2812 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2662 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 87: -#line 1110 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 46: +#line 999 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_TT); } -#line 2820 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2670 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 88: -#line 1113 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 47: +#line 1002 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_UNDERLINED); } -#line 2828 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2678 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 89: -#line 1116 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 48: +#line 1005 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_COLORED); } -#line 2836 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2686 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 90: -#line 1119 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 49: +#line 1008 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_BOLD); } -#line 2844 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2694 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 91: -#line 1122 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 50: +#line 1011 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_SMALL_CAPS); } -#line 2852 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2702 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 92: -#line 1125 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 51: +#line 1014 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_VERBATIM); } -#line 2860 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2710 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 93: -#line 1128 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 52: +#line 1017 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_end_style(ST_SPECIAL_CHAR); } -#line 2868 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2718 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 94: -#line 1131 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 53: +#line 1020 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { if (center_is_determined==CENTER_HALF_DETERMINED) { gregorio_gabc_end_style(ST_FORCED_CENTER); center_is_determined=CENTER_FULLY_DETERMINED; } } -#line 2879 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2729 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 95: -#line 1140 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 54: +#line 1029 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { euouae = EUOUAE_BEGINNING; } -#line 2887 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2737 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 96: -#line 1143 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 55: +#line 1032 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { euouae = EUOUAE_END; } -#line 2895 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2745 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 97: -#line 1149 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 56: +#line 1038 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { no_linebreak_area = NLBA_BEGINNING; } -#line 2903 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2753 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 98: -#line 1152 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 57: +#line 1041 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { no_linebreak_area = NLBA_END; } -#line 2911 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2761 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 100: -#line 1159 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 59: +#line 1048 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { gregorio_gabc_add_text((yyvsp[0]).text); } -#line 2919 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2769 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 64: +#line 1058 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_text(gregorio_strdup("-")); + } +#line 2777 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 65: +#line 1061 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_text(gregorio_strdup("-")); + } +#line 2785 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 107: -#line 1173 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 69: +#line 1072 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { start_translation(TR_NORMAL); } -#line 2927 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2793 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 108: -#line 1179 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 70: +#line 1078 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { end_translation(); } -#line 2935 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2801 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 109: -#line 1182 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 71: +#line 1081 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { start_translation(TR_WITH_CENTER_END); } -#line 2943 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2809 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 110: -#line 1188 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 72: +#line 1087 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { abovelinestext = (yyvsp[-1]).text; } -#line 2951 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2817 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 111: -#line 1194 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 73: +#line 1093 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { rebuild_characters(); first_text_character = current_character; close_syllable(&(yylsp[-2])); } -#line 2961 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2827 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 112: -#line 1199 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 74: +#line 1098 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + rebuild_characters(); + first_text_character = current_character; close_syllable(&(yylsp[-3])); } -#line 2969 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2840 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 113: -#line 1205 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 75: +#line 1106 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + close_syllable(&(yylsp[-3])); + } +#line 2848 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 76: +#line 1109 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + close_syllable(&(yylsp[-4])); + } +#line 2859 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ + break; + + case 77: +#line 1118 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { close_syllable(NULL); } -#line 2977 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2867 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; - case 114: -#line 1208 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ + case 78: +#line 1121 "gabc/gabc-score-determination.y" /* yacc.c:1646 */ { close_syllable(NULL); } -#line 2985 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2875 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ break; -#line 2989 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ +#line 2879 "gabc/gabc-score-determination-y.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h index d68c9b6f591..7daec08eaf2 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination-y.h @@ -45,35 +45,35 @@ extern int gabc_score_determination_debug; # define YYTOKENTYPE enum yytokentype { - ATTRIBUTE = 258, - COLON = 259, - SEMICOLON = 260, - OFFICE_PART = 261, - ANNOTATION = 262, - AUTHOR = 263, - DATE = 264, - MANUSCRIPT = 265, - MANUSCRIPT_REFERENCE = 266, - MANUSCRIPT_STORAGE_PLACE = 267, - TRANSCRIBER = 268, - TRANSCRIPTION_DATE = 269, - BOOK = 270, - STYLE = 271, - VIRGULA_POSITION = 272, - INITIAL_STYLE = 273, - MODE = 274, - GREGORIOTEX_FONT = 275, - GENERATED_BY = 276, - NAME = 277, - OPENING_BRACKET = 278, - NOTES = 279, - VOICE_CUT = 280, - CLOSING_BRACKET = 281, - NUMBER_OF_VOICES = 282, - VOICE_CHANGE = 283, - END_OF_DEFINITIONS = 284, - SPACE = 285, - CHARACTERS = 286, + NAME = 258, + AUTHOR = 259, + GABC_COPYRIGHT = 260, + SCORE_COPYRIGHT = 261, + NUMBER_OF_VOICES = 262, + LANGUAGE = 263, + STAFF_LINES = 264, + ORISCUS_ORIENTATION = 265, + DEF_MACRO = 266, + OTHER_HEADER = 267, + ANNOTATION = 268, + MODE = 269, + MODE_MODIFIER = 270, + MODE_DIFFERENTIA = 271, + INITIAL_STYLE = 272, + VOICE_CUT = 273, + VOICE_CHANGE = 274, + END_OF_DEFINITIONS = 275, + END_OF_FILE = 276, + COLON = 277, + SEMICOLON = 278, + SPACE = 279, + CHARACTERS = 280, + NOTES = 281, + HYPHEN = 282, + ATTRIBUTE = 283, + OPENING_BRACKET = 284, + CLOSING_BRACKET = 285, + CLOSING_BRACKET_WITH_SPACE = 286, I_BEGINNING = 287, I_END = 288, TT_BEGINNING = 289, @@ -93,61 +93,49 @@ extern int gabc_score_determination_debug; VERB_END = 303, CENTER_BEGINNING = 304, CENTER_END = 305, - CLOSING_BRACKET_WITH_SPACE = 306, - TRANSLATION_BEGINNING = 307, - TRANSLATION_END = 308, - GABC_COPYRIGHT = 309, - SCORE_COPYRIGHT = 310, - OCCASION = 311, - METER = 312, - COMMENTARY = 313, - ARRANGER = 314, - GABC_VERSION = 315, - USER_NOTES = 316, - DEF_MACRO = 317, - ALT_BEGIN = 318, - ALT_END = 319, - CENTERING_SCHEME = 320, - TRANSLATION_CENTER_END = 321, - BNLBA = 322, - ENLBA = 323, - EUOUAE_B = 324, - EUOUAE_E = 325, - NABC_CUT = 326, - NABC_LINES = 327, - LANGUAGE = 328 + TRANSLATION_BEGINNING = 306, + TRANSLATION_END = 307, + TRANSLATION_CENTER_END = 308, + ALT_BEGIN = 309, + ALT_END = 310, + BNLBA = 311, + ENLBA = 312, + EUOUAE_B = 313, + EUOUAE_E = 314, + NABC_CUT = 315, + NABC_LINES = 316 }; #endif /* Tokens. */ -#define ATTRIBUTE 258 -#define COLON 259 -#define SEMICOLON 260 -#define OFFICE_PART 261 -#define ANNOTATION 262 -#define AUTHOR 263 -#define DATE 264 -#define MANUSCRIPT 265 -#define MANUSCRIPT_REFERENCE 266 -#define MANUSCRIPT_STORAGE_PLACE 267 -#define TRANSCRIBER 268 -#define TRANSCRIPTION_DATE 269 -#define BOOK 270 -#define STYLE 271 -#define VIRGULA_POSITION 272 -#define INITIAL_STYLE 273 -#define MODE 274 -#define GREGORIOTEX_FONT 275 -#define GENERATED_BY 276 -#define NAME 277 -#define OPENING_BRACKET 278 -#define NOTES 279 -#define VOICE_CUT 280 -#define CLOSING_BRACKET 281 -#define NUMBER_OF_VOICES 282 -#define VOICE_CHANGE 283 -#define END_OF_DEFINITIONS 284 -#define SPACE 285 -#define CHARACTERS 286 +#define NAME 258 +#define AUTHOR 259 +#define GABC_COPYRIGHT 260 +#define SCORE_COPYRIGHT 261 +#define NUMBER_OF_VOICES 262 +#define LANGUAGE 263 +#define STAFF_LINES 264 +#define ORISCUS_ORIENTATION 265 +#define DEF_MACRO 266 +#define OTHER_HEADER 267 +#define ANNOTATION 268 +#define MODE 269 +#define MODE_MODIFIER 270 +#define MODE_DIFFERENTIA 271 +#define INITIAL_STYLE 272 +#define VOICE_CUT 273 +#define VOICE_CHANGE 274 +#define END_OF_DEFINITIONS 275 +#define END_OF_FILE 276 +#define COLON 277 +#define SEMICOLON 278 +#define SPACE 279 +#define CHARACTERS 280 +#define NOTES 281 +#define HYPHEN 282 +#define ATTRIBUTE 283 +#define OPENING_BRACKET 284 +#define CLOSING_BRACKET 285 +#define CLOSING_BRACKET_WITH_SPACE 286 #define I_BEGINNING 287 #define I_END 288 #define TT_BEGINNING 289 @@ -167,29 +155,17 @@ extern int gabc_score_determination_debug; #define VERB_END 303 #define CENTER_BEGINNING 304 #define CENTER_END 305 -#define CLOSING_BRACKET_WITH_SPACE 306 -#define TRANSLATION_BEGINNING 307 -#define TRANSLATION_END 308 -#define GABC_COPYRIGHT 309 -#define SCORE_COPYRIGHT 310 -#define OCCASION 311 -#define METER 312 -#define COMMENTARY 313 -#define ARRANGER 314 -#define GABC_VERSION 315 -#define USER_NOTES 316 -#define DEF_MACRO 317 -#define ALT_BEGIN 318 -#define ALT_END 319 -#define CENTERING_SCHEME 320 -#define TRANSLATION_CENTER_END 321 -#define BNLBA 322 -#define ENLBA 323 -#define EUOUAE_B 324 -#define EUOUAE_E 325 -#define NABC_CUT 326 -#define NABC_LINES 327 -#define LANGUAGE 328 +#define TRANSLATION_BEGINNING 306 +#define TRANSLATION_END 307 +#define TRANSLATION_CENTER_END 308 +#define ALT_BEGIN 309 +#define ALT_END 310 +#define BNLBA 311 +#define ENLBA 312 +#define EUOUAE_B 313 +#define EUOUAE_E 314 +#define NABC_CUT 315 +#define NABC_LINES 316 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l index 1001a2f72a6..b0c695f383f 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.l @@ -28,6 +28,7 @@ #include <string.h> #include "struct.h" #include "messages.h" +#include "bool.h" #include "support.h" #include "gabc.h" @@ -35,6 +36,7 @@ #include "gabc-score-determination-y.h" static unsigned char style_stack = 0; +static bool eof_found = false; #define YY_NO_INPUT @@ -137,91 +139,78 @@ semicolon. */ return DEF_MACRO; } <INITIAL>number-of-voices { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NUMBER_OF_VOICES; } <INITIAL>name { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NAME; } <INITIAL>score-copyright { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return SCORE_COPYRIGHT; } <INITIAL>gabc-copyright { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return GABC_COPYRIGHT; } -<INITIAL>office-part { - return OFFICE_PART; - } -<INITIAL>occasion { - return OCCASION; - } -<INITIAL>meter { - return METER; - } -<INITIAL>commentary { - return COMMENTARY; - } -<INITIAL>arranger { - return ARRANGER; - } -<INITIAL>gabc-version { - return GABC_VERSION; - } <INITIAL>initial-style { + /* DEPRECATED by 4.1 */ return INITIAL_STYLE; } <INITIAL>mode { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return MODE; } +<INITIAL>mode-modifier { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_MODIFIER; + } +<INITIAL>mode-differentia { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return MODE_DIFFERENTIA; + } <INITIAL>annotation { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return ANNOTATION; } <INITIAL>author { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return AUTHOR; } -<INITIAL>date { - return DATE; - } -<INITIAL>manuscript { - return MANUSCRIPT; - } -<INITIAL>manuscript-reference { - return MANUSCRIPT_REFERENCE; - } -<INITIAL>manuscript-storage-place { - return MANUSCRIPT_STORAGE_PLACE; - } -<INITIAL>book { - return BOOK; - } -<INITIAL>transcriber { - return TRANSCRIBER; - } -<INITIAL>generated-by { - return GENERATED_BY; - } -<INITIAL>centering-scheme { - return CENTERING_SCHEME; - } <INITIAL>language { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return LANGUAGE; } -<INITIAL>transcription-date { - return TRANSCRIPTION_DATE; - } -<INITIAL>style { - return STYLE; - } -<INITIAL>virgula-position { - return VIRGULA_POSITION; - } -<INITIAL>gregoriotex-font { - return GREGORIOTEX_FONT; +<INITIAL>staff-lines { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return STAFF_LINES; } <INITIAL>nabc-lines { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); return NABC_LINES; } -<INITIAL>user-notes { - return USER_NOTES; +<INITIAL>oriscus-orientation { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return ORISCUS_ORIENTATION; + } +<INITIAL>[A-Za-z0-9_]+(-[A-Za-z0-9_]+)* { + gabc_score_determination_lval.text = + gregorio_strdup(gabc_score_determination_text); + return OTHER_HEADER; } <INITIAL>--(.*) { return VOICE_CHANGE; @@ -235,11 +224,14 @@ semicolon. */ _("unrecognized character: \"%c\" in definition part"), gabc_score_determination_text[0]); } -<score>[^\{\}\(\[\]<%]+ { +<score>[^-\{\}\(\[\]<%]+ { gabc_score_determination_lval.text = gregorio_strdup(gabc_score_determination_text); return CHARACTERS; } +<score>- { + return HYPHEN; + } <score,style><i> { BEGIN(style); style_stack ++; @@ -423,5 +415,13 @@ semicolon. */ BEGIN(score); return CLOSING_BRACKET_WITH_SPACE; } +<<EOF>> { + if (!eof_found) { + eof_found = true; + return END_OF_FILE; + } else { + yyterminate(); + } + } %% diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y index fde1ecf2708..128236babd3 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-score-determination.y @@ -94,8 +94,9 @@ static int voice; static gregorio_center_determination center_is_determined; /* current_key is... the current key... updated by each notes determination * (for key changes) */ -static int current_key = DEFAULT_KEY; +static int current_key; static bool got_language = false; +static bool got_staff_lines = false; static bool started_first_word = false; static struct sha1_ctx digester; @@ -113,7 +114,7 @@ static void gabc_score_determination_error(const char *error_str) VERBOSITY_ERROR, 0); } -static void gabc_fix_custos(gregorio_score *score_to_check) +static void fix_custos(gregorio_score *score_to_check) { gregorio_syllable *current_syllable; gregorio_element *current_element; @@ -126,7 +127,8 @@ static void gabc_fix_custos(gregorio_score *score_to_check) || !score_to_check->first_voice_info) { return; } - current_key = score_to_check->first_voice_info->initial_key; + current_key = gregorio_calculate_new_key( + score_to_check->first_voice_info->initial_clef); current_syllable = score_to_check->first_syllable; while (current_syllable) { current_element = (current_syllable->elements)[0]; @@ -136,55 +138,34 @@ static void gabc_fix_custos(gregorio_score *score_to_check) pitch = custo_element->u.misc.pitched.pitch; /* we look for the key */ while (current_element) { - switch (current_element->type) { - case GRE_C_KEY_CHANGE: - case GRE_C_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, + if (current_element->type == GRE_CLEF) { + pitch = gregorio_determine_next_pitch( current_syllable, current_element, NULL); - newkey = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); + newkey = gregorio_calculate_new_key( + current_element->u.misc.clef); pitch_difference = (char) newkey - (char) current_key; pitch -= pitch_difference; current_key = newkey; - break; - case GRE_F_KEY_CHANGE: - case GRE_F_KEY_CHANGE_FLATED: - pitch = gregorio_determine_next_pitch(current_syllable, - current_element, NULL); - newkey = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); - pitch_difference = (char) newkey - (char) current_key; - pitch -= pitch_difference; - current_key = newkey; - break; - default: - break; } if (!custo_element->u.misc.pitched.force_pitch) { while (pitch < LOWEST_PITCH) { pitch += 7; } - while (pitch > HIGHEST_PITCH) { + while (pitch > score_to_check->highest_pitch) { pitch -= 7; } custo_element->u.misc.pitched.pitch = pitch; } assert(custo_element->u.misc.pitched.pitch >= LOWEST_PITCH && custo_element->u.misc.pitched.pitch - <= HIGHEST_PITCH); + <= score_to_check->highest_pitch); current_element = current_element->next; } } if (current_element) { - if (current_element->type == GRE_C_KEY_CHANGE - || current_element->type == GRE_C_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(C_KEY, - current_element->u.misc.pitched.pitch - '0'); - } - if (current_element->type == GRE_F_KEY_CHANGE - || current_element->type == GRE_F_KEY_CHANGE_FLATED) { - current_key = gregorio_calculate_new_key(F_KEY, - current_element->u.misc.pitched.pitch - '0'); + if (current_element->type == GRE_CLEF) { + current_key = gregorio_calculate_new_key( + current_element->u.misc.clef); } current_element = current_element->next; } @@ -243,9 +224,12 @@ static void initialize_variables(void) no_linebreak_area = NLBA_NORMAL; euouae = EUOUAE_NORMAL; center_is_determined = CENTER_NOT_DETERMINED; + current_key = gregorio_calculate_new_key(gregorio_default_clef); for (i = 0; i < 10; i++) { macros[i] = NULL; } + got_language = false; + got_staff_lines = false; started_first_word = false; } @@ -266,8 +250,7 @@ static void free_variables(void) /* see whether a voice_info is empty */ static int voice_info_is_not_empty(const gregorio_voice_info *voice_info) { - return (voice_info->initial_key != 5 || voice_info->style - || voice_info->virgula_position); + return (voice_info->initial_clef.line); } /* @@ -418,24 +401,23 @@ static void gregorio_set_translation_center_beginning( static void rebuild_characters(void) { - bool has_initial = score->initial_style != NO_INITIAL; - /* we rebuild the first syllable text if it is the first syllable, or if * it is the second when the first has no text. * it is a patch for cases like (c4) Al(ab)le(ab) */ - if ((!score->first_syllable && has_initial && current_character) + if ((!score->first_syllable && current_character) || (current_syllable && !current_syllable->previous_syllable && !current_syllable->text && current_character)) { - gregorio_rebuild_first_syllable(¤t_character, has_initial); + /* leave the first syllable text untouched at this time */ + gregorio_go_to_first_character_c(¤t_character); started_first_word = true; - } - - gregorio_rebuild_characters(¤t_character, center_is_determined, - has_initial); + } else { + gregorio_rebuild_characters(¤t_character, center_is_determined, + false); - if (started_first_word) { - gregorio_set_first_word(¤t_character); + if (started_first_word) { + gregorio_set_first_word(¤t_character); + } } } @@ -523,26 +505,6 @@ static void gregorio_gabc_add_text(char *mbcharacters) } /* - * the function called when centering_scheme is seen in gabc - */ -static void set_centering_scheme(char *sc) -{ - gregorio_message("\"centering-scheme\" header is deprecated. Please use " - "\\gresetlyriccentering in TeX instead.", "set_centering_scheme", - VERBOSITY_DEPRECATION, 0); - if (strncmp((const char *) sc, "latine", 6) == 0) { - score->centering = SCHEME_VOWEL; - return; - } - if (strncmp((const char *) sc, "english", 6) == 0) { - score->centering = SCHEME_SYLLABLE; - return; - } - gregorio_message("centering-scheme unknown value: must be \"latine\" " - "or \"english\"", "set_centering_scheme", VERBOSITY_WARNING, 0); -} - -/* * * The two functions called when lex returns a style, we simply add it. All the * complex things will be done by the function after... @@ -564,6 +526,96 @@ void gabc_digest(const void *const buf, const size_t size) sha1_process_bytes(buf, size, &digester); } +static void determine_oriscus_orientation(gregorio_score *score) { + gregorio_syllable *syllable; + gregorio_element *element; + gregorio_glyph *glyph; + gregorio_note *note; + gregorio_note *oriscus = NULL; + + for (syllable = score->first_syllable; syllable; + syllable = syllable->next_syllable) { + for (element = syllable->elements[0]; element; + element = element->next) { + if (element->type == GRE_ELEMENT) { + for (glyph = element->u.first_glyph; glyph; + glyph = glyph->next) { + if (glyph->type == GRE_GLYPH) { + for (note = glyph->u.notes.first_note; note; + note = note->next) { + if (note->type == GRE_NOTE) { + if (oriscus) { + if (note->u.note.pitch + < oriscus->u.note.pitch) { + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } else { /* ascending or the same */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_ASCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = + S_ORISCUS_CAVUM_ASCENDENS; + break; + default: + gregorio_message(_("bad shape"), + "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } + oriscus = NULL; + } + + switch (note->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus = note; + break; + + default: + break; + } + } + } + } + } + } + } + } + + if (oriscus) { + /* oriscus at the end of the score */ + switch(oriscus->u.note.shape) { + case S_ORISCUS_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_DESCENDENS; + break; + case S_ORISCUS_CAVUM_UNDETERMINED: + oriscus->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; + break; + default: + gregorio_message(_("bad shape"), "determine_oriscus_orientation", + VERBOSITY_ERROR, 0); + break; + } + } +} + /* * The "main" function. It is the function that is called when we have to read * a gabc file. It takes a file descriptor, that is to say a file that is @@ -588,8 +640,11 @@ gregorio_score *gabc_read_score(FILE *f_in) /* the flex/bison main call, it will build the score (that we have * initialized) */ gabc_score_determination_parse(); - gregorio_fix_initial_keys(score, DEFAULT_KEY); - gabc_fix_custos(score); + if (!score->legacy_oriscus_orientation) { + determine_oriscus_orientation(score); + } + gregorio_fix_initial_keys(score, gregorio_default_clef); + fix_custos(score); free_variables(); /* the we check the validity and integrity of the score we have built. */ if (!check_score_integrity(score)) { @@ -611,11 +666,11 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { if (nabc_state == 0) { if (!elements[voice]) { elements[voice] = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); current_element = elements[voice]; } else { new_elements = gabc_det_elements_from_string(notes, - ¤t_key, macros, &loc); + ¤t_key, macros, &loc, score); last_element = elements[voice]; while(last_element->next) { last_element = last_element->next; @@ -652,19 +707,28 @@ static void gabc_y_add_notes(char *notes, YYLTYPE loc) { @$.last_offset = 0; } -%token ATTRIBUTE COLON SEMICOLON OFFICE_PART ANNOTATION AUTHOR DATE -%token MANUSCRIPT MANUSCRIPT_REFERENCE MANUSCRIPT_STORAGE_PLACE TRANSCRIBER -%token TRANSCRIPTION_DATE BOOK STYLE VIRGULA_POSITION INITIAL_STYLE MODE -%token GREGORIOTEX_FONT GENERATED_BY NAME OPENING_BRACKET NOTES VOICE_CUT -%token CLOSING_BRACKET NUMBER_OF_VOICES VOICE_CHANGE END_OF_DEFINITIONS SPACE -%token CHARACTERS I_BEGINNING I_END TT_BEGINNING TT_END UL_BEGINNING UL_END -%token C_BEGINNING C_END B_BEGINNING B_END SC_BEGINNING SC_END SP_BEGINNING -%token SP_END VERB_BEGINNING VERB VERB_END CENTER_BEGINNING CENTER_END -%token CLOSING_BRACKET_WITH_SPACE TRANSLATION_BEGINNING TRANSLATION_END -%token GABC_COPYRIGHT SCORE_COPYRIGHT OCCASION METER COMMENTARY ARRANGER -%token GABC_VERSION USER_NOTES DEF_MACRO ALT_BEGIN ALT_END CENTERING_SCHEME -%token TRANSLATION_CENTER_END BNLBA ENLBA EUOUAE_B EUOUAE_E NABC_CUT NABC_LINES -%token LANGUAGE +%token NAME AUTHOR GABC_COPYRIGHT SCORE_COPYRIGHT +%token NUMBER_OF_VOICES LANGUAGE STAFF_LINES ORISCUS_ORIENTATION +%token DEF_MACRO OTHER_HEADER +%token ANNOTATION MODE MODE_MODIFIER MODE_DIFFERENTIA +%token INITIAL_STYLE /* DEPRECATED by 4.1 */ +%token VOICE_CUT VOICE_CHANGE END_OF_DEFINITIONS END_OF_FILE +%token COLON SEMICOLON SPACE CHARACTERS NOTES HYPHEN ATTRIBUTE +%token OPENING_BRACKET CLOSING_BRACKET CLOSING_BRACKET_WITH_SPACE +%token I_BEGINNING I_END +%token TT_BEGINNING TT_END +%token UL_BEGINNING UL_END +%token C_BEGINNING C_END +%token B_BEGINNING B_END +%token SC_BEGINNING SC_END +%token SP_BEGINNING SP_END +%token VERB_BEGINNING VERB VERB_END +%token CENTER_BEGINNING CENTER_END +%token TRANSLATION_BEGINNING TRANSLATION_END TRANSLATION_CENTER_END +%token ALT_BEGIN ALT_END +%token BNLBA ENLBA +%token EUOUAE_B EUOUAE_E +%token NABC_CUT NABC_LINES %% @@ -682,300 +746,119 @@ definitions: | definitions definition ; -number_of_voices_definition: +attribute: + COLON ATTRIBUTE SEMICOLON { + $$.text = $2.text; + } + | + COLON SEMICOLON { + $$.text = NULL; + } + ; + +definition: NUMBER_OF_VOICES attribute { + gregorio_add_score_header(score, $1.text, $2.text); number_of_voices=atoi($2.text); - free($2.text); if (number_of_voices > MAX_NUMBER_OF_VOICES) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("can't define %d voices, maximum is %d"), number_of_voices, MAX_NUMBER_OF_VOICES); } - gregorio_set_score_number_of_voices (score, number_of_voices); + score->number_of_voices = number_of_voices; } - ; - -macro_definition: - DEF_MACRO attribute { + | DEF_MACRO attribute { + /* these definitions are not passed through */ free(macros[$1.character - '0']); macros[$1.character - '0'] = $2.text; } - ; - -name_definition: - NAME attribute { - if ($2.text==NULL) { + | NAME attribute { + if ($2.text == NULL) { gregorio_message("name can't be empty","det_score", VERBOSITY_WARNING, 0); } check_multiple("name", score->name != NULL); - gregorio_set_score_name (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->name = $2.text; } - ; - -centering_scheme_definition: - CENTERING_SCHEME attribute { - set_centering_scheme($2.text); - free($2.text); - } - ; - -language_definition: - LANGUAGE attribute { + | LANGUAGE attribute { check_multiple("language", got_language); + gregorio_add_score_header(score, $1.text, $2.text); gregorio_set_centering_language($2.text); - free($2.text); got_language = true; } - ; - -gabc_copyright_definition: - GABC_COPYRIGHT attribute { + | GABC_COPYRIGHT attribute { check_multiple("gabc-copyright", score->gabc_copyright != NULL); - gregorio_set_score_gabc_copyright (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->gabc_copyright = $2.text; } - ; - -score_copyright_definition: - SCORE_COPYRIGHT attribute { + | SCORE_COPYRIGHT attribute { check_multiple("score_copyright", score->score_copyright != NULL); - gregorio_set_score_score_copyright (score, $2.text); - } - ; - -gregoriotex_font_definition: - GREGORIOTEX_FONT attribute { - gregorio_message("\"gregoriotex-font\" header is deprecated. " - "Please use \\gresetgregoriofont in TeX instead.", - "set_gregoriotex_font", VERBOSITY_DEPRECATION, 0); - check_multiple("GregorioTeX font", score->gregoriotex_font != NULL); - score->gregoriotex_font=$2.text; - } - ; - -office_part_definition: - OFFICE_PART attribute { - check_multiple("office part", score->office_part != NULL); - gregorio_set_score_office_part (score, $2.text); - } - ; - -occasion_definition: - OCCASION attribute { - check_multiple("occasion", score->occasion != NULL); - gregorio_set_score_occasion (score, $2.text); - } - ; - -meter_definition: - METER attribute { - check_multiple("meter", score->meter != NULL); - gregorio_set_score_meter (score, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + score->score_copyright = $2.text; } - ; - -commentary_definition: - COMMENTARY attribute { - check_multiple("commentary", score->commentary != NULL); - gregorio_set_score_commentary (score, $2.text); + | MODE attribute { + check_multiple("mode", score->mode != 0); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode = $2.text; } - ; - -arranger_definition: - ARRANGER attribute { - check_multiple("arranger", score->arranger != NULL); - gregorio_set_score_arranger (score, $2.text); + | MODE_MODIFIER attribute { + check_multiple("mode-modifier", score->mode_modifier != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode_modifier = $2.text; } - ; - -gabc_version_definition: - GABC_VERSION attribute { - /* Deprecated */ - gregorio_message("\"gabc-version\" header is deprecated and will be " - "ignored.", "gabc_score_determination_parse", - VERBOSITY_DEPRECATION, 0); - free($2.text); + | MODE_DIFFERENTIA attribute { + check_multiple("mode-differentia", score->mode_differentia != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->mode_differentia = $2.text; } - ; - -mode_definition: - MODE attribute { - check_multiple("mode", score->mode != 0); + | STAFF_LINES attribute { + check_multiple("staff-lines", got_staff_lines); if ($2.text) { - score->mode=atoi($2.text); - free($2.text); + gregorio_add_score_header(score, $1.text, $2.text); + gregorio_set_score_staff_lines(score, atoi($2.text)); + got_staff_lines = true; } } - ; - -nabc_lines_definition: - NABC_LINES attribute { + | NABC_LINES attribute { check_multiple("nabc lines", score->nabc_lines != 0); if ($2.text) { + gregorio_add_score_header(score, $1.text, $2.text); nabc_lines=atoi($2.text); score->nabc_lines=nabc_lines; - free($2.text); } } - ; - -initial_style_definition: - INITIAL_STYLE attribute { + | INITIAL_STYLE attribute { if ($2.text) { - score->initial_style=atoi($2.text); + /* DEPRECATED by 4.1 */ + gregorio_message("\"initial-style\" header is deprecated. Please " + "use \\gresetinitiallines in TeX instead.", + "gabc_score_determination_parse", VERBOSITY_DEPRECATION, 0); + score->initial_style = atoi($2.text); free($2.text); } } - ; - -annotation_definition: - ANNOTATION attribute { + | ANNOTATION attribute { if (score->annotation [MAX_ANNOTATIONS - 1]) { gregorio_messagef("det_score", VERBOSITY_WARNING, 0, _("too many definitions of annotation found, only the " "first %d will be taken"), MAX_ANNOTATIONS); } - gregorio_set_score_annotation (score, $2.text); - } - ; - -author_definition: - AUTHOR attribute { - check_multiple("author", score->si.author != NULL); - gregorio_set_score_author (score, $2.text); - } - ; - -date_definition: - DATE attribute { - check_multiple("date", score->si.date != NULL); - gregorio_set_score_date (score, $2.text); - } - ; - -manuscript_definition: - MANUSCRIPT attribute { - check_multiple("manuscript", score->si.manuscript != NULL); - gregorio_set_score_manuscript (score, $2.text); - } - ; - -manuscript_reference_definition: - MANUSCRIPT_REFERENCE attribute { - check_multiple("manuscript-reference", - score->si.manuscript_reference != NULL); - gregorio_set_score_manuscript_reference (score, $2.text); - } - ; - -manuscript_storage_place_definition: - MANUSCRIPT_STORAGE_PLACE attribute { - check_multiple("manuscript-storage-place", - score->si.manuscript_storage_place != NULL); - gregorio_set_score_manuscript_storage_place (score, $2.text); - } - ; - -book_definition: - BOOK attribute { - check_multiple("book", score->si.book != NULL); - gregorio_set_score_book (score, $2.text); - } - ; - -transcriber_definition: - TRANSCRIBER attribute { - check_multiple("transcriber", score->si.transcriber != NULL); - gregorio_set_score_transcriber (score, $2.text); - } - ; - -transcription_date_definition: - TRANSCRIPTION_DATE attribute { - check_multiple("transcription date", - score->si.transcription_date != NULL); - gregorio_set_score_transcription_date (score, $2.text); - } - ; - -style_definition: - STYLE attribute { - if (current_voice_info->style) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of style found for voice %d, only " - "the last will be taken into consideration"), voice); - } - gregorio_set_voice_style (current_voice_info, $2.text); + gregorio_add_score_header(score, $1.text, $2.text); + gregorio_set_score_annotation(score, $2.text); } - ; - -virgula_position_definition: - VIRGULA_POSITION attribute { - if (current_voice_info->virgula_position) { - gregorio_messagef("det_score", VERBOSITY_WARNING, 0, - _("several definitions of virgula position found for " - "voice %d, only the last will be taken into consideration"), - voice); - } - gregorio_set_voice_virgula_position (current_voice_info, $2.text); - } - ; - - -generated_by_definition: - GENERATED_BY attribute { - /* set_voice_generated_by (current_voice_info, $2.text); */ - free($2.text); + | AUTHOR attribute { + check_multiple("author", score->author != NULL); + gregorio_add_score_header(score, $1.text, $2.text); + score->author = $2.text; } - ; - -user_notes_definition: - USER_NOTES attribute { - gregorio_set_score_user_notes (score, $2.text); + | ORISCUS_ORIENTATION attribute { + gregorio_add_score_header(score, $1.text, $2.text); + score->legacy_oriscus_orientation = (strcmp($2.text, "legacy") == 0); } - ; - -attribute: - COLON ATTRIBUTE SEMICOLON { - $$.text = $2.text; - } - | - COLON SEMICOLON { - $$.text = NULL; + | OTHER_HEADER attribute { + gregorio_add_score_header(score, $1.text, $2.text); } - ; - -definition: - number_of_voices_definition - | name_definition - | macro_definition - | gabc_copyright_definition - | score_copyright_definition - | generated_by_definition - | virgula_position_definition - | style_definition - | transcription_date_definition - | transcriber_definition - | manuscript_storage_place_definition - | manuscript_reference_definition - | manuscript_definition - | book_definition - | nabc_lines_definition - | date_definition - | author_definition - | annotation_definition - | office_part_definition - | occasion_definition - | meter_definition - | commentary_definition - | arranger_definition - | gabc_version_definition - | initial_style_definition - | mode_definition - | gregoriotex_font_definition - | user_notes_definition - | centering_scheme_definition - | language_definition | VOICE_CHANGE { next_voice_info(); } @@ -1008,7 +891,7 @@ note: voice=0; nabc_state=0; } - | NOTES CLOSING_BRACKET_WITH_SPACE { + | NOTES closing_bracket_with_space { if (voice<number_of_voices) { gabc_y_add_notes($1.text, @1); free($1.text); @@ -1062,7 +945,7 @@ note: voice=0; nabc_state=0; } - | CLOSING_BRACKET_WITH_SPACE { + | closing_bracket_with_space { elements[voice]=NULL; voice=0; nabc_state=0; @@ -1070,6 +953,12 @@ note: } ; +closing_bracket_with_space: + CLOSING_BRACKET_WITH_SPACE + | CLOSING_BRACKET_WITH_SPACE END_OF_FILE + | CLOSING_BRACKET END_OF_FILE + ; + style_beginning: I_BEGINNING { gregorio_gabc_add_style(ST_ITALIC); @@ -1165,8 +1054,18 @@ character: | euouae ; +text_hyphen: + HYPHEN { + gregorio_gabc_add_text(gregorio_strdup("-")); + } + | text_hyphen HYPHEN { + gregorio_gabc_add_text(gregorio_strdup("-")); + } + ; + text: | text character + | text text_hyphen character ; translation_beginning: @@ -1196,9 +1095,23 @@ syllable_with_notes: first_text_character = current_character; close_syllable(&@1); } + | text HYPHEN OPENING_BRACKET notes { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + rebuild_characters(); + first_text_character = current_character; + close_syllable(&@1); + } | text translation OPENING_BRACKET notes { close_syllable(&@1); } + | text HYPHEN translation OPENING_BRACKET notes { + gregorio_gabc_add_style(ST_VERBATIM); + gregorio_gabc_add_text(gregorio_strdup("\\GreForceHyphen")); + gregorio_gabc_end_style(ST_VERBATIM); + close_syllable(&@1); + } ; notes_without_word: diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c index bd733a2af8d..24c21512e10 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc-write.c @@ -37,7 +37,18 @@ #include "gabc.h" static __inline char pitch_letter(const char height) { - return height + 'a' - LOWEST_PITCH; + char result = height + 'a' - LOWEST_PITCH; + if (result == 'o') { + return 'p'; + } + return result; +} + +static __inline void unsupported(const char *fn, const char *type, + const char *value) +{ + gregorio_messagef(fn, VERBOSITY_ERROR, 0, _("unsupported %s %s"), type, + value); } /* @@ -57,22 +68,6 @@ static void gabc_write_str_attribute(FILE *f, const char *name, * */ -static void gabc_write_voice_info(FILE *f, gregorio_voice_info *voice_info) -{ - if (!voice_info) { - gregorio_message(_("no voice info"), "gabc_write_voice_info", - VERBOSITY_WARNING, 0); - return; - } - if (voice_info->style) { - fprintf(f, "style: %s;\n", voice_info->style); - } - if (voice_info->virgula_position) { - fprintf(f, "virgula-position: %s;\n", voice_info->virgula_position); - } - /* The clef, voice_info->initial_key, is now output in the gabc proper. */ -} - /* * * Then we start the functions made to write the text of the syllable. See @@ -107,7 +102,16 @@ static void gabc_write_begin(FILE *f, grestyle_style style) case ST_UNDERLINED: fprintf(f, "<ul>"); break; + case ST_INITIAL: + case ST_CENTER: + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + case ST_FIRST_SYLLABLE_INITIAL: + /* nothing should be emitted for these */ + break; default: + unsupported("gabc_write_begin", "style", + grestyle_style_to_string(style)); break; } } @@ -142,7 +146,16 @@ static void gabc_write_end(FILE *f, grestyle_style style) case ST_UNDERLINED: fprintf(f, "</ul>"); break; + case ST_INITIAL: + case ST_CENTER: + case ST_FIRST_WORD: + case ST_FIRST_SYLLABLE: + case ST_FIRST_SYLLABLE_INITIAL: + /* nothing should be emitted for these */ + break; default: + unsupported("gabc_write_end", "style", + grestyle_style_to_string(style)); break; } } @@ -196,23 +209,16 @@ static void gabc_print_char(FILE *f, grewchar to_print) static void gabc_write_end_liquescentia(FILE *f, char liquescentia) { - if (liquescentia == L_NO_LIQUESCENTIA) { - return; - } - if (liquescentia == L_DEMINUTUS - || liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + switch (liquescentia & TAIL_LIQUESCENTIA_MASK) { + case L_DEMINUTUS: fprintf(f, "~"); - } - if (liquescentia == L_AUCTUS_ASCENDENS - || liquescentia == L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + break; + case L_AUCTUS_ASCENDENS: fprintf(f, "<"); - } - if (liquescentia == L_AUCTUS_DESCENDENS - || liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { + break; + case L_AUCTUS_DESCENDENS: fprintf(f, ">"); - } - if (liquescentia == L_AUCTA || liquescentia == L_AUCTA_INITIO_DEBILIS) { - fprintf(f, "<"); + break; } } @@ -222,13 +228,13 @@ static void gabc_write_end_liquescentia(FILE *f, char liquescentia) * */ -static void gabc_write_key_change(FILE *f, char step, int line, - bool flatted_key) +static void gabc_write_clef(FILE *f, gregorio_clef_info clef) { - if (flatted_key) { - fprintf(f, "%cb%d", step, line); - } else { - fprintf(f, "%c%d", step, line); + fprintf(f, "%c%s%d", clef.clef == CLEF_C? 'c' : 'f', clef.flatted? "b" : "", + clef.line); + if (clef.secondary_line) { + fprintf(f, "@%c%s%d", clef.secondary_clef == CLEF_C? 'c' : 'f', + clef.secondary_flatted? "b" : "", clef.secondary_line); } } @@ -238,31 +244,42 @@ static void gabc_write_key_change(FILE *f, char step, int line, * */ -static void gabc_write_space(FILE *f, char type) +static void gabc_write_space(FILE *f, gregorio_space type, char *factor, + bool next_is_space) { switch (type) { + case SP_NEUMATIC_CUT: + if (next_is_space) { + /* if the following is not a space, we omit this because the + * code always puts a "/" between elements unless there is some + * other space there */ + fprintf (f, "/"); + } + break; case SP_LARGER_SPACE: fprintf(f, "//"); break; case SP_GLYPH_SPACE: fprintf(f, " "); break; + case SP_AD_HOC_SPACE: + fprintf(f, "/[%s]", factor); + break; + case SP_NEUMATIC_CUT_NB: + fprintf(f, "!/"); + break; case SP_LARGER_SPACE_NB: fprintf(f, "!//"); break; case SP_GLYPH_SPACE_NB: fprintf(f, "! "); break; - case SP_NEUMATIC_CUT_NB: - fprintf(f, "!/"); - break; - case SP_NEUMATIC_CUT: - /* do not uncomment it, the code is strangely done but it works */ - /* fprintf (f, "/"); */ + case SP_AD_HOC_SPACE_NB: + fprintf(f, "!/[%s]", factor); break; default: - gregorio_message(_("space type is unknown"), "gabc_write_space", - VERBOSITY_ERROR, 0); + unsupported("gabc_write_space", "space type", + gregorio_space_to_string(type)); break; } } @@ -273,7 +290,7 @@ static void gabc_write_space(FILE *f, char type) * */ -static void gabc_write_bar(FILE *f, char type) +static void gabc_write_bar(FILE *f, gregorio_bar type) { switch (type) { case B_VIRGULA: @@ -309,16 +326,22 @@ static void gabc_write_bar(FILE *f, char type) case B_DIVISIO_MINOR_D6: fprintf(f, ";6"); break; + case B_DIVISIO_MINOR_D7: + fprintf(f, ";7"); + break; + case B_DIVISIO_MINOR_D8: + fprintf(f, ";8"); + break; default: - gregorio_message(_("unknown bar type, nothing will be done"), - "gabc_bar_to_str", VERBOSITY_ERROR, 0); + unsupported("gabc_write_bar", "bar type", + gregorio_bar_to_string(type)); break; } } /* writing the signs of a bar */ -static void gabc_write_bar_signs(FILE *f, char type) +static void gabc_write_bar_signs(FILE *f, gregorio_sign type) { switch (type) { case _V_EPISEMA: @@ -330,7 +353,12 @@ static void gabc_write_bar_signs(FILE *f, char type) case _BAR_H_EPISEMA: fprintf(f, "_"); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_bar_signs", "bar signs", + gregorio_sign_to_string(type)); break; } } @@ -355,6 +383,10 @@ static void gabc_hepisema(FILE *f, const char *prefix, bool connect, case H_NORMAL: /* nothing to print */ break; + default: + unsupported("gabc_hepisema", "hepisema size", + grehepisema_size_to_string(size)); + break; } } @@ -379,10 +411,21 @@ static const char *mora_vposition(gregorio_note *note) case VPOS_BELOW: return "0"; default: + unsupported("mora_vposition", "vposition", + gregorio_vposition_to_string(note->mora_vposition)); return ""; } } +static void write_note_heuristics(FILE *f, gregorio_note *note) { + if (note->explicit_high_ledger_line) { + fprintf(f, "[hl:%c]", note->supposed_high_ledger_line? '1' : '0'); + } + if (note->explicit_low_ledger_line) { + fprintf(f, "[ll:%c]", note->supposed_low_ledger_line? '1' : '0'); + } +} + /* * * The function that writes one gregorio_note. @@ -437,6 +480,15 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: fprintf(f, "%cr<", toupper((unsigned char)pitch_letter(note->u.note.pitch))); break; + case S_FLAT: + fprintf(f, "%cx", pitch_letter(note->u.note.pitch)); + break; + case S_NATURAL: + fprintf(f, "%cy", pitch_letter(note->u.note.pitch)); + break; + case S_SHARP: + fprintf(f, "%c#", pitch_letter(note->u.note.pitch)); + break; case S_VIRGA: fprintf(f, "%cv", pitch_letter(note->u.note.pitch)); break; @@ -449,16 +501,17 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case S_TRIVIRGA: fprintf(f, "%cvvv", pitch_letter(note->u.note.pitch)); break; - case S_ORISCUS: - fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - break; - case S_ORISCUS_AUCTUS: - fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - /* we consider that the AUCTUS is also in the liquescentia */ - break; + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: fprintf(f, "%co", pitch_letter(note->u.note.pitch)); - /* we consider that the AUCTUS is also in the liquescentia */ + /* Note: the ASCENDENS, DESCENDENS, or DEMINUTUS is also in the liquescentia */ + break; + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + fprintf(f, "%cor", pitch_letter(note->u.note.pitch)); + /* Note: the ASCENDENS, DESCENDENS, or DEMINUTUS is also in the liquescentia */ break; case S_QUILISMA: fprintf(f, "%cw", pitch_letter(note->u.note.pitch)); @@ -503,6 +556,8 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, fprintf(f, "%cq", pitch_letter(note->u.note.pitch)); break; default: + unsupported("gabc_write_gregorio_note", "shape", + gregorio_shape_to_string(shape)); fprintf(f, "%c", pitch_letter(note->u.note.pitch)); break; } @@ -522,7 +577,12 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case _V_EPISEMA_AUCTUM_DUPLEX: fprintf(f, "'%s..", vepisema_position(note)); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_gregorio_note", "shape signs", + gregorio_sign_to_string(note->signs)); break; } switch (note->special_sign) { @@ -541,7 +601,12 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, case _SEMI_CIRCULUS_REVERSUS: fprintf(f, "r5"); break; + case _NO_SIGN: + /* if there's no sign, don't emit anything */ + break; default: + unsupported("gabc_write_gregorio_note", "special sign", + gregorio_sign_to_string(note->special_sign)); break; } if (note->h_episema_above == HEPISEMA_AUTO @@ -558,6 +623,7 @@ static void gabc_write_gregorio_note(FILE *f, gregorio_note *note, note->h_episema_above_size); } } + write_note_heuristics(f, note); if (note->texverb) { fprintf(f, "[nv:%s]", note->texverb); } @@ -582,23 +648,25 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) return; } switch (glyph->type) { - case GRE_FLAT: - fprintf(f, "%cx", pitch_letter(glyph->u.misc.pitched.pitch)); - break; case GRE_TEXVERB_GLYPH: if (glyph->texverb) { fprintf(f, "[gv:%s]", glyph->texverb); } break; - case GRE_NATURAL: - fprintf(f, "%cy", pitch_letter(glyph->u.misc.pitched.pitch)); - break; - case GRE_SHARP: - fprintf(f, "%c#", pitch_letter(glyph->u.misc.pitched.pitch)); - break; case GRE_SPACE: - if (glyph->u.misc.unpitched.info.space == SP_ZERO_WIDTH && glyph->next) { - fprintf(f, "!"); + if (glyph->next) { + switch (glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "!"); + break; + case SP_HALF_SPACE: + fprintf(f, "/0"); + break; + default: + gregorio_message(_("bad space"), "gabc_write_gregorio_glyph", + VERBOSITY_ERROR, 0); + break; + } } else { gregorio_message(_("bad space"), "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0); @@ -610,6 +678,8 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) case GRE_GLYPH: if (is_initio_debilis(glyph->u.notes.liquescentia)) { fprintf(f, "-"); + } else if (is_fused(glyph->u.notes.liquescentia)) { + fprintf(f, "@"); } current_note = glyph->u.notes.first_note; @@ -621,9 +691,8 @@ static void gabc_write_gregorio_glyph(FILE *f, gregorio_glyph *glyph) gabc_write_end_liquescentia(f, glyph->u.notes.liquescentia); break; default: - - gregorio_message(_("call with an argument which type is unknown"), - "gabc_write_gregorio_glyph", VERBOSITY_ERROR, 0); + unsupported("gabc_write_gregorio_glyph", "glyph type", + gregorio_type_to_string(glyph->type)); break; } } @@ -664,24 +733,27 @@ static void gabc_write_gregorio_element(FILE *f, gregorio_element *element) } break; case GRE_SPACE: - gabc_write_space(f, element->u.misc.unpitched.info.space); + gabc_write_space(f, element->u.misc.unpitched.info.space, + element->u.misc.unpitched.info.ad_hoc_space_factor, + element->next && element->next->type == GRE_SPACE); break; case GRE_BAR: gabc_write_bar(f, element->u.misc.unpitched.info.bar); gabc_write_bar_signs(f, element->u.misc.unpitched.special_sign); break; - case GRE_C_KEY_CHANGE: - gabc_write_key_change(f, C_KEY, - element->u.misc.pitched.pitch - '0', - element->u.misc.pitched.flatted_key); - break; - case GRE_F_KEY_CHANGE: - gabc_write_key_change(f, F_KEY, - element->u.misc.pitched.pitch - '0', - element->u.misc.pitched.flatted_key); + case GRE_CLEF: + gabc_write_clef(f, element->u.misc.clef); break; case GRE_END_OF_LINE: - fprintf(f, "z"); + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, "Z"); + } else { + fprintf(f, "z"); + } + if (element->u.misc.unpitched.info.eol_forces_custos) { + fprintf(f, element->u.misc.unpitched.info.eol_forces_custos_on? "+" + : "-"); + } break; case GRE_CUSTOS: if (element->u.misc.pitched.force_pitch) { @@ -691,8 +763,8 @@ static void gabc_write_gregorio_element(FILE *f, gregorio_element *element) } break; default: - gregorio_message(_("call with an argument which type is unknown"), - "gabc_write_gregorio_element", VERBOSITY_ERROR, 0); + unsupported("gabc_write_gregorio_element", "element type", + gregorio_type_to_string(element->type)); break; } } @@ -712,8 +784,7 @@ static void gabc_write_gregorio_elements(FILE *f, gregorio_element *element) /* we don't want a bar after an end of line */ if (element->type != GRE_END_OF_LINE && (element->type != GRE_SPACE - || (element->type == GRE_SPACE - && element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT)) + || element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT) && element->next && element->next->type == GRE_ELEMENT) { fprintf(f, "/"); } @@ -739,19 +810,15 @@ static void gabc_write_gregorio_syllable(FILE *f, gregorio_syllable *syllable, if (syllable->text) { /* we call the magic function (defined in struct_utils.c), that will * write our text. */ - gregorio_write_text(false, syllable->text, f, - (&gabc_write_verb), - (&gabc_print_char), - (&gabc_write_begin), - (&gabc_write_end), (&gabc_write_special_char)); + gregorio_write_text(WTP_NORMAL, syllable->text, f, &gabc_write_verb, + &gabc_print_char, &gabc_write_begin, &gabc_write_end, + &gabc_write_special_char); } if (syllable->translation) { fprintf(f, "["); - gregorio_write_text(false, syllable->translation, f, - (&gabc_write_verb), - (&gabc_print_char), - (&gabc_write_begin), - (&gabc_write_end), (&gabc_write_special_char)); + gregorio_write_text(WTP_NORMAL, syllable->translation, f, + &gabc_write_verb, &gabc_print_char, &gabc_write_begin, + &gabc_write_end, &gabc_write_special_char); fprintf(f, "]"); } fprintf(f, "("); @@ -784,10 +851,8 @@ static void gabc_write_gregorio_syllable(FILE *f, gregorio_syllable *syllable, void gabc_write_score(FILE *f, gregorio_score *score) { - char step; - int line; gregorio_syllable *syllable; - int annotation_num; + gregorio_header *header; if (!f) { gregorio_message(_("call with NULL file"), "gregoriotex_write_score", @@ -795,62 +860,21 @@ void gabc_write_score(FILE *f, gregorio_score *score) return; } - if (score->name) { - gabc_write_str_attribute(f, "name", score->name); - } else { - fprintf(f, "name: unknown;\n"); - gregorio_message(_("name is mandatory"), "gabc_write_score", - VERBOSITY_ERROR, 0); + for (header = score->headers; header; header = header->next) { + gabc_write_str_attribute(f, header->name, header->value); } - gabc_write_str_attribute(f, "gabc-copyright", score->gabc_copyright); - gabc_write_str_attribute(f, "score-copyright", score->score_copyright); - gabc_write_str_attribute(f, "office-part", score->office_part); - gabc_write_str_attribute(f, "occasion", score->occasion); - gabc_write_str_attribute(f, "meter", score->meter); - gabc_write_str_attribute(f, "commentary", score->commentary); - gabc_write_str_attribute(f, "arranger", score->arranger); - /* We always create gabc of the current version; this is not derived - * from the input. */ - fprintf(f, "gabc-version: %s;\n", GABC_CURRENT_VERSION); /* And since the gabc is generated by this program, note this. */ fprintf(f, "generated-by: %s %s;\n", "gregorio", GREGORIO_VERSION); - gabc_write_str_attribute(f, "author", score->si.author); - gabc_write_str_attribute(f, "date", score->si.date); - gabc_write_str_attribute(f, "manuscript", score->si.manuscript); - gabc_write_str_attribute(f, "manuscript-reference", - score->si.manuscript_reference); - gabc_write_str_attribute(f, "manuscript-storage-place", - score->si.manuscript_storage_place); - gabc_write_str_attribute(f, "book", score->si.book); - gabc_write_str_attribute(f, "transcriber", score->si.transcriber); - gabc_write_str_attribute(f, "transcription-date", - score->si.transcription_date); - gabc_write_str_attribute(f, "gregoriotex-font", score->gregoriotex_font); - if (score->mode) { - fprintf(f, "mode: %d;\n", score->mode); - } - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - if (score->annotation[annotation_num]) { - fprintf(f, "annotation: %s;\n", - score->annotation[annotation_num]); - } - } - if (score->initial_style != NORMAL_INITIAL) { - fprintf(f, "initial-style: %d;\n", score->initial_style); - } - gabc_write_str_attribute(f, "user-notes", score->user_notes); if (score->number_of_voices == 0) { gregorio_message(_("gregorio_score seems to be empty"), "gabc_write_score", VERBOSITY_ERROR, 0); return; } if (score->number_of_voices == 1) { - gabc_write_voice_info(f, score->first_voice_info); fprintf(f, "%%%%\n"); } else { gregorio_voice_info *voice_info = score->first_voice_info; while (voice_info) { - gabc_write_voice_info(f, voice_info); if (voice_info->next_voice_info) { fprintf(f, "--\n"); } else { @@ -859,12 +883,10 @@ void gabc_write_score(FILE *f, gregorio_score *score) } } /* at present we only allow for one clef at the start of the gabc */ - gregorio_det_step_and_line_from_key(score->first_voice_info->initial_key, - &step, &line); - if (score->first_voice_info->flatted_key) { - fprintf(f, "(%cb%d)", step, line); - } else { - fprintf(f, "(%c%d)", step, line); + if (score->first_voice_info) { + fprintf(f, "("); + gabc_write_clef(f, score->first_voice_info->initial_clef); + fprintf(f, ")"); } syllable = score->first_syllable; /* the we write every syllable */ diff --git a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h index 73c7f64f60a..ecb75be6b22 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gabc/gabc.h @@ -29,11 +29,12 @@ /* functions to read gabc */ gregorio_note *gabc_det_notes_from_string(char *str, char *macros[10], - gregorio_scanner_location *loc); + gregorio_scanner_location *loc, const gregorio_score *score); gregorio_element *gabc_det_elements_from_string(char *str, int *current_key, - char *macros[10], gregorio_scanner_location *loc); + char *macros[10], gregorio_scanner_location *loc, + const gregorio_score *const score); gregorio_glyph *gabc_det_glyphs_from_notes(gregorio_note *current_note, - int *current_key); + int *current_key, const gregorio_score *score); void gabc_digest(const void *buf, size_t size); int gabc_score_determination_lex_destroy(void); int gabc_notes_determination_lex_destroy(void); diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c b/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c index d6c8c0a8953..d03e8046ef5 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregorio-utils.c @@ -67,8 +67,16 @@ typedef enum gregorio_file_format { /* _MAX_PATH is being passed for the maxLength (third) argument of _fullpath, * but we are always passing NULL for the absPath (first) argument, so it will * be ignored per the MSDN documentation */ -#define realpath(path,resolved_path) _fullpath(resolved_path, path, _MAX_PATH) -#endif +#define gregorio_realpath(path,resolved_path) _fullpath(resolved_path,path,_MAX_PATH) +#else +#ifdef FUNC_REALPATH_WORKS +#define gregorio_realpath(path,resolved_path) realpath(path,resolved_path) +#else +/* When realpath doesn't work (on an older system), we are forced to use + * PATH_MAX to allocate a buffer */ +#define gregorio_realpath(path,resolved_path) realpath(path,gregorio_malloc(PATH_MAX)) +#endif /* FUNC_REALPATH_WORKS */ +#endif /* _WIN32 */ /* define_path attempts to canonicalize the pathname of a given string */ static char *define_path(char *current_directory, char *string) @@ -96,7 +104,7 @@ static char *define_path(char *current_directory, char *string) base_name++; /* try to resolve it */ - file_name = realpath(temp_name, NULL); + file_name = gregorio_realpath(temp_name, NULL); if (!file_name) { fprintf(stderr, "the directory %s for %s does not exist\n", temp_name, base_name); @@ -238,7 +246,7 @@ static char *encode_point_and_click_filename(char *input_file_name) static const char *const hex = "0123456789ABCDEF"; char *filename, *result = NULL, *r = NULL, *p; - filename = realpath(input_file_name, NULL); + filename = gregorio_realpath(input_file_name, NULL); if (!filename) { fprintf(stderr, "error: unable to resolve %s\n", input_file_name); exit(1); @@ -279,6 +287,7 @@ static char *encode_point_and_click_filename(char *input_file_name) *r = '\0'; + free(filename); return result; } @@ -319,7 +328,7 @@ int main(int argc, char **argv) gregorio_score *score = NULL; #ifdef USE_KPSE - kpse_set_program_name("gregorio", "gregorio"); + kpse_set_program_name(argv[0], "gregorio"); #endif if (argc == 1) { print_usage(argv[0]); @@ -560,7 +569,6 @@ int main(int argc, char **argv) if (point_and_click) { fprintf(stderr, "warning: disabling point-and-click since reading from stdin\n"); - point_and_click = false; } } else { input_file = fopen(input_file_name, "r"); @@ -614,7 +622,7 @@ int main(int argc, char **argv) exit(1); } - gregorio_fix_initial_keys(score, DEFAULT_KEY); + gregorio_fix_initial_keys(score, gregorio_default_clef); switch (output_format) { case GABC: diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c index 987cddd7372..29500d7e840 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-position.c @@ -85,10 +85,17 @@ OFFSET_CASE(FinalConnectedVirga); OFFSET_CASE(InitialVirga); OFFSET_CASE(SalicusOriscusWide); OFFSET_CASE(SalicusOriscusOne); +OFFSET_CASE(LeadingPunctum); +OFFSET_CASE(LeadingQuilisma); +OFFSET_CASE(LeadingOriscus); +OFFSET_CASE(Flat); +OFFSET_CASE(Sharp); +OFFSET_CASE(Natural); static __inline const char *note_before_last_note_case_ignoring_deminutus( const gregorio_note *const current_note) { + assert(current_note->next); if ((current_note->u.note.pitch - current_note->next->u.note.pitch) == 1 || (current_note->u.note.pitch - current_note->next->u.note.pitch) == -1) { @@ -112,8 +119,7 @@ static __inline const char *note_before_last_note_case( const gregorio_glyph *const current_glyph, const gregorio_note *const current_note) { - if ((current_glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS - || current_glyph->u.notes.liquescentia == L_DEMINUTUS) + if ((current_glyph->u.notes.liquescentia & L_DEMINUTUS) && current_note->next) { return PenultBeforeDeminutus; } else { @@ -145,7 +151,7 @@ static __inline const char *last_note_case( } if (current_note->previous->u.note.pitch < current_note->u.note.pitch) { if (current_glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return FinalConnectedAuctus; } else { return FinalConnectedVirga; @@ -169,28 +175,42 @@ static __inline const char *first_note_case( != 1) { ambitus_one = false; } - if (current_note->u.note.shape == S_ORISCUS) { + switch (current_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: return ambitus_one ? InitialOriscus : InitialConnectedOriscus; - } - if (current_note->u.note.shape == S_QUILISMA) { + + case S_QUILISMA: return ambitus_one ? InitialQuilisma : InitialConnectedQuilisma; - } - if (ambitus_one) { - return InitialPunctum; - } - if (current_note->u.note.shape > current_note->next->u.note.shape) { - return InitialConnectedVirga; - } else { - return InitialConnectedPunctum; + + default: + if (ambitus_one) { + return InitialPunctum; + } + if (current_note->u.note.pitch > current_note->next->u.note.pitch) { + return InitialConnectedVirga; + } else { + return InitialConnectedPunctum; + } } } } +static __inline const char *fused_single_note_case( + const gregorio_glyph *const glyph, const char *const unfused_case, + const char *const fused_case) { + int fuse_to_next_glyph = glyph->u.notes.fuse_to_next_glyph; + if (fuse_to_next_glyph < -1 || fuse_to_next_glyph > 1) { + return fused_case; + } + return unfused_case; +} + static __inline gregorio_vposition above_if_auctus( const gregorio_glyph *const glyph) { if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return VPOS_ABOVE; } return VPOS_BELOW; @@ -200,7 +220,7 @@ static __inline gregorio_vposition below_if_auctus( const gregorio_glyph *const glyph) { if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { return VPOS_BELOW; } return VPOS_ABOVE; @@ -215,6 +235,17 @@ static __inline gregorio_vposition above_if_h_episema( return VPOS_BELOW; } +static __inline gregorio_vposition above_if_fused_next_h_episema( + const gregorio_glyph *glyph) +{ + const gregorio_glyph *next = gregorio_next_non_texverb_glyph(glyph); + if (next && next->type == GRE_GLYPH + && is_fused(next->u.notes.liquescentia)) { + return above_if_h_episema(next->u.notes.first_note); + } + return VPOS_BELOW; +} + static __inline gregorio_vposition above_if_either_h_episema( const gregorio_note *const note) { @@ -241,7 +272,7 @@ static __inline void low_high_set_lower(const gregorio_glyph *const glyph, { if ((glyph->u.notes.liquescentia & L_DEMINUTUS) || !(glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { note->is_lower_note = true; } } @@ -251,7 +282,7 @@ static __inline void low_high_set_upper(const gregorio_glyph *const glyph, { if ((glyph->u.notes.liquescentia & L_DEMINUTUS) || !(glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA))) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { note->is_upper_note = true; } } @@ -349,6 +380,7 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, { gregorio_vposition h_episema = VPOS_AUTO, v_episema = VPOS_AUTO; bool v_episema_below_is_lower = false, done; + const gregorio_glyph *previous; /* no need to clear is_lower_note/is_upper_note because we used calloc */ @@ -386,8 +418,11 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, } break; case T_PESQUADRATUM: + case T_PESQUADRATUM_LONGQUEUE: case T_PESQUASSUS: + case T_PESQUASSUS_LONGQUEUE: case T_PESQUILISMAQUADRATUM: + case T_PESQUILISMAQUADRATUM_LONGQUEUE: if (i == 1) { note->gtex_offset_case = first_note_case(note, glyph); h_episema = above_if_h_episema(note->next); @@ -455,7 +490,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondOneAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondOneAny; break; @@ -469,7 +505,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondWideAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondWideAny; break; @@ -543,7 +580,7 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, case HEPISEMA_FIRST_TWO: case 2: if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { /* auctus */ if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) { note->gtex_offset_case = TorcResDebilisAuctusSecondAnyAny; @@ -555,7 +592,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondOneAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondOneAny; break; @@ -569,7 +607,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaAuctusSecondWideAny; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusAuctusSecondWideAny; break; @@ -593,7 +632,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondOneOne; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondOneOne; break; @@ -608,7 +648,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondWideOne; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondWideOne; break; @@ -632,7 +673,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondOneWide; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondOneWide; break; @@ -647,7 +689,8 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = TorcResQuilismaNonAuctusSecondWideWide; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: note->gtex_offset_case = TorcResOriscusNonAuctusSecondWideWide; break; @@ -673,16 +716,17 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, break; } /* else fallthrough to the next case! */ - case T_PORRECTUS: + case T_PORRECTUS: /* or porrectus-like flexus */ switch (i) { case HEPISEMA_FIRST_TWO: case 1: - if (glyph->u.notes.liquescentia & - (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS | L_AUCTA)) { + if (glyph->u.notes.fuse_to_next_glyph || + (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { /* auctus */ note->gtex_offset_case = PorrAuctusInitialAny; - } else if (note->next->next->u.note.pitch - - note->next->u.note.pitch == 1) { + } else if (note->next->next->u.note.pitch + - note->next->u.note.pitch == 1) { /* non-auctus with a second ambitus of 1 */ note->gtex_offset_case = PorrNonAuctusInitialOne; } else { @@ -698,12 +742,16 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, if (glyph->u.notes.liquescentia & L_DEMINUTUS) { note->gtex_offset_case = PenultBeforeDeminutus; } else if (glyph->u.notes.liquescentia - & (L_AUCTUS_ASCENDENS|L_AUCTUS_DESCENDENS|L_AUCTA)) { + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { note->gtex_offset_case = PenultBeforePunctumWide; } else { note->gtex_offset_case = FinalPunctum; } h_episema = above_if_h_episema(note->previous); + if (h_episema == VPOS_BELOW && !note->next) { + /* handle porrectus-like flexus */ + h_episema = above_if_fused_next_h_episema(glyph); + } v_episema = VPOS_BELOW; break; default: /* case 3 */ @@ -741,6 +789,27 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, break; } break; + case T_SALICUS_FLEXUS: + done = true; + v_episema = VPOS_BELOW; + switch (i) { + case 3: + note->gtex_offset_case = note_before_last_note_case(glyph, note); + h_episema = VPOS_ABOVE; + break; + case 4: + note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note, + false); + h_episema = VPOS_BELOW; + break; + default: + done = false; + break; + } + if (done) { + break; + } + /* else fallthrough to the next case! */ case T_SALICUS: case T_SALICUS_LONGQUEUE: v_episema = VPOS_BELOW; @@ -841,7 +910,14 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, } break; default: /* case T_ONE_NOTE */ - h_episema = VPOS_ABOVE; + previous = gregorio_previous_non_texverb_glyph(glyph); + if ((!previous || previous->type != GRE_GLYPH + || previous->u.notes.fuse_to_next_glyph < 0) + && (glyph->u.notes.fuse_to_next_glyph > 0)) { + h_episema = above_if_fused_next_h_episema(glyph); + } else { + h_episema = VPOS_ABOVE; + } v_episema = VPOS_BELOW; switch (note->u.note.shape) { case S_PUNCTUM_INCLINATUM_DEMINUTUS: @@ -857,11 +933,18 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, note->gtex_offset_case = FinalStropha; break; case S_QUILISMA: - note->gtex_offset_case = FinalQuilisma; + note->gtex_offset_case = fused_single_note_case(glyph, + FinalQuilisma, LeadingQuilisma); break; - case S_ORISCUS: - case S_ORISCUS_AUCTUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_DEMINUTUS: + note->gtex_offset_case = fused_single_note_case(glyph, FinalOriscus, + LeadingOriscus); + break; + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: note->gtex_offset_case = FinalOriscus; break; case S_VIRGA: @@ -881,9 +964,19 @@ static gregorio_vposition advise_positioning(const gregorio_glyph *const glyph, case S_LINEA: note->gtex_offset_case = FinalPunctum; break; + case S_FLAT: + note->gtex_offset_case = Flat; + break; + case S_SHARP: + note->gtex_offset_case = Sharp; + break; + case S_NATURAL: + note->gtex_offset_case = Natural; + break; default: - note->gtex_offset_case = last_note_case(glyph, FinalPunctum, note, - true); + note->gtex_offset_case = last_note_case(glyph, + fused_single_note_case(glyph, FinalPunctum, LeadingPunctum), + note, true); break; } break; @@ -966,6 +1059,8 @@ typedef struct height_computation { const gregorio_element *start_element; const gregorio_glyph *start_glyph; gregorio_note *start_note; + const gregorio_element *last_connected_element; + const gregorio_glyph *last_connected_glyph; gregorio_note *last_connected_note; } height_computation; @@ -1023,6 +1118,23 @@ static bool is_h_episema_below_better_height(const signed char new_height, return new_height < old_height; } +static __inline bool has_high_ledger_line(const signed char height, + bool is_sign, const gregorio_score *const score) +{ + if (is_sign) { + return height > score->high_ledger_line_pitch; + } + return height >= score->high_ledger_line_pitch; +} + +static __inline bool has_low_ledger_line(const signed char height, bool is_sign) +{ + if (is_sign) { + return height < LOW_LEDGER_LINE_PITCH; + } + return height <= LOW_LEDGER_LINE_PITCH; +} + static __inline void start_h_episema(height_computation *const h, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note) @@ -1034,8 +1146,115 @@ static __inline void start_h_episema(height_computation *const h, h->height = compute_h_episema_height(glyph, note, h->vpos); } +static __inline void position_h_episema(gregorio_note *const note, + const height_computation *const h, const bool connect, + const bool high_ledger_line, const bool low_ledger_line) +{ + h->position(note, h->height, connect); + if (!note->explicit_high_ledger_line && !note->supposed_high_ledger_line) { + note->supposed_high_ledger_line = high_ledger_line; + } + if (!note->explicit_low_ledger_line && !note->supposed_low_ledger_line) { + note->supposed_low_ledger_line = low_ledger_line; + } +} + +static __inline void next_has_ledger_line( + const height_computation *const h, bool *high_ledger_line, + bool *low_ledger_line, const gregorio_score *const score) +{ + const gregorio_element *element = h->last_connected_element; + const gregorio_glyph *glyph = h->last_connected_glyph; + gregorio_note *note = h->last_connected_note; + bool eat_upper_note = note->is_lower_note, keep_going = false; + + if (!*high_ledger_line || !*low_ledger_line) { + /* going forwards, we must iterate through any lower notes */ + do { + note = note->next; + if (!note) { + do { + glyph = glyph->next; + if (!glyph) { + do { + element = element->next; + if (!element) { + return; + } + } while (element->type != GRE_ELEMENT); + glyph = element->u.first_glyph; + } + } while (glyph->type != GRE_GLYPH); + note = glyph->u.notes.first_note; + } + + *high_ledger_line = *high_ledger_line + || has_high_ledger_line(note->u.note.pitch, false, score); + *low_ledger_line = *low_ledger_line + || has_low_ledger_line(note->u.note.pitch, false); + + if (keep_going) { + keep_going = false; + } + if (eat_upper_note && note->is_upper_note) { + eat_upper_note = false; + keep_going = true; + } + } while ((!*high_ledger_line || !*low_ledger_line) + && (note->is_lower_note || keep_going)); + } +} + +static __inline void previous_has_ledger_line( + const height_computation *const h, bool *high_ledger_line, + bool *low_ledger_line, const gregorio_score *const score) +{ + const gregorio_element *element = h->start_element; + const gregorio_glyph *glyph = h->start_glyph; + gregorio_note *note = h->start_note; + bool eat_lower_note = note->is_upper_note, keep_going = false; + + if (!*high_ledger_line || !*low_ledger_line) { + /* going backwards, we must iterate through any upper notes */ + do { + note = note->previous; + if (!note) { + do { + glyph = glyph->previous; + if (!glyph) { + do { + element = element->previous; + if (!element) { + return; + } + } while (element->type != GRE_ELEMENT); + for (glyph = element->u.first_glyph; glyph->next; + glyph = glyph->next) { + /* just iterate to find the last glyph */ + } + } + } while (glyph->type != GRE_GLYPH); + note = gregorio_glyph_last_note(glyph); + } + *high_ledger_line = *high_ledger_line + || has_high_ledger_line(note->u.note.pitch, false, score); + *low_ledger_line = *low_ledger_line + || has_low_ledger_line(note->u.note.pitch, false); + + if (keep_going) { + keep_going = false; + } + if (eat_lower_note && note->is_lower_note) { + eat_lower_note = false; + keep_going = true; + } + } while ((!*high_ledger_line || !*low_ledger_line) + && (note->is_upper_note || keep_going)); + } +} + static __inline void set_h_episema_height(const height_computation *const h, - gregorio_note *const end) + gregorio_note *const end, const gregorio_score *const score) { gregorio_note *last_note = NULL; @@ -1043,6 +1262,14 @@ static __inline void set_h_episema_height(const height_computation *const h, const gregorio_glyph *glyph = h->start_glyph; gregorio_note *note = h->start_note; + bool high_ledger_line = has_high_ledger_line(h->height, true, score) + || has_high_ledger_line(h->height - h->vpos, false, score); + bool low_ledger_line = has_low_ledger_line(h->height, true) + || has_low_ledger_line(h->height - h->vpos, false); + + next_has_ledger_line(h, &high_ledger_line, &low_ledger_line, score); + previous_has_ledger_line(h, &high_ledger_line, &low_ledger_line, score); + for ( ; element; element = element->next) { if (element->type == GRE_ELEMENT) { for (glyph = glyph? glyph : element->u.first_glyph; glyph; @@ -1052,12 +1279,14 @@ static __inline void set_h_episema_height(const height_computation *const h, note = note->next) { if (end && note == end) { if (last_note) { - h->position(last_note, h->height, false); + position_h_episema(last_note, h, false, + high_ledger_line, low_ledger_line); } return; } if (h->is_applicable(note)) { - h->position(note, h->height, true); + position_h_episema(note, h, true, high_ledger_line, + low_ledger_line); last_note = note; } } @@ -1069,7 +1298,8 @@ static __inline void set_h_episema_height(const height_computation *const h, } if (last_note) { - h->position(last_note, h->height, false); + position_h_episema(last_note, h, false, high_ledger_line, + low_ledger_line); } } @@ -1101,45 +1331,68 @@ static __inline bool has_space_to_left(const gregorio_note *const note) { } static __inline void end_h_episema(height_computation *const h, - gregorio_note *const end) + gregorio_note *const end, const gregorio_score *const score) { signed char proposed_height; if (h->active) { /* don't let the episema clash with the note before or after */ - if (is_connected_left(h->get_size(h->start_note)) - && h->start_note->previous - && h->start_note->previous->type == GRE_NOTE - && is_connected_right(h->get_size(h->start_note->previous)) - && !has_space_to_left(h->start_note)) { - proposed_height = h->start_note->previous->u.note.pitch + h->vpos; - if (h->is_better_height(proposed_height, h->height)) { - h->height = proposed_height; - } - } - if (end && end->type == GRE_NOTE) { - gregorio_note *note; - /* this loop checks that it's within the same glyph */ - for (note = end->previous; note; note = note->previous) { - if (note == h->start_note) { - if (is_connected_left(h->get_size(end)) - && h->last_connected_note - && h->last_connected_note->next - && h->last_connected_note->next->type == GRE_NOTE - && !has_space_to_left(h->last_connected_note->next) - && is_connected_right(h->get_size( - h->last_connected_note))) { - proposed_height = end->u.note.pitch + h->vpos; + if (is_connected_left(h->get_size(h->start_note))) { + if (h->start_note->previous) { + if (!has_space_to_left(h->start_note) + && h->start_note->previous->type == GRE_NOTE + && is_connected_right(h->get_size( + h->start_note->previous))) { + proposed_height = h->start_note->previous->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, h->height)) { + h->height = proposed_height; + } + } + } else { + const gregorio_glyph *previous = + gregorio_previous_non_texverb_glyph(h->start_glyph); + if (previous && previous->type == GRE_GLYPH + && is_fused(h->start_glyph->u.notes.liquescentia)) { + gregorio_note *note = gregorio_glyph_last_note( + h->start_glyph->previous); + if (note->type == GRE_NOTE + && is_connected_right(h->get_size(note))) { + proposed_height = note->u.note.pitch + h->vpos; if (h->is_better_height(proposed_height, h->height)) { h->height = proposed_height; } } - break; + } + } + } + if (end && end->type == GRE_NOTE && is_connected_left(h->get_size(end)) + && h->last_connected_note + && is_connected_right(h->get_size(h->last_connected_note))) { + if (h->last_connected_note->next) { + if (h->last_connected_note->next->type == GRE_NOTE + && !has_space_to_left(h->last_connected_note->next)) { + gregorio_note *note; + /* this loop checks that it's within the same glyph */ + for (note = end->previous; note; note = note->previous) { + if (note == h->start_note) { + proposed_height = end->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, + h->height)) { + h->height = proposed_height; + } + break; + } + } + } + } else if (is_fused(end->u.note.liquescentia) && !end->previous) { + proposed_height = end->u.note.pitch + h->vpos; + if (h->is_better_height(proposed_height, h->height)) { + h->height = proposed_height; } } } - set_h_episema_height(h, end); + set_h_episema_height(h, end, score); h->active = false; h->height = 0; @@ -1147,6 +1400,8 @@ static __inline void end_h_episema(height_computation *const h, h->start_element = NULL; h->start_glyph = NULL; h->start_note = NULL; + h->last_connected_element = NULL; + h->last_connected_glyph = NULL; h->last_connected_note = NULL; } } @@ -1154,7 +1409,7 @@ static __inline void end_h_episema(height_computation *const h, static __inline void compute_h_episema(height_computation *const h, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note, - const int i, const gtex_type type) + const int i, const gtex_type type, const gregorio_score *const score) { signed char next_height; grehepisema_size size; @@ -1174,7 +1429,7 @@ static __inline void compute_h_episema(height_computation *const h, } } else { - end_h_episema(h, note); + end_h_episema(h, note, score); start_h_episema(h, element, glyph, note); } } else { @@ -1182,9 +1437,11 @@ static __inline void compute_h_episema(height_computation *const h, } h->connected = h->is_connected(note) && is_connected_right(size); + h->last_connected_element = element; + h->last_connected_glyph = glyph; h->last_connected_note = note; } else { - end_h_episema(h, note); + end_h_episema(h, note, score); } } else if (!h->is_shown(note)) { /* special handling for porrectus shapes because of their shape: @@ -1195,14 +1452,14 @@ static __inline void compute_h_episema(height_computation *const h, case T_PORRECTUS: case T_PORRECTUS_FLEXUS: if (i == 2) { - end_h_episema(h, note); + end_h_episema(h, note, score); } break; case T_TORCULUS_RESUPINUS: case T_TORCULUS_RESUPINUS_FLEXUS: if (i == 3) { - end_h_episema(h, note); + end_h_episema(h, note, score); } break; @@ -1216,7 +1473,7 @@ static __inline void compute_h_episema(height_computation *const h, static __inline void compute_note_positioning(height_computation *const above, height_computation *const below, const gregorio_element *const element, const gregorio_glyph *const glyph, gregorio_note *const note, - const int i, const gtex_type type) + const int i, const gtex_type type, const gregorio_score *const score) { gregorio_vposition default_vpos = advise_positioning(glyph, note, i, type); @@ -1230,11 +1487,165 @@ static __inline void compute_note_positioning(height_computation *const above, } } - compute_h_episema(above, element, glyph, note, i, type); - compute_h_episema(below, element, glyph, note, i, type); + compute_h_episema(above, element, glyph, note, i, type, score); + compute_h_episema(below, element, glyph, note, i, type, score); +} + +static __inline int compute_fused_shift(const gregorio_glyph *glyph) +{ + int shift; + gregorio_note *first_note, *prev_note; + const gregorio_glyph *next, *previous; + bool next_is_fused; + + if (!glyph || !is_fused(glyph->u.notes.liquescentia) + || glyph->type != GRE_GLYPH + || !(first_note = glyph->u.notes.first_note) + || first_note->type != GRE_NOTE + || !(previous = gregorio_previous_non_texverb_glyph(glyph)) + || previous->type != GRE_GLYPH + || previous->u.notes.liquescentia & TAIL_LIQUESCENTIA_MASK + || !previous->u.notes.first_note) { + /* base conditions prevent fusion */ + return 0; + } + + next = gregorio_next_non_texverb_glyph(glyph); + next_is_fused = next && next->type == GRE_GLYPH + && is_fused(next->u.notes.liquescentia); + + switch (glyph->u.notes.glyph_type) { + case G_PORRECTUS: + case G_PODATUS: + if (next_is_fused) { + return 0; + } + /* else it may be fused to the previous note */ + break; + + case G_PUNCTUM: + case G_FLEXA: + /* these may be fused to the previous note */ + break; + + default: + /* anything else may not be fused to the previous note */ + return 0; + } + + switch (first_note->u.note.shape) { + case S_QUILISMA: + case S_QUILISMA_QUADRATUM: + case S_PUNCTUM_CAVUM: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_FLAT: + case S_SHARP: + case S_NATURAL: + /* if this glyph starts with one of these, it's not fusable */ + return 0; + + default: + /* anything else is potentially fusable */ + break; + } + + switch (previous->u.notes.glyph_type) { + case G_PUNCTUM: + case G_FLEXA: + case G_VIRGA_REVERSA: + /* these are potentially fusable to this note */ + break; + + default: + /* everything else is not fusable */ + return 0; + } + + prev_note = gregorio_glyph_last_note(previous); + + if (prev_note->type != GRE_NOTE) { + /* previous note wasn't a note */ + return 0; + } + + switch (prev_note->u.note.shape) { + case S_PUNCTUM_CAVUM: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_FLAT: + case S_SHARP: + case S_NATURAL: + /* these don't fuse to anything */ + return 0; + + default: + /* anything else is potentially fusable */ + break; + } + + shift = first_note->u.note.pitch - prev_note->u.note.pitch; + if (shift < -5 || shift > 5) { + /* ambitus too large to fuse */ + return 0; + } + + if (shift > 0 && previous->u.notes.glyph_type == G_VIRGA_REVERSA) { + /* virga reversa cannot fuse upwards */ + return 0; + } + + /* the FLEXA check below checks for a porrectus-like flexus, which is not + * fusable from above */ + if (shift < 0 && ((next_is_fused && glyph->u.notes.glyph_type == G_FLEXA) + || glyph->u.notes.glyph_type == G_PORRECTUS + || (previous->u.notes.glyph_type == G_PUNCTUM + && is_initio_debilis(previous->u.notes.liquescentia)))) { + /* may not be fused from above */ + return 0; + } + + /* Special cases for oriscus */ + switch (first_note->u.note.shape) { + gregorio_note *next_note; + const gregorio_glyph *next_glyph; + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_SCAPUS: + next_note = first_note->next; + if (!next_note && (next_glyph = gregorio_next_non_texverb_glyph(glyph)) + && next_glyph->type == GRE_GLYPH + && is_fused(next_glyph->u.notes.liquescentia)) { + next_note = next_glyph->u.notes.first_note; + } + if (next_note) { + if (next_note->u.note.pitch < first_note->u.note.pitch) { + /* then this note should be an down-up-down oriscus */ + if (shift > 0) { + /* down-up-down oricus cannot be fused from below */ + return 0; + } + } else { + /* then this note should be an up-down-up oriscus */ + if (shift < 0) { + /* up-down-up oricus cannot be fused from above */ + return 0; + } + } + } + break; + + default: + break; + } + + return shift; } -void gregoriotex_compute_positioning(const gregorio_element *element) +void gregoriotex_compute_positioning(const gregorio_element *element, + const gregorio_score *const score) { height_computation above = { /*.vpos =*/ VPOS_ABOVE, @@ -1251,6 +1662,8 @@ void gregoriotex_compute_positioning(const gregorio_element *element) /*.start_element =*/ NULL, /*.start_glyph =*/ NULL, /*.start_note =*/ NULL, + /*.last_connected_element =*/ NULL, + /*.last_connected_glyph =*/ NULL, /*.last_connected_note =*/ NULL, }; height_computation below = { @@ -1268,6 +1681,8 @@ void gregoriotex_compute_positioning(const gregorio_element *element) /*.start_element =*/ NULL, /*.start_glyph =*/ NULL, /*.start_note =*/ NULL, + /*.last_connected_element =*/ NULL, + /*.last_connected_glyph =*/ NULL, /*.last_connected_note =*/ NULL, }; int i; @@ -1276,11 +1691,13 @@ void gregoriotex_compute_positioning(const gregorio_element *element) for (; element; element = element->next) { if (element->type == GRE_ELEMENT) { - const gregorio_glyph *glyph; + gregorio_glyph *glyph; for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { if (glyph->type == GRE_GLYPH) { gregorio_note *note; + glyph->u.notes.fuse_to_next_glyph = compute_fused_shift( + gregorio_next_non_texverb_glyph(glyph)); i = 0; gregoriotex_determine_glyph_name(glyph, element, &ignored, &type); @@ -1288,17 +1705,17 @@ void gregoriotex_compute_positioning(const gregorio_element *element) note = note->next) { if (note->type == GRE_NOTE) { compute_note_positioning(&above, &below, element, - glyph, note, ++i, type); + glyph, note, ++i, type, score); } } } } } else if (!is_bridgeable_space(element)) { - end_h_episema(&above, NULL); - end_h_episema(&below, NULL); + end_h_episema(&above, NULL, score); + end_h_episema(&below, NULL, score); } } - end_h_episema(&above, NULL); - end_h_episema(&below, NULL); + end_h_episema(&above, NULL, score); + end_h_episema(&below, NULL, score); } diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c index 8105faaecb7..524c61b286d 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex-write.c @@ -66,13 +66,100 @@ typedef struct gregoriotex_status { #define MAX_AMBITUS 5 static const char *tex_ambitus[] = { - NULL, "One", "Two", "Three", "Four", "Five" + "", "One", "Two", "Three", "Four", "Five" }; +#define SHAPE(NAME) static const char *const SHAPE_##NAME = #NAME +SHAPE(Ancus); +SHAPE(AncusLongqueue); +SHAPE(Flat); +SHAPE(Flexus); +SHAPE(FlexusLongqueue); +SHAPE(FlexusNobar); +SHAPE(FlexusOriscus); +SHAPE(FlexusOriscusScapus); +SHAPE(FlexusOriscusScapusLongqueue); +SHAPE(Linea); +SHAPE(LineaPunctum); +SHAPE(LineaPunctumCavum); +SHAPE(Natural); +SHAPE(Oriscus); +SHAPE(OriscusCavum); +SHAPE(OriscusCavumAuctus); +SHAPE(OriscusCavumDeminutus); +SHAPE(OriscusDeminutus); +SHAPE(OriscusLineBL); +SHAPE(OriscusReversus); +SHAPE(OriscusReversusLineTL); +SHAPE(OriscusScapus); +SHAPE(OriscusScapusLongqueue); +SHAPE(Pes); +SHAPE(PesQuadratum); +SHAPE(PesQuadratumLongqueue); +SHAPE(PesQuassus); +SHAPE(PesQuassusLongqueue); +SHAPE(PesQuilisma); +SHAPE(PesQuilismaQuadratum); +SHAPE(PesQuilismaQuadratumLongqueue); +SHAPE(Porrectus); +SHAPE(PorrectusFlexus); +SHAPE(PorrectusFlexusNobar); +SHAPE(PorrectusNobar); +SHAPE(Punctum); +SHAPE(PunctumAscendens); +SHAPE(PunctumCavum); +SHAPE(PunctumCavumInclinatum); +SHAPE(PunctumCavumInclinatumAuctus); +SHAPE(PunctumDeminutus); +SHAPE(PunctumDescendens); +SHAPE(PunctumInclinatum); +SHAPE(PunctumInclinatumAuctus); +SHAPE(PunctumInclinatumDeminutus); +SHAPE(PunctumLineBL); +SHAPE(PunctumLineTL); +SHAPE(Quilisma); +SHAPE(Salicus); +SHAPE(SalicusFlexus); +SHAPE(SalicusLongqueue); +SHAPE(Scandicus); +SHAPE(Sharp); +SHAPE(Stropha); +SHAPE(StrophaAucta); +SHAPE(StrophaAuctaLongtail); +SHAPE(Torculus); +SHAPE(TorculusLiquescens); +SHAPE(TorculusLiquescensQuilisma); +SHAPE(TorculusQuilisma); +SHAPE(TorculusResupinus); +SHAPE(TorculusResupinusQuilisma); +SHAPE(Virga); +SHAPE(VirgaLongqueue); +SHAPE(VirgaReversa); +SHAPE(VirgaReversaAscendens); +SHAPE(VirgaReversaDescendens); +SHAPE(VirgaReversaLongqueue); +SHAPE(VirgaReversaLongqueueAscendens); +SHAPE(VirgaReversaLongqueueDescendens); +SHAPE(VirgaStrata); + +#define LIQ(NAME) static const char *const LIQ_##NAME = #NAME +LIQ(Deminutus); +LIQ(Ascendens); +LIQ(Descendens); +LIQ(InitioDebilis); +LIQ(InitioDebilisDeminutus); +LIQ(InitioDebilisAscendens); +LIQ(InitioDebilisDescendens); +LIQ(Nothing); + +#define FUSE(NAME) static const char *const FUSE_##NAME = #NAME +FUSE(Lower); +FUSE(Upper); +FUSE(Down); +FUSE(Up); + /* the value indicating to GregorioTeX that there is no flat */ #define NO_KEY_FLAT LOWEST_PITCH -#define PITCH_BELOW_STAFF (LOWEST_PITCH + 2) -#define PITCH_ABOVE_STAFF (LOWEST_PITCH + 10) /* a helper macro for the following function */ #define WHILEGLYPH(prevornext) \ @@ -80,7 +167,7 @@ static const char *tex_ambitus[] = { if (glyph->type == GRE_GLYPH) {\ note = glyph->u.notes.first_note;\ while (note) {\ - if (note->u.note.pitch < PITCH_BELOW_STAFF) {\ + if (note->u.note.pitch <= LOW_LEDGER_LINE_PITCH) {\ return true;\ }\ note = note->next;\ @@ -115,18 +202,18 @@ static bool is_longqueue(const signed char pitch, case 7: case 9: case 11: + case 13: return true; case 3: /* we first look forward to see if there is a note underneath c */ WHILEGLYPH(next); if (element && element->type == GRE_SPACE && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE - || element->u.misc.unpitched.info.space == - SP_NEUMATIC_CUT_NB - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE_NB)) { + || element->u.misc.unpitched.info.space == SP_LARGER_SPACE + || element->u.misc.unpitched.info.space + == SP_NEUMATIC_CUT_NB + || element->u.misc.unpitched.info.space + == SP_LARGER_SPACE_NB)) { element = element->next; } if (element && element->type == GRE_ELEMENT) { @@ -139,12 +226,11 @@ static bool is_longqueue(const signed char pitch, WHILEGLYPH(previous); if (element && element->type == GRE_SPACE && (element->u.misc.unpitched.info.space == SP_NEUMATIC_CUT - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE - || element->u.misc.unpitched.info.space == - SP_NEUMATIC_CUT_NB - || element->u.misc.unpitched.info.space == - SP_LARGER_SPACE_NB)) { + || element->u.misc.unpitched.info.space == SP_LARGER_SPACE + || element->u.misc.unpitched.info.space + == SP_NEUMATIC_CUT_NB + || element->u.misc.unpitched.info.space + == SP_LARGER_SPACE_NB)) { element = element->previous; } if (element && element->type == GRE_ELEMENT) { @@ -172,113 +258,6 @@ static __inline bool is_shortqueue(const signed char pitch, static grestyle_style gregoriotex_ignore_style = ST_NO_STYLE; static grestyle_style gregoriotex_next_ignore_style = ST_NO_STYLE; -static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, - gregorio_glyph *glyph, gregorio_element *element, gtex_alignment *type) -{ - static char buf[128]; - const char *name; - - if (!note) { - gregorio_message(_("called with NULL pointer"), - "gregoriotex_determine_note_glyph_name", VERBOSITY_ERROR, 0); - return ""; - } - - *type = AT_ONE_NOTE; - switch (note->u.note.shape) { - case S_PUNCTUM_INCLINATUM: - *type = AT_PUNCTUM_INCLINATUM; - return "PunctumInclinatum"; - case S_PUNCTUM_INCLINATUM_DEMINUTUS: - return "PunctumInclinatumDeminutus"; - case S_PUNCTUM_INCLINATUM_AUCTUS: - return "PunctumInclinatumAuctus"; - case S_PUNCTUM: - return "Punctum"; - case S_PUNCTUM_AUCTUS_ASCENDENS: - return "PunctumAscendens"; - case S_PUNCTUM_AUCTUS_DESCENDENS: - return "PunctumDescendens"; - case S_PUNCTUM_DEMINUTUS: - return "PunctumDeminutus"; - case S_PUNCTUM_CAVUM: - return "PunctumCavum"; - case S_LINEA: - return "Linea"; - case S_LINEA_PUNCTUM: - return "LineaPunctum"; - case S_LINEA_PUNCTUM_CAVUM: - return "LineaPunctumCavum"; - case S_VIRGA: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "Virga"; - } - return "VirgaLongqueue"; - case S_VIRGA_REVERSA: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - name = "VirgaReversaAscendens"; - } else { - name = "VirgaReversaLongqueueAscendens"; - } - if (note->u.note.pitch - LOWEST_PITCH == 3) { - /* if we're on the 'd' line, the queue could be long or short */ - gregorio_snprintf(buf, sizeof buf, - "VirgaReversaAscendensOnDLine{\\GreCP%s}", name); - return buf; - } - return name; - case L_AUCTUS_DESCENDENS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "VirgaReversaDescendens"; - } - return "VirgaReversaLongqueueDescendens"; - default: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "VirgaReversa"; - } - return "VirgaReversaLongqueue"; - } - case S_ORISCUS: - *type = AT_ORISCUS; - return "Oriscus"; - case S_ORISCUS_AUCTUS: - *type = AT_ORISCUS; - return "OriscusReversus"; - case S_ORISCUS_DEMINUTUS: - *type = AT_ORISCUS; - return "OriscusDeminutus"; - case S_QUILISMA: - *type = AT_QUILISMA; - return "Quilisma"; - case S_ORISCUS_SCAPUS: - if (is_shortqueue(note->u.note.pitch, glyph, element)) { - return "OriscusScapus"; - } - return "OriscusScapusLongqueue"; - case S_STROPHA: - *type = AT_STROPHA; - if (note->u.note.liquescentia == L_AUCTA) { - return "StrophaAucta"; - } - return "Stropha"; - case S_STROPHA_AUCTA: - *type = AT_STROPHA; - return "StrophaAucta"; - case S_PUNCTUM_CAVUM_INCLINATUM: - *type = AT_PUNCTUM_INCLINATUM; - return "PunctumCavumInclinatum"; - case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: - return "PunctumCavumInclinatumAuctus"; - default: - gregorio_messagef("gregoriotex_determine_note_glyph_name", - VERBOSITY_ERROR, 0, _("called with unknown shape: %d"), - note->u.note.shape); - return ""; - } -} - /* * The different liquescentiae are: * 'Nothing' @@ -290,55 +269,30 @@ static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, * 'InitioDebilisAscendens' * 'InitioDebilisDescendens' * - * If it is an auctus, which may be ascendens or descendens, by default we - * consider it as an ascendens - * * They also are and must be the same as in squarize.py. */ -static const char *gregoriotex_determine_liquescentia(gtex_glyph_liquescentia type, - gregorio_liquescentia liquescentia) +static const char *gregoriotex_determine_liquescentia( + gtex_glyph_liquescentia type, const gregorio_glyph *const glyph) { - switch (liquescentia) { - case L_AUCTA: - liquescentia = L_AUCTUS_ASCENDENS; - break; - case L_AUCTA_INITIO_DEBILIS: - liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; - break; - default: - /* do nothing */ - break; - } + gregorio_liquescentia liquescentia = glyph->u.notes.liquescentia; switch (type) { case LG_ALL: break; case LG_NO_INITIO: - if (liquescentia >= L_INITIO_DEBILIS) { - liquescentia = liquescentia - L_INITIO_DEBILIS; - } + liquescentia &= ~L_INITIO_DEBILIS; break; case LG_ONLY_DEMINUTUS: - if (liquescentia != L_DEMINUTUS - && liquescentia != L_DEMINUTUS_INITIO_DEBILIS) { - liquescentia = L_NO_LIQUESCENTIA; - } + liquescentia &= L_INITIO_DEBILIS | L_DEMINUTUS; break; - case LG_ONLY_AUCTUS: - if (liquescentia != L_AUCTUS_ASCENDENS - && liquescentia != L_AUCTUS_DESCENDENS) { - liquescentia = L_NO_LIQUESCENTIA; - } - case LG_UNDET_AUCTUS: - if (liquescentia == L_AUCTUS_DESCENDENS) { - liquescentia = L_AUCTUS_ASCENDENS; - } - if (liquescentia == L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { - liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; + case LG_FUSIBLE_INITIO: + if (glyph->u.notes.fuse_to_next_glyph) { + liquescentia &= L_INITIO_DEBILIS; + break; } - break; - default: + /* else fall through to next case */ + case LG_NONE: liquescentia = L_NO_LIQUESCENTIA; break; } @@ -346,29 +300,27 @@ static const char *gregoriotex_determine_liquescentia(gtex_glyph_liquescentia ty /* now we convert liquescentia into the good GregorioTeX liquescentia * numbers */ - switch (liquescentia) { + switch (liquescentia & ~L_FUSED) { case L_DEMINUTUS: - return "Deminutus"; + return LIQ_Deminutus; case L_AUCTUS_ASCENDENS: - return "Ascendens"; - case L_AUCTA: + return LIQ_Ascendens; case L_AUCTUS_DESCENDENS: - return "Descendens"; + return LIQ_Descendens; case L_INITIO_DEBILIS: - return "InitioDebilis"; + return LIQ_InitioDebilis; case L_DEMINUTUS_INITIO_DEBILIS: - return "InitioDebilisDeminutus"; + return LIQ_InitioDebilisDeminutus; case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - return "InitioDebilisAscendens"; - case L_AUCTA_INITIO_DEBILIS: + return LIQ_InitioDebilisAscendens; case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - return "InitioDebilisDescendens"; + return LIQ_InitioDebilisDescendens; case L_NO_LIQUESCENTIA: /* break out and return "Nothing" */ break; } - return "Nothing"; + return LIQ_Nothing; } static __inline int compute_ambitus(const gregorio_note *const current_note) @@ -390,15 +342,21 @@ static __inline int compute_ambitus(const gregorio_note *const current_note) } static const char *compute_glyph_name(const gregorio_glyph *const glyph, - const char *shape, const gtex_glyph_liquescentia ltype) + const char *shape, const gtex_glyph_liquescentia ltype, + bool is_single_note) { static char buf[BUFSIZE]; - const char *liquescentia = gregoriotex_determine_liquescentia(ltype, - glyph->u.notes.liquescentia); + const char *liquescentia = gregoriotex_determine_liquescentia(ltype, glyph); gregorio_note *current_note; + int ambitus1, ambitus2, ambitus3, fuse_ambitus = 0; + const char *fuse_head = "", *fuse_tail = ""; + const gregorio_glyph *previous = gregorio_previous_non_texverb_glyph(glyph); + int fuse_to_next_note, fuse_from_previous_note = + (previous && previous->type == GRE_GLYPH) + ? previous->u.notes.fuse_to_next_glyph : 0; + /* then we start making our formula */ - int ambitus1, ambitus2, ambitus3; if (!glyph) { gregorio_message(_("called with NULL pointer"), "compute_glyph_name", VERBOSITY_ERROR, 0); @@ -409,25 +367,145 @@ static const char *compute_glyph_name(const gregorio_glyph *const glyph, "compute_glyph_name", VERBOSITY_ERROR, 0); return ""; } + + fuse_to_next_note = glyph->u.notes.fuse_to_next_glyph; + + switch (glyph->u.notes.glyph_type) { + case G_PODATUS: + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) + && fuse_from_previous_note < 0) { + /* a normal pes cannot be fused from above */ + break; + } + /* else fall through */ + case G_PUNCTUM: + case G_FLEXA: + /* directionally head-fusable */ + if (fuse_from_previous_note < -1 + && glyph->u.notes.first_note->u.note.shape != S_QUILISMA + && glyph->u.notes.first_note->u.note.shape + != S_QUILISMA_QUADRATUM) { + fuse_head = FUSE_Lower; + } else if (fuse_from_previous_note < 0) { + gregorio_note *previous_note = gregorio_glyph_last_note( + gregorio_previous_non_texverb_glyph(glyph)); + switch (previous_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_SCAPUS: + fuse_head = FUSE_Lower; + break; + default: + break; + } + } else if (fuse_from_previous_note > 1) { + fuse_head = FUSE_Upper; + } + break; + + default: + /* not directionally head-fusable */ + break; + } + + switch (glyph->u.notes.glyph_type) { + case G_FLEXA: + if (fuse_to_next_note <= 0) { + /* a flexa is only fusable up */ + break; + } + /* else fall through */ + case G_VIRGA_REVERSA: + case G_PUNCTUM: + /* tail-fusable */ + if (fuse_to_next_note < 0) { + fuse_tail = FUSE_Down; + fuse_ambitus = -fuse_to_next_note; + } else if (fuse_to_next_note > 0) { + fuse_tail = FUSE_Up; + fuse_ambitus = fuse_to_next_note; + } + + if (*fuse_tail && liquescentia == LIQ_Nothing) { + liquescentia = ""; + } + break; + + default: + /* not tail-fusable */ + break; + } + + if ((*fuse_tail && shape == SHAPE_OriscusReversus) + || ((shape == SHAPE_OriscusReversus || shape == SHAPE_OriscusScapus + || shape == SHAPE_OriscusScapusLongqueue) + && is_fused(glyph->u.notes.liquescentia))) { + shape = SHAPE_Oriscus; + } + current_note = glyph->u.notes.first_note; + if (is_single_note) { + if (liquescentia == LIQ_Nothing) { + liquescentia = ""; + } + if (!(*fuse_tail)) { + /* single note fused shapes have weird names */ + if (fuse_head == FUSE_Upper) { + if (shape == SHAPE_Punctum) { + shape = SHAPE_PunctumLineBL; + } else if (shape == SHAPE_Oriscus) { + shape = SHAPE_OriscusLineBL; + } + } else if (fuse_head == FUSE_Lower) { + if (shape == SHAPE_Punctum) { + shape = SHAPE_PunctumLineTL; + } else if (shape == SHAPE_Oriscus) { + shape = SHAPE_OriscusReversusLineTL; + } + } + fuse_head = ""; + } + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s", fuse_head, shape, + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); + return buf; + } if (!current_note->next) { - gregorio_message(_("called with a multi-note glyph that has only " - "one note"), "compute_glyph_name", VERBOSITY_ERROR, 0); - return ""; + gregorio_message(_("called with a multi-note glyph that has only " + "one note"), "compute_glyph_name", VERBOSITY_ERROR, 0); + return ""; } if (!(ambitus1 = compute_ambitus(current_note))) { return ""; } - /* the salicus queue is at the end of the glyph, and it doesn't exist for - * the liquescent forms */ - if (strcmp(shape, "SalicusLongqueue") == 0 - && strcmp(liquescentia, "Nothing") != 0) { - shape = "Salicus"; + if (is_fused(glyph->u.notes.liquescentia)) { + if (shape == SHAPE_Flexus || shape == SHAPE_FlexusLongqueue) { + if (fuse_to_next_note) { + fuse_head = ""; + } + if (*fuse_head) { + shape = SHAPE_Flexus; + } else { + shape = SHAPE_FlexusNobar; + } + } else if (shape == SHAPE_Porrectus) { + shape = SHAPE_PorrectusNobar; + } + } else { + if (fuse_to_next_note && shape == SHAPE_FlexusLongqueue) { + /* a porrectus-like flexus has no longqueue variant */ + shape = SHAPE_Flexus; + } + } + if (shape == SHAPE_SalicusLongqueue && liquescentia != LIQ_Nothing) { + /* the salicus queue is at the end of the glyph, and it doesn't exist + * for the liquescent forms */ + shape = SHAPE_Salicus; } current_note = current_note->next; if (!current_note->next) { - gregorio_snprintf(buf, BUFSIZE, "%s%s%s", shape, tex_ambitus[ambitus1], - liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[fuse_ambitus], + liquescentia, fuse_tail); return buf; } if (!(ambitus2 = compute_ambitus(current_note))) { @@ -435,24 +513,157 @@ static const char *compute_glyph_name(const gregorio_glyph *const glyph, } current_note = current_note->next; if (!current_note->next) { - gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s", shape, - tex_ambitus[ambitus1], tex_ambitus[ambitus2], liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[ambitus2], + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); return buf; } if (!(ambitus3 = compute_ambitus(current_note))) { return ""; } - gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s", shape, tex_ambitus[ambitus1], - tex_ambitus[ambitus2], tex_ambitus[ambitus3], liquescentia); + gregorio_snprintf(buf, BUFSIZE, "%s%s%s%s%s%s%s%s", fuse_head, shape, + tex_ambitus[ambitus1], tex_ambitus[ambitus2], tex_ambitus[ambitus3], + tex_ambitus[fuse_ambitus], liquescentia, fuse_tail); return buf; } +static const char *gregoriotex_determine_note_glyph_name(gregorio_note *note, + gregorio_glyph *glyph, gregorio_element *element, gtex_alignment *type) +{ + static char buf[128]; + const char *name; + + if (!note) { + gregorio_message(_("called with NULL pointer"), + "gregoriotex_determine_note_glyph_name", VERBOSITY_ERROR, 0); + return ""; + } + + *type = AT_ONE_NOTE; + switch (note->u.note.shape) { + case S_PUNCTUM_INCLINATUM: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumInclinatum; + case S_PUNCTUM_INCLINATUM_DEMINUTUS: + return SHAPE_PunctumInclinatumDeminutus; + case S_PUNCTUM_INCLINATUM_AUCTUS: + return SHAPE_PunctumInclinatumAuctus; + case S_PUNCTUM: + return compute_glyph_name(glyph, SHAPE_Punctum, LG_FUSIBLE_INITIO, true); + case S_PUNCTUM_AUCTUS_ASCENDENS: + return SHAPE_PunctumAscendens; + case S_PUNCTUM_AUCTUS_DESCENDENS: + return SHAPE_PunctumDescendens; + case S_PUNCTUM_DEMINUTUS: + return SHAPE_PunctumDeminutus; + case S_PUNCTUM_CAVUM: + return SHAPE_PunctumCavum; + case S_LINEA: + return SHAPE_Linea; + case S_LINEA_PUNCTUM: + return SHAPE_LineaPunctum; + case S_LINEA_PUNCTUM_CAVUM: + return SHAPE_LineaPunctumCavum; + case S_VIRGA: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_Virga; + } + return SHAPE_VirgaLongqueue; + case S_VIRGA_REVERSA: + switch (note->u.note.liquescentia) { + case L_AUCTUS_ASCENDENS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + name = SHAPE_VirgaReversaAscendens; + } else { + name = SHAPE_VirgaReversaLongqueueAscendens; + } + if (note->u.note.pitch - LOWEST_PITCH == 3) { + /* if we're on the 'd' line, the queue could be long or short */ + gregorio_snprintf(buf, sizeof buf, + "VirgaReversaAscendensOnDLine{\\GreCP%s}", name); + return buf; + } + return name; + case L_AUCTUS_DESCENDENS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_VirgaReversaDescendens; + } + return SHAPE_VirgaReversaLongqueueDescendens; + default: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return compute_glyph_name(glyph, SHAPE_VirgaReversa, LG_NONE, + true); + } + return compute_glyph_name(glyph, SHAPE_VirgaReversaLongqueue, + LG_NONE, true); + } + case S_ORISCUS_ASCENDENS: + *type = AT_ORISCUS; + return compute_glyph_name(glyph, SHAPE_Oriscus, LG_NONE, true); + case S_ORISCUS_DESCENDENS: + *type = AT_ORISCUS; + return compute_glyph_name(glyph, SHAPE_OriscusReversus, LG_NONE, true); + case S_ORISCUS_DEMINUTUS: + *type = AT_ORISCUS; + return SHAPE_OriscusDeminutus; + case S_QUILISMA: + *type = AT_QUILISMA; + return compute_glyph_name(glyph, SHAPE_Quilisma, LG_NONE, true); + case S_ORISCUS_SCAPUS: + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return compute_glyph_name(glyph, SHAPE_OriscusScapus, LG_NONE, + true); + } + return compute_glyph_name(glyph, SHAPE_OriscusScapusLongqueue, LG_NONE, + true); + case S_STROPHA: + *type = AT_STROPHA; + if (!(note->u.note.liquescentia & + (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS))) { + return SHAPE_Stropha; + } + /* else fall through to next case */ + case S_STROPHA_AUCTA: + *type = AT_STROPHA; + if (is_shortqueue(note->u.note.pitch, glyph, element)) { + return SHAPE_StrophaAucta; + } + return SHAPE_StrophaAuctaLongtail; + case S_PUNCTUM_CAVUM_INCLINATUM: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumCavumInclinatum; + case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: + *type = AT_PUNCTUM_INCLINATUM; + return SHAPE_PunctumCavumInclinatumAuctus; + case S_ORISCUS_CAVUM_ASCENDENS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavum; + case S_ORISCUS_CAVUM_DESCENDENS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavumAuctus; + case S_ORISCUS_CAVUM_DEMINUTUS: + *type = AT_ORISCUS; + return SHAPE_OriscusCavumDeminutus; + case S_FLAT: + return SHAPE_Flat; + case S_SHARP: + return SHAPE_Sharp; + case S_NATURAL: + return SHAPE_Natural; + default: + gregorio_messagef("gregoriotex_determine_note_glyph_name", + VERBOSITY_ERROR, 0, _("called with unknown shape: %s"), + gregorio_shape_to_string(note->u.note.shape)); + return ""; + } +} + /* the function that calculates the number of the glyph. It also * calculates the type, used for determining the position of signs. Type is * very basic, it is only the global dimensions : torculus, one_note, etc. */ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, - const gregorio_element *const element, gtex_alignment *const type, + const gregorio_element *const element, gtex_alignment *const type, gtex_type *const gtype) { const char *shape = NULL; @@ -477,47 +688,40 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *type = AT_QUILISMA; /* the next if is because we made the choice that AUCTUS shapes * look like pes quadratum. */ - if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { *gtype = T_PESQUILISMAQUADRATUM; - shape = "PesQuilismaQuadratum"; + shape = SHAPE_PesQuilismaQuadratum; } else { *gtype = T_PESQUILISMA; - shape = "PesQuilisma"; + shape = SHAPE_PesQuilisma; } ltype = LG_NO_INITIO; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: case S_ORISCUS_SCAPUS: *type = AT_ORISCUS; /* TODO: we could factorize this code */ - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUASSUS_LONGQUEUE; - shape = "PesQuassusLongqueue"; + shape = SHAPE_PesQuassusLongqueue; } else { *gtype = T_PESQUASSUS; - shape = "PesQuassus"; + shape = SHAPE_PesQuassus; } ltype = LG_NO_INITIO; break; default: *type = AT_ONE_NOTE; - if (glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia + & (L_AUCTUS_ASCENDENS | L_AUCTUS_DESCENDENS)) { *gtype = T_PESQUADRATUM; - shape = "PesQuadratum"; + shape = SHAPE_PesQuadratum; } else { *gtype = T_PES; - shape = "Pes"; + shape = SHAPE_Pes; } ltype = LG_ALL; break; @@ -528,37 +732,38 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, switch (glyph->u.notes.first_note->u.note.shape) { case S_QUILISMA: *type = AT_QUILISMA; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUILISMAQUADRATUM_LONGQUEUE; - shape = "PesQuilismaQuadratumLongqueue"; + shape = SHAPE_PesQuilismaQuadratumLongqueue; } else { *gtype = T_PESQUILISMAQUADRATUM; - shape = "PesQuilismaQuadratum"; + shape = SHAPE_PesQuilismaQuadratum; } ltype = LG_NO_INITIO; break; - case S_ORISCUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: *type = AT_ORISCUS; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUASSUS_LONGQUEUE; - shape = "PesQuadratumLongqueue"; + shape = SHAPE_PesQuadratumLongqueue; } else { *gtype = T_PESQUASSUS; - shape = "PesQuassus"; + shape = SHAPE_PesQuassus; } ltype = LG_NO_INITIO; break; default: *type = AT_ONE_NOTE; - if (glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + if (!is_tail_liquescentia(glyph->u.notes.liquescentia) && is_longqueue(pitch, glyph, element)) { *gtype = T_PESQUADRATUM_LONGQUEUE; - shape = "PesQuadratumLongqueue"; + shape = SHAPE_PesQuadratumLongqueue; } else { *gtype = T_PESQUADRATUM; - shape = "PesQuadratum"; + shape = SHAPE_PesQuadratum; } ltype = LG_ALL; break; @@ -568,12 +773,12 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, pitch = glyph->u.notes.first_note->next->u.note.pitch; *type = AT_ONE_NOTE; *gtype = T_VIRGA_STRATA; - shape = "VirgaStrata"; + shape = SHAPE_VirgaStrata; ltype = LG_ALL; break; case G_FLEXA: pitch = glyph->u.notes.first_note->u.note.pitch; - if (glyph->u.notes.liquescentia == L_DEMINUTUS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { *type = AT_FLEXUS_DEMINUTUS; } else { if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) { @@ -582,39 +787,48 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *type = AT_FLEXUS; } } - if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: *gtype = T_FLEXUS_ORISCUS; - shape = "FlexusOriscus"; + shape = SHAPE_FlexusOriscus; ltype = LG_NO_INITIO; - } else if (glyph->u.notes.first_note->u.note.shape == S_ORISCUS_SCAPUS) { + break; + + case S_ORISCUS_SCAPUS: if (is_shortqueue(pitch, glyph, element)) { *gtype = T_FLEXUS_ORISCUS_SCAPUS; - shape = "FlexusOriscusScapus"; + shape = SHAPE_FlexusOriscusScapus; } else { *gtype = T_FLEXUS_ORISCUS_SCAPUS_LONGQUEUE; - shape = "FlexusOriscusScapusLongqueue"; + shape = SHAPE_FlexusOriscusScapusLongqueue; } ltype = LG_NO_INITIO; - } else { + break; + + default: if (is_shortqueue(pitch, glyph, element)) { - *gtype = T_FLEXUS; - shape = "Flexus"; + *gtype = glyph->u.notes.fuse_to_next_glyph? T_PORRECTUS + : T_FLEXUS; + shape = SHAPE_Flexus; } else { - *gtype = T_FLEXUS_LONGQUEUE; - shape = "FlexusLongqueue"; + *gtype = glyph->u.notes.fuse_to_next_glyph ? T_PORRECTUS + : T_FLEXUS_LONGQUEUE; + shape = SHAPE_FlexusLongqueue; } ltype = LG_NO_INITIO; + break; } break; case G_TORCULUS: *gtype = T_TORCULUS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusQuilisma"; + shape = SHAPE_TorculusQuilisma; ltype = LG_NO_INITIO; } else { *type = AT_ONE_NOTE; - shape = "Torculus"; + shape = SHAPE_Torculus; ltype = LG_ALL; } break; @@ -622,10 +836,10 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, *gtype = T_TORCULUS_LIQUESCENS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusLiquescensQuilisma"; + shape = SHAPE_TorculusLiquescensQuilisma; } else { *type = AT_ONE_NOTE; - shape = "TorculusLiquescens"; + shape = SHAPE_TorculusLiquescens; } ltype = LG_ONLY_DEMINUTUS; break; @@ -636,41 +850,40 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_PORRECTUS: *type = AT_PORRECTUS; *gtype = T_PORRECTUS; - shape = "Porrectus"; + shape = SHAPE_Porrectus; ltype = LG_NO_INITIO; break; case G_TORCULUS_RESUPINUS: *gtype = T_TORCULUS_RESUPINUS; if (glyph->u.notes.first_note->u.note.shape == S_QUILISMA) { *type = AT_QUILISMA; - shape = "TorculusResupinusQuilisma"; + shape = SHAPE_TorculusResupinusQuilisma; } else { *type = AT_ONE_NOTE; - shape = "TorculusResupinus"; + shape = SHAPE_TorculusResupinus; } ltype = LG_ALL; break; case G_PORRECTUS_FLEXUS: *type = AT_PORRECTUS; *gtype = T_PORRECTUS_FLEXUS; - shape = "PorrectusFlexus"; + shape = SHAPE_PorrectusFlexus; ltype = LG_NO_INITIO; break; case G_PORRECTUS_NO_BAR: *type = AT_PORRECTUS; *gtype = T_TORCULUS_RESUPINUS; - shape = "PorrectusNobar"; + shape = SHAPE_PorrectusNobar; ltype = LG_NO_INITIO; break; case G_PORRECTUS_FLEXUS_NO_BAR: *type = AT_PORRECTUS; *gtype = T_TORCULUS_RESUPINUS_FLEXUS; - shape = "PorrectusFlexusNobar"; + shape = SHAPE_PorrectusFlexusNobar; ltype = LG_NO_INITIO; break; case G_ANCUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { if (pitch - glyph->u.notes.first_note->next->u.note.pitch == 1) { *type = AT_FLEXUS_1; } else { @@ -678,10 +891,10 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, } if (is_shortqueue(pitch, glyph, element)) { *gtype = T_ANCUS; - shape = "Ancus"; + shape = SHAPE_Ancus; } else { *gtype = T_ANCUS_LONGQUEUE; - shape = "AncusLongqueue"; + shape = SHAPE_AncusLongqueue; } ltype = LG_ONLY_DEMINUTUS; } else { @@ -692,7 +905,7 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_SCANDICUS: *type = AT_ONE_NOTE; *gtype = T_SCANDICUS; - shape = "Scandicus"; + shape = SHAPE_Scandicus; ltype = LG_NO_INITIO; break; case G_SALICUS: @@ -700,13 +913,19 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, pitch = glyph->u.notes.first_note->next->next->u.note.pitch; if (is_longqueue(pitch, glyph, element)) { *gtype = T_SALICUS_LONGQUEUE; - shape = "SalicusLongqueue"; + shape = SHAPE_SalicusLongqueue; } else { *gtype = T_SALICUS; - shape = "Salicus"; + shape = SHAPE_Salicus; } ltype = LG_NO_INITIO; break; + case G_SALICUS_FLEXUS: + *type = AT_ONE_NOTE; + *gtype = T_SALICUS_FLEXUS; + shape = SHAPE_SalicusFlexus; + ltype = LG_NO_INITIO; + break; case G_ONE_NOTE: case G_PUNCTUM_INCLINATUM: case G_TRIGONUS: @@ -730,16 +949,17 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, case G_TRISTROPHA_AUCTA: case G_BIVIRGA: case G_TRIVIRGA: + case G_ALTERATION: *type = AT_ONE_NOTE; break; default: gregorio_messagef("gregoriotex_determine_glyph_name", VERBOSITY_ERROR, - 0, _("called with unknown glyph: %d"), - glyph->u.notes.glyph_type); + 0, _("called with unknown glyph: %s"), + gregorio_glyph_type_to_string(glyph->u.notes.glyph_type)); break; } if (shape) { - shape = compute_glyph_name(glyph, shape, ltype); + shape = compute_glyph_name(glyph, shape, ltype, false); } /* we fix *type with initio_debilis */ if (*type == AT_ONE_NOTE) { @@ -752,8 +972,7 @@ const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, } /** - * This now does nothing useful, since the manuscript_reference is - * now part of the score info. But we keep it here in case it may + * This now does nothing useful, but we keep it here in case it may * be needed in future. */ static void gregoriotex_write_voice_info(FILE *f, gregorio_voice_info *voice_info) @@ -776,17 +995,19 @@ static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) /* the next syllable start by an end of line */ return true; } - current_element = (syllable->elements)[0]; - while (current_element) { - if (current_element->type == GRE_END_OF_LINE) { - /* we return true only if the end of line is the last element */ - if (!(current_element->next)) { - return true; + if (syllable->elements) { + current_element = (syllable->elements)[0]; + while (current_element) { + if (current_element->type == GRE_END_OF_LINE) { + /* we return true only if the end of line is the last element */ + if (!(current_element->next)) { + return true; + } else { + return false; + } } else { - return false; + current_element = current_element->next; } - } else { - current_element = current_element->next; } } return false; @@ -798,8 +1019,7 @@ static bool gregoriotex_is_last_of_line(gregorio_syllable *syllable) static __inline bool is_clef(gregorio_type x) { - return x == GRE_C_KEY_CHANGE || x == GRE_F_KEY_CHANGE || - x == GRE_C_KEY_CHANGE_FLATED || x == GRE_F_KEY_CHANGE_FLATED; + return x == GRE_CLEF; } /* @@ -1129,7 +1349,7 @@ static grestyle_style gregoriotex_fix_style(gregorio_character *first_character) current_char = current_char->next_character; } /* if we reached here, this means that we there is only one style applied - * to all the syllables */ + * to all the characters */ return possible_fixed_style; } @@ -1146,20 +1366,24 @@ static void gregoriotex_write_translation(FILE *f, if (translation == NULL) { return; } - gregorio_write_text(false, translation, f, - (>ex_write_verb), - (>ex_print_char), - (>ex_write_begin), (>ex_write_end), (>ex_write_special_char)); + gregorio_write_text(WTP_NORMAL, translation, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); } /* a function to compute the height of the flat of a key * the flat is always on the line of the */ -static char gregoriotex_clef_flat_height(char step, int line) +static char clef_flat_height(gregorio_clef clef, signed char line, bool flatted) { char offset = 6; - switch (step) { - case C_KEY: + + if (!flatted) { + return NO_KEY_FLAT; + } + + switch (clef) { + case CLEF_C: switch (line) { case 1: offset = 2; @@ -1173,13 +1397,16 @@ static char gregoriotex_clef_flat_height(char step, int line) case 4: offset = 8; break; + case 5: + offset = 10; + break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, _("unknown line number: %d"), line); break; } break; - case F_KEY: + case CLEF_F: switch (line) { case 1: offset = 6; @@ -1193,15 +1420,18 @@ static char gregoriotex_clef_flat_height(char step, int line) case 4: offset = 5; break; + case 5: + offset = 7; + break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, _("unknown line number: %d"), line); break; } break; default: - gregorio_messagef("gregoriotex_clef_flat_height", VERBOSITY_ERROR, 0, - _("unknown clef type: %d"), step); + gregorio_messagef("clef_flat_height", VERBOSITY_ERROR, 0, + _("unknown clef type: %d"), clef); break; } @@ -1212,8 +1442,8 @@ OFFSET_CASE(BarStandard); OFFSET_CASE(BarVirgula); OFFSET_CASE(BarDivisioFinalis); -static void gregoriotex_write_bar(FILE *f, gregorio_bar type, - gregorio_sign signs, bool is_inside_bar) +static void write_bar(FILE *f, gregorio_bar type, + gregorio_sign signs, bool is_inside_bar, bool has_text) { /* the type number of function vepisemaorrare */ const char *offset_case = BarStandard; @@ -1258,11 +1488,18 @@ static void gregoriotex_write_bar(FILE *f, gregorio_bar type, case B_DIVISIO_MINOR_D6: fprintf(f, "Dominica{6}"); break; + case B_DIVISIO_MINOR_D7: + fprintf(f, "Dominica{7}"); + break; + case B_DIVISIO_MINOR_D8: + fprintf(f, "Dominica{8}"); + break; default: - gregorio_messagef("gregoriotex_write_bar", VERBOSITY_ERROR, 0, + gregorio_messagef("write_bar", VERBOSITY_ERROR, 0, _("unknown bar type: %d"), type); break; } + fprintf(f, "{%c}", has_text? '1' : '0'); switch (signs) { case _V_EPISEMA: fprintf(f, "{\\GreBarVEpisema{\\GreOCase%s}}%%\n", offset_case); @@ -1281,6 +1518,16 @@ static void gregoriotex_write_bar(FILE *f, gregorio_bar type, } } +static __inline char *suppose_high_ledger_line(const gregorio_note *const note) +{ + return note->supposed_high_ledger_line? "\\GreSupposeHighLedgerLine" : ""; +} + +static __inline char *suppose_low_ledger_line(const gregorio_note *const note) +{ + return note->supposed_low_ledger_line? "\\GreSupposeLowLedgerLine" : ""; +} + /* * ! @brief Writes augmentum duplexes (double dots) We suppose we are on the * last note. \n The algorithm is the following: if there is a previous note, @@ -1338,7 +1585,7 @@ static void gregoriotex_write_auctum_duplex(FILE *f, * more straightforward than it actually is... */ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, - gregorio_note *current_note) + gregorio_note *current_note, int fuse_to_next_note) { /* in this if we consider that the puncta are only on the last two notes * (maybe it would be useful to consider it more entirely, but it would be @@ -1364,9 +1611,7 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, case G_TORCULUS: case G_TORCULUS_RESUPINUS_FLEXUS: case G_PORRECTUS_FLEXUS: - if (glyph->u.notes.liquescentia != L_DEMINUTUS - && glyph->u.notes.liquescentia != - L_DEMINUTUS_INITIO_DEBILIS) { + if (!(glyph->u.notes.liquescentia & L_DEMINUTUS)) { shift_before = true; } if (is_between_lines(pitch) @@ -1376,13 +1621,9 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, break; case G_PODATUS: if ((current_note->u.note.shape != S_PUNCTUM - && current_note->u.note.shape != S_QUILISMA) - || glyph->u.notes.liquescentia == L_AUCTUS_DESCENDENS - || glyph->u.notes.liquescentia == L_AUCTUS_ASCENDENS - || glyph->u.notes.liquescentia == - L_AUCTUS_ASCENDENS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == - L_AUCTUS_DESCENDENS_INITIO_DEBILIS) { + && current_note->u.note.shape != S_QUILISMA) + || (glyph->u.notes.liquescentia + & (L_AUCTUS_DESCENDENS | L_AUCTUS_ASCENDENS))) { shift_before = true; /* fine tuning */ if (current_note->next->u.note.pitch - @@ -1487,6 +1728,7 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, * removes the space introduced by the punctummora. */ if (glyph->u.notes.glyph_type == G_PODATUS && glyph->next && glyph->next->type == GRE_SPACE + && glyph->next->u.misc.unpitched.info.space == SP_ZERO_WIDTH && current_note->next && glyph->next->next && glyph->next->next->type == GRE_GLYPH && glyph->next->next->u.notes.first_note @@ -1509,6 +1751,13 @@ static void gregoriotex_write_punctum_mora(FILE *f, gregorio_glyph *glyph, } tmpnote = tmpnote->next; } + /* use a special no-space punctum mora for ascending fusion */ + if (fuse_to_next_note) { + no_space = 1; + if (fuse_to_next_note > 0) { + special_punctum = 1; + } + } /* the normal operation */ fprintf(f, "\\GrePunctumMora{%d}{%d}{%d}{%d}%%\n", pitch_value(pitch), @@ -1527,24 +1776,24 @@ static __inline int get_punctum_inclinatum_space_case( /* means that it is the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; - /* if (temp < -1 || temp > 1) */ + /* negative values = ascending ambitus */ + /* not sure we ever need to consider a larger ambitus here */ switch (temp) { - /* we switch on the range of the inclinata this will look - * somewhat strange if temp is negative... to be aligned - * then, */ - case -2: + case 1: + default: + return 3; case 2: return 10; - case -3: case 3: - return 11; - case -4: case 4: - /* not sure we ever need to consider a larger ambitus here */ return 11; - default: - return 3; - break; + case -1: + return 12; + case -2: + return 14; + case -3: + case -4: + return 15; } } break; @@ -1553,22 +1802,34 @@ static __inline int get_punctum_inclinatum_space_case( /* means that it is the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; - if (temp < -2 || temp > 2) { + if (temp < -2) { + return 15; + } else if (temp > 2) { return 11; } else { if (note->previous && note->previous->u.note.shape == S_PUNCTUM_INCLINATUM_DEMINUTUS) { - if (temp < -1 || temp > 1) { + if (temp < -1) { + /* really if the ambitus = 3rd at this point */ + return 14; + } else if (temp > 1) { /* really if the ambitus = 3rd at this point */ return 10; } else { + /* temp == 0, so there is no ascending case */ return 8; } } else { - /* puncta inclinatum followed by puncta inclinatum - * debilis */ - return 7; + if (temp < 0) { + /* puncta inclinatum followed by puncta inclinatum + * debilis */ + return 13; + } else if (temp > 0) { + /* puncta inclinatum followed by puncta inclinatum + * debilis */ + return 7; + } } } } @@ -1576,12 +1837,15 @@ static __inline int get_punctum_inclinatum_space_case( case S_PUNCTUM_INCLINATUM_AUCTUS: case S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS: if (note->previous) { - /* means that it is the first note of the puncta inclinata + /* means that it is not the first note of the puncta inclinata * sequence */ temp = note->previous->u.note.pitch - note->u.note.pitch; if (temp < -1 || temp > 1) { + /* this is the normal interglyph space, so we'll use it for + * either direction */ return 1; } else { + /* temp == 0, so there is no ascending case */ /* we approximate that it is the same space */ return 3; } @@ -1594,6 +1858,42 @@ static __inline int get_punctum_inclinatum_space_case( return -1; } +static __inline int get_punctum_inclinatum_to_nobar_space_case( + const gregorio_glyph *const glyph) +{ + if (glyph->u.notes.glyph_type <= G_PUNCTA_INCLINATA) { + const gregorio_glyph *next = gregorio_next_non_texverb_glyph(glyph); + if (next && next->type == GRE_GLYPH + && (next->u.notes.glyph_type == G_PUNCTUM + || (next->u.notes.glyph_type == G_FLEXA + && !next->u.notes.fuse_to_next_glyph))) { + int descent; + gregorio_note *note = gregorio_glyph_last_note(glyph); + descent = note->u.note.pitch - + glyph->next->u.notes.first_note->u.note.pitch; + /* a negative descent is an ascent */ + switch(descent) { + case -1: + return 19; + case 1: + return 16; + case -2: + return 20; + case 2: + return 17; + case -3: + case -4: + return 21; + case 3: + case 4: + return 18; + } + } + } + + return -1; +} + static __inline void write_single_hepisema(FILE *const f, int hepisema_case, const gregorio_note *const note, bool connect, char height, const grehepisema_size size, const int i, @@ -1630,13 +1930,19 @@ static __inline void write_single_hepisema(FILE *const f, int hepisema_case, if (i - 1 != porrectus_long_episema_index || !note->previous || !is_episema_shown(note->previous)) { if (connect) { - if (!note->next && (!glyph->next - || glyph->next->type != GRE_SPACE - || glyph->next->u.misc.unpitched.info.space + const gregorio_glyph *next; + if (!note->next + && (!(next = gregorio_next_non_texverb_glyph(glyph)) + || next->type != GRE_SPACE + || next->u.misc.unpitched.info.space != SP_ZERO_WIDTH)) { /* not followed by a zero-width space */ - fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{-1}%%\n", - pitch_value(height), hepisema_case); + /* try to fuse from punctum inclinatum to nobar glyph */ + fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}{%s%s}%%\n", + pitch_value(height), hepisema_case, + get_punctum_inclinatum_to_nobar_space_case(glyph), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } else if (note->next && (note->next->u.note.shape == S_PUNCTUM_INCLINATUM || note->next->u.note.shape @@ -1644,14 +1950,18 @@ static __inline void write_single_hepisema(FILE *const f, int hepisema_case, || note->next->u.note.shape == S_PUNCTUM_INCLINATUM_AUCTUS)) { /* is a punctum inclinatum of some sort */ - fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}%%\n", + fprintf(f, "\\GreHEpisemaBridge{%d}{%d}{%d}{%s%s}%%\n", pitch_value(height), hepisema_case, - get_punctum_inclinatum_space_case(note->next)); + get_punctum_inclinatum_space_case(note->next), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } } - fprintf(f, "\\GreHEpisema{%d}{\\GreOCase%s}{%d}{%d}{%c}{%d}%%\n", - pitch_value(height), note->gtex_offset_case, ambitus, - hepisema_case, size_arg, pitch_value(height)); + fprintf(f, "\\GreHEpisema{%d}{\\GreOCase%s}{%d}{%d}{%c}{%d}" + "{%s%s}%%\n", pitch_value(height), note->gtex_offset_case, + ambitus, hepisema_case, size_arg, pitch_value(height), + suppose_high_ledger_line(note), + suppose_low_ledger_line(note)); } } } @@ -1694,14 +2004,13 @@ static void gregoriotex_write_hepisema(FILE *const f, /* a macro to write an additional line */ -static void gregoriotex_write_additional_line(FILE *f, - int i, gtex_type type, bool bottom, - gregorio_note *current_note) +static void write_additional_line(FILE *f, int i, gtex_type type, bool bottom, + gregorio_note *current_note, const gregorio_score *const score) { char ambitus = 0; if (!current_note) { - gregorio_message(_("called with no note"), - "gregoriotex_write_additional_line", VERBOSITY_ERROR, 0); + gregorio_message(_("called with no note"), "write_additional_line", + VERBOSITY_ERROR, 0); return; } /* patch to get a line under the full glyph in the case of dbc (for @@ -1713,9 +2022,9 @@ static void gregoriotex_write_additional_line(FILE *f, i = HEPISEMA_FIRST_TWO; } if (i == 2) { - if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF + if (current_note->previous->u.note.pitch > LOW_LEDGER_LINE_PITCH && current_note->previous->u.note.pitch - <= PITCH_ABOVE_STAFF) { + < score->high_ledger_line_pitch) { i = HEPISEMA_FIRST_TWO; /* HEPISEMA_FIRST_TWO works only for first note */ current_note = current_note->previous; @@ -1725,7 +2034,7 @@ static void gregoriotex_write_additional_line(FILE *f, } if (i == 3) { if (bottom || current_note->previous->u.note.pitch - > PITCH_ABOVE_STAFF) { + >= score->high_ledger_line_pitch) { /* we don't need to add twice the same line */ return; } @@ -1737,9 +2046,9 @@ static void gregoriotex_write_additional_line(FILE *f, i = HEPISEMA_FIRST_TWO; } if (i == 3) { - if (current_note->previous->u.note.pitch >= PITCH_BELOW_STAFF + if (current_note->previous->u.note.pitch > LOW_LEDGER_LINE_PITCH && current_note->previous->u.note.pitch - <= PITCH_ABOVE_STAFF) { + < score->high_ledger_line_pitch) { i = HEPISEMA_FIRST_TWO; /* HEPISEMA_FIRST_TWO works only for first note */ current_note = current_note->previous; @@ -1749,7 +2058,7 @@ static void gregoriotex_write_additional_line(FILE *f, } if (i == 4) { if (bottom || current_note->previous->u.note.pitch - > PITCH_ABOVE_STAFF) { + >= score->high_ledger_line_pitch) { /* we don't need to add twice the same line */ return; } @@ -1847,18 +2156,20 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, "gregoriotex_write_note", VERBOSITY_ERROR, 0); return; } - if (note->u.note.shape == S_PUNCTUM - && note->u.note.liquescentia != L_NO_LIQUESCENTIA) { + if (note->u.note.shape == S_PUNCTUM) { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: note->u.note.shape = S_PUNCTUM_AUCTUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - case L_AUCTA: note->u.note.shape = S_PUNCTUM_AUCTUS_DESCENDENS; break; - case L_DEMINUTUS: case L_INITIO_DEBILIS: + if (glyph->u.notes.fuse_to_next_glyph > 0) { + break; + } + /* else fall through to next case */ + case L_DEMINUTUS: note->u.note.shape = S_PUNCTUM_DEMINUTUS; default: break; @@ -1888,6 +2199,21 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), type); break; + case S_ORISCUS_CAVUM_ASCENDENS: + fprintf(f, "\\GreOriscusCavum{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; + case S_ORISCUS_CAVUM_DESCENDENS: + fprintf(f, "\\GreOriscusCavumAuctus{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; + case S_ORISCUS_CAVUM_DEMINUTUS: + fprintf(f, "\\GreOriscusCavumDeminutus{%d}{%d}{%d}", + pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), + type); + break; case S_LINEA_PUNCTUM_CAVUM: fprintf(f, "\\GreLineaPunctumCavum{%d}{%d}{%d}", pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), @@ -1897,6 +2223,15 @@ static void gregoriotex_write_note(FILE *f, gregorio_note *note, fprintf(f, "\\GreLinea{%d}{%d}{%d}", pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), type); break; + case S_FLAT: + fprintf(f, "\\GreFlat{%d}{0}", pitch_value(note->u.note.pitch)); + break; + case S_NATURAL: + fprintf(f, "\\GreNatural{%d}{0}", pitch_value(note->u.note.pitch)); + break; + case S_SHARP: + fprintf(f, "\\GreSharp{%d}{0}", pitch_value(note->u.note.pitch)); + break; default: fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(note->u.note.pitch), pitch_value(next_note_pitch), @@ -1915,9 +2250,10 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) int alteration = 0; gregorio_glyph *glyph; gregorio_element *element; - if (!syllable) { + if (!syllable || !syllable->elements) { gregorio_message(_("called with a NULL argument"), "gregoriotex_syllable_first_type", VERBOSITY_ERROR, 0); + return 0; } element = syllable->elements[0]; while (element) { @@ -1936,6 +2272,8 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) case B_DIVISIO_MINOR_D4: case B_DIVISIO_MINOR_D5: case B_DIVISIO_MINOR_D6: + case B_DIVISIO_MINOR_D7: + case B_DIVISIO_MINOR_D8: result = 11; break; case B_DIVISIO_FINALIS: @@ -1948,26 +2286,27 @@ static int gregoriotex_syllable_first_type(gregorio_syllable *syllable) return result; } if (element->type == GRE_ELEMENT && element->u.first_glyph) { - glyph = element->u.first_glyph; - while (glyph) { - if (alteration == 0) { - switch (glyph->type) { - case GRE_FLAT: - alteration = 20; - break; - case GRE_NATURAL: - alteration = 40; - break; - case GRE_SHARP: - alteration = 60; - break; - default: - /* do nothing */ - break; - } - } + for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { switch (glyph->u.notes.glyph_type) { + case G_ALTERATION: + if (alteration == 0) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_FLAT: + alteration = 20; + break; + case S_NATURAL: + alteration = 40; + break; + case S_SHARP: + alteration = 60; + break; + default: + /* do nothing */ + break; + } + } + continue; case G_TRIGONUS: case G_PUNCTA_INCLINATA: case G_2_PUNCTA_INCLINATA_DESCENDENS: @@ -2144,7 +2483,8 @@ static __inline void fixup_height_extrema(signed char *const top_height, static void gregoriotex_write_signs(FILE *f, gtex_type type, gregorio_glyph *glyph, gregorio_note *note, - gregoriotex_status *const status) + int fuse_to_next_note, gregoriotex_status *const status, + const gregorio_score *const score) { /* i is the number of the note for which we are typesetting the sign. */ int i; @@ -2161,12 +2501,12 @@ static void gregoriotex_write_signs(FILE *f, gtex_type type, for (current_note = note, i = 1; current_note; current_note = current_note->next, ++i) { /* we start by the additional lines */ - if (current_note->u.note.pitch < PITCH_BELOW_STAFF) { - gregoriotex_write_additional_line(f, i, type, true, current_note); + if (current_note->u.note.pitch <= LOW_LEDGER_LINE_PITCH) { + write_additional_line(f, i, type, true, current_note, score); status->bottom_line = 1; } - if (current_note->u.note.pitch > PITCH_ABOVE_STAFF) { - gregoriotex_write_additional_line(f, i, type, false, current_note); + if (current_note->u.note.pitch >= score->high_ledger_line_pitch) { + write_additional_line(f, i, type, false, current_note, score); } if (current_note->texverb) { fprintf(f, "%% verbatim text at note level:\n%s%%\n" @@ -2234,7 +2574,8 @@ static void gregoriotex_write_signs(FILE *f, gtex_type type, switch (current_note->signs) { case _PUNCTUM_MORA: case _V_EPISEMA_PUNCTUM_MORA: - gregoriotex_write_punctum_mora(f, glyph, current_note); + gregoriotex_write_punctum_mora(f, glyph, current_note, + fuse_to_next_note); break; case _AUCTUM_DUPLEX: case _V_EPISEMA_AUCTUM_DUPLEX: @@ -2269,8 +2610,8 @@ static char *determine_leading_shape(gregorio_glyph *glyph) case S_QUILISMA: head = "Quilisma"; break; - case S_ORISCUS: - case S_ORISCUS_SCAPUS: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: head = "Oriscus"; break; default: @@ -2278,17 +2619,10 @@ static char *determine_leading_shape(gregorio_glyph *glyph) break; } - switch (glyph->u.notes.liquescentia) { - case L_INITIO_DEBILIS: - case L_DEMINUTUS_INITIO_DEBILIS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - case L_AUCTA_INITIO_DEBILIS: + if (glyph->u.notes.liquescentia & L_INITIO_DEBILIS) { head_liquescence = "InitioDebilis"; - break; - default: + } else { head_liquescence = ""; - break; } gregorio_snprintf(buf, BUFSIZE, "Leading%s%s%s", head, tex_ambitus[ambitus], @@ -2296,9 +2630,9 @@ static char *determine_leading_shape(gregorio_glyph *glyph) return buf; } -static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, +static void write_glyph(FILE *f, gregorio_syllable *syllable, gregorio_element *element, gregorio_glyph *glyph, - gregoriotex_status *const status) + gregoriotex_status *const status, const gregorio_score *const score) { /* glyph number is the number of the glyph in the fonte, it is discussed in * later comments @@ -2311,16 +2645,25 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, char next_note_pitch = 0; gregorio_note *current_note; const char *leading_shape, *shape; + const gregorio_glyph *prev_glyph = + gregorio_previous_non_texverb_glyph(glyph); + int fuse_to_next_note, fuse_from_previous_note = + (prev_glyph && prev_glyph->type == GRE_GLYPH) + ? prev_glyph->u.notes.fuse_to_next_glyph : 0; if (!glyph) { - gregorio_message(_("called with NULL pointer"), - "gregoriotex_write_glyph", VERBOSITY_ERROR, 0); + gregorio_message(_("called with NULL pointer"), "write_glyph", + VERBOSITY_ERROR, 0); return; } if (glyph->type != GRE_GLYPH || !glyph->u.notes.first_note) { - gregorio_message(_("called with glyph without note"), - "gregoriotex_write_glyph", VERBOSITY_ERROR, 0); + gregorio_message(_("called with glyph without note"), "write_glyph", + VERBOSITY_ERROR, 0); return; } + fuse_to_next_note = glyph->u.notes.fuse_to_next_glyph; + if (fuse_from_previous_note) { + fprintf(f, "\\GreFuse"); + } next_note_pitch = gregorio_determine_next_pitch(syllable, element, glyph); current_note = glyph->u.notes.first_note; /* first we check if it is really a unique glyph in gregoriotex... the @@ -2341,52 +2684,57 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; } + /* TODO: handle fusion to next note */ break; case G_SCANDICUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS - || glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA) { + if ((glyph->u.notes.liquescentia & L_DEMINUTUS) + || glyph->u.notes.liquescentia == L_NO_LIQUESCENTIA + || glyph->u.notes.liquescentia == L_FUSED) { shape = gregoriotex_determine_glyph_name(glyph, element, &type, >ype); fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); } else { while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, - status); + current_note->next ? 0 : fuse_to_next_note, status, + score); current_note = current_note->next; } } break; case G_ANCUS: - if (glyph->u.notes.liquescentia == L_DEMINUTUS - || glyph->u.notes.liquescentia == L_DEMINUTUS_INITIO_DEBILIS) { + if (glyph->u.notes.liquescentia & L_DEMINUTUS) { shape = gregoriotex_determine_glyph_name(glyph, element, &type, >ype); fprintf(f, "\\GreGlyph{\\GreCP%s}{%d}{%d}{%d}", shape, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); } else { while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, - status); + current_note->next ? 0 : fuse_to_next_note, status, + score); current_note = current_note->next; } } break; case G_TORCULUS_RESUPINUS_FLEXUS: + /* we retain this "old-style" fusion as it does look marginally better + * on screen */ leading_shape = determine_leading_shape(glyph); /* trick to have the good position for these glyphs */ glyph->u.notes.glyph_type = G_PORRECTUS_FLEXUS_NO_BAR; @@ -2399,14 +2747,15 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, glyph->u.notes.first_note = current_note; glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS_FLEXUS; gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; case G_BIVIRGA: case G_TRIVIRGA: while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; if (current_note) { fprintf(f, "\\GreEndOfGlyph{4}%%\n"); @@ -2420,48 +2769,65 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, while (current_note) { gregoriotex_write_note(f, current_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + current_note->next ? 0 : fuse_to_next_note, status, score); current_note = current_note->next; if (current_note) { fprintf(f, "\\GreEndOfGlyph{5}%%\n"); } } break; + case G_PUNCTUM: - if (glyph->u.notes.first_note->u.note.shape != S_ORISCUS - && glyph->u.notes.first_note->u.note.shape != S_ORISCUS_AUCTUS - && glyph->u.notes.first_note->u.note.shape != - S_ORISCUS_DEMINUTUS - && glyph->u.notes.first_note->u.note.shape != - S_ORISCUS_SCAPUS) { + switch (glyph->u.notes.first_note->u.note.shape) { + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + case S_ORISCUS_SCAPUS: + /* don't change the oriscus */ + break; + + default: switch (glyph->u.notes.liquescentia) { case L_AUCTUS_ASCENDENS: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_AUCTUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - case L_AUCTA: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_AUCTUS_DESCENDENS; break; - case L_DEMINUTUS: case L_INITIO_DEBILIS: + if (glyph->u.notes.fuse_to_next_glyph > 0) { + break; + } + /* else fall through to next case */ + case L_DEMINUTUS: glyph->u.notes.first_note->u.note.shape = S_PUNCTUM_DEMINUTUS; default: break; } + break; } - /* else fall into the next case */ + + /* fall into the next case */ case G_PUNCTUM_INCLINATUM: case G_VIRGA: case G_VIRGA_REVERSA: case G_STROPHA: case G_STROPHA_AUCTA: + case G_ALTERATION: gregoriotex_write_note(f, glyph->u.notes.first_note, glyph, element, next_note_pitch); - gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, status); + gregoriotex_write_signs(f, T_ONE_NOTE, glyph, current_note, + fuse_to_next_note, status, score); break; default: + /* we retain this "old-style" fusion as it does look marginally better + * on screen */ /* special case of the torculus resupinus which first note is not a * punctum */ if (glyph->u.notes.glyph_type == G_TORCULUS_RESUPINUS @@ -2480,7 +2846,7 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, glyph->u.notes.first_note = current_note; glyph->u.notes.glyph_type = G_TORCULUS_RESUPINUS; gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; } else { shape = gregoriotex_determine_glyph_name(glyph, element, &type, @@ -2489,7 +2855,7 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, pitch_value(glyph->u.notes.first_note->u.note.pitch), pitch_value(next_note_pitch), type); gregoriotex_write_signs(f, gtype, glyph, glyph->u.notes.first_note, - status); + fuse_to_next_note, status, score); break; } } @@ -2498,17 +2864,28 @@ static void gregoriotex_write_glyph(FILE *f, gregorio_syllable *syllable, /* here we absolutely need to pass the syllable as an argument, because we * will need the next note, that may be contained in the next syllable */ -static void gregoriotex_write_element(FILE *f, gregorio_syllable *syllable, - gregorio_element *element, gregoriotex_status *status) +static void write_element(FILE *f, gregorio_syllable *syllable, + gregorio_element *element, gregoriotex_status *status, + const gregorio_score *const score) { if (element->type == GRE_ELEMENT) { gregorio_glyph *glyph; for (glyph = element->u.first_glyph; glyph; glyph = glyph->next) { switch (glyph->type) { case GRE_SPACE: - /* we assume here that it is a SP_ZERO_WIDTH, the only one a - * glyph can be */ - fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + switch (glyph->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + break; + case SP_HALF_SPACE: + fprintf(f, "\\GreEndOfGlyph{22}%%\n"); + break; + default: + gregorio_message( + _("encountered an unexpected glyph-level space"), + "write_element", VERBOSITY_ERROR, 0); + break; + } break; case GRE_TEXVERB_GLYPH: @@ -2518,31 +2895,28 @@ static void gregoriotex_write_element(FILE *f, gregorio_syllable *syllable, } break; - case GRE_FLAT: - fprintf(f, "\\GreFlat{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - - case GRE_NATURAL: - fprintf(f, "\\GreNatural{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - - case GRE_SHARP: - fprintf(f, "\\GreSharp{%d}{0}%%\n", - pitch_value(glyph->u.misc.pitched.pitch)); - break; - default: /* at this point glyph->type is GRE_GLYPH */ assert(glyph->type == GRE_GLYPH); - gregoriotex_write_glyph(f, syllable, element, glyph, status); - if (glyph->next && glyph->next->type == GRE_GLYPH) { - if (is_puncta_inclinata(glyph->next->u.notes.glyph_type) + write_glyph(f, syllable, element, glyph, status, score); + if (glyph->next && glyph->next->type == GRE_GLYPH && + glyph->next->u.notes.glyph_type != G_ALTERATION) { + if (is_fused(glyph->next->u.notes.liquescentia)) { + int space_case = + get_punctum_inclinatum_to_nobar_space_case(glyph); + if (space_case >= 0) { + /* fuse from punctum inclinatum to nobar glyph */ + fprintf(f, "\\GreEndOfGlyph{%d}%%\n", space_case); + } else { + fprintf(f, "\\GreEndOfGlyph{1}%%\n"); + } + } else if (is_puncta_inclinata( + glyph->next->u.notes.glyph_type) || glyph->next->u.notes.glyph_type == G_PUNCTA_INCLINATA) { fprintf(f, "\\GreEndOfGlyph{9}%%\n"); - } else { + } else if (glyph->u.notes.glyph_type != G_ALTERATION + || !glyph->next) { fprintf(f, "\\GreEndOfGlyph{0}%%\n"); } } @@ -2574,54 +2948,23 @@ static void write_fixed_text_styles(FILE *f, gregorio_character *syllable_text, } } -static void gregoriotex_write_text(FILE *f, gregorio_character *text, - bool *first_syllable) +static void write_text(FILE *const f, const gregorio_character *const text) { - bool skip_initial = first_syllable && *first_syllable; if (text == NULL) { fprintf(f, "{}{}{}{}{}"); - if (skip_initial) { - fprintf(f, "\\GreForceHyphen{}"); - } return; } fprintf(f, "{"); - gregorio_write_text(skip_initial, text, f, - (>ex_write_verb), (>ex_print_char), (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); + gregorio_write_text(WTP_NORMAL, text, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); fprintf(f, "}{"); - gregorio_write_first_letter_alignment_text(skip_initial, text, f, - (>ex_write_verb), (>ex_print_char), (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); - if (first_syllable) { - *first_syllable = false; - } + gregorio_write_first_letter_alignment_text(WTP_NORMAL, text, + f, >ex_write_verb, >ex_print_char, >ex_write_begin, + >ex_write_end, >ex_write_special_char); gregoriotex_ignore_style = gregoriotex_next_ignore_style; gregoriotex_next_ignore_style = ST_NO_STYLE; fprintf(f, "}"); - if (skip_initial) { - /* Check to see if we need to force a hyphen (empty first syllable) */ - for (; text; text = text->next_character) { - if (text->is_character) { - break; - } else if (text->cos.s.type == ST_T_BEGIN) { - if (text->cos.s.style == ST_VERBATIM || - text->cos.s.style == ST_SPECIAL_CHAR) { - break; - } else if (text->cos.s.style == ST_INITIAL) { - for (; text; text = text->next_character) { - if (!text->is_character && text->cos.s.type == ST_T_END - && text->cos.s.style == ST_INITIAL) { - break; - } - } - } - } - } - if (!text) { - fprintf(f, "\\GreForceHyphen{}"); - } - } } /* @@ -2633,59 +2976,22 @@ static void gregoriotex_write_text(FILE *f, gregorio_character *text, static void gregoriotex_print_change_line_clef(FILE *f, gregorio_element *current_element) { - if (current_element->type == GRE_C_KEY_CHANGE) { - if (current_element->u.misc.pitched.flatted_key) { - fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - current_element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreSetLinesClef{c}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT); - } - } - if (current_element->type == GRE_F_KEY_CHANGE) { - if (current_element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need for a - * space before the clef */ - fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - current_element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreSetLinesClef{f}{%d}{1}{%d}%%\n", - current_element->u.misc.pitched.pitch - '0', NO_KEY_FLAT); - } - } -} - -static void handle_final_bar(FILE *f, const char *type, gregorio_syllable *syllable) -{ - gregorio_element *element; - fprintf(f, "\\GreFinal%s{%%\n", type); - /* first element will be the bar, which we just handled, so skip it */ - for (element = (*syllable->elements)->next; element; - element = element->next) { - switch (element->type) { - case GRE_TEXVERB_ELEMENT: - if (element->texverb) { - fprintf(f, "%% verbatim text at element level:\n%s%%\n" - "%% end of verbatim text\n", element->texverb); - } - break; - - case GRE_CUSTOS: - assert(element->u.misc.pitched.force_pitch); - fprintf(f, "\\GreFinalCustos{%d}%%\n", - pitch_value(element->u.misc.pitched.pitch)); - break; - - default: - /* do nothing */ - break; - } + if (current_element->type == GRE_CLEF) { + /* the third argument is 0 or 1 according to the need for a space + * before the clef */ + fprintf(f, "\\GreSetLinesClef{%c}{%d}{1}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(current_element->u.misc.clef.clef), + current_element->u.misc.clef.line, + clef_flat_height(current_element->u.misc.clef.clef, + current_element->u.misc.clef.line, + current_element->u.misc.clef.flatted), + gregorio_clef_to_char( + current_element->u.misc.clef.secondary_clef), + current_element->u.misc.clef.secondary_line, + clef_flat_height(current_element->u.misc.clef.secondary_clef, + current_element->u.misc.clef.secondary_line, + current_element->u.misc.clef.secondary_flatted)); } - fprintf(f, "}%%\n"); } static __inline bool is_manual_custos(const gregorio_element *element) @@ -2739,6 +3045,48 @@ static __inline bool next_is_bar(const gregorio_syllable *syllable, return false; /* avoid gcc 5.1 warning */ } +static void finish_syllable(FILE *f, gregorio_syllable *syllable) { + /* Very last, if the syllable is the end of a no-linebreak area: */ + if (syllable->no_linebreak_area == NLBA_END) { + fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", + next_is_bar(syllable, NULL)? 3 : 1); + } + if (syllable->euouae == EUOUAE_END) { + fprintf(f, "\\GreEndEUOUAE{%d}%%\n", + next_is_bar(syllable, NULL)? 3 : 1); + } +} + +static void handle_final_bar(FILE *f, const char *type, gregorio_syllable *syllable) +{ + gregorio_element *element; + fprintf(f, "\\GreFinal%s{%%\n", type); + /* first element will be the bar, which we just handled, so skip it */ + for (element = (*syllable->elements)->next; element; + element = element->next) { + switch (element->type) { + case GRE_TEXVERB_ELEMENT: + if (element->texverb) { + fprintf(f, "%% verbatim text at element level:\n%s%%\n" + "%% end of verbatim text\n", element->texverb); + } + break; + + case GRE_CUSTOS: + assert(element->u.misc.pitched.force_pitch); + fprintf(f, "\\GreFinalCustos{%d}%%\n", + pitch_value(element->u.misc.pitched.pitch)); + break; + + default: + /* do nothing */ + break; + } + } + fprintf(f, "}%%\n"); + finish_syllable(f, syllable); +} + static __inline void write_syllable_point_and_click(FILE *const f, const gregorio_syllable *const syllable, const gregoriotex_status *const status) @@ -2749,6 +3097,140 @@ static __inline void write_syllable_point_and_click(FILE *const f, } } +static void write_syllable_text(FILE *f, const char *const syllable_type, + const gregorio_character *text, bool ignored __attribute__((unused))) +{ + if (syllable_type != NULL) { + fprintf(f, "%s{\\GreSetThisSyllable", syllable_type); + write_text(f, text); + fprintf(f, "}"); + } +} + +static void write_first_syllable_text(FILE *f, const char *const syllable_type, + const gregorio_character *const text, bool end_of_word) +{ + if (syllable_type == NULL || text == NULL) { + fprintf(f, "}{}{\\GreSetNoFirstSyllableText}"); + } else { + gregorio_character *text_with_initial = gregorio_clone_characters(text), + *text_without_initial = gregorio_clone_characters(text); + const gregorio_character *t; + + /* find out if there is a forced center -> has_forced_center */ + gregorio_center_determination center = CENTER_NOT_DETERMINED; + for (t = text; t; t = t->next_character) { + if (!t->is_character && t->cos.s.style == ST_FORCED_CENTER) { + center = CENTER_FULLY_DETERMINED; + break; + } + } + + gregorio_rebuild_first_syllable(&text_with_initial, false); + gregorio_rebuild_characters(&text_with_initial, center, false); + gregorio_set_first_word(&text_with_initial); + + gregorio_rebuild_first_syllable(&text_without_initial, true); + gregorio_rebuild_characters(&text_without_initial, center, true); + gregorio_set_first_word(&text_without_initial); + + fprintf(f, "}{%s}{\\GreSetFirstSyllableText", syllable_type); + + fprintf(f, "{"); + gregorio_write_first_letter_alignment_text(WTP_FIRST_SYLLABLE, + text_with_initial, f, >ex_write_verb, >ex_print_char, + >ex_write_begin, >ex_write_end, >ex_write_special_char); + fprintf(f, "}{{"); + gregorio_write_text(WTP_FIRST_SYLLABLE, text_without_initial, f, + >ex_write_verb, >ex_print_char, >ex_write_begin, + >ex_write_end, >ex_write_special_char); + fprintf(f, "}}{{"); + gregorio_write_text(WTP_NORMAL, text_with_initial, f, >ex_write_verb, + >ex_print_char, >ex_write_begin, >ex_write_end, + >ex_write_special_char); + gregoriotex_ignore_style = gregoriotex_next_ignore_style; + gregoriotex_next_ignore_style = ST_NO_STYLE; + fprintf(f, "}}"); + + /* Check to see if we need to force a hyphen (empty first syllable) */ + for (t = text_without_initial; t; t = t->next_character) { + if (t->is_character) { + break; + } else if (t->cos.s.type == ST_T_BEGIN) { + if (t->cos.s.style == ST_VERBATIM || + t->cos.s.style == ST_SPECIAL_CHAR) { + break; + } else if (t->cos.s.style == ST_INITIAL) { + for (; t; t = t->next_character) { + if (!t->is_character && t->cos.s.type == ST_T_END + && t->cos.s.style == ST_INITIAL) { + break; + } + } + if (!t) break; + } + } + } + if (t || end_of_word) { + fprintf(f, "{}"); + } else { + fprintf(f, "{\\GreEmptyFirstSyllableHyphen}"); + } + + fprintf(f, "}"); + + gregorio_free_characters(text_with_initial); + gregorio_free_characters(text_without_initial); + } +} + +static __inline void scan_syllable_for_eol( + const gregorio_syllable *const syllable, + bool *eol_forces_custos, bool *eol_forces_custos_on) { + const gregorio_element *element; + if (syllable->elements) { + for (element = *(syllable->elements); element; element = element->next) { + if (element->type == GRE_END_OF_LINE) { + if (element->u.misc.unpitched.info.eol_forces_custos) { + *eol_forces_custos = true; + *eol_forces_custos_on = + element->u.misc.unpitched.info.eol_forces_custos_on; + } + } + } + } +} + +static __inline void anticipate_event(FILE *f, gregorio_syllable *syllable) { + static unsigned short euouae_id = 0; + bool eol_forces_custos = false; + bool eol_forces_custos_on = false; + + if (syllable->next_syllable) { + for (syllable = syllable->next_syllable; + syllable && syllable->elements && *(syllable->elements) + && (*(syllable->elements))->type == GRE_END_OF_LINE; + syllable = syllable->next_syllable) { + /* we are at an end-of-line, so check if custos is forced */ + scan_syllable_for_eol(syllable, &eol_forces_custos, + &eol_forces_custos_on); + } + if (syllable) { + scan_syllable_for_eol(syllable, &eol_forces_custos, + &eol_forces_custos_on); + + if (syllable->euouae == EUOUAE_BEGINNING) { + syllable->euouae_id = ++euouae_id; + fprintf(f, "%%\n\\GreNextSyllableBeginsEUOUAE{%hu}%%\n", euouae_id); + } + } + if (eol_forces_custos) { + fprintf(f, "%%\n\\GreUpcomingNewLineForcesCustos{%c}%%\n", + eol_forces_custos_on? '1' : '0'); + } + } +} + /* * Arguments are relatively obvious. The most obscure is certainly first_of_disc * which is 0 all the time, except in the case of a "clef change syllable". In @@ -2762,12 +3244,21 @@ static __inline void write_syllable_point_and_click(FILE *const f, * 1 in case of the first argument of a \GreDiscretionary * 2 if we are in the second argument (necessary in order to avoid infinite loops) */ -static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, - bool * first_syllable, unsigned char *line_number, - unsigned char first_of_disc, gregoriotex_status *const status) +static void write_syllable(FILE *f, gregorio_syllable *syllable, + unsigned char first_of_disc, gregoriotex_status *const status, + const gregorio_score *const score, + void (*const write_this_syllable_text) + (FILE *, const char *, const gregorio_character *, bool)) { gregorio_element *clef_change_element = NULL, *element; + const char *syllable_type = NULL; + bool event_anticipated = false; + bool end_of_word = syllable->position == WORD_END + || syllable->position == WORD_ONE_SYLLABLE || !syllable->text + || !syllable->next_syllable + || syllable->next_syllable->type == GRE_END_OF_LINE; if (!syllable) { + write_this_syllable_text(f, NULL, NULL, end_of_word); return; } /* Very first: before anything, if the syllable is the beginning of a @@ -2776,7 +3267,7 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, fprintf(f, "\\GreBeginNLBArea{1}{0}%%\n"); } if (syllable->euouae == EUOUAE_BEGINNING) { - fprintf(f, "\\GreBeginEUOUAE{}%%\n"); + fprintf(f, "\\GreBeginEUOUAE{%hu}%%\n", syllable->euouae_id); } /* * first we check if the syllable is only a end of line. If it is the case, @@ -2786,16 +3277,12 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, */ if (syllable->elements && *(syllable->elements)) { if ((syllable->elements)[0]->type == GRE_END_OF_LINE) { - if ((syllable->elements)[0]->u.misc.unpitched.info.sub_type != - GRE_END_OF_PAR) { - fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); - } else { + if ((syllable->elements)[0]->u.misc.unpitched.info.eol_ragged) { fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); + } else { + fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); } - if (*line_number == 1) { - fprintf(f, "\\GreAdjustThirdLine %%\n"); - *line_number = 0; - } + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } /* @@ -2812,12 +3299,13 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, */ gregoriotex_print_change_line_clef(f, clef_change_element); fprintf(f, "\\GreDiscretionary{0}{%%\n"); - gregoriotex_write_syllable(f, syllable, first_syllable, - line_number, 1, status); + write_syllable(f, syllable, 1, status, score, + write_syllable_text); fprintf(f, "}{%%\n"); - gregoriotex_write_syllable(f, syllable, first_syllable, - line_number, 2, status); + write_syllable(f, syllable, 2, status, score, + write_syllable_text); fprintf(f, "}%%\n"); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } } @@ -2828,39 +3316,36 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, && (syllable->elements)[0]->u.misc.unpitched.info.bar == B_DIVISIO_FINALIS) { handle_final_bar(f, "DivisioFinalis", syllable); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } if (!syllable->next_syllable && !syllable->text && (syllable->elements)[0]->u.misc.unpitched.info.bar == B_DIVISIO_MAIOR) { handle_final_bar(f, "DivisioMaior", syllable); + write_this_syllable_text(f, NULL, syllable->text, end_of_word); return; } else { - fprintf(f, "\\GreBarSyllable"); + syllable_type = "\\GreBarSyllable"; } } else { - fprintf(f, "\\GreSyllable"); + syllable_type = "\\GreSyllable"; } } else { write_fixed_text_styles(f, syllable->text, syllable->next_syllable? syllable->next_syllable->text : NULL); - fprintf(f, "\\GreSyllable"); + syllable_type = "\\GreSyllable"; } - fprintf(f, "{\\GreSetThisSyllable"); - gregoriotex_write_text(f, syllable->text, first_syllable); - fprintf(f, "}{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled"); - if (syllable->position == WORD_END - || syllable->position == WORD_ONE_SYLLABLE || !syllable->text - || !syllable->next_syllable - || syllable->next_syllable->type == GRE_END_OF_LINE - || syllable->next_syllable->type == GRE_END_OF_PAR) { + write_this_syllable_text(f, syllable_type, syllable->text, end_of_word); + fprintf(f, "{}{\\Gre%s}", syllable->first_word ? "FirstWord" : "Unstyled"); + if (end_of_word) { fprintf(f, "{1}"); } else { fprintf(f, "{0}"); } if (syllable->next_syllable) { fprintf(f, "{\\GreSetNextSyllable"); - gregoriotex_write_text(f, syllable->next_syllable->text, NULL); + write_text(f, syllable->next_syllable->text); fprintf(f, "}{"); write_syllable_point_and_click(f, syllable, status); fprintf(f, "}{%d}{", @@ -2895,198 +3380,161 @@ static void gregoriotex_write_syllable(FILE *f, gregorio_syllable *syllable, } fprintf(f, "}{%%\n"); - for (element = *syllable->elements; element; - element = element->next) { - if (element->nabc_lines && element->nabc) { - size_t i; - for (i = 0; i < element->nabc_lines; i++) { - if (element->nabc[i]) { - fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1), - element->nabc[i]); + if (syllable->elements) { + for (element = *syllable->elements; element; + element = element->next) { + if (element->nabc_lines && element->nabc) { + size_t i; + for (i = 0; i < element->nabc_lines; i++) { + if (element->nabc[i]) { + fprintf(f, "\\GreNABCNeumes{%d}{%s}%%\n", (int)(i+1), + element->nabc[i]); + } } } - } - switch (element->type) { - case GRE_SPACE: - switch (element->u.misc.unpitched.info.space) { - case SP_ZERO_WIDTH: - fprintf(f, "\\GreEndOfElement{3}{1}%%\n"); - break; - case SP_LARGER_SPACE: - fprintf(f, "\\GreEndOfElement{1}{0}%%\n"); - break; - case SP_GLYPH_SPACE: - fprintf(f, "\\GreEndOfElement{2}{0}%%\n"); - break; - case SP_GLYPH_SPACE_NB: - fprintf(f, "\\GreEndOfElement{2}{1}%%\n"); + switch (element->type) { + case GRE_SPACE: + switch (element->u.misc.unpitched.info.space) { + case SP_ZERO_WIDTH: + fprintf(f, "\\GreEndOfElement{3}{1}%%\n"); + break; + case SP_LARGER_SPACE: + fprintf(f, "\\GreEndOfElement{1}{0}%%\n"); + break; + case SP_GLYPH_SPACE: + fprintf(f, "\\GreEndOfElement{2}{0}%%\n"); + break; + case SP_NEUMATIC_CUT: + fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + break; + case SP_AD_HOC_SPACE: + fprintf(f, "\\GreAdHocSpaceEndOfElement{%s}{0}%%\n", + element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + case SP_GLYPH_SPACE_NB: + fprintf(f, "\\GreEndOfElement{2}{1}%%\n"); + break; + case SP_LARGER_SPACE_NB: + fprintf(f, "\\GreEndOfElement{1}{1}%%\n"); + break; + case SP_NEUMATIC_CUT_NB: + fprintf(f, "\\GreEndOfElement{0}{1}%%\n"); + break; + case SP_AD_HOC_SPACE_NB: + fprintf(f, "\\GreAdHocSpaceEndOfElement{%s}{1}%%\n", + element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + gregorio_message( + _("encountered an unexpected element-level space"), + "write_syllable", VERBOSITY_ERROR, 0); + break; + } break; - case SP_LARGER_SPACE_NB: - fprintf(f, "\\GreEndOfElement{1}{1}%%\n"); + + case GRE_TEXVERB_ELEMENT: + if (element->texverb) { + fprintf(f, "%% verbatim text at element level:\n%s%%\n" + "%% end of verbatim text\n", element->texverb); + } break; - case SP_NEUMATIC_CUT_NB: - fprintf(f, "\\GreEndOfElement{0}{1}%%\n"); + + case GRE_NLBA: + if (element->u.misc.unpitched.info.nlba == NLBA_BEGINNING) { + fprintf(f, "\\GreBeginNLBArea{0}{0}%%\n"); + } else { + fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", + next_is_bar(syllable, element)? 3 : 0); + } break; - default: + + case GRE_ALT: + if (element->texverb) { + fprintf(f, "\\GreSetTextAboveLines{%s}%%\n", element->texverb); + } break; - } - break; - case GRE_TEXVERB_ELEMENT: - if (element->texverb) { - fprintf(f, "%% verbatim text at element level:\n%s%%\n" - "%% end of verbatim text\n", element->texverb); - } - break; + case GRE_CLEF: + /* We don't print clef changes at the end of a line */ + if (first_of_disc != 1) { + /* the third argument is 0 or 1 according to the need + * for a space before the clef */ + fprintf(f, "\\GreChangeClef{%c}{%d}{%c}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(element->u.misc.clef.clef), + element->u.misc.clef.line, + (element->previous && element->previous->type + == GRE_BAR)? '0' : '1', + clef_flat_height(element->u.misc.clef.clef, + element->u.misc.clef.line, + element->u.misc.clef.flatted), + gregorio_clef_to_char( + element->u.misc.clef.secondary_clef), + element->u.misc.clef.secondary_line, + clef_flat_height(element->u.misc.clef.secondary_clef, + element->u.misc.clef.secondary_line, + element->u.misc.clef.secondary_flatted)); + } + break; - case GRE_NLBA: - if (element->u.misc.unpitched.info.nlba == NLBA_BEGINNING) { - fprintf(f, "\\GreBeginNLBArea{0}{0}%%\n"); - } else { - fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", - next_is_bar(syllable, element)? 3 : 0); - } - break; + case GRE_CUSTOS: + if (first_of_disc != 1) { + /* + * We don't print custos before a bar at the end of a line + */ + /* we also print an unbreakable larger space before the custo */ + fprintf(f, "\\GreEndOfElement{1}{1}%%\n\\GreCustos{%d}" + "\\GreNextCustos{%d}%%\n", + pitch_value(element->u.misc.pitched.pitch), + pitch_value(gregorio_determine_next_pitch(syllable, + element, NULL))); + } + break; - case GRE_ALT: - if (element->texverb) { - fprintf(f, "\\GreSetTextAboveLines{%s}%%\n", element->texverb); - } - break; + case GRE_BAR: + write_bar(f, element->u.misc.unpitched.info.bar, + element->u.misc.unpitched.special_sign, + element->next && !is_manual_custos(element->next), + !element->previous && syllable->text); + break; - case GRE_C_KEY_CHANGE: - if (first_of_disc != 1) { - /* - * We don't print clef changes at the end of a line - */ - if (element->previous && element->previous->type == GRE_BAR) { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{c}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } - } else { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('c', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{c}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + case GRE_END_OF_LINE: + if (!element->next) { + anticipate_event(f, syllable); + event_anticipated = true; } - } - break; - - case GRE_F_KEY_CHANGE: - if (first_of_disc != 1) { - /* - * We don't print clef changes at the end of a line - */ - if (element->previous && element->previous->type == GRE_BAR) { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{f}{%d}{0}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + /* here we suppose we don't have two linebreaks in the same + * syllable */ + if (element->u.misc.unpitched.info.eol_ragged) { + fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); } else { - if (element->u.misc.pitched.flatted_key) { - /* the third argument is 0 or 1 according to the need - * for a space before the clef */ - fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - gregoriotex_clef_flat_height('f', - element->u.misc.pitched.pitch - '0')); - } else { - fprintf(f, "\\GreChangeClef{f}{%d}{1}{%d}%%\n", - element->u.misc.pitched.pitch - '0', - NO_KEY_FLAT); - } + fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); } - } - break; - - case GRE_CUSTOS: - if (first_of_disc != 1) { - /* - * We don't print custos before a bar at the end of a line - */ - /* we also print an unbreakable larger space before the custo */ - fprintf(f, "\\GreEndOfElement{1}{1}%%\n\\GreCustos{%d}" - "\\GreNextCustos{%d}%%\n", - pitch_value(element->u.misc.pitched.pitch), - pitch_value(gregorio_determine_next_pitch(syllable, - element, NULL))); - } - break; - - case GRE_BAR: - gregoriotex_write_bar(f, - element->u.misc.unpitched.info.bar, - element->u.misc.unpitched.special_sign, - element->next && !is_manual_custos(element->next)); - break; - - case GRE_END_OF_LINE: - /* here we suppose we don't have two linebreaks in the same - * syllable */ - if (element->u.misc.unpitched.info.sub_type != GRE_END_OF_PAR) { - fprintf(f, "%%\n%%\n\\GreNewLine %%\n%%\n%%\n"); - } else { - fprintf(f, "%%\n%%\n\\GreNewParLine %%\n%%\n%%\n"); - } - if (*line_number == 1) { - fprintf(f, "\\GreAdjustThirdLine %%\n"); - *line_number = 0; - } - break; + break; - default: - /* there current_element->type is GRE_ELEMENT */ - assert(element->type == GRE_ELEMENT); - gregoriotex_write_element(f, syllable, element, status); - if (element->next && (element->next->type == GRE_ELEMENT - || (element->next->next - && element->next->type == GRE_ALT - && element->next->next->type == - GRE_ELEMENT))) { - fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + default: + /* there current_element->type is GRE_ELEMENT */ + assert(element->type == GRE_ELEMENT); + write_element(f, syllable, element, status, score); + if (element->next && (element->next->type == GRE_ELEMENT + || (element->next->next + && element->next->type == GRE_ALT + && element->next->next->type == + GRE_ELEMENT))) { + fprintf(f, "\\GreEndOfElement{0}{0}%%\n"); + } + break; } - break; } } + if (!event_anticipated) { + anticipate_event(f, syllable); + } fprintf(f, "}%%\n"); if (syllable->position == WORD_END || syllable->position == WORD_ONE_SYLLABLE || !syllable->text) { fprintf(f, "%%\n"); } - /* Very last, if the syllable is the end of a no-linebreak area: */ - if (syllable->no_linebreak_area == NLBA_END) { - fprintf(f, "\\GreEndNLBArea{%d}{0}%%\n", - next_is_bar(syllable, NULL)? 3 : 1); - } - if (syllable->euouae == EUOUAE_END) { - fprintf(f, "\\GreEndEUOUAE{%d}%%\n", - next_is_bar(syllable, NULL)? 3 : 1); - } + finish_syllable(f, syllable); } static char *digest_to_hex(const unsigned char digest[SHA1_DIGEST_SIZE]) @@ -3134,7 +3582,7 @@ static void initialize_score(gregoriotex_status *const status, for (voice = 0; voice < score->number_of_voices; ++voice) { gregorio_element *element; - gregoriotex_compute_positioning(syllable->elements[voice]); + gregoriotex_compute_positioning(syllable->elements[voice], score); for (element = syllable->elements[voice]; element; element = element->next) { gregorio_glyph *glyph; @@ -3169,20 +3617,84 @@ static void initialize_score(gregoriotex_status *const status, status->point_and_click = point_and_click; } +static __inline void write_escapable_header_text(FILE *const f, + const char *text) +{ + /* We escape these characters into \string\ddd (where ddd is the decimal + * ASCII value of the character) for most escapes, and into \string\n for + * newlines. We do it this way to get the "raw" string values through TeX + * and into Lua, where the sequences become \ddd and \n respectively and + * are translated into their byte values. Lua can then decide whether the + * full strings should be evaluated by TeX as TeX or as strings */ + for (; *text; ++text) { + switch (*text) { + case '\\': + case '{': + case '}': + case '~': + case '%': /* currently, we'll never get %, but handle it anyway */ + case '#': + case '"': + /* these characters have special meaning to TeX */ + fprintf(f, "\\string\\%03d", *text); + break; + case '\n': + /* currently, we'll never get \n, but handle it anyway */ + fprintf(f, "\\string\\n"); + break; + case '\r': + /* ignore */ + break; + default: + /* UTF-8 multibyte sequences will fall into here, which is fine */ + fputc(*text, f); + break; + } + } +} + +static void write_header(FILE *const f, const char *const name, + const char *const value) +{ + if (value) { + fprintf(f, "\\GreHeader{"); + write_escapable_header_text(f, name); + fprintf(f, "}{"); + write_escapable_header_text(f, value); + fprintf(f, "}%%\n"); + } +} + +static void write_headers(FILE *const f, gregorio_score *const score) +{ + gregorio_header *header; + + fprintf(f, "\\GreBeginHeaders %%\n"); + for (header = score->headers; header; header = header->next) { + write_header(f, header->name, header->value); + } + fprintf(f, "\\GreEndHeaders %%\n"); +} + +static void suppress_expansion(FILE *const f, const char *text) +{ + if (!text) { + return; + } + + for (; *text; ++text) { + if (*text == '\\') { + fprintf(f, "\\noexpand"); + } + fputc(*text, f); + } +} + void gregoriotex_write_score(FILE *const f, gregorio_score *const score, const char *const point_and_click_filename) { - gregorio_character *first_text; - /* true if it is the first syllable and false if not. - * It is for the initial. */ - bool first_syllable = false; - char clef_letter; - int clef_line; - char clef_flat = NO_KEY_FLAT; + gregorio_clef_info clef = gregorio_default_clef; gregorio_syllable *current_syllable; - /* the current line (as far as we know), it is always 0, it can be 1 in the - * case of the first line of a score with a two lines initial */ - unsigned char line = 0; int annotation_num; gregoriotex_status status; @@ -3205,8 +3717,8 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, if (score->name) { fprintf(f, "%% Name: %s\n", score->name); } - if (score->si.author) { - fprintf(f, "%% Author: %s\n", score->si.author); + if (score->author) { + fprintf(f, "%% Author: %s\n", score->author); } if (score->gabc_copyright) { fprintf(f, "%% The copyright of this gabc is: %s\n", @@ -3217,38 +3729,17 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, score->score_copyright); } - fprintf(f, "\\GreBeginScore{%s}{%d}{%d}{%d}{%d}{%s}%%\n", + write_headers(f, score); + + fprintf(f, "\\GreBeginScore{%s}{%d}{%d}{%d}{%d}{%s}{%u}%%\n", digest_to_hex(score->digest), status.top_height, status.bottom_height, bool_to_int(status.translation), bool_to_int(status.abovelinestext), - point_and_click_filename? point_and_click_filename : ""); - switch (score->centering) { - case SCHEME_SYLLABLE: - fprintf(f, "\\englishcentering%%\n"); - break; - case SCHEME_VOWEL: - fprintf(f, "\\defaultcentering%%\n"); - break; - default: - /* don't set any centering */ - break; - } + point_and_click_filename? point_and_click_filename : "", + score->staff_lines); if (score->nabc_lines) { fprintf(f, "\\GreScoreNABCLines{%d}", (int)score->nabc_lines); } - /* we select the good font -- Deprecated (remove in next release) */ - if (score->gregoriotex_font) { - if (!strcmp(score->gregoriotex_font, "gregorio")) { - fprintf(f, "\\gresetgregoriofont{gregorio}%%\n"); - } - if (!strcmp(score->gregoriotex_font, "parmesan")) { - fprintf(f, "\\gresetgregoriofont{parmesan}%%\n"); - } - if (!strcmp(score->gregoriotex_font, "greciliae")) { - fprintf(f, "\\gresetgregoriofont{greciliae}%%\n"); - } - } - /* end Deprecated section */ if (score->annotation[0]) { fprintf(f, "\\GreAnnotationLines"); for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; @@ -3263,56 +3754,48 @@ void gregoriotex_write_score(FILE *const f, gregorio_score *const score, } fprintf(f, "%%\n"); } - if (score->mode != 0) { - fprintf(f, "\\GreMode{%d}%%\n", score->mode); + if (score->mode) { + fprintf(f, "\\GreMode{"); + if (*(score->mode) >= '1' && *(score->mode) <= '8') { + fprintf(f, "\\GreModeNumber{%c}%s", *(score->mode), score->mode + 1); + } else { + fprintf(f, "%s", score->mode); + } + fprintf(f, "}{"); + suppress_expansion(f, score->mode_modifier); + fprintf(f, "}{"); + suppress_expansion(f, score->mode_differentia); + fprintf(f, "}%%\n"); } - /* first we draw the initial (first letter) and the initial key */ - if (score->initial_style == NO_INITIAL) { - fprintf(f, "\\GreNoInitial %%\n"); - } else { - if (score->initial_style == BIG_INITIAL) { - fprintf(f, "\\GreSetBigInitial %%\n"); - line = 1; - } - first_text = gregorio_first_text(score); - if (first_text) { - fprintf(f, "\\GreSetInitial{"); - gregorio_write_initial(first_text, f, - (>ex_write_verb), - (>ex_print_char), - (>ex_write_begin), - (>ex_write_end), (>ex_write_special_char)); - fprintf(f, "}%%\n"); - first_syllable = true; - } - } - if (score->si.manuscript_reference) { - fprintf(f, "\\GreScoreReference{%s}%%\n", - score->si.manuscript_reference); + + if (score->initial_style != INITIAL_NOT_SPECIFIED) { /* DEPRECATED by 4.1 */ + fprintf(f, "\\GreSetInitialStyle{%d}%%\n", score->initial_style); /* DEPRECATED by 4.1 */ } + + fprintf(f, "\\GreScoreOpening{%%\n"); /* GreScoreOpening#1 */ if (score->first_voice_info) { gregoriotex_write_voice_info(f, score->first_voice_info); } - fprintf(f, "\\GreBeginNotes %%\n"); + fprintf(f, "}{%%\n"); /* GreScoreOpening#2 */ if (score->first_voice_info) { - gregorio_det_step_and_line_from_key(score-> - first_voice_info->initial_key, &clef_letter, &clef_line); - if (score->first_voice_info->flatted_key) { - clef_flat = gregoriotex_clef_flat_height(clef_letter, clef_line); - } else { - clef_flat = NO_KEY_FLAT; - } - } else { - clef_letter = 'c'; - clef_line = 3; - clef_flat = NO_KEY_FLAT; - } - fprintf(f, "\\GreSetInitialClef{%c}{%d}{%d}%%\n", clef_letter, clef_line, - clef_flat); + clef = score->first_voice_info->initial_clef; + } + fprintf(f, "\\GreSetInitialClef{%c}{%d}{%d}{%c}{%d}{%d}%%\n", + gregorio_clef_to_char(clef.clef), clef.line, + clef_flat_height(clef.clef, clef.line, clef.flatted), + gregorio_clef_to_char(clef.secondary_clef), clef.secondary_line, + clef_flat_height(clef.secondary_clef, clef.secondary_line, + clef.secondary_flatted)); + fprintf(f, "}{%%\n"); /* GreScoreOpening#3 */ current_syllable = score->first_syllable; + if (current_syllable) { + write_syllable(f, current_syllable, 0, &status, score, + write_first_syllable_text); + current_syllable = current_syllable->next_syllable; + } while (current_syllable) { - gregoriotex_write_syllable(f, current_syllable, &first_syllable, &line, - 0, &status); + write_syllable(f, current_syllable, 0, &status, score, + write_syllable_text); current_syllable = current_syllable->next_syllable; } fprintf(f, "\\GreEndScore %%\n\\endinput %%\n"); diff --git a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h index 16cf41e8610..03907b5f130 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h +++ b/Build/source/texk/gregorio/gregorio-src/src/gregoriotex/gregoriotex.h @@ -58,6 +58,7 @@ typedef enum gtex_type { T_SALICUS, T_SALICUS_LONGQUEUE, /* four note neumes */ + T_SALICUS_FLEXUS, T_PORRECTUS_FLEXUS, T_TORCULUS_RESUPINUS, T_TORCULUS_LIQUESCENS, @@ -85,18 +86,11 @@ typedef enum gtex_alignment { * different types: */ typedef enum gtex_glyph_liquescentia { - /* for glyphs that accept all liquecentiae */ - LG_ALL = 0, - /* for glyphs that don't accept initio debilis */ - LG_NO_INITIO, - /* for glyphs for which we don't know if the auctus is ascendens or - * descendens */ - LG_UNDET_AUCTUS, - /* for glyphs that don't accept liquescentia */ - LG_NONE, + LG_ALL = 0, /* for glyphs that accept all liquecentiae */ + LG_NO_INITIO, /* for glyphs that don't accept initio debilis */ + LG_NONE, /* for glyphs that don't accept liquescentia */ LG_ONLY_DEMINUTUS, - LG_NO_DEMINUTUS, - LG_ONLY_AUCTUS + LG_FUSIBLE_INITIO } gtex_glyph_liquescentia; typedef enum gtex_sign_type { @@ -160,6 +154,7 @@ bool gtex_is_h_episema_below_shown(const gregorio_note *const note); const char *gregoriotex_determine_glyph_name(const gregorio_glyph *const glyph, const gregorio_element *const element, gtex_alignment *const type, gtex_type *const gtype); -void gregoriotex_compute_positioning(const gregorio_element *element); +void gregoriotex_compute_positioning(const gregorio_element *element, + const gregorio_score *score); #endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/plugins.h b/Build/source/texk/gregorio/gregorio-src/src/plugins.h index e206269cc75..3363d491b22 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/plugins.h +++ b/Build/source/texk/gregorio/gregorio-src/src/plugins.h @@ -25,6 +25,9 @@ void dump_write_score(FILE *f, gregorio_score *score); +void dump_write_characters(FILE *const f, + const gregorio_character *current_character); + gregorio_score *gabc_read_score(FILE *f_in); void gabc_write_score(FILE *f, gregorio_score *score); diff --git a/Build/source/texk/gregorio/gregorio-src/src/sha1.c b/Build/source/texk/gregorio/gregorio-src/src/sha1.c index 64ab6bad55f..54800c85b74 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/sha1.c +++ b/Build/source/texk/gregorio/gregorio-src/src/sha1.c @@ -278,8 +278,10 @@ void sha1_process_block(const void *buffer, size_t len, struct sha1_ctx *ctx) while (words < endp) { uint32_t tm; int t; + uint32_t v; for (t = 0; t < 16; t++) { - x[t] = SWAP(*words); + memcpy(&v, words, sizeof(uint32_t)); + x[t] = SWAP(v); words++; } diff --git a/Build/source/texk/gregorio/gregorio-src/src/struct.c b/Build/source/texk/gregorio/gregorio-src/src/struct.c index 708ee38f41b..d11366949c1 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/struct.c +++ b/Build/source/texk/gregorio/gregorio-src/src/struct.c @@ -5,7 +5,7 @@ * Copyright (C) 2006-2015 The Gregorio Project (see CONTRIBUTORS.md) * * This file is part of Gregorio. - * + * * Gregorio is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or @@ -23,7 +23,7 @@ /** * @file * @brief This file contains a set of function to manipulate the gregorio - * structure. + * structure. * * It starts by simple add/delete functions for almost all * structs, and ends with more complex functions for manipulating @@ -50,6 +50,16 @@ #include "messages.h" #include "support.h" #include "characters.h" +#include "support.h" + +gregorio_clef_info gregorio_default_clef = { + /*.line =*/ 3, + /*.secondary_line =*/ 0, + /*.clef =*/ CLEF_C, + /*.flatted =*/ false, + /*.secondary_clef =*/ CLEF_C, /* not used since secondary_line is 0 */ + /*.secondary_flatted =*/ false, +}; static gregorio_note *create_and_link_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) @@ -104,24 +114,22 @@ void gregorio_add_note(gregorio_note **current_note, signed char pitch, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_NOTE; - element->u.note.pitch = pitch; - element->u.note.shape = shape; - element->signs = signs; - element->special_sign = _NO_SIGN; - element->u.note.liquescentia = liquescentia; - if (prototype) { - set_h_episema_above(element, prototype->h_episema_above, - prototype->h_episema_above_size, - prototype->h_episema_above_connect); - set_h_episema_below(element, prototype->h_episema_below, - prototype->h_episema_below_size, - prototype->h_episema_below_connect); - } - element->texverb = NULL; - element->choral_sign = NULL; - } + element->type = GRE_NOTE; + element->u.note.pitch = pitch; + element->u.note.shape = shape; + element->signs = signs; + element->special_sign = _NO_SIGN; + element->u.note.liquescentia = liquescentia; + if (prototype) { + set_h_episema_above(element, prototype->h_episema_above, + prototype->h_episema_above_size, + prototype->h_episema_above_connect); + set_h_episema_below(element, prototype->h_episema_below, + prototype->h_episema_below_size, + prototype->h_episema_below_connect); + } + element->texverb = NULL; + element->choral_sign = NULL; } static void add_pitched_item_as_note(gregorio_note **current_note, @@ -129,29 +137,26 @@ static void add_pitched_item_as_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = type; - element->u.note.pitch = pitch; - } + element->type = type; + element->u.note.pitch = pitch; } void gregorio_add_end_of_line_as_note(gregorio_note **current_note, - gregorio_type sub_type, const gregorio_scanner_location *const loc) + bool eol_ragged, bool eol_forces_custos, bool eol_forces_custos_on, + const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_END_OF_LINE; - element->u.other.sub_type = sub_type; - } + element->type = GRE_END_OF_LINE; + element->u.other.eol_ragged = eol_ragged; + element->u.other.eol_forces_custos = eol_forces_custos; + element->u.other.eol_forces_custos_on = eol_forces_custos_on; } void gregorio_add_custo_as_note(gregorio_note **current_note, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_CUSTOS; - } + element->type = GRE_CUSTOS; } void gregorio_add_manual_custos_as_note(gregorio_note **current_note, @@ -160,42 +165,54 @@ void gregorio_add_manual_custos_as_note(gregorio_note **current_note, add_pitched_item_as_note(current_note, GRE_MANUAL_CUSTOS, pitch, loc); } -void gregorio_add_clef_change_as_note(gregorio_note **current_note, - gregorio_type type, signed char clef_line, +void gregorio_add_clef_as_note(gregorio_note **current_note, + gregorio_clef clef, signed char clef_line, bool flatted, const gregorio_scanner_location *const loc) { - assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE - || type == GRE_C_KEY_CHANGE_FLATED - || type == GRE_F_KEY_CHANGE_FLATED); - add_pitched_item_as_note(current_note, type, clef_line, loc); + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_CLEF; + element->u.clef.clef = clef; + element->u.clef.line = clef_line; + element->u.clef.flatted = flatted; } -void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, - const gregorio_scanner_location *const loc) +void gregorio_add_secondary_clef_to_note(gregorio_note *current_note, + gregorio_clef clef, signed char clef_line, bool flatted) { - gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_BAR; - element->u.other.bar = bar; + if (!current_note || current_note->type != GRE_CLEF) { + gregorio_message(_("trying to add a secondary clef to something that " + "is not a clef"), "gregorio_add_secondary_clef_to_note", + VERBOSITY_ERROR, 0); + return; + } + + if (current_note->u.clef.secondary_line) { + gregorio_message(_("secondary clef already exists"), + "gregorio_add_secondary_clef_to_note", VERBOSITY_ERROR, 0); + return; } + + current_note->u.clef.secondary_clef = clef; + current_note->u.clef.secondary_line = clef_line; + current_note->u.clef.secondary_flatted = flatted; } -void gregorio_add_alteration_as_note(gregorio_note **current_note, - gregorio_type type, signed char pitch, +void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, const gregorio_scanner_location *const loc) { - assert(type == GRE_FLAT || type == GRE_SHARP || type == GRE_NATURAL); - add_pitched_item_as_note(current_note, type, pitch, loc); + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_BAR; + element->u.other.bar = bar; } void gregorio_add_space_as_note(gregorio_note **current_note, - gregorio_space space, const gregorio_scanner_location *const loc) + const gregorio_space space, char *factor, + const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_SPACE; - element->u.other.space = space; - } + element->type = GRE_SPACE; + element->u.other.space = space; + element->u.other.ad_hoc_space_factor = factor; } void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, @@ -208,40 +225,50 @@ void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, element = create_and_link_note(current_note, loc); assert(type == GRE_TEXVERB_GLYPH || type == GRE_TEXVERB_ELEMENT || type == GRE_ALT); - if (element) { - element->type = type; - element->texverb = str; - } + element->type = type; + element->texverb = str; } void gregorio_add_nlba_as_note(gregorio_note **current_note, gregorio_nlba type, const gregorio_scanner_location *const loc) { gregorio_note *element = create_and_link_note(current_note, loc); - if (element) { - element->type = GRE_NLBA; - element->u.other.nlba = type; - } + element->type = GRE_NLBA; + element->u.other.nlba = type; +} + +void gregorio_start_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *const loc) +{ + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_AUTOFUSE_START; +} + +void gregorio_end_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *const loc) +{ + gregorio_note *element = create_and_link_note(current_note, loc); + element->type = GRE_AUTOFUSE_END; } -void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str) +void gregorio_add_texverb_to_note(gregorio_note *current_note, char *str) { size_t len; char *res; if (str == NULL) { return; } - if (*current_note) { - if ((*current_note)->texverb) { - len = strlen((*current_note)->texverb) + strlen(str) + 1; + if (current_note) { + if (current_note->texverb) { + len = strlen(current_note->texverb) + strlen(str) + 1; res = gregorio_malloc(len); - strcpy(res, (*current_note)->texverb); + strcpy(res, current_note->texverb); strcat(res, str); - free((*current_note)->texverb); + free(current_note->texverb); free(str); - (*current_note)->texverb = res; + current_note->texverb = res; } else { - (*current_note)->texverb = str; + current_note->texverb = str; } } } @@ -266,13 +293,11 @@ void gregorio_add_special_sign(gregorio_note *note, gregorio_sign sign) static void fix_punctum_cavum_inclinatum_liquescentia(gregorio_note *const note) { + note->u.note.liquescentia &= TAIL_LIQUESCENTIA_MASK; switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: case L_AUCTUS_DESCENDENS: - case L_AUCTA: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA; + note->u.note.liquescentia = L_AUCTUS_ASCENDENS; break; default: note->u.note.liquescentia = L_NO_LIQUESCENTIA; @@ -280,133 +305,217 @@ static void fix_punctum_cavum_inclinatum_liquescentia(gregorio_note *const note) } } -void gregorio_change_shape(gregorio_note *note, gregorio_shape shape) +static void fix_oriscus_liquescentia(gregorio_note *const note, + const bool legacy_oriscus_orientation) { - if (!note || note->type != GRE_NOTE) { - gregorio_message(_("trying to change the shape of something that is " - "not a note"), "change_shape", VERBOSITY_ERROR, 0); - return; - } - switch (note->u.note.shape) { - case S_PUNCTUM_INCLINATUM: - if (shape == S_PUNCTUM_CAVUM) { - note->u.note.shape = S_PUNCTUM_CAVUM_INCLINATUM; - fix_punctum_cavum_inclinatum_liquescentia(note); - break; - } - /* else fall through */ - - default: - note->u.note.shape = shape; - switch (shape) { - case S_STROPHA: - case S_DISTROPHA: - case S_TRISTROPHA: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTA; - break; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; - break; - default: - break; - } + if (legacy_oriscus_orientation) { + switch (note->u.note.liquescentia) { + case L_AUCTUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + /* fall through */ + case L_AUCTUS_DESCENDENS: + note->u.note.shape = S_ORISCUS_DESCENDENS; break; - - case S_ORISCUS: - switch (note->u.note.liquescentia) { - case L_AUCTUS_ASCENDENS: - case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_AUCTUS; - break; - case L_DEMINUTUS: - case L_DEMINUTUS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_DEMINUTUS; - break; - default: - break; - } + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_DEMINUTUS; break; - default: + note->u.note.shape = S_ORISCUS_ASCENDENS; break; } - break; - } -} - -void gregorio_add_liquescentia(gregorio_note *note, gregorio_liquescentia liq) -{ - if (!note || note->type != GRE_NOTE) { - gregorio_message(_("trying to make a liquescence on something that " - "is not a note"), "add_liquescentia", VERBOSITY_ERROR, 0); - return; - } - if (is_initio_debilis(liq)) { - switch (liq) { - case L_DEMINUTUS: - note->u.note.liquescentia = L_DEMINUTUS_INITIO_DEBILIS; - break; + } else { + switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: - note->u.note.liquescentia = L_AUCTUS_ASCENDENS_INITIO_DEBILIS; + note->u.note.shape = S_ORISCUS_ASCENDENS; break; case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTUS_DESCENDENS_INITIO_DEBILIS; + note->u.note.shape = S_ORISCUS_DESCENDENS; break; - case L_AUCTA: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_DEMINUTUS; break; default: - /* do nothing */ + note->u.note.shape = S_ORISCUS_UNDETERMINED; break; } - } else { - note->u.note.liquescentia = liq; } - switch (note->u.note.shape) { - case S_STROPHA: - case S_DISTROPHA: - case S_TRISTROPHA: +} + +static void fix_oriscus_cavum_liquescentia(gregorio_note *const note, + const bool legacy_oriscus_orientation) +{ + if (legacy_oriscus_orientation) { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + /* fall through */ case L_AUCTUS_DESCENDENS: - note->u.note.liquescentia = L_AUCTA; + note->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; break; - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.liquescentia = L_AUCTA_INITIO_DEBILIS; + case L_DEMINUTUS: + note->u.note.shape = S_ORISCUS_CAVUM_DEMINUTUS; break; default: + note->u.note.shape = S_ORISCUS_CAVUM_ASCENDENS; break; } - break; - - case S_ORISCUS: + } else { switch (note->u.note.liquescentia) { case L_AUCTUS_ASCENDENS: + note->u.note.shape = S_ORISCUS_CAVUM_ASCENDENS; + break; case L_AUCTUS_DESCENDENS: - case L_AUCTUS_ASCENDENS_INITIO_DEBILIS: - case L_AUCTUS_DESCENDENS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_AUCTUS; + note->u.note.shape = S_ORISCUS_CAVUM_DESCENDENS; break; case L_DEMINUTUS: - case L_DEMINUTUS_INITIO_DEBILIS: - note->u.note.shape = S_ORISCUS_DEMINUTUS; + note->u.note.shape = S_ORISCUS_CAVUM_DEMINUTUS; break; default: + note->u.note.shape = S_ORISCUS_CAVUM_UNDETERMINED; + break; + } + } +} + +void gregorio_change_shape(gregorio_note *note, gregorio_shape shape, + const bool legacy_oriscus_orientation) +{ + if (!note || note->type != GRE_NOTE) { + gregorio_message(_("trying to change the shape of something that is " + "not a note"), "change_shape", VERBOSITY_ERROR, 0); + return; + } + + if (shape == S_PUNCTUM_CAVUM) { + /* S_PUNCTUM_CAVUM morphs other shapes */ + switch (note->u.note.shape) { + case S_PUNCTUM_INCLINATUM: + note->u.note.shape = S_PUNCTUM_CAVUM_INCLINATUM; + fix_punctum_cavum_inclinatum_liquescentia(note); + return; + + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + note->u.note.shape = S_ORISCUS_CAVUM_UNDETERMINED; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + return; + + default: break; } + } + + note->u.note.shape = shape; + switch (shape) { + case S_STROPHA: + case S_DISTROPHA: + case S_TRISTROPHA: + note->u.note.liquescentia &= L_AUCTUS_ASCENDENS | L_INITIO_DEBILIS; + break; + + case S_ORISCUS_UNDETERMINED: + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_DESCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_DEMINUTUS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_DEMINUTUS; + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_UNDETERMINED: + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_ASCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_DESCENDENS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_DESCENDENS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + case S_ORISCUS_CAVUM_DEMINUTUS: + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_DEMINUTUS; + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + + default: + break; + } +} + +void gregorio_add_tail_liquescentia(gregorio_note *note, + gregorio_liquescentia liq, const bool legacy_oriscus_orientation) +{ + if (!note || note->type != GRE_NOTE) { + gregorio_message(_("trying to make a liquescence on something that " + "is not a note"), "add_liquescentia", VERBOSITY_ERROR, 0); + return; + } + + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | (liq & TAIL_LIQUESCENTIA_MASK); + + switch (note->u.note.shape) { + case S_STROPHA: + case S_DISTROPHA: + case S_TRISTROPHA: + if (note->u.note.liquescentia & L_AUCTUS_DESCENDENS) { + note->u.note.liquescentia = + (note->u.note.liquescentia & ~TAIL_LIQUESCENTIA_MASK) + | L_AUCTUS_ASCENDENS; + } + break; + + case S_ORISCUS_UNDETERMINED: + case S_ORISCUS_ASCENDENS: + case S_ORISCUS_DESCENDENS: + case S_ORISCUS_DEMINUTUS: + fix_oriscus_liquescentia(note, legacy_oriscus_orientation); break; case S_PUNCTUM_CAVUM_INCLINATUM: fix_punctum_cavum_inclinatum_liquescentia(note); break; + case S_ORISCUS_CAVUM_UNDETERMINED: + case S_ORISCUS_CAVUM_ASCENDENS: + case S_ORISCUS_CAVUM_DESCENDENS: + case S_ORISCUS_CAVUM_DEMINUTUS: + fix_oriscus_cavum_liquescentia(note, legacy_oriscus_orientation); + break; + default: break; } @@ -590,6 +699,9 @@ void gregorio_go_to_first_note(gregorio_note **note) static __inline void free_one_note(gregorio_note *note) { + if (note->type == GRE_SPACE) { + free(note->u.other.ad_hoc_space_factor); + } free(note->texverb); free(note->choral_sign); free(note); @@ -602,11 +714,11 @@ void gregorio_free_one_note(gregorio_note **note) return; } if ((*note)->next) { - (*note)->next->previous = NULL; + (*note)->next->previous = (*note)->previous; next = (*note)->next; } if ((*note)->previous) { - (*note)->previous->next = NULL; + (*note)->previous->next = (*note)->next; } free_one_note(*note); *note = next; @@ -640,48 +752,47 @@ void gregorio_add_glyph(gregorio_glyph **current_glyph, gregorio_liquescentia liquescentia) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); - if (next_glyph) { - next_glyph->type = GRE_GLYPH; - next_glyph->u.notes.glyph_type = type; - next_glyph->u.notes.liquescentia = liquescentia; - next_glyph->u.notes.first_note = first_note; - } + next_glyph->type = GRE_GLYPH; + next_glyph->u.notes.glyph_type = type; + next_glyph->u.notes.liquescentia = liquescentia; + next_glyph->u.notes.first_note = first_note; +} + +void gregorio_add_clef_as_glyph(gregorio_glyph **current_glyph, + gregorio_clef_info clef, char *texverb) +{ + gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); + next_glyph->type = GRE_CLEF; + next_glyph->u.misc.clef = clef; + next_glyph->texverb = texverb; } void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, signed char pitch, bool flatted_key, - bool force_pitch, char *texverb) + gregorio_type type, signed char pitch, bool force_pitch, char *texverb) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); - assert(type == GRE_C_KEY_CHANGE || type == GRE_F_KEY_CHANGE - || type == GRE_C_KEY_CHANGE_FLATED || type == GRE_F_KEY_CHANGE_FLATED - || type == GRE_CUSTOS || type == GRE_FLAT || type == GRE_NATURAL - || type == GRE_SHARP); - if (next_glyph) { - next_glyph->type = type; - next_glyph->u.misc.pitched.pitch = pitch; - next_glyph->u.misc.pitched.flatted_key = flatted_key; - next_glyph->u.misc.pitched.force_pitch = force_pitch; - next_glyph->texverb = texverb; - } + assert(type == GRE_CUSTOS); + next_glyph->type = type; + next_glyph->u.misc.pitched.pitch = pitch; + next_glyph->u.misc.pitched.force_pitch = force_pitch; + next_glyph->texverb = texverb; } void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, gregorio_extra_info info, gregorio_sign sign, + gregorio_type type, gregorio_extra_info *info, gregorio_sign sign, char *texverb) { gregorio_glyph *next_glyph = create_and_link_glyph(current_glyph); assert(type != GRE_NOTE && type != GRE_GLYPH && type != GRE_ELEMENT - && type != GRE_C_KEY_CHANGE && type != GRE_F_KEY_CHANGE - && type != GRE_C_KEY_CHANGE_FLATED && type != GRE_F_KEY_CHANGE_FLATED - && type != GRE_CUSTOS && type != GRE_FLAT && type != GRE_NATURAL - && type != GRE_SHARP); - if (next_glyph) { - next_glyph->type = type; - next_glyph->u.misc.unpitched.info = info; - next_glyph->u.misc.unpitched.special_sign = sign; - next_glyph->texverb = texverb; - } + && type != GRE_CLEF && type != GRE_CUSTOS); + next_glyph->type = type; + next_glyph->u.misc.unpitched.info = *info; + next_glyph->u.misc.unpitched.special_sign = sign; + next_glyph->texverb = texverb; + + /* this was copied into the glyph, so we need to clear it to avoid a + * double-free */ + info->ad_hoc_space_factor = NULL; } void gregorio_go_to_first_glyph(gregorio_glyph **glyph) @@ -700,8 +811,16 @@ void gregorio_go_to_first_glyph(gregorio_glyph **glyph) static __inline void free_one_glyph(gregorio_glyph *glyph) { free(glyph->texverb); - if (glyph->type == GRE_GLYPH) { + switch (glyph->type) { + case GRE_GLYPH: gregorio_free_notes(&glyph->u.notes.first_note); + break; + case GRE_SPACE: + free(glyph->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + /* nothing to do */ + break; } free(glyph); } @@ -754,20 +873,22 @@ void gregorio_add_element(gregorio_element **current_element, gregorio_glyph *first_glyph) { gregorio_element *next = create_and_link_element(current_element); - if (next) { - next->type = GRE_ELEMENT; - next->u.first_glyph = first_glyph; - } + next->type = GRE_ELEMENT; + next->u.first_glyph = first_glyph; } void gregorio_add_misc_element(gregorio_element **current_element, - gregorio_type type, gregorio_misc_element_info info, char *texverb) + gregorio_type type, gregorio_misc_element_info *info, char *texverb) { gregorio_element *special = create_and_link_element(current_element); - if (special) { - special->type = type; - special->u.misc = info; - special->texverb = texverb; + special->type = type; + special->u.misc = *info; + special->texverb = texverb; + + if (type == GRE_SPACE) { + /* this was copied into the glyph, so we need to clear it to avoid a + * double-free */ + info->unpitched.info.ad_hoc_space_factor = NULL; } } @@ -778,8 +899,17 @@ static __inline void free_one_element(gregorio_element *element) for (i = 0; i < element->nabc_lines; i++) { free(element->nabc[i]); } - if (element->type == GRE_ELEMENT) { + free(element->nabc); + switch (element->type) { + case GRE_ELEMENT: gregorio_free_glyphs(&element->u.first_glyph); + break; + case GRE_SPACE: + free(element->u.misc.unpitched.info.ad_hoc_space_factor); + break; + default: + /* nothing to do */ + break; } free(element); } @@ -834,7 +964,7 @@ static void gregorio_free_one_character(gregorio_character *current_character) free(current_character); } -static void gregorio_free_characters(gregorio_character *current_character) +void gregorio_free_characters(gregorio_character *current_character) { gregorio_character *next_character; if (!current_character) { @@ -847,9 +977,9 @@ static void gregorio_free_characters(gregorio_character *current_character) } } -void gregorio_go_to_first_character(gregorio_character **character) +void gregorio_go_to_first_character(const gregorio_character **character) { - gregorio_character *tmp; + const gregorio_character *tmp; if (!character || !*character) { return; } @@ -892,6 +1022,29 @@ void gregorio_end_style(gregorio_character **current_character, *current_character = element; } +gregorio_character *gregorio_clone_characters( + const gregorio_character *source) +{ + gregorio_character *target = NULL, *current = NULL; + + for (; source; source = source->next_character) { + gregorio_character *character = (gregorio_character *) + gregorio_calloc(1, sizeof(gregorio_character)); + *character = *source; + character->next_character = NULL; + + if (current) { + character->previous_character = current; + current = current->next_character = character; + } else { + character->previous_character = NULL; + target = current = character; + } + } + + return target; +} + void gregorio_add_syllable(gregorio_syllable **current_syllable, int number_of_voices, gregorio_element *elements[], gregorio_character *first_character, @@ -985,83 +1138,40 @@ static void gregorio_free_syllables(gregorio_syllable **syllable, } } -static void gregorio_source_info_init(source_info *si) -{ - si->author = NULL; - si->date = NULL; - si->manuscript = NULL; - si->manuscript_reference = NULL; - si->manuscript_storage_place = NULL; - si->transcriber = NULL; - si->transcription_date = NULL; - si->book = NULL; -} - gregorio_score *gregorio_new_score(void) { - int annotation_num; gregorio_score *new_score = gregorio_calloc(1, sizeof(gregorio_score)); - new_score->first_syllable = NULL; new_score->number_of_voices = 1; - new_score->name = NULL; - new_score->gabc_copyright = NULL; - new_score->score_copyright = NULL; - new_score->initial_style = NORMAL_INITIAL; - new_score->office_part = NULL; - new_score->occasion = NULL; - new_score->meter = NULL; - new_score->commentary = NULL; - new_score->arranger = NULL; - gregorio_source_info_init(&new_score->si); - new_score->first_voice_info = NULL; - new_score->mode = 0; - new_score->gregoriotex_font = NULL; - new_score->user_notes = NULL; - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - new_score->annotation[annotation_num] = NULL; - } + new_score->initial_style = INITIAL_NOT_SPECIFIED; + gregorio_set_score_staff_lines(new_score, 4); return new_score; } -static void gregorio_free_source_info(source_info *si) -{ - free(si->date); - free(si->author); - free(si->manuscript); - free(si->manuscript_reference); - free(si->manuscript_storage_place); - free(si->transcriber); - free(si->transcription_date); - free(si->book); -} - static void gregorio_free_score_infos(gregorio_score *score) { - int annotation_num; if (!score) { gregorio_message(_("function called with NULL argument"), "gregorio_free_score_infos", VERBOSITY_WARNING, 0); return; } - free(score->name); - free(score->gabc_copyright); - free(score->score_copyright); - free(score->office_part); - free(score->occasion); - free(score->meter); - free(score->commentary); - free(score->arranger); - free(score->user_notes); - free(score->gregoriotex_font); - for (annotation_num = 0; annotation_num < MAX_ANNOTATIONS; ++annotation_num) { - free(score->annotation[annotation_num]); - } - gregorio_free_source_info(&score->si); + /* don't free the strings coming from headers; they will be freed when the + * headers themselves are freed */ if (score->first_voice_info) { gregorio_free_voice_infos(score->first_voice_info); } } +static void free_headers(gregorio_score *score) { + gregorio_header *header = score->headers; + while (header) { + gregorio_header *next = header->next; + free(header->name); + free(header->value); + free(header); + header = next; + } +} + void gregorio_free_score(gregorio_score *score) { if (!score) { @@ -1071,129 +1181,13 @@ void gregorio_free_score(gregorio_score *score) } gregorio_free_syllables(&(score->first_syllable), score->number_of_voices); gregorio_free_score_infos(score); + free_headers(score); free(score); } -void gregorio_set_score_name(gregorio_score *score, char *name) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_name", VERBOSITY_WARNING, 0); - return; - } - free(score->name); - score->name = name; -} - -void gregorio_set_score_gabc_copyright(gregorio_score *score, - char *gabc_copyright) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_gabc_copyright", VERBOSITY_WARNING, 0); - return; - } - free(score->gabc_copyright); - score->gabc_copyright = gabc_copyright; -} - -void gregorio_set_score_score_copyright(gregorio_score *score, - char *score_copyright) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_score_copyright", VERBOSITY_WARNING, 0); - return; - } - free(score->score_copyright); - score->score_copyright = score_copyright; -} - -void gregorio_set_score_office_part(gregorio_score *score, char *office_part) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_office_part", VERBOSITY_WARNING, 0); - return; - } - free(score->office_part); - score->office_part = office_part; -} - -void gregorio_set_score_occasion(gregorio_score *score, char *occasion) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_occasion", VERBOSITY_WARNING, 0); - return; - } - free(score->occasion); - score->occasion = occasion; -} - -void gregorio_set_score_meter(gregorio_score *score, char *meter) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_meter", VERBOSITY_WARNING, 0); - return; - } - free(score->meter); - score->meter = meter; -} - -void gregorio_set_score_commentary(gregorio_score *score, char *commentary) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_commentary", VERBOSITY_WARNING, 0); - return; - } - free(score->commentary); - score->commentary = commentary; -} - -void gregorio_set_score_arranger(gregorio_score *score, char *arranger) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_arranger", VERBOSITY_WARNING, 0); - return; - } - free(score->arranger); - score->arranger = arranger; -} - -void gregorio_set_score_number_of_voices(gregorio_score *score, - int number_of_voices) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_number_of_voices", VERBOSITY_WARNING, 0); - return; - } - score->number_of_voices = number_of_voices; -} - -void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_user_notes", VERBOSITY_WARNING, 0); - return; - } - free(score->user_notes); - score->user_notes = user_notes; -} - void gregorio_add_voice_info(gregorio_voice_info **current_voice_info) { gregorio_voice_info *next = gregorio_calloc(1, sizeof(gregorio_voice_info)); - next->initial_key = NO_KEY; - next->flatted_key = false; - next->style = NULL; - next->virgula_position = NULL; - next->next_voice_info = NULL; if (*current_voice_info) { (*current_voice_info)->next_voice_info = next; } @@ -1209,18 +1203,12 @@ void gregorio_free_voice_infos(gregorio_voice_info *voice_info) return; } while (voice_info) { - free(voice_info->style); - free(voice_info->virgula_position); next = voice_info->next_voice_info; free(voice_info); voice_info = next; } } -/* - * a set of quite useless function - */ - void gregorio_set_score_annotation(gregorio_score *score, char *annotation) { int annotation_num; @@ -1237,125 +1225,47 @@ void gregorio_set_score_annotation(gregorio_score *score, char *annotation) } } if (annotation_num >= MAX_ANNOTATIONS) { - free(annotation); gregorio_message(_("too many annotations"), "gregorio_set_annotation", VERBOSITY_WARNING, 0); } } -void gregorio_set_score_author(gregorio_score *score, char *author) +void gregorio_set_score_staff_lines(gregorio_score *const score, + const char staff_lines) { if (!score) { gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_author", VERBOSITY_WARNING, 0); + "gregorio_set_score_staff_lines", VERBOSITY_WARNING, 0); return; } - free(score->si.author); - score->si.author = author; -} - -void gregorio_set_score_date(gregorio_score *score, char *date) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_date", VERBOSITY_WARNING, 0); + if (staff_lines < 2 || staff_lines > 5) { + gregorio_message(_("invalid number of staff lines"), + "gregorio_set_score_staff_lines", VERBOSITY_ERROR, 0); return; } - free(score->si.date); - score->si.date = date; + score->staff_lines = staff_lines; + score->highest_pitch = LOWEST_PITCH + 4 + (2 * staff_lines); + score->high_ledger_line_pitch = score->highest_pitch - 1; } -void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript) +void gregorio_add_score_header(gregorio_score *score, char *name, char *value) { + gregorio_header *header; if (!score) { gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_manuscript", VERBOSITY_WARNING, 0); + "gregorio_add_score_header", VERBOSITY_WARNING, 0); return; } - free(score->si.manuscript); - score->si.manuscript = manuscript; -} - -void gregorio_set_score_manuscript_reference(gregorio_score *score, - char *manuscript_reference) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_reference", VERBOSITY_WARNING, 0); - return; - } - free(score->si.manuscript_reference); - score->si.manuscript_reference = manuscript_reference; -} - -void gregorio_set_score_manuscript_storage_place(gregorio_score *score, - char *manuscript_storage_place) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_manuscript_storage_place", - VERBOSITY_WARNING, 0); - return; - } - free(score->si.manuscript_storage_place); - score->si.manuscript_storage_place = manuscript_storage_place; -} - -void gregorio_set_score_book(gregorio_score *score, char *book) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_book", VERBOSITY_WARNING, 0); - return; - } - free(score->si.book); - score->si.book = book; -} - -void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_transcriber", VERBOSITY_WARNING, 0); - return; - } - free(score->si.transcriber); - score->si.transcriber = transcriber; -} - -void gregorio_set_score_transcription_date(gregorio_score *score, - char *transcription_date) -{ - if (!score) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_score_transcription_date", VERBOSITY_WARNING, 0); - return; - } - free(score->si.transcription_date); - score->si.transcription_date = transcription_date; -} - -void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style) -{ - if (!voice_info) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_voice_style", VERBOSITY_WARNING, 0); - return; - } - free(voice_info->style); - voice_info->style = style; -} - -void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, - char *virgula_position) -{ - if (!voice_info) { - gregorio_message(_("function called with NULL argument"), - "gregorio_set_voice_virgula_position", VERBOSITY_WARNING, 0); - return; + header = (gregorio_header *)gregorio_malloc(sizeof(gregorio_header)); + header->name = name; + header->value = value; + header->next = NULL; + if (score->last_header) { + score->last_header->next = header; + } else { + score->headers = header; } - free(voice_info->virgula_position); - voice_info->virgula_position = virgula_position; + score->last_header = header; } /********************************** @@ -1369,22 +1279,24 @@ void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, * * 3 for a C key on the second line * * 5 for a C key on the third line (default key) * * 7 for a C key on the fourth line + * * 9 for a C key on the fifth line * * * -2 for a F key on the first line * * 0 for a F key on the second line * * 2 for a F key on the third line * * 4 for a F key on the fourth line + * * 6 for a F key on the fifth line * *********************************/ -int gregorio_calculate_new_key(char step, int line) +int gregorio_calculate_new_key(gregorio_clef_info clef) { - switch (step) { - case C_KEY: - return (2 * line) - 1; + switch (clef.clef) { + case CLEF_C: + return (2 * clef.line) - 1; break; - case F_KEY: - return (2 * line) - 4; + case CLEF_F: + return (2 * clef.line) - 4; break; default: gregorio_message(_("can't calculate key"), @@ -1393,57 +1305,6 @@ int gregorio_calculate_new_key(char step, int line) } } -/********************************** - * - * The reverse function of the preceeding : give step (c or f) and - * line (1-4) from an integer representing the key. - * - *********************************/ - -void gregorio_det_step_and_line_from_key(int key, char *step, int *line) -{ - switch (key) { - case -2: - *step = 'f'; - *line = 1; - break; - case 0: - *step = 'f'; - *line = 2; - break; - case 2: - *step = 'f'; - *line = 3; - break; - case 4: - *step = 'f'; - *line = 4; - break; - case 1: - *step = 'c'; - *line = 1; - break; - case 3: - *step = 'c'; - *line = 2; - break; - case 5: - *step = 'c'; - *line = 3; - break; - case 7: - *step = 'c'; - *line = 4; - break; - default: - *step = '?'; - *line = 0; - gregorio_message(_("can't determine step and line of the key"), - "gregorio_det_step_and_line_from_key", VERBOSITY_ERROR, 0); - return; - } -} - static signed char gregorio_syllable_first_note(gregorio_syllable *syllable) { gregorio_element *element; @@ -1460,7 +1321,9 @@ static signed char gregorio_syllable_first_note(gregorio_syllable *syllable) if (element->type == GRE_ELEMENT && element->u.first_glyph) { glyph = element->u.first_glyph; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1485,7 +1348,9 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, if (glyph) { glyph = glyph->next; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1501,7 +1366,9 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, if (element->type == GRE_ELEMENT && element->u.first_glyph) { glyph = element->u.first_glyph; while (glyph) { - if (glyph->type == GRE_GLYPH && glyph->u.notes.first_note) { + if (glyph->type == GRE_GLYPH + && glyph->u.notes.glyph_type != G_ALTERATION + && glyph->u.notes.first_note) { assert(glyph->u.notes.first_note->type == GRE_NOTE); return glyph->u.notes.first_note->u.note.pitch; } @@ -1529,44 +1396,6 @@ signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, /********************************** * - * A function that may be useful (used in xml-write) : we have a - * tabular of alterations (we must remember all alterations on all - * notes all the time, they are reinitialized when a bar is found), - * and we assign all of them to NO_ALTERATION. - * - *This function works in fact with a tabular of tabular, one per - *voice, for polyphony. - * - *********************************/ - -void gregorio_reinitialize_alterations(char alterations[][13], - int number_of_voices) -{ - int i; - int j; - for (j = 0; j < number_of_voices; j++) { - for (i = 0; i < 13; i++) { - alterations[j][i] = NO_ALTERATION; - } - } -} - -/********************************** - * - * The corresponding function for monophony. - * - *********************************/ - -void gregorio_reinitialize_one_voice_alterations(char alterations[13]) -{ - int i; - for (i = 0; i < 13; i++) { - alterations[i] = NO_ALTERATION; - } -} - -/********************************** - * * A function called after the entire score is determined : we check * if the first element is a key change, if it is the case we delete * it and we update the score->voice-info->initial_key. Works in @@ -1574,9 +1403,9 @@ void gregorio_reinitialize_one_voice_alterations(char alterations[13]) * *********************************/ -void gregorio_fix_initial_keys(gregorio_score *score, int default_key) +void gregorio_fix_initial_keys(gregorio_score *score, + gregorio_clef_info default_clef) { - int clef = 0; gregorio_element *element; gregorio_voice_info *voice_info; int i; @@ -1593,22 +1422,8 @@ void gregorio_fix_initial_keys(gregorio_score *score, int default_key) if (!element) { continue; } - if (element->type == GRE_C_KEY_CHANGE) { - clef = - gregorio_calculate_new_key(C_KEY, - element->u.misc.pitched.pitch - '0'); - voice_info->initial_key = clef; - voice_info->flatted_key = element->u.misc.pitched.flatted_key; - gregorio_free_one_element(&(score->first_syllable->elements[i])); - gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, - _("in voice %d the first element is a key definition, " - "considered as initial key"), i + 1); - } else if (element->type == GRE_F_KEY_CHANGE) { - clef = - gregorio_calculate_new_key(F_KEY, - element->u.misc.pitched.pitch - '0'); - voice_info->initial_key = clef; - voice_info->flatted_key = element->u.misc.pitched.flatted_key; + if (element->type == GRE_CLEF) { + voice_info->initial_clef = element->u.misc.clef; gregorio_free_one_element(&(score->first_syllable->elements[i])); gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, _("in voice %d the first element is a key definition, " @@ -1637,8 +1452,8 @@ void gregorio_fix_initial_keys(gregorio_score *score, int default_key) voice_info = score->first_voice_info; for (i = 0; i < score->number_of_voices; i++) { - if (voice_info->initial_key == NO_KEY) { - voice_info->initial_key = default_key; + if (!voice_info->initial_clef.line) { + voice_info->initial_clef = default_clef; gregorio_messagef("gregorio_fix_initial_keys", VERBOSITY_INFO, 0, _("no initial key definition in voice %d, default key " "definition applied"), i + 1); @@ -1668,3 +1483,25 @@ bool gregorio_is_only_special(gregorio_element *element) } return 1; } + +const char *gregorio_unknown(int value) { + static char buf[20]; + gregorio_snprintf(buf, sizeof buf, "?%d", value); + return buf; +} + +ENUM_TO_STRING(gregorio_type, GREGORIO_TYPE) +ENUM_TO_STRING(gregorio_shape, GREGORIO_SHAPE) +ENUM_TO_STRING(gregorio_bar, GREGORIO_BAR) +ENUM_TO_STRING(gregorio_sign, GREGORIO_SIGN) +ENUM_TO_STRING(gregorio_space, GREGORIO_SPACE) +ENUM_TO_STRING(gregorio_liquescentia, GREGORIO_LIQUESCENTIA) +ENUM_TO_STRING(grehepisema_size, GREHEPISEMA_SIZE) +ENUM_TO_STRING(gregorio_vposition, GREGORIO_VPOSITION) +ENUM_TO_STRING(gregorio_glyph_type, GREGORIO_GLYPH_TYPE) +ENUM_TO_STRING(grestyle_style, GRESTYLE_STYLE) +ENUM_TO_STRING(grestyle_type, GRESTYLE_TYPE) +ENUM_TO_STRING(gregorio_tr_centering, GREGORIO_TR_CENTERING) +ENUM_TO_STRING(gregorio_nlba, GREGORIO_NLBA) +ENUM_TO_STRING(gregorio_euouae, GREGORIO_EUOUAE) +ENUM_TO_STRING(gregorio_word_position, GREGORIO_WORD_POSITION) diff --git a/Build/source/texk/gregorio/gregorio-src/src/struct.h b/Build/source/texk/gregorio/gregorio-src/src/struct.h index cf9ddbe998d..0f588cafd5f 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/struct.h +++ b/Build/source/texk/gregorio/gregorio-src/src/struct.h @@ -32,6 +32,7 @@ #ifndef STRUCT_H #define STRUCT_H +#include "enum_generator.h" #include "bool.h" #include "sha1.h" @@ -62,314 +63,335 @@ typedef struct gregorio_scanner_location { /* all the different types of things a gregorio_* can be */ -typedef enum gregorio_type { - GRE_NOTE = 1, - GRE_GLYPH, - GRE_ELEMENT, - GRE_FLAT, - GRE_SHARP, - GRE_NATURAL, - GRE_C_KEY_CHANGE, - GRE_C_KEY_CHANGE_FLATED, - GRE_SYLLABLE, - GRE_F_KEY_CHANGE, - GRE_F_KEY_CHANGE_FLATED, - GRE_END_OF_LINE, - GRE_SPACE, - GRE_BAR, - GRE_END_OF_PAR, - GRE_CUSTOS, +#define GREGORIO_TYPE(A,E,X,L) \ + A(GRE_NOTE, 1) \ + E(GRE_GLYPH) \ + E(GRE_ELEMENT) \ + E(GRE_CLEF) \ + E(GRE_SYLLABLE) \ + E(GRE_END_OF_LINE) \ + E(GRE_SPACE) \ + E(GRE_BAR) \ + E(GRE_CUSTOS) \ + E(GRE_MANUAL_CUSTOS) \ /* I don't really know how I could use the a TEXVERB_NOTE in gregoriotex, - * as we don't write note by note... */ - /* GRE_TEXVERB_NOTE, */ - GRE_TEXVERB_GLYPH, - GRE_TEXVERB_ELEMENT, + * as we don't write note by note... */ \ + /* GRE_TEXVERB_NOTE, */ \ + E(GRE_TEXVERB_GLYPH) \ + E(GRE_TEXVERB_ELEMENT) \ /* above lines text, quite the same as GRE_TEXVERB_ELEMENT, but counted - * differently for the spaces above the lines */ - GRE_ALT, - GRE_NLBA, - GRE_MANUAL_CUSTOS -} gregorio_type; + * differently for the spaces above the lines */ \ + E(GRE_ALT) \ + E(GRE_NLBA) \ + E(GRE_AUTOFUSE_START) \ + L(GRE_AUTOFUSE_END) +ENUM(gregorio_type, GREGORIO_TYPE); + +#define GREGORIO_CLEF(A,E,X,L) \ + A(CLEF_C, 0) \ + X(CLEF_F, 1) +ENUM(gregorio_clef, GREGORIO_CLEF); /* the different shapes, only for notes */ -typedef enum gregorio_shape { - S_UNDETERMINED = 0, - S_PUNCTUM, - S_PUNCTUM_END_OF_GLYPH, - S_PUNCTUM_INCLINATUM, - S_PUNCTUM_INCLINATUM_DEMINUTUS, - S_PUNCTUM_INCLINATUM_AUCTUS, - S_VIRGA, - S_VIRGA_REVERSA, - S_BIVIRGA, - S_TRIVIRGA, - S_ORISCUS, - S_ORISCUS_AUCTUS, - S_ORISCUS_DEMINUTUS, - S_ORISCUS_SCAPUS, - S_QUILISMA, - S_STROPHA, - S_STROPHA_AUCTA, - S_DISTROPHA, - S_DISTROPHA_AUCTA, - S_TRISTROPHA, - S_TRISTROPHA_AUCTA, - S_PUNCTUM_CAVUM, - S_LINEA_PUNCTUM, - S_LINEA_PUNCTUM_CAVUM, - S_PUNCTUM_CAVUM_INCLINATUM, - S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS, +#define GREGORIO_SHAPE(A,E,X,L) \ + A(S_UNDETERMINED, 0) \ + E(S_PUNCTUM) \ + E(S_PUNCTUM_END_OF_GLYPH) \ + E(S_PUNCTUM_INCLINATUM) \ + E(S_PUNCTUM_INCLINATUM_DEMINUTUS) \ + E(S_PUNCTUM_INCLINATUM_AUCTUS) \ + E(S_VIRGA) \ + E(S_VIRGA_REVERSA) \ + E(S_BIVIRGA) \ + E(S_TRIVIRGA) \ + E(S_ORISCUS_ASCENDENS) \ + E(S_ORISCUS_DESCENDENS) \ + E(S_ORISCUS_DEMINUTUS) \ + E(S_ORISCUS_SCAPUS) \ + E(S_QUILISMA) \ + E(S_STROPHA) \ + E(S_STROPHA_AUCTA) \ + E(S_DISTROPHA) \ + E(S_DISTROPHA_AUCTA) \ + E(S_TRISTROPHA) \ + E(S_TRISTROPHA_AUCTA) \ + E(S_PUNCTUM_CAVUM) \ + E(S_LINEA_PUNCTUM) \ + E(S_LINEA_PUNCTUM_CAVUM) \ + E(S_PUNCTUM_CAVUM_INCLINATUM) \ + E(S_PUNCTUM_CAVUM_INCLINATUM_AUCTUS) \ + E(S_ORISCUS_CAVUM_ASCENDENS) \ + E(S_ORISCUS_CAVUM_DESCENDENS) \ + E(S_ORISCUS_CAVUM_DEMINUTUS) \ + E(S_FLAT) \ + E(S_SHARP) \ + E(S_NATURAL) \ /* special shapes that must not appear in the final form of the score : * quadratum is the shape of the first note of a punctum quadratum * and quilisma quadratum is the shape of the first note of a pes - * quislisma quadratum */ - S_QUADRATUM, - /* those shapes are for now used only in gregoriotex */ - S_QUILISMA_QUADRATUM, - S_PUNCTUM_AUCTUS_ASCENDENS, - S_PUNCTUM_AUCTUS_DESCENDENS, - S_PUNCTUM_DEMINUTUS, - S_LINEA -} gregorio_shape; + * quislisma quadratum */ \ + E(S_ORISCUS_UNDETERMINED) \ + E(S_ORISCUS_CAVUM_UNDETERMINED) \ + E(S_QUADRATUM) \ + /* those shapes are for now used only in gregoriotex */ \ + E(S_QUILISMA_QUADRATUM) \ + E(S_PUNCTUM_AUCTUS_ASCENDENS) \ + E(S_PUNCTUM_AUCTUS_DESCENDENS) \ + E(S_PUNCTUM_DEMINUTUS) \ + L(S_LINEA) +ENUM(gregorio_shape, GREGORIO_SHAPE); /* the different kind of bars */ -typedef enum gregorio_bar { - B_NO_BAR = 0, - B_VIRGULA, - B_DIVISIO_MINIMA, - B_DIVISIO_MINOR, - B_DIVISIO_MAIOR, - B_DIVISIO_FINALIS, - B_DIVISIO_MINOR_D1, - B_DIVISIO_MINOR_D2, - B_DIVISIO_MINOR_D3, - B_DIVISIO_MINOR_D4, - B_DIVISIO_MINOR_D5, - B_DIVISIO_MINOR_D6 -} gregorio_bar; +#define GREGORIO_BAR(A,E,X,L) \ + A(B_NO_BAR, 0) \ + E(B_VIRGULA) \ + E(B_DIVISIO_MINIMA) \ + E(B_DIVISIO_MINOR) \ + E(B_DIVISIO_MAIOR) \ + E(B_DIVISIO_FINALIS) \ + E(B_DIVISIO_MINOR_D1) \ + E(B_DIVISIO_MINOR_D2) \ + E(B_DIVISIO_MINOR_D3) \ + E(B_DIVISIO_MINOR_D4) \ + E(B_DIVISIO_MINOR_D5) \ + E(B_DIVISIO_MINOR_D6) \ + E(B_DIVISIO_MINOR_D7) \ + L(B_DIVISIO_MINOR_D8) +ENUM(gregorio_bar, GREGORIO_BAR); /* definition of the signs. You can notice that the values are made so * that if you wan to add a vertical episema to a note, you juste * make note->signs+=_V_EPISEMA, so please don't change the value as * this trick is used. */ -typedef enum gregorio_sign { - _NO_SIGN = 0x00, - _PUNCTUM_MORA = 0x01, - _AUCTUM_DUPLEX = 0x02, - _V_EPISEMA = 0x10, - _V_EPISEMA_PUNCTUM_MORA = 0x11, - _V_EPISEMA_AUCTUM_DUPLEX = 0x12, - /* more rare signs, for now they can't be used with the others */ - _ACCENTUS = 0x03, - _ACCENTUS_REVERSUS = 0x04, - _CIRCULUS = 0x05, - _SEMI_CIRCULUS = 0x06, - _SEMI_CIRCULUS_REVERSUS = 0x07, - /* signs of a bar */ - _BAR_H_EPISEMA = 0x08, - _V_EPISEMA_BAR_H_EPISEMA = 0x18 -} gregorio_sign; +#define GREGORIO_SIGN(A,E,X,L) \ + A(_NO_SIGN, 0x00) \ + A(_PUNCTUM_MORA, 0x01) \ + A(_AUCTUM_DUPLEX, 0x02) \ + A(_V_EPISEMA, 0x10) \ + A(_V_EPISEMA_PUNCTUM_MORA, 0x11) \ + A(_V_EPISEMA_AUCTUM_DUPLEX, 0x12) \ + /* more rare signs, for now they can't be used with the others */ \ + A(_ACCENTUS, 0x03) \ + A(_ACCENTUS_REVERSUS, 0x04) \ + A(_CIRCULUS, 0x05) \ + A(_SEMI_CIRCULUS, 0x06) \ + A(_SEMI_CIRCULUS_REVERSUS, 0x07) \ + /* signs of a bar */ \ + A(_BAR_H_EPISEMA, 0x08) \ + X(_V_EPISEMA_BAR_H_EPISEMA, 0x18) +ENUM(gregorio_sign, GREGORIO_SIGN); /* the different spaces */ -typedef enum gregorio_space { - SP_DEFAULT = 1, - SP_NO_SPACE, - SP_ZERO_WIDTH, - SP_NEUMATIC_CUT, - SP_LARGER_SPACE, - SP_GLYPH_SPACE, - SP_NEUMATIC_CUT_NB, - SP_LARGER_SPACE_NB, - SP_GLYPH_SPACE_NB -} gregorio_space; +#define GREGORIO_SPACE(A,E,X,L) \ + A(SP_DEFAULT, 1) \ + E(SP_NO_SPACE) \ + E(SP_ZERO_WIDTH) \ + E(SP_HALF_SPACE) \ + E(SP_NEUMATIC_CUT) \ + E(SP_LARGER_SPACE) \ + E(SP_GLYPH_SPACE) \ + E(SP_AD_HOC_SPACE) \ + E(SP_NEUMATIC_CUT_NB) \ + E(SP_LARGER_SPACE_NB) \ + E(SP_GLYPH_SPACE_NB) \ + L(SP_AD_HOC_SPACE_NB) +ENUM(gregorio_space, GREGORIO_SPACE); /* the different liquescences, like for the signs, have special * values: to say that something is initio_debilis, just do * glyph->liquescentia+=L_INITIO_DEBILIS. So don't change the value, * the trick is much used */ -typedef enum gregorio_liquescentia { - L_NO_LIQUESCENTIA = 0, - L_DEMINUTUS = 0x01, - L_AUCTUS_ASCENDENS = 0x02, - L_AUCTUS_DESCENDENS = 0x04, - L_AUCTA = 0x08, - L_INITIO_DEBILIS = 0x10, - L_DEMINUTUS_INITIO_DEBILIS = 0x11, - L_AUCTUS_ASCENDENS_INITIO_DEBILIS = 0x12, - L_AUCTUS_DESCENDENS_INITIO_DEBILIS = 0x14, - L_AUCTA_INITIO_DEBILIS = 0x18 -} gregorio_liquescentia; - -typedef enum grehepisema_size { - H_NORMAL = 0, - H_SMALL_LEFT, - H_SMALL_CENTRE, - H_SMALL_RIGHT -} grehepisema_size; +#define TAIL_LIQUESCENTIA_MASK 0x07 + +#define GREGORIO_LIQUESCENTIA(A,E,X,L) \ + A(L_NO_LIQUESCENTIA, 0x00) \ + A(L_DEMINUTUS, 0x01) \ + A(L_AUCTUS_ASCENDENS, 0x02) \ + A(L_AUCTUS_DESCENDENS, 0x04) \ + A(L_INITIO_DEBILIS, 0x10) \ + A(L_DEMINUTUS_INITIO_DEBILIS, 0x11) \ + A(L_AUCTUS_ASCENDENS_INITIO_DEBILIS, 0x12) \ + A(L_AUCTUS_DESCENDENS_INITIO_DEBILIS, 0x14) \ + A(L_FUSED, 0x20) \ + A(L_FUSED_DEMINUTUS, 0x21) \ + A(L_FUSED_AUCTUS_ASCENDENS, 0x22) \ + X(L_FUSED_AUCTUS_DESCENDENS, 0x24) +ENUM(gregorio_liquescentia, GREGORIO_LIQUESCENTIA); + +#define GREHEPISEMA_SIZE(A,E,X,L) \ + A(H_NORMAL, 0) \ + E(H_SMALL_LEFT) \ + E(H_SMALL_CENTRE) \ + L(H_SMALL_RIGHT) +ENUM(grehepisema_size, GREHEPISEMA_SIZE); /* values are chosen so BELOW/ABOVE can be added to a pitch */ -typedef enum gregorio_vposition { - VPOS_AUTO = 0, - VPOS_BELOW = -1, - VPOS_ABOVE = 1 -} gregorio_vposition; +#define GREGORIO_VPOSITION(A,E,X,L) \ + A(VPOS_AUTO, 0) \ + A(VPOS_BELOW, -1) \ + X(VPOS_ABOVE, 1) +ENUM(gregorio_vposition, GREGORIO_VPOSITION); /* The different types of glyph */ -typedef enum gregorio_glyph_type { - G_PUNCTUM_INCLINATUM = 1, - G_2_PUNCTA_INCLINATA_DESCENDENS, - G_3_PUNCTA_INCLINATA_DESCENDENS, - G_4_PUNCTA_INCLINATA_DESCENDENS, - G_5_PUNCTA_INCLINATA_DESCENDENS, - G_2_PUNCTA_INCLINATA_ASCENDENS, - G_3_PUNCTA_INCLINATA_ASCENDENS, - G_4_PUNCTA_INCLINATA_ASCENDENS, - G_5_PUNCTA_INCLINATA_ASCENDENS, - G_TRIGONUS, - G_PUNCTA_INCLINATA, - /* !!! DO NOT CHANGE THE ENUM ORDERING BEFORE THIS LINE !!! */ - G_UNDETERMINED, - G_VIRGA, - G_STROPHA, - G_STROPHA_AUCTA, - G_PUNCTUM, - G_PODATUS, - G_PES_QUADRATUM, - G_FLEXA, - G_TORCULUS, - G_TORCULUS_RESUPINUS, - G_TORCULUS_RESUPINUS_FLEXUS, - G_PORRECTUS, - G_PORRECTUS_FLEXUS, - G_BIVIRGA, - G_TRIVIRGA, - G_DISTROPHA, - G_DISTROPHA_AUCTA, - G_TRISTROPHA, - G_TRISTROPHA_AUCTA, - G_PES_QUADRATUM_FIRST_PART, - G_SCANDICUS, - G_PES_QUILISMA_QUADRATUM_FIRST_PART, - G_ANCUS, - G_ONE_NOTE, - G_PUNCTA_ASCENDENS, - G_PUNCTA_DESCENDENS, - G_VIRGA_REVERSA, - G_SALICUS, - G_VIRGA_STRATA, - G_TORCULUS_LIQUESCENS, - /* additional glyph types, necessary for determination */ - G_PORRECTUS_NO_BAR, - G_PORRECTUS_FLEXUS_NO_BAR, - G_PES_QUILISMA -} gregorio_glyph_type; +#define GREGORIO_GLYPH_TYPE(A,E,X,L) \ + A(G_PUNCTUM_INCLINATUM, 1) \ + E(G_2_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_3_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_4_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_5_PUNCTA_INCLINATA_DESCENDENS) \ + E(G_2_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_3_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_4_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_5_PUNCTA_INCLINATA_ASCENDENS) \ + E(G_TRIGONUS) \ + E(G_PUNCTA_INCLINATA) \ + /* !!! DO NOT CHANGE THE ENUM ORDERING BEFORE THIS LINE !!! */ \ + E(G_UNDETERMINED) \ + E(G_VIRGA) \ + E(G_STROPHA) \ + E(G_STROPHA_AUCTA) \ + E(G_PUNCTUM) \ + E(G_ALTERATION) \ + E(G_PODATUS) \ + E(G_PES_QUADRATUM) \ + E(G_FLEXA) \ + E(G_TORCULUS) \ + E(G_TORCULUS_RESUPINUS) \ + E(G_TORCULUS_RESUPINUS_FLEXUS) \ + E(G_PORRECTUS) \ + E(G_PORRECTUS_FLEXUS) \ + E(G_BIVIRGA) \ + E(G_TRIVIRGA) \ + E(G_DISTROPHA) \ + E(G_DISTROPHA_AUCTA) \ + E(G_TRISTROPHA) \ + E(G_TRISTROPHA_AUCTA) \ + E(G_PES_QUADRATUM_FIRST_PART) \ + E(G_SCANDICUS) \ + E(G_PES_QUILISMA_QUADRATUM_FIRST_PART) \ + E(G_ANCUS) \ + E(G_ONE_NOTE) \ + E(G_PUNCTA_ASCENDENS) \ + E(G_PUNCTA_DESCENDENS) \ + E(G_VIRGA_REVERSA) \ + E(G_SALICUS) \ + E(G_SALICUS_FLEXUS) \ + E(G_VIRGA_STRATA) \ + E(G_TORCULUS_LIQUESCENS) \ + E(G_PES_QUILISMA) \ + /* additional glyph types, necessary for determination */ \ + E(G_PORRECTUS_NO_BAR) \ + E(G_PORRECTUS_FLEXUS_NO_BAR) \ + L(G_FUSED) +ENUM(gregorio_glyph_type, GREGORIO_GLYPH_TYPE); /* - * + * * The we define the characters. First we define the different styles. You * can notice that center is just a style like the others - * + * */ -typedef enum grestyle_style { - ST_NO_STYLE = 0, - ST_ITALIC, - ST_CENTER, +#define GRESTYLE_STYLE(A,E,X,L) \ + A(ST_NO_STYLE, 0) \ + E(ST_ITALIC) \ + E(ST_CENTER) \ /* when the user types a {}, basically the same behaviour, except for - * the initial */ - ST_FORCED_CENTER, - ST_BOLD, - ST_TT, - ST_SMALL_CAPS, - ST_SPECIAL_CHAR, - ST_VERBATIM, - ST_INITIAL, /* a style used to determine the initial */ - ST_UNDERLINED, - ST_COLORED, - ST_FIRST_WORD, - ST_FIRST_SYLLABLE, - ST_FIRST_SYLLABLE_INITIAL, - ST_SYLLABLE_INITIAL -} grestyle_style; + * the initial */ \ + E(ST_FORCED_CENTER) \ + E(ST_BOLD) \ + E(ST_TT) \ + E(ST_SMALL_CAPS) \ + E(ST_SPECIAL_CHAR) \ + E(ST_VERBATIM) \ + E(ST_INITIAL) /* a style used to determine the initial */ \ + E(ST_UNDERLINED) \ + E(ST_COLORED) \ + E(ST_FIRST_WORD) \ + E(ST_FIRST_SYLLABLE) \ + E(ST_FIRST_SYLLABLE_INITIAL) \ + L(ST_SYLLABLE_INITIAL) +ENUM(grestyle_style, GRESTYLE_STYLE); /* * Then the different types of styles. See the next comments for further - * readings. + * readings. */ -typedef enum grestyle_type { - ST_T_NOTHING = 0, - ST_T_BEGIN, - ST_T_END -} grestyle_type; +#define GRESTYLE_TYPE(A,E,X,L) \ + A(ST_T_NOTHING, 0) \ + E(ST_T_BEGIN) \ + L(ST_T_END) +ENUM(grestyle_type, GRESTYLE_TYPE); /* - * The different types of translation centerings + * The different types of translation centerings */ -typedef enum gregorio_tr_centering { - TR_NORMAL = 0, - TR_WITH_CENTER_BEGINNING, - TR_WITH_CENTER_END -} gregorio_tr_centering; +#define GREGORIO_TR_CENTERING(A,E,X,L) \ + A(TR_NORMAL, 0) \ + E(TR_WITH_CENTER_BEGINNING) \ + L(TR_WITH_CENTER_END) +ENUM(gregorio_tr_centering, GREGORIO_TR_CENTERING); /* - * Nothing, beginning or end of area without linebreak + * Nothing, beginning or end of area without linebreak */ -typedef enum gregorio_nlba { - NLBA_NORMAL = 0, - NLBA_BEGINNING, - NLBA_END -} gregorio_nlba; - -typedef enum gregorio_euouae { - EUOUAE_NORMAL = 0, - EUOUAE_BEGINNING, - EUOUAE_END -} gregorio_euouae; - -typedef enum gregorio_word_position { - WORD_BEGINNING = 1, - WORD_MIDDLE, - WORD_END, - WORD_ONE_SYLLABLE -} gregorio_word_position; - -/* the centering schemes for gabc: */ -typedef enum gregorio_lyric_centering { - SCHEME_DEFAULT = 0, - SCHEME_VOWEL, - SCHEME_SYLLABLE -} gregorio_lyric_centering; +#define GREGORIO_NLBA(A,E,X,L) \ + A(NLBA_NORMAL, 0) \ + E(NLBA_BEGINNING) \ + L(NLBA_END) +ENUM(gregorio_nlba, GREGORIO_NLBA); + +#define GREGORIO_EUOUAE(A,E,X,L) \ + A(EUOUAE_NORMAL, 0) \ + E(EUOUAE_BEGINNING) \ + L(EUOUAE_END) +ENUM(gregorio_euouae, GREGORIO_EUOUAE); + +#define GREGORIO_WORD_POSITION(A,E,X,L) \ + A(WORD_BEGINNING, 1) \ + E(WORD_MIDDLE) \ + E(WORD_END) \ + L(WORD_ONE_SYLLABLE) +ENUM(gregorio_word_position, GREGORIO_WORD_POSITION); typedef struct gregorio_extra_info { - /* the sub-type of GRE_END_OF_LINE */ - ENUM_BITFIELD(gregorio_type) sub_type:8; - ENUM_BITFIELD(gregorio_bar) bar:8; - ENUM_BITFIELD(gregorio_space) space:8; - ENUM_BITFIELD(gregorio_nlba) nlba:8; + char *ad_hoc_space_factor; + ENUM_BITFIELD(gregorio_bar) bar:4; + ENUM_BITFIELD(gregorio_space) space:4; + ENUM_BITFIELD(gregorio_nlba) nlba:2; + bool eol_ragged:1; + bool eol_forces_custos:1; + bool eol_forces_custos_on:1; } gregorio_extra_info; +typedef struct gregorio_clef_info { + unsigned char line; + unsigned char secondary_line; + ENUM_BITFIELD(gregorio_clef) clef:1; + bool flatted:1; + ENUM_BITFIELD(gregorio_clef) secondary_clef:1; + bool secondary_flatted:1; +} gregorio_clef_info; + typedef union gregorio_misc_element_info { - /* pitched is used for GRE_CUSTOS, GRE_FLAT, GRE_SHARP, GRE_NATURAL, - * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and - * GRE_F_KEY_CHANGE_FLATED */ + /* pitched is used for GRE_CUSTOS */ struct { - /* The pitch of the glyph for GRE_FLAT, GRE_NATURAL, GRE_SHARP. - * If a clef change, pitch will be a number indicating the line of - * the clef. */ + /* The pitch of the glyph. */ signed char pitch; /* boolean indicating a clef with a B-flat */ - bool flatted_key:1; bool force_pitch:1; } pitched; + /* clef is used for GRE_CLEF */ + struct gregorio_clef_info clef; /* unpitched is used for everything else */ struct { struct gregorio_extra_info info; @@ -381,7 +403,7 @@ typedef union gregorio_misc_element_info { /* * ! We start with the most precise structure, the note structure. The * note is always a real note (we'll see that glyphs and elements can be - * other things). + * other things). */ typedef struct gregorio_note { /* then two pointer to other notes, to make a chained list. */ @@ -394,9 +416,7 @@ typedef struct gregorio_note { * structure generation. */ char *texverb; union { - /* note is used for GRE_NOTE, GRE_FLAT, GRE_SHARP, GRE_NATURAL, - * GRE_C_KEY_CHANGE, GRE_F_KEY_CHANGE, GRE_C_KEY_CHANGE_FLATED, and - * GRE_F_KEY_CHANGE_FLATED */ + /* note is used for GRE_NOTE */ struct { /* the pitch is the height of the note on the score, that is to * say the letter it is represented by in gabc. If a clef @@ -411,6 +431,8 @@ typedef struct gregorio_note { * determination of glyphs. */ ENUM_BITFIELD(gregorio_liquescentia) liquescentia:8; } note; + /* clef is used for GRE_CLEF */ + struct gregorio_clef_info clef; /* other is used for everything else */ struct gregorio_extra_info other; } u; @@ -445,6 +467,12 @@ typedef struct gregorio_note { ENUM_BITFIELD(grehepisema_size) h_episema_below_size:2; bool h_episema_above_connect:1; bool h_episema_below_connect:1; + bool supposed_high_ledger_line:1; + bool supposed_low_ledger_line:1; + /* the "explicit" flags indicate that the "supposed" flags contain values + * that were explicitly specified in the gabc file */ + bool explicit_high_ledger_line:1; + bool explicit_low_ledger_line:1; bool is_lower_note:1; bool is_upper_note:1; ENUM_BITFIELD(gregorio_vposition) mora_vposition:2; @@ -452,9 +480,8 @@ typedef struct gregorio_note { } gregorio_note; /* - * ! @brief The gregorio glyph structure Unlike gregorio_note, - * gregorio_glyph can be other things besides \c GRE_GLYPH: it can also be - * \c GRE_FLAT, \c GRE_NATURAL or \c GRE_SPACE + * ! @brief The gregorio glyph structure Unlike gregorio_note, gregorio_glyph + * can be other things besides GRE_GLYPH: it can also be GRE_SPACE */ typedef struct gregorio_glyph { /* two pointer to make a chained list */ @@ -469,6 +496,7 @@ typedef struct gregorio_glyph { /* a pointer to a (chained list of) gregorio_notes, the first of * the glyph. */ struct gregorio_note *first_note; + signed char fuse_to_next_glyph; /* The glyph type for a GRE_GLYPH (porrectus, pes, etc.). They * are all listed above. */ ENUM_BITFIELD(gregorio_glyph_type) glyph_type:8; @@ -515,7 +543,7 @@ typedef struct gregorio_element { } gregorio_element; /* - * + * * gregorio_characters are a bit specials. As there can be styles in the * text, I had to find a structure mode adapted that just grewchar *. So * basically a gregorio_character is a double-chained list of things that @@ -524,7 +552,7 @@ typedef struct gregorio_element { * P->style(type: beginning, style italic) -> o -> style(type:end, style: * italic). But for this list to be coherent, it is mandatory that it is * xml-compliant, that is to say that a<b>c<i>d</b>e</i> will be - * interpreted as a<b>c<i>d</i></b><i>e</i>. This MUST be done when reading + * interpreted as a<b>c<i>d</i></b><i>e</i>. This MUST be done when reading * a file, so that the structure in memory is coherent. It makes input * modules more comple, but output modules muche more simpler. The last * particularity is that center must also be determined in the input @@ -532,13 +560,13 @@ typedef struct gregorio_element { * complex, because for TeX-like output modules, we need to close all * styles before the center style: if the user types <i>pot</i> it must be * represented as <i>p</i>{<i>o</i>}<i>t</i>. - * + * * Here is the declaration of the gregorio_style struct. It is simply two * chars, one telling the type of style character it is (beginning for a * character that marks the beginning of a style, and end for a character * marking the end of a style). The other char simply is the style * represented by the character (italic, etc.) - * + * */ typedef struct gregorio_style { @@ -547,10 +575,10 @@ typedef struct gregorio_style { } gregorio_style; /* - * - * This union is quite ugly... but necessary for a gregorio_character to be + * + * This union is quite ugly... but necessary for a gregorio_character to be * able to be a grewchar or gregorio_style. - * + * */ typedef union character_or_style { grewchar character; @@ -558,7 +586,7 @@ typedef union character_or_style { } character_or_style; /* - * + * * Finally the gregorio_character structure in itself, It is first a char * determining the type (character or gregorio_style). This char is 0 when * it is a style and something else when it is a character. Then the two @@ -567,7 +595,7 @@ typedef union character_or_style { * know it is a character of style), you must access to * mygregoriochar.cos.s.style, and for the character * mygregoriochar.cos.character . - * + * */ typedef struct gregorio_character { @@ -594,10 +622,11 @@ typedef struct gregorio_syllable { * case of polyphonic score. In most scores (monophonic), the array * has only one element. */ struct gregorio_element **elements; + unsigned short euouae_id; unsigned short src_line, src_column, src_offset; /* a syllable can be a GRE_SYLLABLE, a GRE_*_KEY_CHANGE or a * GRE_BAR. It is useful when there is only that in a syllable. */ - char type; + ENUM_BITFIELD(gregorio_type) type:8; /* again, an additional field to put some signs or other things... */ ENUM_BITFIELD(gregorio_sign) special_sign:8; /* type of translation (with center beginning or only center end) */ @@ -613,30 +642,18 @@ typedef struct gregorio_syllable { bool first_word:1; } gregorio_syllable; -/* The items in source_info used to be -- well, most of them -- in - * gregorio_voice_info. This is because the different `voices' may - * in future be used for different variants of a melody: - * e.g. notated in square notation, notated in some early neumatic - * form from manuscript A, and another in manuscript B. In that - * case the different voices would naturally have different source - * info. However, this enhancement to gregorio is not yet planned, - * and so this structure is made part of gregorio_score. */ -typedef struct source_info { - char *author; - char *date; - char *manuscript; - char *manuscript_reference; /* was reference */ - char *manuscript_storage_place; /* was storage_place */ - char *book; - char *transcriber; - char *transcription_date; -} source_info; +/* Stores a header in a singly-linked list */ +typedef struct gregorio_header { + char *name; + char *value; + struct gregorio_header *next; +} gregorio_header; /* - * + * * Score is the top structure, the structure in which we will convert * everything, and from which we will construct XML - * + * */ #define MAX_ANNOTATIONS 2 @@ -654,22 +671,15 @@ typedef struct gregorio_score { char *name; char *gabc_copyright; char *score_copyright; - char *office_part; - char *occasion; - /* the meter, numbers of syllables per line, as e.g. 8.8.8.8 */ - char *meter; - char *commentary; - char *arranger; - struct source_info si; - /* the mode of a song is between 1 and 8 */ - char mode; + char *mode; + char *mode_modifier; + char *mode_differentia; + char *author; /* There is one annotation for each line above the initial letter */ char *annotation[MAX_ANNOTATIONS]; - /* field giving informations on the initial (no initial, normal initial + /* field giving informations on the initial (no initial, normal initial * or two lines initial) */ - char initial_style; - /* the font to use in gregoriotex */ - char *gregoriotex_font; + signed char initial_style; /* DEPRECATED */ size_t nabc_lines; char *user_notes; /* the determination method (maximal ambitus, etc.) */ @@ -677,29 +687,27 @@ typedef struct gregorio_score { /* then, as there are some metadata that are voice-specific, we add a * pointer to the first voice_info. (see comments below) */ struct gregorio_voice_info *first_voice_info; - gregorio_lyric_centering centering; + struct gregorio_header *headers; + struct gregorio_header *last_header; + unsigned char staff_lines; + signed char highest_pitch; + signed char high_ledger_line_pitch; + bool legacy_oriscus_orientation; } gregorio_score; /* - * + * * gregorio_voice info contains everything that is voice_specific, for * example the key, etc. that can be different from one voice to another. * The order of the voice_info (it is a chained list) is the same as the * order of the voices (from top to bottom in their representation on the * score). - * + * */ typedef struct gregorio_voice_info { - /* the only thing that is worth a comment here is the key. We have a - * special representation for the key. See comments on - * src/struct-utils.c for further reading. */ - int initial_key; - /* See source_info above for comments about the move of author etc. */ - char *style; - char *virgula_position; + gregorio_clef_info initial_clef; struct gregorio_voice_info *next_voice_info; - bool flatted_key; } gregorio_voice_info; /* the maximum number of voices, more than this is total nonsense in @@ -711,19 +719,13 @@ typedef struct gregorio_voice_info { #define C_KEY 'c' #define F_KEY 'f' #define NO_KEY -5 -#define DEFAULT_KEY 5 - -#define MONOPHONY 0 -/* the different initial styles */ +extern gregorio_clef_info gregorio_default_clef; -#define NO_INITIAL 0 -#define NORMAL_INITIAL 1 -#define BIG_INITIAL 2 +#define MONOPHONY 0 -#define NO_ALTERATION USELESS_VALUE -#define FLAT GRE_FLAT -#define NATURAL GRE_NATURAL +/* the different initial styles - DEPRECATED by 4.1 */ +#define INITIAL_NOT_SPECIFIED -1 #define USELESS_VALUE 0 @@ -735,15 +737,19 @@ static __inline bool is_puncta_inclinata(char glyph) #define IS_INITIO_DEBILIS 5 #define NO_INITIO_DEBILIS 0 -static __inline bool is_liquescentia(char liquescentia) +static __inline bool is_tail_liquescentia(char liquescentia) { - return liquescentia == L_DEMINUTUS || liquescentia == L_AUCTUS_ASCENDENS - || liquescentia == L_AUCTUS_DESCENDENS || liquescentia == L_AUCTA; + return liquescentia & TAIL_LIQUESCENTIA_MASK; } static __inline bool is_initio_debilis(char liquescentia) { - return liquescentia >= L_INITIO_DEBILIS; + return liquescentia & L_INITIO_DEBILIS; +} + +static __inline bool is_fused(char liquescentia) +{ + return liquescentia & L_FUSED; } #define HEPISEMA_NONE 0 @@ -752,8 +758,8 @@ static __inline bool is_initio_debilis(char liquescentia) /* The first pitch MUST be an odd number */ #define LOWEST_PITCH 3 -#define HIGHEST_PITCH (LOWEST_PITCH + 12) #define DUMMY_PITCH (LOWEST_PITCH + 6) +#define LOW_LEDGER_LINE_PITCH (LOWEST_PITCH + 1) gregorio_score *gregorio_new_score(void); void gregorio_add_note(gregorio_note **current_note, signed char pitch, @@ -774,7 +780,8 @@ void gregorio_add_syllable(gregorio_syllable **current_syllable, gregorio_euouae euouae, const gregorio_scanner_location *loc, bool first_word); void gregorio_add_special_sign(gregorio_note *current_note, gregorio_sign sign); -void gregorio_change_shape(gregorio_note *note, gregorio_shape shape); +void gregorio_change_shape(gregorio_note *note, gregorio_shape shape, + bool legacy_oriscus_orientation); void gregorio_position_h_episema_above(gregorio_note *note, signed char height, bool connect); void gregorio_position_h_episema_below(gregorio_note *note, signed char height, @@ -784,90 +791,120 @@ void gregorio_add_h_episema(gregorio_note *note, grehepisema_size size, unsigned int *nbof_isolated_episema); void gregorio_add_sign(gregorio_note *note, gregorio_sign sign, gregorio_vposition vposition); -void gregorio_add_liquescentia(gregorio_note *note, - gregorio_liquescentia liquescentia); +void gregorio_add_tail_liquescentia(gregorio_note *note, + gregorio_liquescentia liquescentia, bool legacy_oriscus_orientation); void gregorio_add_voice_info(gregorio_voice_info **current_voice_info); void gregorio_free_voice_infos(gregorio_voice_info *voice_info); void gregorio_free_one_note(gregorio_note **note); void gregorio_free_one_glyph(gregorio_glyph **glyph); void gregorio_free_score(gregorio_score *score); -void gregorio_go_to_first_character(gregorio_character **character); +void gregorio_free_characters(gregorio_character *current_character); +void gregorio_go_to_first_character(const gregorio_character **character); +void gregorio_add_clef_as_glyph(gregorio_glyph **current_glyph, + gregorio_clef_info clef, char *texverb); void gregorio_add_pitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, signed char pitch, bool flatted_key, - bool force_pitch, char *texverb); + gregorio_type type, signed char pitch, bool force_pitch, char *texverb); void gregorio_add_unpitched_element_as_glyph(gregorio_glyph **current_glyph, - gregorio_type type, gregorio_extra_info info, gregorio_sign sign, + gregorio_type type, gregorio_extra_info *info, gregorio_sign sign, char *texverb); void gregorio_add_end_of_line_as_note(gregorio_note **current_note, - gregorio_type sub_type, const gregorio_scanner_location *loc); + bool eol_ragged, bool eol_forces_custos, bool eol_forces_custos_on, + const gregorio_scanner_location *loc); void gregorio_add_custo_as_note(gregorio_note **current_note, const gregorio_scanner_location *loc); void gregorio_add_manual_custos_as_note(gregorio_note **current_note, signed char pitch, const gregorio_scanner_location *loc); -void gregorio_add_clef_change_as_note(gregorio_note **current_note, - gregorio_type type, signed char clef_line, +void gregorio_add_clef_as_note(gregorio_note **current_note, + gregorio_clef clef, signed char clef_line, bool flatted, const gregorio_scanner_location *loc); +void gregorio_add_secondary_clef_to_note(gregorio_note *current_note, + gregorio_clef clef, signed char clef_line, bool flatted); void gregorio_add_bar_as_note(gregorio_note **current_note, gregorio_bar bar, const gregorio_scanner_location *loc); -void gregorio_add_alteration_as_note(gregorio_note **current_note, - gregorio_type type, signed char pitch, - const gregorio_scanner_location *loc); void gregorio_add_space_as_note(gregorio_note **current_note, - gregorio_space space, + gregorio_space space, char *factor, const gregorio_scanner_location *loc); void gregorio_add_texverb_as_note(gregorio_note **current_note, char *str, gregorio_type type, const gregorio_scanner_location *loc); void gregorio_add_nlba_as_note(gregorio_note **current_note, gregorio_nlba type, const gregorio_scanner_location *loc); -void gregorio_add_texverb_to_note(gregorio_note **current_note, char *str); +void gregorio_start_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *loc); +void gregorio_end_autofuse(gregorio_note **current_note, + const gregorio_scanner_location *loc); +void gregorio_add_texverb_to_note(gregorio_note *current_note, char *str); void gregorio_add_cs_to_note(gregorio_note *const*current_note, char *str, bool nabc); void gregorio_add_misc_element(gregorio_element **current_element, - gregorio_type type, gregorio_misc_element_info info, char *texverb); -void gregorio_reinitialize_alterations(char alterations[][13], - int number_of_voices); -void gregorio_reinitialize_one_voice_alterations(char alterations[13]); -void gregorio_set_score_name(gregorio_score *score, char *name); -void gregorio_set_score_gabc_copyright(gregorio_score *score, char *gabc_copyright); -void gregorio_set_score_score_copyright(gregorio_score *score, - char *score_copyright); -void gregorio_set_score_office_part(gregorio_score *score, char *office_part); -void gregorio_set_score_occasion(gregorio_score *score, char *occasion); -void gregorio_set_score_meter(gregorio_score *score, char *meter); -void gregorio_set_score_commentary(gregorio_score *score, char *commentary); -void gregorio_set_score_arranger(gregorio_score *score, char *arranger); -void gregorio_set_score_gabc_version(gregorio_score *score, char *gabc_version); -void gregorio_set_score_number_of_voices(gregorio_score *score, - int number_of_voices); + gregorio_type type, gregorio_misc_element_info *info, char *texverb); void gregorio_set_score_annotation(gregorio_score *score, char *annotation); -void gregorio_set_score_author(gregorio_score *score, char *author); -void gregorio_set_score_date(gregorio_score *score, char *date); -void gregorio_set_score_manuscript(gregorio_score *score, char *manuscript); -void gregorio_set_score_book(gregorio_score *score, char *book); -void gregorio_set_score_manuscript_reference(gregorio_score *score, - char *reference); -void gregorio_set_score_manuscript_storage_place(gregorio_score *score, - char *storage_place); -void gregorio_set_score_transcriber(gregorio_score *score, char *transcriber); -void gregorio_set_score_transcription_date(gregorio_score *score, - char *transcription_date); -void gregorio_set_score_user_notes(gregorio_score *score, char *user_notes); -void gregorio_set_voice_style(gregorio_voice_info *voice_info, char *style); -void gregorio_set_voice_virgula_position(gregorio_voice_info *voice_info, - char *virgula_position); -void gregorio_fix_initial_keys(gregorio_score *score, int default_key); +void gregorio_set_score_staff_lines(gregorio_score *score, char staff_lines); +void gregorio_add_score_header(gregorio_score *score, char *name, + char *value); +void gregorio_fix_initial_keys(gregorio_score *score, + gregorio_clef_info default_clef); void gregorio_go_to_first_note(gregorio_note **note); void gregorio_go_to_first_glyph(gregorio_glyph **glyph); -void gregorio_det_step_and_line_from_key(int key, char *step, int *line); bool gregorio_is_only_special(gregorio_element *element); -int gregorio_calculate_new_key(char step, int line); +int gregorio_calculate_new_key(gregorio_clef_info clef); void gregorio_add_character(gregorio_character **current_character, grewchar wcharacter); void gregorio_begin_style(gregorio_character **current_character, grestyle_style style); void gregorio_end_style(gregorio_character **current_character, grestyle_style style); +gregorio_character *gregorio_clone_characters(const gregorio_character *source); signed char gregorio_determine_next_pitch(gregorio_syllable *syllable, gregorio_element *element, gregorio_glyph *glyph); +const char *gregorio_unknown(int value); + +static __inline void gregorio_go_to_first_character_c(gregorio_character **character) +{ + gregorio_go_to_first_character((const gregorio_character **)character); +} + +static __inline gregorio_note *gregorio_glyph_last_note( + const gregorio_glyph *const glyph) +{ + gregorio_note *note; + if (!glyph || glyph->type != GRE_GLYPH) { + return NULL; + } + for (note = glyph->u.notes.first_note; note->next; note = note->next) { + /* iterate to find the last note */ + } + return note; +} + +static __inline const gregorio_glyph *gregorio_next_non_texverb_glyph( + const gregorio_glyph *glyph) +{ + if (glyph) { + for (glyph = glyph->next; glyph; glyph = glyph->next) { + if (glyph->type != GRE_TEXVERB_GLYPH) { + return glyph; + } + } + } + return NULL; +} + +static __inline const gregorio_glyph *gregorio_previous_non_texverb_glyph( + const gregorio_glyph *glyph) +{ + if (glyph) { + for (glyph = glyph->previous; glyph; glyph = glyph->previous) { + if (glyph->type != GRE_TEXVERB_GLYPH) { + return glyph; + } + } + } + return NULL; +} + +static __inline char gregorio_clef_to_char(gregorio_clef clef) +{ + return (clef == CLEF_C)? 'c' : 'f'; +} #endif diff --git a/Build/source/texk/gregorio/gregorio-src/src/unicode.c b/Build/source/texk/gregorio/gregorio-src/src/unicode.c index 9b15a6d92e4..afb7ab71a63 100644 --- a/Build/source/texk/gregorio/gregorio-src/src/unicode.c +++ b/Build/source/texk/gregorio/gregorio-src/src/unicode.c @@ -135,7 +135,7 @@ gregorio_character *gregorio_build_char_list_from_buf(const char *const buf) i++; } free(gwstring); - gregorio_go_to_first_character(¤t_character); + gregorio_go_to_first_character_c(¤t_character); return current_character; } diff --git a/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc b/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc index e2cc1b2c8fc..da25bf98c50 100644 --- a/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc +++ b/Build/source/texk/gregorio/gregorio-src/windows/gregorio-resources.rc @@ -1,7 +1,7 @@ IDI_ICON1 ICON DISCARDABLE "gregorio.ico" 1 VERSIONINFO -FILEVERSION 4,0,1,30 -PRODUCTVERSION 4,0,1,30 +FILEVERSION 4,1,0,11 +PRODUCTVERSION 4,1,0,11 BEGIN BLOCK "StringFileInfo" BEGIN @@ -9,12 +9,12 @@ BEGIN BEGIN VALUE "CompanyName", "Gregorio project" VALUE "FileDescription", "Gregorio" - VALUE "FileVersion", "4.0.1" + VALUE "FileVersion", "4.1.0-beta1" VALUE "InternalName", "gregorio" VALUE "LegalCopyright", "See COPYING in the installation directory." VALUE "OriginalFilename", "gregorio.exe" VALUE "ProductName", "Gregorio" - VALUE "ProductVersion", "4.0.1" + VALUE "ProductVersion", "4.1.0-beta1" END END |