diff --git a/P5/Source/Guidelines/en/CH-LanguagesCharacterSets.xml b/P5/Source/Guidelines/en/CH-LanguagesCharacterSets.xml
index 97931191b0..78df2218dd 100644
--- a/P5/Source/Guidelines/en/CH-LanguagesCharacterSets.xml
+++ b/P5/Source/Guidelines/en/CH-LanguagesCharacterSets.xml
@@ -410,7 +410,7 @@ dates, and predefined value lists.
depends largely on the purpose, external requirements, local
equipment and so forth, it is thus outside the scope of coverage
for these Guidelines.
-
It might however nevertheless be helpful to put some of the
+
It might nevertheless be helpful to put some of the
terminology used for the rendering process in the context of the
discussion of this chapter. As was mentioned above, Unicode
encodes abstract characters, not specific glyphs. For any
@@ -421,12 +421,12 @@ dates, and predefined value lists.
and which areas have to be left blank. If we want to print a character
from the Latin script, besides the selection of
the overall glyph shape, this process also requires that a
- specific weight of the font has been selected, a specific size
+ specific weight and size of the font has been selected,
and to what degree the shape should be slanted. Beyond
individual characters, the overall typesetting process also
- follows specific rules of how to calculate the distance between
- characters, how much whitespace occurs between words, at which
- points line breaks might occur and so forth.
+ follows specific rules for calculating the distance between
+ characters, for determining how much whitespace occurs between any two words, and how long each line should be (and thus at which
+ points a new line begins), and so forth.
If we concern ourselves only with the rendering process of the
characters themselves, leaving out all these other parameters, we
will realize that of all the information required for this process, only a small
diff --git a/P5/Source/Guidelines/en/CMC-ComputerMediatedCommunication.xml b/P5/Source/Guidelines/en/CMC-ComputerMediatedCommunication.xml
index 0c6c731815..2e2695e3ac 100644
--- a/P5/Source/Guidelines/en/CMC-ComputerMediatedCommunication.xml
+++ b/P5/Source/Guidelines/en/CMC-ComputerMediatedCommunication.xml
@@ -951,7 +951,7 @@ See the file COPYING.txt for details.
icon-based emoji.
Alternatively, e.g. when w is not regularly used to encode tokens in the TEI
document, c may be used to mark an emoji. For example, the source post Da kostet
- ein Haarschnitt 50 € 😱 (from the corpus , in
+ ein Haarschnitt 50 € 😱 (from the corpus , in
English A haircut there costs 50 € 😱) might be encoded as follows: Da kostet ein Haarschnitt 50 € 😱
diff --git a/P5/Source/Guidelines/en/CO-CoreElements.xml b/P5/Source/Guidelines/en/CO-CoreElements.xml
index 7df83faa4f..a55c55c981 100644
--- a/P5/Source/Guidelines/en/CO-CoreElements.xml
+++ b/P5/Source/Guidelines/en/CO-CoreElements.xml
@@ -329,7 +329,7 @@ problem for text encoders. Suppose, for example, that we wish to
investigate a diachronic English corpus for occurrences of
tea-pot and teapot, to
find evidence for the point at which this compound becomes
-lexicalized. Any case where the word is hyphenated across a linebreak,
+lexicalized. Any case where the word is hyphenated across a line division,
like this: is
ambiguous: there is no simple way of deciding which of the two
@@ -381,11 +381,11 @@ whitespace.
The lb, pb, and cb elements are notable
exceptions to this general rule, since their function is precisely to
-represent (or replace) line, page, or column breaks, which, as noted
+represent (or replace) line, page, or column beginnings, which, as noted
above, are generally considered to be equivalent to whitespace. These
elements provide a more reliable way of preserving the lineation,
-pagination, etc of a source document, since the encoder should not
-assume that (untagged) line breaks etc. in an XML source file will
+pagination, etc. of a source document, since the encoder should not
+assume that (untagged) line beginnings etc. in an XML source file will
necessarily be preserved.
To control the intended tokenization, the encoder may use the
@@ -2696,7 +2696,7 @@ appropriate value for the rend attribute. Suggested values
for rend include:
bulleted (items preceded by bullets or similar markings)
- inline (items rendered within continuous prose, with no linebreaks)
+ inline (items rendered within continuous prose, with no line divisions)numbered (items preceded by numbers or letters)simple (items rendered as blocks, but with no bullet or number)
@@ -3492,11 +3492,11 @@ section and in section .
When a text has no pre-existing associated reference system of any
kind, these Guidelines recommend as a minimum that at least the page
boundaries of the source text be marked using one of the methods
-outlined in this section. Retaining page breaks in the markup is also
+outlined in this section. Retaining page boundaries in the markup is also
recommended for texts which have a detailed reference system of their
-own. Line breaks in prose texts may be, but need not be, tagged.Many encoders find it convenient to retain the line
-breaks of the original during data entry, to simplify proofreading,
-but this may be done without inserting a tag for each line break of
+own. Line divisions in prose texts may be, but need not be, encoded.Many encoders find it convenient to retain the line
+ divisions of the original during data entry, to simplify proofreading,
+ but this may be done without inserting an element for the beginning of each line in
the original.
Using the xml:id and n Attributes
When traditional reference schemes represent a hierarchical
@@ -3900,7 +3900,7 @@ treated as a single word, a tagging such as the following is recommended:
...sed imperator dixit...
-Where hyphenation appears before a line or page break, the encoder may
+ Where hyphenation appears at the end of a topographic line, a column, or a page, the encoder may
or may not choose to record the fact, either explicitly using an
appropriate Unicode character, or descriptively for example by means
of the rend attribute; see further .
@@ -4201,6 +4201,17 @@ encoding of short-form references such as Baxter,
1983 is not as bibl elements but as
cross-references to such elements; see section
below.
+
+ Bibliographic references encoded with bibl, biblFull, or biblStruct may link to another, possibly more detailed, bibliographic reference to the same resource using either the attribute ref or key defined in att.canonical. The ref attribute performs this linking function using a URI that may point either within or outside the TEI document, as shown in the following example:
+
+ The song of Achilles by Madeline Miller.
+
+ The key attribute, on the other hand, associates a bibliographical reference with an external or project-defined identifier as demonstrated here:
+
+ Book 16 of Homer's Iliad.
+
+ These attributes should not be used for encoding bibliographic pointers (short-form citations); for that purpose, see section below.
+
In cases where the encoder wishes to impose more structure on the
bibliographic information, for example to make sure it conforms to a
particular stylesheet or retrieval processor, the biblStruct
@@ -5476,8 +5487,8 @@ following example:
normalize bibliographic references: Nelson claims (Nelson [1980] pages 13–37)
...
If it is desired to capture additional information like this in a short-form
- reference, then bibl may be used with the corresp attribute pointing to
- the full bibliographic reference: Nelson claims (Nelson [1980] pages 13–37) ...
+ reference, then bibl may be used with the ref attribute pointing to
+ the full bibliographic reference: Nelson claims (Nelson [1980] pages 13–37) ...
The ref element may also be used to provide a reference to a copy of the bibliographic item itself, particularly if this is available online, as in the following example:
@@ -5645,13 +5656,13 @@ metrical rather than typographic lines. In some modern or free verse,
it may be hard to decide whether the typographic line is to be
regarded as a verse line or not, but the distinction is quite clear
for verse following regular metrical patterns. Where a metrical line is
-interrupted by a typographic line break, the encoder may choose to
-ignore the fact entirely or to use the empty lb (line break)
+interrupted by the start of a new typographic line, the encoder may choose to
+ignore the fact entirely or to use the empty lb (line beginning)
element discussed in . By convention, the start
of a metrical line implies the start of a typographic line; hence
there is no need to introduce an lb tag at the start of every
l element, but only at places where a new typographic line
-starts within a metrical line, as in the following example:
+starts within a metrical line, as in the following example:
Of Mans First Disobedience, and the Fruit
@@ -5664,14 +5675,13 @@ starts within a metrical line, as in the following example:
In the original copy text, the presence of an ornamental capital at
the start of the poem means that the measure is not wide enough to
print the first four lines on four lines; instead each metrical line occupies
-two typographic lines, with a break at the point indicated. Note that
+two typographic lines, with the second beginning at the point indicated. Note that
this encoding makes no attempt to preserve information about the
whitespace or indentation associated with either kind of line; if regarded
as essential, this information would be recorded using the
rend or rendition attributes discussed in .
The l element should not be used to represent typographic
-lines in non-verse materials: if the line-breaking points in a prose
-text are considered important for analysis, they should be marked with
+ lines in non-verse materials: if the lineation of a prose text is considered important for analysis, the beginning of each line should be marked with
the lb element. Alternatively, a neutral segmentation element
such as seg or ab may be used; see further
discussion of these elements in chapter . The
diff --git a/P5/Source/Guidelines/en/DI-PrintDictionaries.xml b/P5/Source/Guidelines/en/DI-PrintDictionaries.xml
index 984ad248ef..3db2df4a11 100644
--- a/P5/Source/Guidelines/en/DI-PrintDictionaries.xml
+++ b/P5/Source/Guidelines/en/DI-PrintDictionaries.xml
@@ -2227,8 +2227,7 @@ following three, which help to clarify some issues raised with particular urgenc
dictionaries, on account of the complexity of both their typography and their
information structure.(a) the typographic view—the
-two-dimensional printed page, including information about line and page breaks
-and other features of layout
+ two-dimensional printed page, including information about lineation, pagination, and other features of layout
(b) the editorial view—the one-dimensional sequence of tokens
which can be seen as the input to the typesetting process; the wording and
punctuation of the text and the sequencing of items are visible in this view,
@@ -2243,7 +2242,7 @@ therefore hyphenated (naut-ical); the typographic view of the dictionary preserves this information. In a
purely editorial view, the particular form in which the domain name is given in the
particular dictionary (as nautical, rather than naut., Naut., etc.)
-would be preserved, but the fact of the line break would not. Font shifts might
+ would be preserved, but the fact that the word was split across two lines with a soft hyphen would not. Font shifts might
plausibly be included in either a strictly typographic or an editorial view. In the
lexical view, the only information preserved concerning domain would be some standard
symbol or string representing the nautical domain (e.g. naut.) regardless of the
diff --git a/P5/Source/Guidelines/en/DS-DefaultTextStructure.xml b/P5/Source/Guidelines/en/DS-DefaultTextStructure.xml
index 727a2d6729..04d80c2df2 100644
--- a/P5/Source/Guidelines/en/DS-DefaultTextStructure.xml
+++ b/P5/Source/Guidelines/en/DS-DefaultTextStructure.xml
@@ -1506,7 +1506,7 @@ the div elements containing chapters of the text itself. (For the
-Alternatively, the pointers in the index might link to the page breaks
+ Alternatively, the pointers in the index might link to the page beginnings
at which a chapter begins, assuming that these have been included in
the markup:
@@ -1629,7 +1629,7 @@ the work discussed earlier in this section:
@@ -1731,7 +1731,7 @@ transcription):
-Note that if the page breaks in the original source have also been
+ Note that if the pagination in the original source have also been
explicitly encoded, and given identifiers, the references to them in the
above index can more usefully be recorded as links. For example,
assuming that the encoding of page 461 of the original source starts
diff --git a/P5/Source/Guidelines/en/FT-TablesFormulaeGraphics.xml b/P5/Source/Guidelines/en/FT-TablesFormulaeGraphics.xml
index 2d7ba565fa..f3280c6f14 100644
--- a/P5/Source/Guidelines/en/FT-TablesFormulaeGraphics.xml
+++ b/P5/Source/Guidelines/en/FT-TablesFormulaeGraphics.xml
@@ -255,7 +255,7 @@ this is rarely if ever done in practice.
The content of table elements is not limited to head and
row. Milestone elements such as cb and lb
- allow breaks to be signalled inside tables; figure provides an
+ allow new columns or lines to be signalled inside tables; figure provides an
option for including data which is not amenable to normal row and cell
analysis; and other elements such as epigraph and
trailer provide options for including text which is clearly
diff --git a/P5/Source/Guidelines/en/HD-Header.xml b/P5/Source/Guidelines/en/HD-Header.xml
index 5fa66dc927..abb789f103 100644
--- a/P5/Source/Guidelines/en/HD-Header.xml
+++ b/P5/Source/Guidelines/en/HD-Header.xml
@@ -1410,7 +1410,7 @@ it to mark italicised English words only.
The withId attribute may optionally be used to specify
how many of the occurrences of the element in question bear a value
for the global xml:id attribute, as in the following
-example: Marks page breaks in the York
+ example: Marks page beginnings in the York
(1734) edition only This indicates that the
pb element occurs 321 times, on each of which an identifier
is provided.
@@ -1518,7 +1518,7 @@ not recommended for automatic processing.
text. The n attribute on each div1 and
div2 contains the canonical reference for each such
division, in the form 'XX.yyy', where XX is the book number in Roman
- numerals, and yyy the section number in arabic. Line breaks are
+ numerals, and yyy the section number in arabic. Line beginnings are
marked by empty lb elements, each of which includes the
through line number in Casaubon's edition as the value of its
n attribute.
diff --git a/P5/Source/Guidelines/en/NH-Non-hierarchical.xml b/P5/Source/Guidelines/en/NH-Non-hierarchical.xml
index 589dfb8977..f4f74e3a5c 100644
--- a/P5/Source/Guidelines/en/NH-Non-hierarchical.xml
+++ b/P5/Source/Guidelines/en/NH-Non-hierarchical.xml
@@ -220,7 +220,7 @@ wound.
typographical and metrical line divisions correspond,
lb does not itself make a metrical claim: in encoding
verse from sources, such as Old English manuscripts, where
- physical line breaks are not used to indicate metrical
+ physical line beginnings are not used to indicate metrical
lineation, the correspondence would break down entirely.
diff --git a/P5/Source/Guidelines/en/PH-PrimarySources.xml b/P5/Source/Guidelines/en/PH-PrimarySources.xml
index 77bf99e7f4..d5537dc13c 100644
--- a/P5/Source/Guidelines/en/PH-PrimarySources.xml
+++ b/P5/Source/Guidelines/en/PH-PrimarySources.xml
@@ -749,8 +749,8 @@ used to define a polygon of any shape using this coordinate system:-->
chapter provides ways of encoding such information: methods of recording editorial or other alterations to the text, such as expansion
of abbreviations, corrections, conjectures, etc. (section )
- methods of describing important extra-linguistic phenomena in the source: unusual
- spaces, lines, page and line breaks, changes of manuscript hand, etc. (section )
+ methods of describing important extra-linguistic phenomena in the source: pagination, lineation, unusual
+ spaces, changes of manuscript hand, etc. (section )methods of representing aspects of layout such as spacing or lines methods of representing material such as running heads, catch-words, and the like
@@ -2549,9 +2549,9 @@ referring to the zone marked in purple on the right
-->
This approach assumes that the transcription will primarily be organized in the same way as
the physical layout of the source, using embedded transcription elements. Alternatively,
- where the a non-embedded transcription has been provided, using the text element,
- it is still possible to record gathering breaks, page breaks, column breaks, line breaks
- etc in the source, using the elements described in section . Detailed
+ where a non-embedded transcription has been provided, using the text element,
+ it is still possible to record gathering beginnings, page beginnings, column beginnings, line beginnings
+ etc. in the source, using the elements described in section . Detailed
metadata about the physical make-up of a source will usually be summarized by the
physDesc component of an msDesc element discussed in .
diff --git a/P5/Source/Guidelines/en/SG-GentleIntroduction.xml b/P5/Source/Guidelines/en/SG-GentleIntroduction.xml
index 89421b1d60..2c349634a9 100644
--- a/P5/Source/Guidelines/en/SG-GentleIntroduction.xml
+++ b/P5/Source/Guidelines/en/SG-GentleIntroduction.xml
@@ -229,7 +229,7 @@ forth. And for certain types of analysis (most notably textual
criticism) the physical appearance of one particular printed or
manuscript source may be of importance: paradoxically, one may wish to
use descriptive markup to describe presentational features such as
-typeface, line breaks, use of whitespace and so forth.
+typeface, original topographic lineation, use of whitespace, and so forth.
These textual structures overlap with one another in complex and
unpredictable ways. Particularly when dealing with texts as
@@ -346,7 +346,7 @@ document.The element names here have been chosen for
clarity of exposition; there is, however, a TEI element corresponding to
each. It will, however, serve as an introduction to the basic notions of XML.
-Whitespace and line breaks have been added to the example for the
+ Whitespace and line divisions have been added to the example for the
sake of visual clarity only; they have no particular significance in the
XML encoding itself. Also, the line
]]>
@@ -1256,8 +1256,8 @@ only so that it can be clearly distinguished from the
structure of the document. As suggested above, one common example is
the need, when processing an XML document for printed output, to
include a suggestion that the formatting processor might use to
-determine where to begin a new page of output. Page-breaking decisions
-are usually best made by the formatting engine alone, but there will
+determine where to begin a new page of output. It is generally best
+to leave pagination of the output to the formatting engine alone, but there will
always be occasions when it may be necessary to override these. An XML
processing instruction inserted into the document is one very simple
and effective way of doing this without interfering with other aspects
diff --git a/P5/Source/Guidelines/en/ST-Infrastructure.xml b/P5/Source/Guidelines/en/ST-Infrastructure.xml
index f0c449890a..f745f121a9 100644
--- a/P5/Source/Guidelines/en/ST-Infrastructure.xml
+++ b/P5/Source/Guidelines/en/ST-Infrastructure.xml
@@ -74,123 +74,123 @@ with others.-->
section below.
The following table lists the modules defined by the current release of these Guidelines:
-
-
-
- Module name
- Where defined
- Formal public identifier
-
-
- tei
-
- TEI Infrastructure
-
-
- header
-
- Common Metadata
-
-
- core
-
- Common Core
-
-
- textstructure
-
- Default Text Structure
-
-
- gaiji
-
- Character and Glyph Documentation
-
-
- verse
-
- Verse
-
-
- drama
-
- Performance Texts
-
-
- spoken
-
- Transcribed Speech
-
-
- cmc
-
- TEI-CMC
-
-
- dictionaries
-
- Dictionaries
-
-
- msdescription
-
- Manuscript Description
-
-
- transcr
-
- Transcription of Primary Sources
-
-
- textcrit
-
- Text Criticism
-
-
- namesdates
-
- Names, dates, persons and places
-
-
- figures
-
- Tables, Formulæ, Notated Music, Figures
-
-
- corpus
-
- Metadata for Language Corpora
-
-
- linking
-
- Linking, Segmentation, and Alignment
-
-
- analysis
-
- Analysis and Interpretation
-
-
- iso-fs
-
- Feature Structures
-
-
- nets
-
- Graphs, networks, and trees
-
-
- certainty
-
- Certainty and Uncertainty
-
-
- tagdocs
-
- Documentation Elements
-
+
+
+
+ Module name
+ Where defined
+ Formal public identifier
+
+
+ tei
+
+ TEI Infrastructure
+
+
+ header
+
+ Common Metadata
+
+
+ core
+
+ Common Core
+
+
+ textstructure
+
+ Default Text Structure
+
+
+ gaiji
+
+ Character and Glyph Documentation
+
+
+ verse
+
+ Verse
+
+
+ drama
+
+ Performance Texts
+
+
+ spoken
+
+ Transcribed Speech
+
+
+ cmc
+
+ TEI-CMC
+
+
+ dictionaries
+
+ Dictionaries
+
+
+ msdescription
+
+ Manuscript Description
+
+
+ transcr
+
+ Transcription of Primary Sources
+
+
+ textcrit
+
+ Text Criticism
+
+
+ namesdates
+
+ Names, dates, persons and places
+
+
+ figures
+
+ Tables, Formulæ, Notated Music, Figures
+
+
+ corpus
+
+ Metadata for Language Corpora
+
+
+ linking
+
+ Linking, Segmentation, and Alignment
+
+
+ analysis
+
+ Analysis and Interpretation
+
+
+ iso-fs
+
+ Feature Structures
+
+
+ nets
+
+ Graphs, networks, and trees
+
+
+ certainty
+
+ Certainty and Uncertainty
+
+
+ tagdocs
+
+ Documentation Elements
+
For each module listed above, the corresponding chapter gives a full description of the
@@ -555,11 +555,11 @@ Georgie, and Dim, ... </p>
-
-
+
+
-
+
@@ -586,10 +586,10 @@ Georgie, and Dim, ... </p>
document, rather than to control how it should be formatted.
In the TEI scheme, it is possible to supply information about the appearance of
elements within a source document in the following distinct ways:
- One or more properties may be specified as the
- default for a set of elements (based on an external
- scheme, by default CSS), using rendition elements
- and their selector attributes;
+ One or more properties may be specified as the
+ default for a set of elements (based on an external
+ scheme, by default CSS), using rendition elements
+ and their selector attributes;One or more properties may be specified for individual element occurrences,
using the rend attribute with any convenient set of one or more
sequence-indeterminate tokens;
@@ -622,15 +622,15 @@ Georgie, and Dim, ... </p>
by pointing to a bibliographic citation for a quotation to indicate the source from which it derives. The target of the
pointer may be an entry in a bibliographic list of some kind, or a pointer to a digital version of the source itself.
-
As with other TEI pointers, the value of this attribute
- is expressed as any form of URI, for example an absolute
- URL, a relative URL, or a private scheme URI that is
- expanded to a relative or absolute URL as documented in a
- prefixDef. In the following typical example a
- relative bare name URL value is used
- to point to a bibl elsewhere in the bibliography
- of the document which contains a bibliographic source for
- the quotation itself:
+
As with other TEI pointers, the value of this attribute
+ is expressed as any form of URI, for example an absolute
+ URL, a relative URL, or a private scheme URI that is
+ expanded to a relative or absolute URL as documented in a
+ prefixDef. In the following typical example a
+ relative bare name URL value is used
+ to point to a bibl elsewhere in the bibliography
+ of the document which contains a bibliographic source for
+ the quotation itself:
@@ -862,70 +862,85 @@ one, or vice versa, should be done with care.
Attributes of type teidata.word, such as age on
diff --git a/P5/Source/Guidelines/en/WD-NonStandardCharacters.xml b/P5/Source/Guidelines/en/WD-NonStandardCharacters.xml
index c6c7c38b0e..72942a5ca4 100644
--- a/P5/Source/Guidelines/en/WD-NonStandardCharacters.xml
+++ b/P5/Source/Guidelines/en/WD-NonStandardCharacters.xml
@@ -1246,15 +1246,14 @@ precinct at Dodona. (L.H. Jeffery Archive)
ΑΣΣΑΙ
The 180-degree rotation around the Y (vertical) axis here
- describes what is happening in the RTL line in boustrophedon; the order of glyphs
+ describes what is happening in the RTL lines in boustrophedon; the order of glyphs
is reversed, and so is their individual orientation (in fact, we see them
from the back, as it were). seg elements
have been used here because these are clearly not lines
- in the sense of poetic lines; the text is continuous prose, and linebreaks
- are incidental.
+ in the sense of poetic lines; the text is continuous prose, and the division into separate lines is incidental.
There are obviously some unsatisfactory aspects of this manner of encoding
- boustrophedon. In the inscription above, some words run across linebreaks,
+ boustrophedon. In the inscription above, some words are split across two lines,
so if we wished to tag both words and the right-to-left phenomena, one
hierarchy would have to be privileged over the other. By using a transform
function rather than a writing mode property, we are apparently suggesting
diff --git a/P5/Source/Specs/TEI.xml b/P5/Source/Specs/TEI.xml
index 0950c3d568..1468c4f5f7 100644
--- a/P5/Source/Specs/TEI.xml
+++ b/P5/Source/Specs/TEI.xml
@@ -192,13 +192,17 @@
-
-
This element is required. It is customary to specify the TEI
- namespace http://www.tei-c.org/ns/1.0 on
- it, for example: TEI version="4.4.0"
- xml:lang="it" xmlns="http://www.tei-c.org/ns/1.0".
-
-
El elemento es obligatorio. Normalmente se especifica el espacio de nombres (namespace) de TEI en su interior http://www.tei-c.org/ns/1.0, utilizando el atributo xmlns
+
+
+
As with all elements in the TEI scheme (except egXML) this element is
+ in the TEI namespace (see ). Thus, when it is used as the
+ outermost element of a TEI document, it is necessary to specify the TEI namespace
+ on it. This is customarily achieved by including http://www.tei-c.org/ns/1.0 as the value of the XML namespace declaration (xmlns), without indicating a prefix,
+ and then not using a prefix on TEI elements in the rest of the document. For example:
+ TEI version="4.8.1" xml:lang="it" xmlns="http://www.tei-c.org/ns/1.0".
+
+
+
Como todos los elementos en el esquema TEI (excepto egXML), este elemento se encuentra en el espacio de nombres (namespace) de TEI (cf. ). Por lo tanto, cuando se utiliza como el elemento más externo de un documento TEI, es necesario especificar el espacio de nombres de TEI en su interior. Esto se hace, normalmente, incluyendo http://www.tei-c.org/ns/1.0 como valor de la declaración de espacio de nombres (xmlns) sin indicar un prefijo, y por lo tanto sin necesidad de utilizar un prefijo en los elementos TEI del resto del documento. Por ejemplo: TEI version="4.8.1" xml:lang="it" xmlns="http://www.tei-c.org/ns/1.0".
Cet élément est obligatoire.
diff --git a/P5/Source/Specs/ab.xml b/P5/Source/Specs/ab.xml
index d901081103..777cdeed94 100644
--- a/P5/Source/Specs/ab.xml
+++ b/P5/Source/Specs/ab.xml
@@ -28,12 +28,12 @@
-
+
-
-
- Abstract model violation: Lines may not contain higher-level divisions such as p or ab, unless ab is a child of figure or note, or is a descendant of floatingText.
-
+
+
+ Abstract model violation: Metrical lines may not contain higher-level divisions such as p or ab, unless ab is a child of figure or note, or is a descendant of floatingText.
+
diff --git a/P5/Source/Specs/att.breaking.xml b/P5/Source/Specs/att.breaking.xml
index 4eb817318e..6a9aa92ce6 100644
--- a/P5/Source/Specs/att.breaking.xml
+++ b/P5/Source/Specs/att.breaking.xml
@@ -46,8 +46,7 @@ of any adjacent whitespace
In the following lines from the
Dream of the Rood,
- linebreaks occur in the middle of the words lāðost
- and reord-berendum.
+ the words lāðost and reord-berendum each start on one line and continue onto the next.
diff --git a/P5/Source/Specs/att.edition.xml b/P5/Source/Specs/att.edition.xml
index 1646c437fd..74700583d2 100644
--- a/P5/Source/Specs/att.edition.xml
+++ b/P5/Source/Specs/att.edition.xml
@@ -13,7 +13,7 @@
版supplies a sigil or other arbitrary identifier for the source edition in which
the associated feature (for example, a page, column, or line
- break) occurs at this point in the text.
+ beginning) occurs at this point in the text.
fournit un identifiant arbitraire pour l'édition source dans laquelle la caractéristique associée
(par exemple, une page, une colonne ou un saut de ligne) apparaît à ce point du texte.関連する属性(ページ・段落・行の切れ目)がテキストのこの地点において発生するソースのエディションについての印やその他の任意の識別子を提供する。
@@ -24,7 +24,7 @@
参照provides a pointer to the source edition in which
the associated feature (for example, a page, column, or line
- break) occurs at this point in the text.
+ beginning) occurs at this point in the text.
このポインタが示すのは、当該テキスト中に現れる(頁や段、行等の)関連する素性が生じる元の版である。
diff --git a/P5/Source/Specs/att.milestoneUnit.xml b/P5/Source/Specs/att.milestoneUnit.xml
index 90562acee6..0522de96f8 100644
--- a/P5/Source/Specs/att.milestoneUnit.xml
+++ b/P5/Source/Specs/att.milestoneUnit.xml
@@ -21,7 +21,7 @@
- physical page breaks (synonymous with the pb element).
+ physical page beginnings (synonymous with the pb element).물리적 페이지 바꿈分頁 (和元素pb同義) 。cambio físico de página (sinónimo del elemento
@@ -33,7 +33,7 @@
pb)
- column breaks.
+ column beginnings.열 바꿈分段。cambio de columna.
@@ -42,7 +42,7 @@
interruzione di colonna
- line breaks (synonymous with the lb element).
+ line beginnings (synonymous with the lb element).행 바꿈分行 (和元素lb同義) 。salto de línea (sinónimo del elemento libra).
diff --git a/P5/Source/Specs/att.patternReplacement.xml b/P5/Source/Specs/att.patternReplacement.xml
index 1f3d2acd9e..c6bbe969b1 100644
--- a/P5/Source/Specs/att.patternReplacement.xml
+++ b/P5/Source/Specs/att.patternReplacement.xml
@@ -91,7 +91,7 @@
diff --git a/P5/Source/Specs/att.placement.xml b/P5/Source/Specs/att.placement.xml
index ee4b66d49c..fe0f7753d9 100644
--- a/P5/Source/Specs/att.placement.xml
+++ b/P5/Source/Specs/att.placement.xml
@@ -45,7 +45,7 @@
in the margin (left, right, or both)dans la marge (gauche, droite ou les deux en même temps)
- 余白(左left, 右right, 左右both)
+ 余白(左left、右right、左右both)on the opposite, i.e. facing, page
diff --git a/P5/Source/Specs/att.spanning.xml b/P5/Source/Specs/att.spanning.xml
index 127a2d2185..3a321bae48 100644
--- a/P5/Source/Specs/att.spanning.xml
+++ b/P5/Source/Specs/att.spanning.xml
@@ -5,15 +5,13 @@
provides attributes for elements which delimit a span of text by pointing mechanisms rather than by enclosing it.포함보다는 포인터 메카니즘을 통하여 구분된 텍스트 구간을 나타내는 요소의 속성을 제공한다.提供元素的屬性,這些元素使用參照機制來限定某一文字段,而非包含此文字段。
- テキスト幅の範囲を内容としてではなく参照機能を使って示す要素に付与さ
- れる属性を示す。
+ テキスト幅の範囲を内容としてではなく参照機能を使って示す要素に付与される属性を示す。fournit des attributs pour les éléments qui délimitent un passage de texte par des mécanismes de pointage plutôt qu'en entourant le passage.proporciona atributos para elementos que delimitan un fragmento de texto utilizando los señalizadores en lugar de cerrando el texto.assegna degli attributi agli elementi che delimitano una porzione di testo utilizzando dei puntatori invece di racchiudere il testo stesso
- indicates the end of a span initiated by the element
- bearing this attribute.
+ indicates the end of a span initiated by the element bearing this attribute.이 속성을 포함하는 요소에 의해 시작된 구간의 끝을 나타낸다.指出文字段的結尾,該文字段以帶有此屬性的元素開頭。当該要素が示す範囲の終点を示す。
@@ -22,12 +20,11 @@
indica la fine della porzione di testo che ha inizio con l'elemento a cui è assegnato l'attributo
- The @spanTo attribute must point to an element following the
- current element
+ The @spanTo attribute must point to an element following the current element; however, this can only be tested if both this element and the one pointed to are in the same document.
-
-
-The element indicated by @spanTo () must follow the current element
+
+
+ The element indicated by @spanTo () must follow the current element
@@ -36,15 +33,15 @@ The element indicated by @spanTo () must follow
The span is defined as running in document order from the start
- of the content of the pointing element to the end of the
+ of the content of the pointing element to the end of the
content of the element pointed to by the spanTo attribute (if
any). If no value is supplied for the attribute, the assumption is that the span is
coextensive with the pointing element. If no content is present,
the assumption is that the starting point of the span is
- immediately following the element itself.
+ immediately following the element itself.
-
Le passage est défini comme courant depuis le début du contenu de l'élément pointeur (s'il y en a un) jusqu'à la fin du contenu de l'élément
+
Le passage est défini comme courant depuis le début du contenu de l'élément pointeur (s'il y en a un) jusqu'à la fin du contenu de l'élément
pointé par l'attribut spanTo (s'il y en a un), dans l'ordre du document. Si aucune valeur n'est fournie pour l'attribut, il est entendu
que le passage est de même étendue que l'élément pointeur.
diff --git a/P5/Source/Specs/bibl.xml b/P5/Source/Specs/bibl.xml
index 0ee30b97b8..33d96dbe49 100644
--- a/P5/Source/Specs/bibl.xml
+++ b/P5/Source/Specs/bibl.xml
@@ -25,6 +25,7 @@
ausgezeichnet sein können.
+
diff --git a/P5/Source/Specs/biblFull.xml b/P5/Source/Specs/biblFull.xml
index c65a5a3260..a227844da7 100644
--- a/P5/Source/Specs/biblFull.xml
+++ b/P5/Source/Specs/biblFull.xml
@@ -23,6 +23,7 @@
strutturata nella quale sono presenti tutti i componenti di descrizione di un file TEI.
+
diff --git a/P5/Source/Specs/biblStruct.xml b/P5/Source/Specs/biblStruct.xml
index 49e90392f6..afc179e706 100644
--- a/P5/Source/Specs/biblStruct.xml
+++ b/P5/Source/Specs/biblStruct.xml
@@ -22,6 +22,7 @@
contenere solo altri elemento nell'ordine specificato.
+
diff --git a/P5/Source/Specs/cb.xml b/P5/Source/Specs/cb.xml
index 183deccbd9..a5dc01136e 100644
--- a/P5/Source/Specs/cb.xml
+++ b/P5/Source/Specs/cb.xml
@@ -50,7 +50,7 @@
On this element, the global n attribute indicates the number or other value associated with the column
which follows the point of insertion of this cb element. Encoders should adopt a clear and consistent policy as to
- whether the numbers associated with column breaks relate to the physical
+ whether the numbers associated with column beginnings relate to the physical
sequence number of the column in the whole text, or whether columns are
numbered within the page.
The cb element is placed at the head of the
diff --git a/P5/Source/Specs/certainty.xml b/P5/Source/Specs/certainty.xml
index c6bbb0494a..d4af7598af 100644
--- a/P5/Source/Specs/certainty.xml
+++ b/P5/Source/Specs/certainty.xml
@@ -241,7 +241,7 @@ ambiguity-free system for indicating certainty.
diff --git a/P5/Source/Specs/constraintSpec.xml b/P5/Source/Specs/constraintSpec.xml
index b936185206..1495d3fa27 100644
--- a/P5/Source/Specs/constraintSpec.xml
+++ b/P5/Source/Specs/constraintSpec.xml
@@ -63,7 +63,7 @@
-
+
The use of ISO Schematron sch:assert and
sch:report elements without a parent sch:rule
diff --git a/P5/Source/Specs/dateline.xml b/P5/Source/Specs/dateline.xml
index a175ace081..14a73025c3 100644
--- a/P5/Source/Specs/dateline.xml
+++ b/P5/Source/Specs/dateline.xml
@@ -25,6 +25,7 @@
+
diff --git a/P5/Source/Specs/div.xml b/P5/Source/Specs/div.xml
index 40f481f67d..6e0565a6dc 100644
--- a/P5/Source/Specs/div.xml
+++ b/P5/Source/Specs/div.xml
@@ -65,12 +65,12 @@
-
+
-
-
- Abstract model violation: Lines may not contain higher-level structural elements such as div, unless div is a descendant of floatingText.
-
+
+
+ Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, unless div is a descendant of floatingText.
+
diff --git a/P5/Source/Specs/gap.xml b/P5/Source/Specs/gap.xml
index 271a355eea..5d178d8be4 100644
--- a/P5/Source/Specs/gap.xml
+++ b/P5/Source/Specs/gap.xml
@@ -49,7 +49,7 @@
누락의 이유를 제시한다. 그 값의 예들은 다음과 같다: sampling,
illegible, inaudible, irrelevant, cancelled,
cancelled and illegible
- 說明省略的原因。屬性值的例子有sampling、、inaudible、irrelevant、cancelled、cancelled
+ 說明省略的原因。屬性值的例子有sampling、illegible、inaudible、irrelevant、cancelled、cancelled
and illegible。省略の理由を示す。例えば、 見本、聞こえない、
無関係、取り消し、取り消しがありかつ判読できない、など。
diff --git a/P5/Source/Specs/gb.xml b/P5/Source/Specs/gb.xml
index 9e8a5dae3e..eca0b0e360 100644
--- a/P5/Source/Specs/gb.xml
+++ b/P5/Source/Specs/gb.xml
@@ -29,7 +29,7 @@
attribute indicates the number or other value used to identify
this gathering in a collation.
The type attribute may be used to further
- characterize the gathering in any respect.
+ characterize the gathering in any respect.
diff --git a/P5/Source/Specs/lb.xml b/P5/Source/Specs/lb.xml
index 1800fff873..4d51431ea6 100644
--- a/P5/Source/Specs/lb.xml
+++ b/P5/Source/Specs/lb.xml
@@ -9,7 +9,7 @@
inicio de líneainizio di rigaZeilenanfang
- marks the beginning of a new (typographic) line in some edition or version of a text.
+ marks the beginning of a topographic line in some edition or version of a text.텍스트의 편집 또는 버전에서 새로운 (인쇄상의) 행 시작을 표지한다.標記某版本文本裡 (在印刷上) 的新起行。ある版における新しい(印刷上の)行の始まりを示す。
@@ -32,8 +32,7 @@
-
This example shows typographical line breaks within metrical lines, where they occur at different
- places in different editions:
+
This example shows the encoding of the beginning of each new topographic line within a metrical line, indicating where it occurs in both the 1667 and 1674 editions:
Of Mans First Disobedience, and the FruitOf that Forbidden Tree, whose mortal tast
@@ -58,9 +57,9 @@
-
This example encodes typographical line breaks as a means of
+
This example shows the encoding of the beginning of a new topographical line as a means of
preserving the visual appearance of a title page. The break
-attribute is used to show that the line break does not (as elsewhere)
+ attribute is used to show that the beginning of the new line does not (as elsewhere)
mark the start of a new word.
With Additions, ne-ver before Printed.
@@ -89,15 +88,15 @@ soi-xante & dixhuytiesme livre.
starts. The n attribute, if used, indicates the number or other value associated
with the text between this point and the next lb element, typically the sequence
number of the line within the page, or other appropriate unit. This element is intended to be
- used for marking actual line breaks on a manuscript or printed page, at the point where they
- occur; it should not be used to tag structural units such as lines of verse (for which the
+ used for marking the beginning of each new topographic line on a manuscript or printed page, at the point where it
+ occurs; it should not be used to tag structural units such as lines of verse (for which the
l element is available) except in circumstances where structural units cannot
otherwise be marked.
The type attribute may be used to characterize the
- line break in any respect. The more specialized attributes
+ line beginning in any respect. The more specialized attributes
break, ed, or edRef should be preferred when the
- intent is to indicate whether or not the line
- break is word-breaking, or to note the source from which it
+ intent is to indicate whether or not the beginning of the new topographic line
+ is word-breaking, or to note the source from which it
derives.
This example shows topographical lines as a means of preserving the visual appearance of a poem:
@@ -53,7 +54,7 @@ said
This element should be used only to mark up writing which
is topographically organized as a series of lines, horizontal or
vertical. It should not be used to mark lines of verse (for which use
-l) nor to mark linebreaks within text which has been encoded
+l) nor to mark line beginnings within text which has been encoded
using structural elements such as p (for which use
lb).
diff --git a/P5/Source/Specs/msName.xml b/P5/Source/Specs/msName.xml
index 0394126913..ed82822ba1 100644
--- a/P5/Source/Specs/msName.xml
+++ b/P5/Source/Specs/msName.xml
@@ -2,15 +2,14 @@
- alternative name
+ manuscript name이명替換名稱autre nomnombre alternativo.nome alternativo
- contains any form of unstructured alternative
-name used for a manuscript or other object, such as an ocellus
-nominum, or nickname.
+ Manuskriptname
+ contains a proper noun or noun phrase used for a manuscript, or other object, as opposed to a formal identification number or classmark.ocellus nominum 또는 별명처럼 원고에 사용된 어떤 형식의 구조화되지 않은 이명(대체명)을 포함한다.包含手稿無特定結構的任何形式替換名稱,像是ocellus nominum或是暱稱。手書き資料を示す構造化されていない別名の形式を示す。例えば、
@@ -19,6 +18,7 @@ nominum, or nickname.contiene cualquier forma de nombre alternativo no estructurado usado para un manuscrito, como por ejemplo ocellus nominum, o sobranombre.contiene un qualsiasi nome alternativo non strutturato utilizzato per un manoscritto, per esempio ocellus
nominum, o soprannome
+ enthält einen Eigennamen in Form eines Nomens oder einer Nominalphrase, der für ein Manuskript oder anderes Objekt verwendet wird, anstatt einer formalen Identifikationsnummer oder Signatur.
diff --git a/P5/Source/Specs/p.xml b/P5/Source/Specs/p.xml
index abc4a30a08..59e2eab230 100644
--- a/P5/Source/Specs/p.xml
+++ b/P5/Source/Specs/p.xml
@@ -49,15 +49,12 @@
-
+
-
-
- Abstract model violation: Lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText.
-
+
+
+ Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText.
+
diff --git a/P5/Source/Specs/param.xml b/P5/Source/Specs/param.xml
index f6c6185be6..543e100992 100644
--- a/P5/Source/Specs/param.xml
+++ b/P5/Source/Specs/param.xml
@@ -51,7 +51,7 @@
a parameter of this name should supply an
expression to be used to label something, for example concat('Page ', @n)
- for a page break or @n for a footnote reference; typically used with the
+ for a page beginning or @n for a footnote reference; typically used with the
note or break behaviours
diff --git a/P5/Source/Specs/pb.xml b/P5/Source/Specs/pb.xml
index 23b9fcd160..3593601f80 100644
--- a/P5/Source/Specs/pb.xml
+++ b/P5/Source/Specs/pb.xml
@@ -47,7 +47,7 @@
-
A page break may be associated with a facsimile image of the page it introduces by means of
+
A page beginning may be associated with a facsimile image of the page it introduces by means of
the facs attribute
@@ -92,10 +92,10 @@
physical sequence number is implicit in the presence of the
pb element itself.
The type attribute may be used to characterize
- the page break in any respect. The more specialized attributes
+ the page beginning in any respect. The more specialized attributes
break, ed, or edRef should be
preferred when the intent is to indicate whether or not the
- page break is word-breaking, or to note the source from
+ page beginning is word-breaking, or to note the source from
which it derives.
diff --git a/P5/Source/Specs/post.xml b/P5/Source/Specs/post.xml
index dae4fc0c32..49818bcc53 100644
--- a/P5/Source/Specs/post.xml
+++ b/P5/Source/Specs/post.xml
@@ -223,7 +223,7 @@ See the file COPYING.txt for details.
timelines, as individual comments following a status update on Facebook pages, as posts
in forum threads, as contributions on Wikipedia talk pages or in the comments section of
a weblog. [Element adopted from the DeRiK schema.
- Aspects of the model adopted from the CoMeRe Schema]. The
+ Aspects of the model adopted from the CoMeRe Schema]. The
post element is a member of the model class model.common (via model.CMC).
This allows for using (and combining) occurrences of post, u,
incident, and kinesicin one and the same div in order to
diff --git a/P5/Source/Specs/ptr.xml b/P5/Source/Specs/ptr.xml
index 933b98f230..d554ace4ec 100644
--- a/P5/Source/Specs/ptr.xml
+++ b/P5/Source/Specs/ptr.xml
@@ -41,6 +41,18 @@
+
+
The target and cRef attributes are mutually exclusive.
+
+
+
Les attributs target et cRef sont exclusifs l'un de l'autre.
+
+
+
属性targetとcRefは、排他的に使用される。
+
+
+
Die target und cRef-Attribute schließen sich gegenseitig aus.
+
diff --git a/P5/Source/Specs/ref.xml b/P5/Source/Specs/ref.xml
index 296d4f14d5..a7c4b12f41 100644
--- a/P5/Source/Specs/ref.xml
+++ b/P5/Source/Specs/ref.xml
@@ -34,7 +34,7 @@
- Only one of the attributes @target' and @cRef' may be supplied on
+ Only one of the attributes @target and @cRef may be supplied on .
diff --git a/P5/Source/Specs/teiCorpus.xml b/P5/Source/Specs/teiCorpus.xml
index d1032273da..ce6d88ab08 100644
--- a/P5/Source/Specs/teiCorpus.xml
+++ b/P5/Source/Specs/teiCorpus.xml
@@ -146,9 +146,18 @@
-
Should contain one TEI header for the corpus, and
+
Should contain one teiHeader for the corpus, and
a series of TEI elements, one for each text.
+
As with all elements in the TEI scheme (except egXML) this element is
+ in the TEI namespace (see ). Thus, when it is used as the
+ outermost element of a TEI document, it is necessary to specify the TEI namespace
+ on it. This is customarily achieved by including http://www.tei-c.org/ns/1.0 as the value of the XML namespace declaration (xmlns), without indicating a prefix,
+ and then not using a prefix on TEI elements in the rest of the document. For example:
+ teiCorpus version="4.8.1" xml:lang="en" xmlns="http://www.tei-c.org/ns/1.0".
+
+
Este elemento debe contener un teiHeader para el corpus y una serie de elementos TEI para cada texto.
+
Como todos los elementos en el esquema TEI (excepto egXML), este elemento se encuentra en el espacio de nombres (namespace) de TEI (cf. ). Por lo tanto, cuando se utiliza como el elemento más externo en un documento TEI, es necesario especificar el espacio de nombres de TEI en su interior. Esto se hace, normalmente, incluyendo http://www.tei-c.org/ns/1.0 como valor de la declaración del espacio de nombres (xmlns) sin indicar un prefijo, y por lo tanto sin necesidad de utilizar un prefijo en los elementos TEI del resto del documento. Por ejemplo: teiCorpus version="4.8.1" xml:lang="es" xmlns="http://www.tei-c.org/ns/1.0".
Cet élément doit contenir un en-tête TEI pour le corpus, et une suite
d'éléments TEI, correspondant à autant de textes.
diff --git a/P5/Test/detest.odd b/P5/Test/detest.odd
index ef810c71c9..72effe8d3a 100644
--- a/P5/Test/detest.odd
+++ b/P5/Test/detest.odd
@@ -464,14 +464,14 @@
This constraintSpec is invalid because it is
missing scheme in add mode.
- This rule never fires.
+ This rule never fires, 01This constraintSpec is invalid because it is
missing scheme in replace mode.
- This rule never fires.
+ This rule never fires, 02.
@@ -480,7 +480,7 @@
(i.e., does not have a sch:rule
context="…".)
- This rule never fires.
+ This rule never fires, 03.
- BB
- mel:bb:ve:08
- riddle of Strider
-
- occurs only once, thus valid
- occurs twice, thus invalid
- occurs twice, thus invalid
- three occurrences, thus invalid
- three occurrences, thus invalid
- three occurrences, thus invalid
- four occurrences, thus invalid
- four occurrences, thus invalid
- four occurrences, thus invalid
- four occurrences, thus invalid
-
-
The above msDesc should generate 3 errors, one
- each for physDesc, history, and
- additional.
-
-
- All that is gold does not glitter,
- Not all those who wander are lost;
- The old that is strong does not wither,
- Deep roots are not reached by the frost.
-
-
- From the ashes a fire shall be woken,
- A light from the shadows shall spring;
- Renewed shall be blade that was broken,
- The crownless again shall be king.
-
-
+ test msDesc elements that should not be repeated
+
Some manuscript description elements are supposed to occur
+ a max of only once, even though RelaxNG allows infinite.
+
Added 2023-10-11 19:21 by Syd.
+
+
+ MEL
+ BB
+ mel:bb:ve:08
+ riddle of Strider
+
+ occurs only once, thus valid
+ occurs twice, thus invalid
+ occurs twice, thus invalid
+ three occurrences, thus invalid
+ three occurrences, thus invalid
+ three occurrences, thus invalid
+ four occurrences, thus invalid
+ four occurrences, thus invalid
+ four occurrences, thus invalid
+ four occurrences, thus invalid
+
+
The above msDesc should generate 3 errors, one
+ each for physDesc, history, and
+ additional.
+
+
+ All that is gold does not glitter,
+ Not all those who wander are lost;
+ The old that is strong does not wither,
+ Deep roots are not reached by the frost.
+
+
+ From the ashes a fire shall be woken,
+ A light from the shadows shall spring;
+ Renewed shall be blade that was broken,
+ The crownless again shall be king.
+
+
Shift should have a new attribute
@@ -401,14 +401,24 @@
Here is
a little floating text
.
Here is
another little floating text
.
+
+
+
This paragraph should be valid.
+ The one around “find”, below, should be invalid.
+
+ I think that I shall never see Sight of TEI elements is significant in this little poem.A floating text inside this tree.Nor can it be
that I shall know
A paragraph
herein below
.
- More likely maybe I could find
+ More likely maybe I could
find
A div
stuck in this poem's lines.
And here is the same poem again, inside a giant floatingText and coded a little differently.
+
The “find”, below, should be flagged as an
+ abstract model violation, IMHO, but is not because the
+ Schematron is fooled by the fact that it is within a
+ floatingText. Sigh. —Syd, 2024-05-18
@@ -417,7 +427,7 @@
A floating text inside this tree.Nor can it be that I shall know
A paragraph
herein below
.
- More likely maybe I could find
+ More likely maybe I could
find
A div
stuck in this poem's lines.
@@ -432,7 +442,7 @@
detest.odd because they would break
the build there
- See //elementSpec[@ident eq 'abbr']/listRef in detest.odd
+ See //elementSpec[@ident eq 'abbr']/listRef in detest.oddno target (2B caught by Schematron)good target absolute URI
diff --git a/P5/Test/detest_odd_schematron.log b/P5/Test/detest_odd_schematron.log
new file mode 100644
index 0000000000..f202115277
--- /dev/null
+++ b/P5/Test/detest_odd_schematron.log
@@ -0,0 +1,35 @@
+Buildfile: /tei/P5/Test/antruntest.xml
+
+validateodd:
+ [echo] Validate detest.odd as ODD ...
+ [echo] ... against RelaxNG (../p5odds.rng) with jing ...
+ [echo] ... against Schematron (../p5odds.message.isosch.xsl) with Saxon via trax
+ [xslt] Processing /tei/P5/Test/detest.odd to /dev/null
+ [xslt] Loading stylesheet /tei/P5/p5odds.message.isosch.xsl
+ [xslt] Error: both the versionDate and xml:lang attributes on "remarks" are required when it is a child of "elementSpec". (@xml:lang and @versionDate)
+ [xslt] Error: both the versionDate and xml:lang attributes on "gloss" are required when it is a child of "elementSpec". (@xml:lang and @versionDate)
+ [xslt] Error: both the versionDate and xml:lang attributes on "desc" are required when it is a child of "elementSpec". (@xml:lang and @versionDate)
+ [xslt] Error: both the versionDate and xml:lang attributes on "gloss" are required when it is a child of "attDef". (@xml:lang and @versionDate)
+ [xslt] Error: both the versionDate and xml:lang attributes on "remarks" are required when it is a child of "elementSpec". (@xml:lang and @versionDate)
+ [xslt] An element reference is not repeatable when part of a schema specification (and thus this <elementRef> should not have @minOccurs or @maxOccurs). (@minOccurs | @maxOccurs / error)
+ [xslt] An element reference within a content model must refer to a locally defined element specification (and thus this <elementRef> should not have @source). (@source / error)
+ [xslt] In the context of tagset documentation, the listRef element must not self-nest. (tei:listRef)
+ [xslt] In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
+ [xslt] In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
+ [xslt] class membership (in this case of l) should be specified in sorted order, except att.global goes first. (string-join( $keys_as_specified ) eq string-join( $keys_in_order ))
+ [xslt] Rules in the ISO Schematron language must be inside a constraintSpec with the value 'schematron' on the scheme attribute (tei:constraint/sch:* and not( @scheme eq 'schematron'))
+ [xslt] Rules in the ISO Schematron language must be inside a constraintSpec with the value 'schematron' on the scheme attribute (tei:constraint/sch:* and not( @scheme eq 'schematron'))
+ [xslt] Rules in the ISO Schematron language must be inside a constraintSpec with the value 'schematron' on the scheme attribute (tei:constraint/sch:* and not( @scheme eq 'schematron'))
+ [xslt] The use of an <sch:assert> or <sch:report> that does not have a context (i.e., does not have an ancestor <sch:rule> with a @context attribute) in an ISO Schematron constraint specification is deprecated, and will become invalid after 2025-03-15. (( $assertsHaveContext, $reportsHaveContext ) = false() / warning)
+ [xslt] The @scheme attribute of <constraintSpec> is required when the @mode is not specified (here on "add_missing_scheme") (@scheme)
+ [xslt] The @scheme attribute of <constraintSpec> is required when the @mode is "replace" (here on "replace_missing_scheme") (@scheme)
+ [xslt] The @scheme attribute of <constraintSpec> is required when the @mode is not specified (here on "add_missing_scheme") (@scheme)
+ [xslt] The @scheme attribute of <constraintSpec> is required when the @mode is "replace" (here on "replace_missing_scheme") (@scheme)
+ [xslt] Since the @default-is-in-list-req attribute is required, it will always be specified. Thus the default value (of "ONE") will never be used. Either change the definition of the attribute so it is not required ("rec" or "opt"), or remove the defaultVal element. (tei:defaultVal)
+ [xslt] Since the @default-NOT-in-list-req attribute is required, it will always be specified. Thus the default value (of "ONE") will never be used. Either change the definition of the attribute so it is not required ("rec" or "opt"), or remove the defaultVal element. (tei:defaultVal)
+ [xslt] In the elementSpec defining blort2 the default value of the @default-NOT-in-list-opt attribute is not among the closed list of possible values (string(tei:defaultVal) = tei:valList/tei:valItem/@ident)
+ [xslt] In the elementSpec defining blort2 the default value of the @default-NOT-in-list-rec attribute is not among the closed list of possible values (string(tei:defaultVal) = tei:valList/tei:valItem/@ident)
+ [xslt] In the elementSpec defining blort2 the default value of the @default-NOT-in-list-req attribute is not among the closed list of possible values (string(tei:defaultVal) = tei:valList/tei:valItem/@ident)
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
diff --git a/P5/Test/detest_xml_relaxng.log b/P5/Test/detest_xml_relaxng.log
new file mode 100644
index 0000000000..48a294155d
--- /dev/null
+++ b/P5/Test/detest_xml_relaxng.log
@@ -0,0 +1,79 @@
+detest.xml
+detest.xml:78:13: error: unfinished content of element http://www.tei-c.org/ns/1.0^lg
+required:
+ element http://www.tei-c.org/ns/1.0^l
+ element http://www.tei-c.org/ns/1.0^stage
+ element http://www.tei-c.org/ns/1.0^desc
+ element http://www.tei-c.org/ns/1.0^label
+ element http://www.tei-c.org/ns/1.0^lg
+detest.xml:195:10: error: attribute ^truth with invalid value "no"
+required:
+ data http://www.w3.org/2001/XMLSchema-datatypes^boolean
+detest.xml:197:10: error: attribute http://www.w3.org/XML/1998/namespace^lang not allowed
+required:
+ after
+detest.xml:200:10: error: attribute ^enumerated with invalid value " dog breath"
+required:
+ data http://www.w3.org/2001/XMLSchema-datatypes^token
+detest.xml:205:10: error: attribute ^name with invalid value "123"
+required:
+ data http://www.w3.org/2001/XMLSchema-datatypes^Name
+detest.xml:214:10: error: unfinished content of element http://www.tei-c.org/ns/1.0^lg
+required:
+ element http://www.tei-c.org/ns/1.0^l
+detest.xml:241:37: error: invalid data or text not allowed
+required:
+ element http://www.tei-c.org/ns/1.0^add
+ element http://www.tei-c.org/ns/1.0^surplus
+ element http://www.tei-c.org/ns/1.0^del
+ element http://www.tei-c.org/ns/1.0^milestone
+ element http://www.tei-c.org/ns/1.0^gb
+ element http://www.tei-c.org/ns/1.0^pb
+ element http://www.tei-c.org/ns/1.0^lb
+ element http://www.tei-c.org/ns/1.0^cb
+ element http://www.tei-c.org/ns/1.0^fw
+ element http://www.tei-c.org/ns/1.0^anchor
+detest.xml:261:11: error: attribute ^target with invalid value "#spanTest"
+required:
+ data http://www.w3.org/2001/XMLSchema-datatypes^anyURI
+detest.xml:267:11: error: missing attributes of http://www.tei-c.org/ns/1.0^media
+required:
+ attribute ^url
+detest.xml:268:11: error: missing attributes of http://www.tei-c.org/ns/1.0^media
+required:
+ attribute ^mimeType
+detest.xml:274:51: error: invalid data or text not allowed
+required:
+ after
+detest.xml:275:41: error: invalid data or text not allowed
+required:
+ after
+detest.xml:276:61: error: invalid data or text not allowed
+required:
+ after
+detest.xml:277:25: error: invalid data or text not allowed
+required:
+ after
+detest.xml:341:12: error: element http://www.tei-c.org/ns/1.0^altIdentifier not allowed
+required:
+ element http://www.tei-c.org/ns/1.0^msIdentifier
+detest.xml:344:10: error: unfinished content of element http://www.tei-c.org/ns/1.0^msPart
+required:
+ element http://www.tei-c.org/ns/1.0^msIdentifier
+detest.xml:373:10: error: element http://www.tei-c.org/ns/1.0^idno not allowed
+required:
+ after
+allowed:
+ element http://www.tei-c.org/ns/1.0^series
+ element http://www.tei-c.org/ns/1.0^monogr
+ element http://www.tei-c.org/ns/1.0^note
+ element http://www.tei-c.org/ns/1.0^noteGrp
+ element http://www.tei-c.org/ns/1.0^ptr
+ element http://www.tei-c.org/ns/1.0^ref
+ element http://www.tei-c.org/ns/1.0^listRef
+ element http://www.tei-c.org/ns/1.0^relatedItem
+ element http://www.tei-c.org/ns/1.0^citedRange
+detest.xml:451:12: error: attribute ^target with invalid value ""
+required:
+ data http://www.w3.org/2001/XMLSchema-datatypes^anyURI
+error: some documents are invalid
diff --git a/P5/Test/detest_xml_schematron.log b/P5/Test/detest_xml_schematron.log
new file mode 100644
index 0000000000..a6a6e8b84d
--- /dev/null
+++ b/P5/Test/detest_xml_schematron.log
@@ -0,0 +1,41 @@
+The @generatedBy attribute is for use within a <post> element. (ancestor-or-self::tei:post)
+The @generatedBy attribute is for use within a <post> element. (ancestor-or-self::tei:post)
+ The element indicated by @spanTo (#ds2) must follow the current delSpan element (id( substring( @spanTo, 2 ) ) >> .)
+ @schemeVersion can only be used if @scheme is specified. (@scheme and not(@scheme = 'free'))
+The abbr element should not be categorized in detail with @subtype unless also categorized in general with @type (@type)
+The div element should not be categorized in detail with @subtype unless also categorized in general with @type (@type)
+ @calendar indicates one or more systems or calendars to which the date represented by the content of this element belongs, but this date element has no textual content. (string-length( normalize-space(.) ) gt 0)
+The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element (tei:label)
+An lg element must contain at least one child l, lg, or gap element. (count(descendant::tei:lg|descendant::tei:l|descendant::tei:gap) > 0)
+ On quotation, either the @marks attribute should be used, or a paragraph of description provided (not( @marks ) and not( tei:p ))
+You may not nest one s element within another: use seg instead (tei:s)
+ Only one of the attributes @target and @from may be supplied on span
+ (@from and @target)
+ Only one of the attributes @target and @to may be supplied on span
+ (@to and @target)
+ If @to is supplied on span, @from must be supplied as well (@to and not(@from))
+ The @location value "external" is inconsistent with the parallel-segmentation method of apparatus markup. (@location eq 'external' and @method eq 'parallel-segmentation')
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+ A facsimile element represents a text with images, thus transcribed text should not be present within it. (child::text()[ normalize-space(.) ne ''])
+The @spanTo attribute of delSpan is required. (@spanTo)
+The @spanTo attribute of delSpan is required. (@spanTo)
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+subst must have at least one child add and at least one child del or surplus (child::tei:add and (child::tei:del or child::tei:surplus))
+ Only one physDesc is allowed as a child of msDesc. (preceding-sibling::*[ name(.) eq $gi ] and not( following-sibling::*[ name(.) eq $gi ] ))
+ Only one history is allowed as a child of msDesc. (preceding-sibling::*[ name(.) eq $gi ] and not( following-sibling::*[ name(.) eq $gi ] ))
+ Only one additional is allowed as a child of msDesc. (preceding-sibling::*[ name(.) eq $gi ] and not( following-sibling::*[ name(.) eq $gi ] ))
+In the context of tagset documentation, the listRef element must not self-nest. (tei:listRef)
+In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
+In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
+ The @new attribute should always be supplied; use the special value "normal" to indicate that the feature concerned ceases to be remarkable at this point. (@new / warning)
+ Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText. (ancestor::tei:floatingText | parent::tei:figure | parent::tei:note)
diff --git a/P5/Test/expected-results/detest_xml_relaxng.log b/P5/Test/expected-results/detest_xml_relaxng.log
index 396e10c622..48a294155d 100644
--- a/P5/Test/expected-results/detest_xml_relaxng.log
+++ b/P5/Test/expected-results/detest_xml_relaxng.log
@@ -73,7 +73,7 @@ allowed:
element http://www.tei-c.org/ns/1.0^listRef
element http://www.tei-c.org/ns/1.0^relatedItem
element http://www.tei-c.org/ns/1.0^citedRange
-detest.xml:441:12: error: attribute ^target with invalid value ""
+detest.xml:451:12: error: attribute ^target with invalid value ""
required:
data http://www.w3.org/2001/XMLSchema-datatypes^anyURI
error: some documents are invalid
diff --git a/P5/Test/expected-results/detest_xml_schematron.log b/P5/Test/expected-results/detest_xml_schematron.log
index 7a5532c45d..a6a6e8b84d 100644
--- a/P5/Test/expected-results/detest_xml_schematron.log
+++ b/P5/Test/expected-results/detest_xml_schematron.log
@@ -1,12 +1,9 @@
The @generatedBy attribute is for use within a <post> element. (ancestor-or-self::tei:post)
The @generatedBy attribute is for use within a <post> element. (ancestor-or-self::tei:post)
+ The element indicated by @spanTo (#ds2) must follow the current delSpan element (id( substring( @spanTo, 2 ) ) >> .)
+ @schemeVersion can only be used if @scheme is specified. (@scheme and not(@scheme = 'free'))
The abbr element should not be categorized in detail with @subtype unless also categorized in general with @type (@type)
The div element should not be categorized in detail with @subtype unless also categorized in general with @type (@type)
- The element indicated by @spanTo (#ds2) must follow the current element delSpan
- (id(substring(@spanTo,2)) and following::*[@xml:id=substring(current()/@spanTo,2)])
- The element indicated by @spanTo (notMeaningful) must follow the current element delSpan
- (id(substring(@spanTo,2)) and following::*[@xml:id=substring(current()/@spanTo,2)])
- @schemeVersion can only be used if @scheme is specified. (@scheme and not(@scheme = 'free'))
@calendar indicates one or more systems or calendars to which the date represented by the content of this element belongs, but this date element has no textual content. (string-length( normalize-space(.) ) gt 0)
The content of a "gloss" list should include a sequence of one or more pairs of a label element followed by an item element (tei:label)
An lg element must contain at least one child l, lg, or gap element. (count(descendant::tei:lg|descendant::tei:l|descendant::tei:gap) > 0)
@@ -41,3 +38,4 @@ In the context of tagset documentation, the listRef element must not self-nest.
In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
In the context of tagset documentation, each ptr or ref element inside a listRef must have a target attribute with only 1 pointer as its value. (@target and not( matches( @target,'\s') ))
The @new attribute should always be supplied; use the special value "normal" to indicate that the feature concerned ceases to be remarkable at this point. (@new / warning)
+ Abstract model violation: Metrical lines may not contain higher-level structural elements such as div, p, or ab, unless p is a child of figure or note, or is a descendant of floatingText. (ancestor::tei:floatingText | parent::tei:figure | parent::tei:note)
diff --git a/P5/guidelines.css b/P5/guidelines.css
index a00628fdbd..f73cc9f311 100644
--- a/P5/guidelines.css
+++ b/P5/guidelines.css
@@ -630,6 +630,10 @@ div.note ul {
}
span.noteLabel {
}
+a.notelink {
+ text-decoration: none;
+}
+
/* images */
div.figure {
text-align: left;
@@ -812,10 +816,7 @@ span.icon {
font-weight: bold;
font-size: large;
}
-sup {
- vertical-align: top;
- font-size: 70%;
-}
+
/* paragraphs */
p, div.p {
margin-top: 0.3em;
diff --git a/P5/webnav/bootstrap.bundle.min.js b/P5/webnav/bootstrap.bundle.min.js
deleted file mode 100644
index e8f21f703f..0000000000
--- a/P5/webnav/bootstrap.bundle.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v5.3.1 (https://getbootstrap.com/)
- * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
- */
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'
',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'