Commit 59facd5c authored by di68kap's avatar di68kap
Browse files

- MLW, kleinere Änderungen

parent 25814ef3
python3.exe setup.py sdist bdist python.exe setup.py sdist bdist
\ No newline at end of file
...@@ -7,7 +7,7 @@ LEMMA *facitergula ...@@ -7,7 +7,7 @@ LEMMA *facitergula
{sim.} {sim.}
GRAMMATIK FEHLER GRAMMATIK
nomen; -ae f. nomen; -ae f.
-us, -i m.: {=> ibi_1} -us, -i m.: {=> ibi_1}
...@@ -25,15 +25,15 @@ LAT pannus, faciale, sudarium ...@@ -25,15 +25,15 @@ LAT pannus, faciale, sudarium
DEU Gesichts-tuch, Schweiß-tuch, Tuch {usu liturg.}{de re v. {=> eintrag/ibi_X}} DEU Gesichts-tuch, Schweiß-tuch, Tuch {usu liturg.}{de re v. {=> eintrag/ibi_X}}
* Catal.: thes. Germ.; 28,11 (post 851) "-um III". * Catal.: thes. Germ.; 28,11 (post 851) "-um III".
* Form.: Sangall.; {#ibi_2} 39 p. 421,16 * Form.: Sangall.; {@ibi_2} 39 p. 421,16
"munuscula ... direximus, hoc est palliolum ... , -as duas" "munuscula ... direximus, hoc est palliolum ... , -as duas"
* Catal.: thes. Germ.; 18,7 "-eterculi viginti quatuor" * Catal.: thes. Germ.; 18,7 "-eterculi viginti quatuor"
* Libri: confrat. I; {#ibi_1} app. A 6 p. 137,30 * Libri: confrat. I; {@ibi_1} app. A 6 p. 137,30
"pulpitum ... -a cocco imaginata circumdari iussit {pontifex}" "pulpitum ... -a cocco imaginata circumdari iussit {pontifex}"
* Catal.: thes. Germ.; {#ibi_3} 76,15 "-rulae II"; * Catal.: thes. Germ.; {@ibi_3} 76,15 "-rulae II";
40,5 VI "vizregule"; 129a,5 "-sterculas II."; {#ibi_5} 24,8 "-itella X"; 40,5 VI "vizregule"; 129a,5 "-sterculas II."; {@ibi_5} 24,8 "-itella X";
114,8 VIII "fezdreglę"; 6,24 "fasciutercule VII"; 114,8 VIII "fezdreglę"; 6,24 "fasciutercule VII";
{#ibi_4} 92,6 "fascerculę tres"; 21,20 IIII "festregelę" {saepe} {@ibi_4} 92,6 "fascerculę tres"; 21,20 IIII "festregelę" {saepe}
BEDEUTUNG BEDEUTUNG
......
...@@ -75,7 +75,7 @@ BEDEUTUNG ...@@ -75,7 +75,7 @@ BEDEUTUNG
* Dipl.: Conr. II.; 64 p. 78,17 "Chõnradus ... ad imperium designatus Romanorum." * Dipl.: Conr. II.; 64 p. 78,17 "Chõnradus ... ad imperium designatus Romanorum."
* Const.: imp. II; 423,10 p. 557,43 "si rex ... in imperatorem electus ... ad imperium transire * Const.: imp. II; 423,10 p. 557,43 "si rex ... in imperatorem electus ... ad imperium transire
voluerit {eqs.}" {persaepe} {v. et {=> p. 1395, 32|URL}}. voluerit {eqs.}" {persaepe} {v. et {=> p. 1395, 32|URL}}.
* Alcuin.: epist. 129; p. 191,22 "a vobis {sc. Cantuariensibus} imperii {#imperator39m_1}{imperi S1} potestas prima processit, et fidei catholicae origo exorta est." * Alcuin.: epist. 129; p. 191,22 "a vobis {sc. Cantuariensibus} imperii {@imperator39m_1}{imperi S1} potestas prima processit, et fidei catholicae origo exorta est."
UUU_BEDEUTUNG in indicatione temporis: UUU_BEDEUTUNG in indicatione temporis:
* Cod.: Lauresh.; 290 (a. 767) "anno xv imperii domni nostri Pippini regis" * Cod.: Lauresh.; 290 (a. 767) "anno xv imperii domni nostri Pippini regis"
...@@ -116,7 +116,7 @@ BEDEUTUNG ...@@ -116,7 +116,7 @@ BEDEUTUNG
* Anon.: mus. plan. Coussemaker; p. 488b "tetra reges maximum huius {sc. harmoniae} tenent imperium. al." * Anon.: mus. plan. Coussemaker; p. 488b "tetra reges maximum huius {sc. harmoniae} tenent imperium. al."
UNTER_UNTER_BEDEUTUNG Dei: UNTER_UNTER_BEDEUTUNG Dei:
* Mirac.: Gertr.; I 11 p. 471,13 "cui (Domino) est honor, virtus et {#imperator37m_1}hymperium et gloria in secula seculorum." * Mirac.: Gertr.; I 11 p. 471,13 "cui (Domino) est honor, virtus et {@imperator37m_1}hymperium et gloria in secula seculorum."
* Hugeb.: Wynneb.; 13 p. 117,44 "Deo gratas gero, cuius ... imperio nutata fundantur tota etheria, terrestrea, aequorea." * Hugeb.: Wynneb.; 13 p. 117,44 "Deo gratas gero, cuius ... imperio nutata fundantur tota etheria, terrestrea, aequorea."
* Walth. Spir.: Christoph. II; 4,28 "cuius (Dei) imperiis quadratus subiacet orbis. al." * Walth. Spir.: Christoph. II; 4,28 "cuius (Dei) imperiis quadratus subiacet orbis. al."
...@@ -140,7 +140,7 @@ BEDEUTUNG ...@@ -140,7 +140,7 @@ BEDEUTUNG
DEUTSCH Staat, Verwaltungs-, Regierungsgebiet, Reich DEUTSCH Staat, Verwaltungs-, Regierungsgebiet, Reich
UUU_BEDEUTUNG in univ.: UUU_BEDEUTUNG in univ.:
* Chron.: Fred.; 2,15 "Assiriorum {#imperator38m_1} impirium (imperium p. corr. 1) deletum est." * Chron.: Fred.; 2,15 "Assiriorum {@imperator38m_1} impirium (imperium p. corr. 1) deletum est."
* Widuk.: gest.; 1,28 "Hluthowico ... usque ad fines Illirici ... et terminos Danorum imperium erat." * Widuk.: gest.; 1,28 "Hluthowico ... usque ad fines Illirici ... et terminos Danorum imperium erat."
* Otto Frising.: gest.; * Otto Frising.: gest.;
p. 4,26 (epist. Frid. I. imp.) p. 4,26 (epist. Frid. I. imp.)
...@@ -164,7 +164,7 @@ BEDEUTUNG ...@@ -164,7 +164,7 @@ BEDEUTUNG
* Const.: imp. II; 72 p. 85,22 * Const.: imp. II; 72 p. 85,22
"ut tollatur ... rancoris occasio inter ecclesiam et imperium." {persaepe}. "ut tollatur ... rancoris occasio inter ecclesiam et imperium." {persaepe}.
* {fort. add.} Conc.: Karol.; A 16^B * {fort. add.} Conc.: Karol.; A 16^B
"ut ... gentis suae institutiones legum per primatos {#imperator80m_1} inperitos (imperii L) ..., quae repperit diuturna vitiata ..., evelleret {Tassilo dux}." "ut ... gentis suae institutiones legum per primatos {@imperator80m_1} inperitos (imperii L) ..., quae repperit diuturna vitiata ..., evelleret {Tassilo dux}."
UUUU_BEDEUTUNG in nomine loci: UUUU_BEDEUTUNG in nomine loci:
* Dipl.: Heinr. II.; 184 * Dipl.: Heinr. II.; 184
...@@ -223,7 +223,7 @@ BEDEUTUNG ...@@ -223,7 +223,7 @@ BEDEUTUNG
LATEINISCH modus regendi, principatus LATEINISCH modus regendi, principatus
DEUTSCH Regierungsform DEUTSCH Regierungsform
* Albert. M.: pol.; 3,4{^capit.} "de prima civitatum origine deque imperiorum discrimine." * Albert. M.: pol.; 3,4^{capit.} "de prima civitatum origine deque imperiorum discrimine."
AUTORIN unbekannt AUTORIN unbekannt
...@@ -154,7 +154,7 @@ NullVerweis = "{" "-" "}" ...@@ -154,7 +154,7 @@ NullVerweis = "{" "-" "}"
#### ZUSATZ an verschiedenen Stellen der Struktur ############################ #### ZUSATZ an verschiedenen Stellen der Struktur ############################
Zusatz = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+ Zusatz = { "{" !("=>" | "@" | "^") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+ # mehrteilige Zusätze unnötig
EinzelnerZusatz = FesterZusatz | GemischterZusatz | FreierZusatz EinzelnerZusatz = FesterZusatz | GemischterZusatz | FreierZusatz
FesterZusatz = "adde" | "sape" | "persaepe" FesterZusatz = "adde" | "sape" | "persaepe"
GemischterZusatz = ( GebrauchsHinweis | PlurSingHinweis ) FreierZusatz GemischterZusatz = ( GebrauchsHinweis | PlurSingHinweis ) FreierZusatz
...@@ -184,7 +184,7 @@ Edition = EINZEILER ...@@ -184,7 +184,7 @@ Edition = EINZEILER
Verweis = "{" VerweisKern "}" Verweis = "{" VerweisKern "}"
VerweisKern = "=>" §((alias "|" ("-" | URL)) | URL) VerweisKern = "=>" §((alias "|" ("-" | URL)) | URL)
Anker = "{" "#" §ziel "}" Anker = "{" "@" §ziel "}"
URL = [ ([protokoll] domäne /\//) | /\// ] { pfad /\// } ziel URL = [ ([protokoll] domäne /\//) | /\// ] { pfad /\// } ziel
alias = FREITEXT alias = FREITEXT
...@@ -208,7 +208,7 @@ DEU_KLEIN = /(?!--)[a-zäöüßęõ_\-.]+/~ ...@@ -208,7 +208,7 @@ DEU_KLEIN = /(?!--)[a-zäöüßęõ_\-.]+/~
LAT_WORT = /(?!--)[a-z|\-_.]+/~ LAT_WORT = /(?!--)[a-z|\-_.]+/~
GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~ GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d]+/~ ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.,!? ]+\})|[\d\w.]+))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~ ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~
SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/ SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/
......
...@@ -211,7 +211,7 @@ class MLWGrammar(Grammar): ...@@ -211,7 +211,7 @@ class MLWGrammar(Grammar):
#### ZUSATZ an verschiedenen Stellen der Struktur ############################ #### ZUSATZ an verschiedenen Stellen der Struktur ############################
Zusatz = { "{" !("=>" | "#") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+ Zusatz = { "{" !("=>" | "@" | "^") §EinzelnerZusatz { ";;" EinzelnerZusatz } "}" }+ # mehrteilige Zusätze unnötig
EinzelnerZusatz = FesterZusatz | GemischterZusatz | FreierZusatz EinzelnerZusatz = FesterZusatz | GemischterZusatz | FreierZusatz
FesterZusatz = "adde" | "sape" | "persaepe" FesterZusatz = "adde" | "sape" | "persaepe"
GemischterZusatz = ( GebrauchsHinweis | PlurSingHinweis ) FreierZusatz GemischterZusatz = ( GebrauchsHinweis | PlurSingHinweis ) FreierZusatz
...@@ -241,7 +241,7 @@ class MLWGrammar(Grammar): ...@@ -241,7 +241,7 @@ class MLWGrammar(Grammar):
Verweis = "{" VerweisKern "}" Verweis = "{" VerweisKern "}"
VerweisKern = "=>" §((alias "|" ("-" | URL)) | URL) VerweisKern = "=>" §((alias "|" ("-" | URL)) | URL)
Anker = "{" "#" §ziel "}" Anker = "{" "@" §ziel "}"
URL = [ ([protokoll] domäne /\//) | /\// ] { pfad /\// } ziel URL = [ ([protokoll] domäne /\//) | /\// ] { pfad /\// } ziel
alias = FREITEXT alias = FREITEXT
...@@ -265,7 +265,7 @@ class MLWGrammar(Grammar): ...@@ -265,7 +265,7 @@ class MLWGrammar(Grammar):
LAT_WORT = /(?!--)[a-z|\-_.]+/~ LAT_WORT = /(?!--)[a-z|\-_.]+/~
GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~ GROSSSCHRIFT = /(?!--)[A-ZÄÖÜ_\-]+/~
ZAHL = /[\d]+/~ ZAHL = /[\d]+/~
SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.]+\})|\w))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text SEITENZAHL = /[\d]+(?:\^(?:(?:\{[\d\w.,!? ]+\})|[\d\w.]+))?/~ # Zahl mit optionale folgendem hochgestelltem Buchstaben oder Text
ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~ ROEMISCHE_ZAHL = /(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\w])/~
SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/ SCHLUESSELWORT = { //~ /\n/ }+ !ROEMISCHE_ZAHL /[A-ZÄÖÜ]{3,}\s+/
...@@ -316,7 +316,7 @@ class MLWGrammar(Grammar): ...@@ -316,7 +316,7 @@ class MLWGrammar(Grammar):
flexion = Forward() flexion = Forward()
genus = Forward() genus = Forward()
wortart = Forward() wortart = Forward()
source_hash__ = "00b9f456f98134ae0a0fdf9e45a8ce4c" source_hash__ = "b672dda664d0a469c16dae0bf3585e5d"
parser_initialization__ = "upon instantiation" parser_initialization__ = "upon instantiation"
COMMENT__ = r'(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)' COMMENT__ = r'(?:\/\/.*)|(?:\/\*(?:.|\n)*?\*\/)'
WHITESPACE__ = r'[\t ]*' WHITESPACE__ = r'[\t ]*'
...@@ -349,7 +349,7 @@ class MLWGrammar(Grammar): ...@@ -349,7 +349,7 @@ class MLWGrammar(Grammar):
SATZZEICHEN.set(RE("(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\\[\\]]+)|[`''‘’?]")) SATZZEICHEN.set(RE("(?!->)(?:(?:,(?!,))|(?:;(?!;))|(?::(?!:))|(?:-(?!-))|[.()\\[\\]]+)|[`''‘’?]"))
SCHLUESSELWORT = Series(OneOrMore(Series(RE(''), RegExp('\\n'))), NegativeLookahead(ROEMISCHE_ZAHL), RegExp('[A-ZÄÖÜ]{3,}\\s+')) SCHLUESSELWORT = Series(OneOrMore(Series(RE(''), RegExp('\\n'))), NegativeLookahead(ROEMISCHE_ZAHL), RegExp('[A-ZÄÖÜ]{3,}\\s+'))
ROEMISCHE_ZAHL.set(RE('(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\\w])')) ROEMISCHE_ZAHL.set(RE('(?=[MDCLXVI])M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?I*)(?=[^\\w])'))
SEITENZAHL.set(RE('[\\d]+(?:\\^(?:(?:\\{[\\d\\w.]+\\})|\\w))?')) SEITENZAHL.set(RE('[\\d]+(?:\\^(?:(?:\\{[\\d\\w.,!? ]+\\})|[\\d\\w.]+))?'))
ZAHL = RE('[\\d]+') ZAHL = RE('[\\d]+')
GROSSSCHRIFT.set(RE('(?!--)[A-ZÄÖÜ_\\-]+')) GROSSSCHRIFT.set(RE('(?!--)[A-ZÄÖÜ_\\-]+'))
LAT_WORT = RE('(?!--)[a-z|\\-_.]+') LAT_WORT = RE('(?!--)[a-z|\\-_.]+')
...@@ -367,7 +367,7 @@ class MLWGrammar(Grammar): ...@@ -367,7 +367,7 @@ class MLWGrammar(Grammar):
protokoll = RegExp('\\w+://') protokoll = RegExp('\\w+://')
alias = Synonym(FREITEXT) alias = Synonym(FREITEXT)
URL = Series(Option(Alternative(Series(Option(protokoll), domäne, RegExp('/')), RegExp('/'))), ZeroOrMore(Series(pfad, RegExp('/'))), ziel) URL = Series(Option(Alternative(Series(Option(protokoll), domäne, RegExp('/')), RegExp('/'))), ZeroOrMore(Series(pfad, RegExp('/'))), ziel)
Anker = Series(Token("{"), Token("#"), ziel, Token("}"), mandatory=2) Anker = Series(Token("{"), Token("@"), ziel, Token("}"), mandatory=2)
VerweisKern = Series(Token("=>"), Alternative(Series(alias, Token("|"), Alternative(Token("-"), URL)), URL), mandatory=1) VerweisKern = Series(Token("=>"), Alternative(Series(alias, Token("|"), Alternative(Token("-"), URL)), URL), mandatory=1)
Verweis = Series(Token("{"), VerweisKern, Token("}")) Verweis = Series(Token("{"), VerweisKern, Token("}"))
Edition = Synonym(EINZEILER) Edition = Synonym(EINZEILER)
...@@ -388,7 +388,7 @@ class MLWGrammar(Grammar): ...@@ -388,7 +388,7 @@ class MLWGrammar(Grammar):
GemischterZusatz = Series(Alternative(GebrauchsHinweis, PlurSingHinweis), FreierZusatz) GemischterZusatz = Series(Alternative(GebrauchsHinweis, PlurSingHinweis), FreierZusatz)
FesterZusatz = Alternative(Token("adde"), Token("sape"), Token("persaepe")) FesterZusatz = Alternative(Token("adde"), Token("sape"), Token("persaepe"))
EinzelnerZusatz = Alternative(FesterZusatz, GemischterZusatz, FreierZusatz) EinzelnerZusatz = Alternative(FesterZusatz, GemischterZusatz, FreierZusatz)
Zusatz.set(OneOrMore(Series(Token("{"), NegativeLookahead(Alternative(Token("=>"), Token("#"))), EinzelnerZusatz, ZeroOrMore(Series(Token(";;"), EinzelnerZusatz)), Token("}"), mandatory=2))) Zusatz.set(OneOrMore(Series(Token("{"), NegativeLookahead(Alternative(Token("=>"), Token("@"), Token("^"))), EinzelnerZusatz, ZeroOrMore(Series(Token(";;"), EinzelnerZusatz)), Token("}"), mandatory=2)))
NullVerweis = Series(Token("{"), Token("-"), Token("}")) NullVerweis = Series(Token("{"), Token("-"), Token("}"))
Stellenverweis = Series(BelegQuelle, ZeroOrMore(Series(Option(ABS), Stelle, Alternative(NullVerweis, Verweis)))) Stellenverweis = Series(BelegQuelle, ZeroOrMore(Series(Option(ABS), Stelle, Alternative(NullVerweis, Verweis))))
Verweisliste = ZeroOrMore(Series(Option(LZ), Token("*"), Stellenverweis)) Verweisliste = ZeroOrMore(Series(Option(LZ), Token("*"), Stellenverweis))
......
...@@ -149,4 +149,10 @@ M1: "123" ...@@ -149,4 +149,10 @@ M1: "123"
M2: "123^b" M2: "123^b"
M3: "4^{capit.}" M3: "4^capit."
\ No newline at end of file
M4: "4^{bona fide}"
[fail:SEITENZAHL]
F1: "4^bona fide"
...@@ -55,8 +55,8 @@ F2: "{=> ohne Ziel|}" ...@@ -55,8 +55,8 @@ F2: "{=> ohne Ziel|}"
F3: "{=> | - }" F3: "{=> | - }"
[match:Anker] [match:Anker]
M1: "{# ziel}" M1: "{@ ziel}"
M2: "{#ziel}" M2: "{@ziel}"
[fail:Anker] [fail:Anker]
F1: "{#badw.de/ziel}" F1: "{@badw.de/ziel}"
...@@ -165,6 +165,7 @@ Match-test "m1" ...@@ -165,6 +165,7 @@ Match-test "m1"
### AST ### AST
(LÜCKE (LÜCKE
(KOMMENTARZEILEN)
(LEERZEILE (LEERZEILE
(:RegExp (:RegExp
"" ""
...@@ -185,6 +186,7 @@ Match-test "m2" ...@@ -185,6 +186,7 @@ Match-test "m2"
### AST ### AST
(LÜCKE (LÜCKE
(KOMMENTARZEILEN)
(LEERZEILE (LEERZEILE
(:RegExp (:RegExp
"" ""
...@@ -214,6 +216,7 @@ Match-test "m3" ...@@ -214,6 +216,7 @@ Match-test "m3"
### AST ### AST
(LÜCKE (LÜCKE
(KOMMENTARZEILEN)
(LEERZEILE (LEERZEILE
(:RegExp (:RegExp
"" ""
...@@ -237,6 +240,7 @@ Match-test "m4" ...@@ -237,6 +240,7 @@ Match-test "m4"
### AST ### AST
(LÜCKE (LÜCKE
(KOMMENTARZEILEN)
(LEERZEILE (LEERZEILE
(:RegExp (:RegExp
"" ""
...@@ -652,9 +656,26 @@ Match-test "m3" ...@@ -652,9 +656,26 @@ Match-test "m3"
--------------- ---------------
### Test-code: ### Test-code:
4^{capit.} 4^capit.
### AST ### AST
(SEITENZAHL (SEITENZAHL
"4^{capit.}" "4^capit."
) )
\ No newline at end of file
Match-test "m4"
---------------
### Test-code:
4^{bona fide}
### AST
(SEITENZAHL
"4^{bona fide}"
)
Fail-test "f1"
--------------
### Test-code:
4^bona fide
\ No newline at end of file
...@@ -143,6 +143,11 @@ Match-test "1" ...@@ -143,6 +143,11 @@ Match-test "1"
### AST ### AST
(LemmaPosition (LemmaPosition
(Lemma
(LemmaWort
"facitergula"
)
)
(LemmaVarianten (LemmaVarianten
(LemmaVariante (LemmaVariante
"fascitergula" "fascitergula"
...@@ -163,12 +168,20 @@ Match-test "1" ...@@ -163,12 +168,20 @@ Match-test "1"
) )
) )
(GrammatikPosition (GrammatikPosition
(flexion (Grammatik
(deklination (nomen
(FLEX "nomen"
"-ae" )
(flexion
(deklination
(FLEX
"-ae"
)
) )
) )
(femininum
"femininum"
)
) )
) )
) )
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment