diff --git a/.gitignore b/.gitignore index 09644e2..be45391 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ relaxng/dr/tmp +dr-nafneghornlogeq_relaxed4simp.rnc +dr-nafneghornlogeq_normal4simp.rnc +dr-naffologeq_relaxed.rnc diff --git a/auto-gen/dr/instance-rule-att1.xml b/auto-gen/dr/instance-rule-att1.xml index b406c21..5047e16 100644 --- a/auto-gen/dr/instance-rule-att1.xml +++ b/auto-gen/dr/instance-rule-att1.xml @@ -1,68969 +1,59501 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + + + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + - + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - + + - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - + + + + + + + + + + + + + - + - + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - + + + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - - - + + + + + + + + - - - + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + - + - - - + + + + + + + - + - - - - - - - - - + + + + + + + + + - - + - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + - + - + - + - + - - - - - - - + + + + + + + + + + + - - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + + + + + - + + + + + + + + + - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + - + - - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - + - - - - - - - - - - + + + + + + + + + + + - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - + - + - + - + + + + + + + + + + - + + + - + - - - - + + + + - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - + - + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + - - - + + + - - - - + + + + - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + - + - + - + - + + + + + - + - - - - - - - - - + + + + - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + - + - - - - - - - - - - - - - + - - - - - + - + + + + + - - - + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - + + + - + - - - - - - - + + + + + + + + + - - + + - + - + + + + + - + - + - - - - - - + - - - - - - - - - - - - - + + + + + + + - + + + + + - - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + + + - + - - + - + - + + + + + - + - + + + + + + + + + + + + + - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - + - + - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - - - - + - + - + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - + + + - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + - + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + + + + + + + + + + + + + - + - + - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - + + + + + - + - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + - + - + - - - - - + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + - + - - - - - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - + - + - + - + - + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - + + + + + + + + + - - - - - - - - + + + + + + - - - - - + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + - - - + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - + - + - - - - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - + + + - + - - - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + - + - - - - - - - - - - - - - - + + + - - - - - - - - - - - + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - + + + + + - + - + - + - + - + - + - - - - - + + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + - + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + - - - - - + - - - - - + - + - - - - - + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + - + - + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - + + + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - - - + + + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - - - - - + + + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - + - - - - - - - - - - - - + + + + + + + - + + + + + - + - + - - - + + + - + - + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + - + - - - - - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - + - + - + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - + - - - + + + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - + + + + + + + + + + + + + + - - - - - + + + - + - + - + + + + - - - - - + - + - - - - + + + + + + + + + + + + + + + + + - - - + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - - - - - - - - - - + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - + + + + + - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - + + + + + + + - + - + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + - + - + - - - - + + + + + - + + + + + + + - + - - - - - - - - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - - + + + + + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + - + + + + + + + - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - + + - - - - - - - - - + - + - + - - - - + + + + + + + + - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + - - + + + + + - + - + - + - - - - - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + - + - - - - - - - + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - + + + + + + + - - - - - + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + - + + + + + - + - + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - + + + + + + + - + - - + - + - - - - - - - - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + - + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + - + - - - - - - - - - - - + + + + + + + - + + + + + - + - - + + + + + + + + - + - - - - - - - - - - - - - + + + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + + + + - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - + + + + + + + + + + - - - - - - - - + + + + + - + - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - + + + + + - + - - - - - - - + + + + + + + + + - - - - - + + + + + - + - + - + - - - - - + + + + + + + + + - + - - + + - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - + + + + + - - - - + - - - - - - - - - + - + - - - - - - - - - - - - - - - - - + - - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - + - - - + + + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + + + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + - - + + + + + - + - - - - - - - - - - - - - + + + - - - - - - - - - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + - - - - - + + + + + - + - + - - - - - - - + + + + + + + + + - - - - + + + + - + - - - - + + + + - - - - - + + + + + - + - + - + - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + - + - + - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - + - - - - - + + + + + + + - - - - - + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + - + - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - - - + + + - + - - - - - + + + + + - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - + - + - + - + - + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - + - + - - - - - - - - - - - - - + + + - - - - - + + - - - - + + + + - - - - - - + + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + - - - - - + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + - + + + + - + - - - - - - - - - + - - - - - + + + + - - - + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + - + - - - - + + + + + - - + + + + + - + - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + - - - + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - + + + + + + + - - - + + + - + - - - - - - - - - - - - - + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + + + + + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + + + + - - + + - + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + - + - + - + + + + + + + - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + - - - + + - - - - - + - + - + - + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + - + - + - + - - - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - + - + - - - - + - + - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - - - + + + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + - - - - - - - - - - + + - - - - - - - - - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + - + - - - - - + + + + + + + + + + + + + + + + + - + - + - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - + + + + + - - - - - + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + - - - - - - - - - - + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - - - - + + + + + + - - - + + + + + - + - - - - - - - - - - - - - - - - - - + - + - + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + - + - + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + - + - + - - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + - + - + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + - - - - - - - - - + - - - + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - + - + - + + + + - + - + - + + + + + - - - - - - - - + + + + + + + + + + + + - - - + + + - - + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + - + - - - - - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + - - - - - + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + - + + + + + - + + + + + - + - + - - - - - + + + + + - - + + + + + - + - + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + - + - + - - + - + - - - + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + - + - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + - - - - - + + + + + + + + + + - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - + - + - + - - - - - + + + + + + + + + + + + + + + + + + + - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + - - - + - + - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - - + + + + + + + + + + - - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + - - - - - - + + + + - - + + + - - - - - - - - - - + - - - - - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + - - - - - + - - - - - - - - - + - - - + + + - + - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - - - - - + + + + - - - - - - - - - + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - + + - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - + + + + - - - - + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - + + + + + + + - + - + - - - - - + + + + + + + + + + + + + - - - + - - - - - - - - - - - + + + + + + + - - - - - - - - - + + + + + - - + + - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + + + + + + + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + - + - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - + + + + + - + - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - + + + - + - - + + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - - - + + + + + + - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + - + - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + + + + + + + + + + + + + - - + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - + + - - - - - - - + - + - + + + + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - - + + + + + - + - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + + - - - - - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + - + - + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + + + + + + - - - - - - - + - - - - - - + + + + + + - - - - - - - - - + + + + + - + - + - - - + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + - - - - - + - + - - - - - - - - - - - + + - + - - - - - - - - - + + + + + + + + + - - - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + - - - - + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + - - - - - + + + + + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - - - - - - + + + + + + + + - - - - - + + + + + - + - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + - + - - - + + + - + - - - - - + + + + + + + + + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + - + - + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - + + + + + + + - - + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + - - - - - + + + + + + + + + + + - + - - - - - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + - - - - + + + + + - - - - - - - + + + + + + + + + + + - + - + - + - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - + + - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + - + - + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - + + + - - - - - - - + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + - - - + + + + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - + + + + + + + - - - - - - + - - - - - - - + - + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - + + + + + + + + + + + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + - + - - - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + - - - + + + - + - - - - - + - + - - - + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - + - - - - - + - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - + - - - - - - - - - - - - - + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - + + - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + - - - + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + - + + + + + + + - - - + + + + + + + + + + + + + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + - - + - + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - + - - - - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + - + - - - - - - - + + + + + + + - - - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - - - + - + - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + - - + + - + - + - - + + + + + + + + + + + + - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + - + + + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + - - + + + - - - + + + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + + + - - - - + - + - - - - - - - - - - - - - - + + + + + + - - + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - - - - - + + + + + + + - - - - - + + + - + - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + + + + + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + - + - + + + + + - + - - - - - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - + - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - + + + + + + - - - - - + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + + + + - + - - - - - - - - - - - + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - + + - - - - - - - - + - - + - - - - - - + - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - - - - - + - - - - - - - + + + + + + + - - + + + + + - + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + - + - - - + + + + + + + + + + + + + + + - + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - + + + + - - - - - - - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + - - - - - + + + - + - - - - - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - + - + - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - - - - - + + + - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + - - - - - - + + - - - - - + - + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - - - + + + - - - - + + + + - - - - - + - + - + - - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - - - - + + + - + - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + - - - - - - - + - + - - - - - - - - - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + - + - + - - - - - - - - - - + + + + + + - - - - - + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + + + + + - + - + - - - - - - - - - - - - - + + + + + + + - + - + - + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - + + + + + + - + - + - - - - - - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + - + - - - - - - + + + - - - + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - + + + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + - + - - - - + + + + - - - - - + - + - + - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + - + - - - - - - - - - + + + + + + + - - - - - - - - - + + + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + - - - - - - - - - - - - - + - - - - - - - + + + + + + + - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + - + - - - - + + + + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - + + + + + + + + + + - - - - + + + + - + - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - - - - + + + + + + + + + + + + + + + + - + - - - + + + - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + - - - - - + + + - + - - - - - - - + + + + + + + + + - - - + + + - + - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + + + + - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + - + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - + + + + + + + - - - - - + + + - + - + - + - + - + - - - - - - - + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + - + - + - - - - + + + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - + + + - - + + + + + + - + + + + + - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + - - - - - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + - + + + + + + + - + - + + + + + + + + + - - - - + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - + - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - + + + + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + - - - + + + - + - + - - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - + - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + - - - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + - - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + - - - - - - - + + + - - - - - - - - + - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + - + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + - + - + - + - - + + + - + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - + - - - - - - - - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + - + - - - - - + - - - - - - - - - + + + + + + + - - - - - + + + + + - + - - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - - + + + + - - - - - - + - - - - - - - - - - - - + + + + + + + - - - - + - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - - - - + + + + - + + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + + + + + + + + + + - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + - + - - - - - - - - - + - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + - + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + - + - - - + + + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + - + - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + - + - + - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - + + + + - - - - - - - - - - - - - - - + + + + + - + - + - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - + + + - - - + + + - + - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + - + - - - - - + - - - - - + - - - - - + - - - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + - + - + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - + + + + - - - - - + + + + + + + + + + + - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - + + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + - + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - + - - - - - - - - - + + + + + + + - - - - - - - + + + - + - - - - - - - + + + + + - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - - - - - + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + - + - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + - + - + - - - - - + - - - + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + - + - - - + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + - + - + - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + - - - - - - - + + + + - - - - - + + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + + + + + + + - - - - - - - - + + + + + + + + + + + - - - - - - - + - - - - - + - + - - - - - - - + + + - + + + + + + + + - + + + - - - - - - - - - - - - - - + - - - + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - + - + - + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - - - - - - - - - - - + + + - + - - - + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + - + - + + + + + - - - - - - - - - + + + + + + + + + + + + + - - - + + + + + - + - - - - - - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + - + - + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - + + + + + + + @@ -68971,10511 +59503,14558 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + - - - + + + + + - - - - - + - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + - - - - - + - - - - - - - - - - - - - - - + + + + + + + - + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - - - - - - - + + + + + + + + + + + - + - - + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + - + - + - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - + - - - - - - - - + + + + + + + + + + + - - - - + - + - - - - - - - - + + + + + + + + - - - - - - - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + - + - + + + + + - + - - - + + + + + + + + + + - + + + + + + + + + + + + - - - - - - - - - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - + - + - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + + + + + + + + + + + - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - + - - - - - - - - - - - - - - - + + + + + + + - + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - + - + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + - + - + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + - + - - - - - - - + + + + + + + + - - - - - + + + + + + + + + + + + + + + - + - + + + + + - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + - - - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + - + - + - + - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + - - - - - + + + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + + + + + + + - + - + - + + + + + - - - + + + + + + + + + + - + + + + + + + + - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - + - - - - + + + + - - - + + + + + + + + + + + + - + - + - - - - + + + + + + + + + + + + - + - + - - - - - - + - + - + - + - + + + + + + + + + - - - + + + - + - + - - - - - - - - + - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + + + + + + + + + - + + + + - - - - - - - + + + + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + + + + + + + - + - + - - - - - - + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + - - - - + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - - - + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + - + - - - - + + + + - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + - + - + - + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - + + + + - + - + - + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + - + - - - - + - - - - - + + + + + + + + + + + + + + + - + - + - + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - + - - - - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - + + + + + - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - + - + - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - + + + + + + + - - + + + + + - + - - - + + + - + - + - + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + - + - + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - + - - - - - - - + + + - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - - - - - + + + - - - - - - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + - - - - - + + + + + - + - + - - - - - - - - - - - - - - - + + + + + - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + - + - + - + + + + + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - + - - - + + + + + + + - + - - - - + + + + - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + - - - - + + + + - + - - - - - - - + + + + - - - - - + + + + + - + - + - - - - - + - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + - - - + + - + - - - - - - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - + + + - + - + - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + - - - - - - - - + + + + + - + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + + + + - + - - - - - + - - - - - + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + - + - - - - - + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + - + - + + + + + + + + + + + + + + + - + - - - - - - + + + + + - - - - + + + - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + - + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + - - - - - + - + - + - + - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + - + - - - - - - + + + + + - - - - - - - - - - - + - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - - - - - - - + - - - - + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + - + - + - - - - - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - + - + - - - - - - - - - - - - - - - - + + + + + - - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + - + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - + - + - + + + + + - + + + + + - - - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - + + + + + - + - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + - + + + + + - + - + - - - + + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - + - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + - + - - - - - - - + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + - - - - - + + + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + - - + + - + - - - - - - - - - - - - + + + + - - - - + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + - + - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + - + - + - - - - - - - + + + + + + + + + + + + - - - - - + + + + + - + - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - + - + - + - + - + - + - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - + - - + + + + + - + - - - - - + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - + + - + + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - + - - - + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + - + + + + + + + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - + + + + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - + + + + - + - + - + - + - + + + + + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + + + - - - - - - - + + + + + + + + + - - + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - - - - + + + + + - + - - - - - - - - - + + + + + + + + + - - - - - + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auto-gen/dr/instance-rule-att2.xml b/auto-gen/dr/instance-rule-att2.xml new file mode 100644 index 0000000..f78ba4a --- /dev/null +++ b/auto-gen/dr/instance-rule-att2.xml @@ -0,0 +1,71025 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auto-gen/dr/instance-ruleml1.xml b/auto-gen/dr/instance-ruleml1.xml deleted file mode 100644 index 11833a8..0000000 --- a/auto-gen/dr/instance-ruleml1.xml +++ /dev/null @@ -1,62282 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/auto-gen/dr/instance-xsd-assert-att1.xml b/auto-gen/dr/instance-xsd-assert-att1.xml new file mode 100644 index 0000000..91d7c08 --- /dev/null +++ b/auto-gen/dr/instance-xsd-assert-att1.xml @@ -0,0 +1,26690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auto-gen/dr/instance-xsd-assert1.xml b/auto-gen/dr/instance-xsd-assert1.xml new file mode 100644 index 0000000..09b0e32 --- /dev/null +++ b/auto-gen/dr/instance-xsd-assert1.xml @@ -0,0 +1,24602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/auto-gen/dr/simp-dr-autogen-normal.rnc.xsd b/auto-gen/dr/simp-dr-autogen-normal.rnc.xsd index 280306c..d323aad 100644 --- a/auto-gen/dr/simp-dr-autogen-normal.rnc.xsd +++ b/auto-gen/dr/simp-dr-autogen-normal.rnc.xsd @@ -10,8 +10,10 @@ + + @@ -58,8 +60,27 @@ + + + + + + + + + + + + + + + + + + + @@ -94,6 +115,24 @@ + + + + + + + + + + + + + + + + + + @@ -106,8 +145,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -154,8 +220,18 @@ + + + + + + + + + + @@ -202,10 +278,23 @@ - + + + + + + + + + + + + + + @@ -245,6 +334,7 @@ + @@ -292,6 +382,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302,9 +516,36 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -353,9 +594,11 @@ + - + + @@ -406,9 +649,11 @@ + - + + @@ -447,7 +692,7 @@ - + @@ -457,8 +702,40 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -493,12 +770,29 @@ - - + - + + + + + + + + + + + + + + + + + + + @@ -535,26 +829,45 @@ - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -591,25 +904,21 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -644,18 +953,9 @@ - - - - - - - - - - + @@ -665,21 +965,45 @@ - - - - - + + - + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -697,6 +1021,22 @@ + + + + + + + + + + + + + + + + @@ -731,20 +1071,6 @@ - - - - - - - - - - - - - - @@ -763,6 +1089,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -799,36 +1150,74 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + + + - - - - + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -863,32 +1252,10 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -906,6 +1273,7 @@ + @@ -942,19 +1310,8 @@ - - - - - - - - - - - - - + + @@ -973,6 +1330,7 @@ + @@ -1009,20 +1367,8 @@ - - - - - - - - - - - - - - + + @@ -1040,6 +1386,7 @@ + @@ -1074,11 +1421,20 @@ + + + + + + + + + - + - + @@ -1088,26 +1444,13 @@ - + + + + + - - - - - - - - - - - - - - - - - - + @@ -1146,7 +1489,7 @@ - + @@ -1156,8 +1499,113 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1177,6 +1625,7 @@ + @@ -1213,7 +1662,7 @@ - + @@ -1223,10 +1672,19 @@ - - + + + + + + + + + + + @@ -1244,6 +1702,7 @@ + @@ -1278,9 +1737,19 @@ + + + + + + + + + + - + @@ -1290,7 +1759,11 @@ - + + + + + @@ -1310,6 +1783,7 @@ + @@ -1346,7 +1820,7 @@ - + @@ -1356,7 +1830,11 @@ - + + + + + @@ -1376,6 +1854,7 @@ + @@ -1412,7 +1891,7 @@ - + @@ -1422,6 +1901,7 @@ + @@ -1443,6 +1923,7 @@ + @@ -1479,7 +1960,79 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1489,8 +2042,9 @@ + - + @@ -1510,6 +2064,7 @@ + @@ -1546,7 +2101,7 @@ - + @@ -1556,8 +2111,9 @@ + - + @@ -1577,6 +2133,7 @@ + @@ -1613,7 +2170,7 @@ - + @@ -1623,8 +2180,8 @@ - - + + @@ -1644,6 +2201,7 @@ + @@ -1680,7 +2238,7 @@ - + @@ -1690,8 +2248,8 @@ - - + + @@ -1711,6 +2269,7 @@ + @@ -1747,7 +2306,7 @@ - + @@ -1757,8 +2316,9 @@ + - + @@ -1778,6 +2338,7 @@ + @@ -1814,7 +2375,7 @@ - + @@ -1824,6 +2385,7 @@ + @@ -1845,6 +2407,7 @@ + @@ -1881,7 +2444,7 @@ - + @@ -1891,6 +2454,7 @@ + @@ -1912,6 +2476,7 @@ + @@ -1948,22 +2513,985 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + @@ -2002,20 +3530,13 @@ - + - + - - - - - - - - - - + + + @@ -2054,10 +3575,10 @@ - + - + @@ -2095,16 +3616,284 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2141,15 +3930,18 @@ - + - + + + - - + + + @@ -2187,11 +3979,19 @@ - + - + + + + + + + - + + + @@ -2228,22 +4028,22 @@ - + - + - + + + - - - - - - + + + + @@ -2282,65 +4082,53 @@ - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + + @@ -2378,19 +4166,23 @@ - + - + + + + - - + + - + + @@ -2429,25 +4221,21 @@ - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -2484,69 +4272,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + + + @@ -2584,15 +4314,23 @@ - + + + + + + + + + @@ -2631,11 +4369,24 @@ - + - - - + + + + + + + + + + + + + + + + @@ -2673,16 +4424,11 @@ - + - - - - - - - + + @@ -2722,21 +4468,17 @@ - + + - - - - - @@ -2773,14 +4515,247 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + @@ -2817,16 +4792,152 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2863,16 +4974,22 @@ - + - + - - - - - - + + + + + + + + + + + + @@ -2911,25 +5028,22 @@ - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + @@ -2968,25 +5082,78 @@ - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3025,28 +5192,23 @@ - + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -3085,125 +5247,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + @@ -3213,9 +5259,11 @@ + - + + @@ -3254,9 +5302,9 @@ - + - + @@ -3266,9 +5314,29 @@ - - + + + + + + + + + + + + + + + + + + + + + + @@ -3307,73 +5375,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3386,6 +5387,7 @@ + @@ -3407,6 +5409,7 @@ + @@ -3445,18 +5448,20 @@ - + + + diff --git a/relaxng/dr/content-models/simp-dr-nafneghornlogeq_normal.rnc.rnc b/relaxng/dr/content-models/simp-dr-nafneghornlogeq_normal.rnc.rnc index afb7cb6..18e2759 100644 --- a/relaxng/dr/content-models/simp-dr-nafneghornlogeq_normal.rnc.rnc +++ b/relaxng/dr/content-models/simp-dr-nafneghornlogeq_normal.rnc.rnc @@ -1,5 +1,5 @@ -default namespace = "http://ruleml.org/spec" -namespace ns1 = "http://www.w3.org/2001/XMLSchema-instance" +default namespace ruleml = "http://ruleml.org/spec" +namespace xsi = "http://www.w3.org/2001/XMLSchema-instance" start = RuleML @@ -81,17 +81,14 @@ start = | quantification | else | formula_8 - | content | arg_2 - | content_2 | arg_3 - | content_3 - | content_4 | arg_4 + | content RuleML = element RuleML { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -126,9 +123,8 @@ Assert = & attribute mapDirection { "bidirectional" | "forward" | "backward" } - & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -146,7 +142,12 @@ Assert = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), + }? + & attribute mapClosure { "universal" | "existential" }? + & attribute safety { + "non-interrupting" | "interrupting" | "transactional" + }? + & attribute size { xsd:int }?), meta*, scope*, guard*, @@ -165,7 +166,7 @@ Retract = } & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -198,7 +199,7 @@ Query = element Query { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -231,7 +232,7 @@ Atom = element Atom { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -269,7 +270,7 @@ Rel = element Rel { (attribute iri { xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -297,7 +298,7 @@ And = element And { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -324,13 +325,13 @@ And = qualification*, quantification*, oid?, - formula_3* + formula_9* } Or = element Or { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -357,7 +358,7 @@ Or = qualification*, quantification*, oid?, - formula_4* + formula_10* } Implies = element Implies { @@ -365,7 +366,7 @@ Implies = & attribute material { "yes" | "no" } & attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -398,7 +399,7 @@ Implies = Forall = element Forall { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -431,7 +432,7 @@ Forall = Exists = element Exists { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -474,7 +475,7 @@ Expr = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -513,7 +514,7 @@ Fun = & attribute val { "1" | "0.." } & attribute iri { xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -542,7 +543,7 @@ Rulebase = } & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -574,7 +575,7 @@ Rulebase = Entails = element Entails { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -607,7 +608,7 @@ Entails = Neg = element Neg { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -626,7 +627,16 @@ Neg = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & attribute iri { xsd:anyURI }?), + & (attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?)), meta*, scope*, guard*, @@ -640,7 +650,7 @@ Neg = Naf = element Naf { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -659,7 +669,16 @@ Naf = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & attribute iri { xsd:anyURI }?), + & (attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?)), meta*, scope*, guard*, @@ -674,7 +693,7 @@ Equivalent = element Equivalent { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -708,7 +727,7 @@ Equal = element Equal { (attribute oriented { "no" | "yes" } & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -742,7 +761,7 @@ Equal = Data = element Data { attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -776,7 +795,7 @@ Skolem = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -800,7 +819,7 @@ Skolem = Reify = element Reify { attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -898,13 +917,10 @@ Reify = | quantification | else | formula_8 - | content | arg_2 - | content_2 | arg_3 - | content_3 - | content_4 - | arg_4)* + | arg_4 + | content)* } Ind = element Ind { @@ -919,7 +935,7 @@ Ind = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -952,7 +968,7 @@ Var = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -977,7 +993,7 @@ Var = Plex = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1019,22 +1035,10 @@ Rule = qualification*, quantification*, oid?, - ((if & then & else?) - | ((Atom - | Equal - | Time - | Spatial - | Interval - | And_2 - | Or_2 - | Neg - | Negation - | Naf), - (Atom | Equal | Time | Spatial | Interval | Neg | Negation), - (Atom | Equal | Time | Spatial | Interval | Neg | Negation)?))?, + (if, then, else?)?, (attribute direction { "bidirectional" | "forward" | "backward" } & attribute material { "yes" | "no" } - & attribute style { "active" | "messaging" | "reasoning" }? + & attribute style { "active" | "messaging" | "reasoning" } & attribute closure { "universal" | "existential" }? & attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1046,7 +1050,7 @@ Rule = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1076,7 +1080,7 @@ Negation = qualification*, quantification*, oid?, - (formula_8 | Atom | Equal | Time | Spatial | Interval), + formula_8, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1088,7 +1092,7 @@ Negation = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1119,18 +1123,7 @@ Quantifier = quantification*, oid?, declare+, - (formula_9 - | Atom - | Equal - | Time - | Spatial - | Interval - | Neg - | Negation - | Implies - | Equivalent - | Forall - | Quantifier)?, + formula_11?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1142,7 +1135,7 @@ Quantifier = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1185,7 +1178,7 @@ Profile = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1219,30 +1212,7 @@ Time = qualification*, quantification*, oid?, - ((slot*, - resl?, - ((((arg_2 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | After - | Before - | Every - | Any - | Timer - | Operator)+, - repo?) - | repo), - slot*, - resl?)?) - | content_2*), + ((arg_2*, repo?, slot*, resl?) | content_2*), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1254,7 +1224,7 @@ Time = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1284,30 +1254,7 @@ Spatial = qualification*, quantification*, oid?, - ((slot*, - resl?, - ((((arg_3 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | After - | Before - | Every - | Any - | Timer - | Operator)+, - repo?) - | repo), - slot*, - resl?)?) - | content_3*), + ((arg_3*, repo?, slot*, resl?) | content_3*), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1319,7 +1266,7 @@ Spatial = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1349,48 +1296,8 @@ Interval = qualification*, quantification*, oid?, - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2 - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2 - | content_4)?, + (arg_4 | content_4), + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1402,7 +1309,7 @@ Interval = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1432,27 +1339,7 @@ Operator = qualification*, quantification*, oid?, - (arg_4+ - | (Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2)+ - | content_4+)?, + (arg_4 | content_4)*, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1464,7 +1351,7 @@ Operator = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1494,30 +1381,8 @@ After = qualification*, quantification*, oid?, - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4)?, + (arg_4 | content_4), + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1529,7 +1394,7 @@ After = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1559,30 +1424,8 @@ Before = qualification*, quantification*, oid?, - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4)?, + (arg_4 | content_4), + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1594,7 +1437,7 @@ Before = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1624,7 +1467,7 @@ Every = qualification*, quantification*, oid?, - (arg | content_4)?, + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1636,7 +1479,7 @@ Every = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1666,27 +1509,7 @@ Any = qualification*, quantification*, oid?, - (arg_4+ - | (Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2)+ - | content_4+)?, + (arg_4 | content_4)*, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1698,7 +1521,7 @@ Any = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1728,30 +1551,8 @@ Timer = qualification*, quantification*, oid?, - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4)?, + (arg_4 | content_4), + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1763,7 +1564,7 @@ Timer = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1793,8 +1594,8 @@ During = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1806,7 +1607,7 @@ During = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1836,8 +1637,8 @@ Overlaps = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1849,7 +1650,7 @@ Overlaps = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1879,8 +1680,8 @@ Starts = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1892,7 +1693,7 @@ Starts = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1922,8 +1723,8 @@ Precedes = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1935,7 +1736,7 @@ Precedes = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1965,8 +1766,8 @@ Succeeds = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1978,7 +1779,7 @@ Succeeds = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2008,8 +1809,8 @@ Meets = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2021,7 +1822,7 @@ Meets = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2051,8 +1852,8 @@ Finishes = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2064,7 +1865,7 @@ Finishes = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2086,7 +1887,7 @@ Finishes = } formula = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2117,11 +1918,12 @@ formula = | Forall | Quantifier | Entails - | Rulebase) + | Rulebase + | Rule) } formula_2 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2157,7 +1959,7 @@ formula_2 = } op = element op { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2180,7 +1982,7 @@ op = } formula_3 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2212,7 +2014,7 @@ formula_3 = } formula_4 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2244,7 +2046,7 @@ formula_4 = } then = element then { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2267,7 +2069,7 @@ then = } if = element if { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2299,7 +2101,7 @@ if = } declare = element declare { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2322,7 +2124,7 @@ declare = } formula_5 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2351,11 +2153,12 @@ formula_5 = | Implies | Equivalent | Forall - | Quantifier) + | Quantifier + | Rule) } formula_6 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2379,8 +2182,8 @@ formula_6 = | Time | Spatial | Interval - | And_2 - | Or_2 + | And + | Or | Neg | Negation | Exists @@ -2388,7 +2191,7 @@ formula_6 = } op_2 = element op { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2411,7 +2214,7 @@ op_2 = } formula_7 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2445,7 +2248,7 @@ formula_7 = } then_2 = element then { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2468,7 +2271,7 @@ then_2 = } if_2 = element if { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2491,7 +2294,7 @@ if_2 = } degree = element degree { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2514,7 +2317,7 @@ degree = } strong = element strong { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2533,11 +2336,11 @@ strong = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & (Atom | Equal | Time | Spatial | Interval) + & (Atom | Equal | Time | Spatial | Interval | Naf) } weak = element weak { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2556,12 +2359,12 @@ weak = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & (Atom | Equal | Time | Spatial | Interval | Neg | Negation) + & (Atom | Equal | Time | Spatial | Interval | Neg | Negation | Naf) } meta = element meta { attribute index { xsd:positiveInteger }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2592,11 +2395,12 @@ meta = | Forall | Quantifier | Entails - | Rulebase) + | Rulebase + | Rule) } torso = element torso { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2619,7 +2423,7 @@ torso = } oid = element oid { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2655,7 +2459,7 @@ slot = & attribute weight { xsd:decimal { minInclusive = "0.0" maxInclusive = "1.0" } }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2688,7 +2492,7 @@ slot = } left = element left { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2720,7 +2524,7 @@ left = } right = element right { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2753,7 +2557,7 @@ right = arg = element arg { (attribute index { xsd:positiveInteger } - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2785,7 +2589,7 @@ arg = } resl = element resl { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2808,7 +2612,7 @@ resl = } repo = element repo { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2846,7 +2650,7 @@ scope = | Entails | Rulebase)?, attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2879,7 +2683,7 @@ guard = | Negation | Naf), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2903,7 +2707,7 @@ evaluation = element evaluation { Profile, attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2940,7 +2744,7 @@ signature = | Entails | Rulebase), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2974,9 +2778,10 @@ qualification = | Forall | Quantifier | Entails - | Rulebase), + | Rulebase + | Rule), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3000,7 +2805,7 @@ quantification = element quantification { (Forall_2 | Exists_2 | Quantifier), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3022,7 +2827,7 @@ quantification = } else = element else { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3045,31 +2850,8 @@ else = } formula_8 = element formula { - (Atom | Equal | Time | Spatial | Interval), - (attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -content = - element content { - _2*, - (attribute ns1:schemaLocation { text }? + (Atom | Equal | Time | Spatial | Interval | Naf), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3108,30 +2890,7 @@ arg_2 = | Timer | Operator), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -content_2 = - element content { - _2*, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3170,7 +2929,7 @@ arg_3 = | Timer | Operator), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3190,10 +2949,29 @@ arg_3 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -content_3 = - element content { - _2*, - (attribute ns1:schemaLocation { text }? +arg_4 = + element arg { + (Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + attribute index { xsd:positiveInteger }?, + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3213,52 +2991,93 @@ content_3 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -content_4 = +content = element content { - (attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - (text & _1*) - } -arg_4 = - element arg { - (Skolem + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data + | Skolem | Reify | Ind - | Data - | Time - | Spatial - | Interval_2 | Var - | Expr | Plex + | Rule + | Negation + | Quantifier + | Profile + | Time + | Spatial + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer | During | Overlaps | Starts | Precedes | Succeeds | Meets - | Equal_2 | Finishes - | Operator_2), - attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3281,7 +3100,7 @@ arg_4 = act = element act { (attribute index { xsd:positiveInteger } - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3302,15 +3121,90 @@ act = }?), (Assert | Retract | Query)* } -_1 = - element * { - attribute * { text }*, +formula_9 = + element formula { + attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & (Atom + | Equal + | Time + | Spatial + | Interval + | And + | Or + | Neg + | Negation + | Naf) + } +formula_10 = + element formula { + attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & (Atom + | Equal + | Time + | Spatial + | Interval + | And + | Or + | Neg + | Negation + | Naf) + } +_1 = + element * { + attribute * { text }*, (text & _1*) } -And_2 = - element And { - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? +formula_11 = + element formula { + (Atom + | Equal + | Time + | Spatial + | Interval + | Neg + | Negation + | Implies + | Equivalent + | Forall + | Quantifier + | Rule), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3328,21 +3222,95 @@ And_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - formula_3* + }?) } -Or_2 = - element Or { - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? +content_2 = + element content { + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile + | Time + | Spatial + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3360,31 +3328,95 @@ Or_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - formula_4* + }?) } -formula_9 = - element formula { - (Atom +content_3 = + element content { + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile | Time | Spatial | Interval - | Neg - | Negation - | Implies - | Equivalent - | Forall - | Quantifier), - (attribute ns1:schemaLocation { text }? + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3404,52 +3436,116 @@ formula_9 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -Interval_2 = - element Interval { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 +content_4 = + element content { + (attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?), + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data | Skolem | Reify | Ind - | Data - | Time - | Spatial - | Interval_2 | Var - | Expr | Plex - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data + | Rule + | Negation + | Quantifier + | Profile | Time | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4)?, - attribute iri { xsd:anyURI }?, - attribute type { - xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } - | xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI - }?, + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content) + } +And_2 = + element And { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3467,10 +3563,7 @@ Interval_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -Equal_2 = - element Equal { + }?), meta*, scope*, guard*, @@ -3479,20 +3572,12 @@ Equal_2 = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), - attribute iri { xsd:anyURI }?, - attribute type { - xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } - | xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI - }?, + formula_3* + } +Or_2 = + element Or { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3510,10 +3595,19 @@ Equal_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) + }?), + meta*, + scope*, + guard*, + evaluation*, + signature*, + qualification*, + quantification*, + oid?, + formula_4* } -Operator_2 = - element Operator { +Interval_2 = + element Interval { meta*, scope*, guard*, @@ -3522,8 +3616,8 @@ Operator_2 = qualification*, quantification*, oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (arg_4 | content_4), + (arg_4 | content_4)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -3535,7 +3629,7 @@ Operator_2 = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3558,7 +3652,7 @@ Operator_2 = Plex_2 = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3591,7 +3685,7 @@ Plex_2 = Plex_3 = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3624,7 +3718,7 @@ Plex_3 = Forall_2 = element Forall { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3652,12 +3746,12 @@ Forall_2 = quantification*, oid?, declare+, - formula_5? + formula_11? } Exists_2 = element Exists { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3685,6 +3779,103 @@ Exists_2 = quantification*, oid?, declare+, - formula_6? + formula_11? + } +Equal_2 = + element Equal { + meta*, + scope*, + guard*, + evaluation*, + signature*, + qualification*, + quantification*, + oid?, + (arg_4 | content_4), + (arg_4 | content_4), + attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?, + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?) + } +Operator_2 = + element Operator { + meta*, + scope*, + guard*, + evaluation*, + signature*, + qualification*, + quantification*, + oid?, + (arg_4 | content_4), + (arg_4 | content_4), + attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?, + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?) + } +_2 = + element * - ruleml:* { + (_3 + | attribute * { text } + | text)+ + } +_3 = + element * { + (_3 + | attribute * { text } + | text)+ } -_2 = element * { text } diff --git a/relaxng/dr/content-models/simp-dr-nafneghornlogeq_relaxed.rnc.rnc b/relaxng/dr/content-models/simp-dr-nafneghornlogeq_relaxed.rnc.rnc index 6860663..23d6eea 100644 --- a/relaxng/dr/content-models/simp-dr-nafneghornlogeq_relaxed.rnc.rnc +++ b/relaxng/dr/content-models/simp-dr-nafneghornlogeq_relaxed.rnc.rnc @@ -1,5 +1,5 @@ -default namespace = "http://ruleml.org/spec" -namespace ns1 = "http://www.w3.org/2001/XMLSchema-instance" +default namespace ruleml = "http://ruleml.org/spec" +namespace xsi = "http://www.w3.org/2001/XMLSchema-instance" start = RuleML @@ -81,17 +81,14 @@ start = | quantification | else | formula_8 - | content | arg_2 - | content_2 | arg_3 - | content_3 - | content_4 | arg_4 + | content RuleML = element RuleML { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -110,14 +107,14 @@ RuleML = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (act | (Assert | Retract | Query)*)+ } Assert = @@ -126,9 +123,8 @@ Assert = & attribute mapDirection { "bidirectional" | "forward" | "backward" }? - & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -146,15 +142,20 @@ Assert = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + }? + & attribute mapClosure { "universal" | "existential" }? + & attribute safety { + "non-interrupting" | "interrupting" | "transactional" + }? + & attribute size { xsd:int }?), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (formula | Atom | Equal @@ -168,7 +169,8 @@ Assert = | Forall | Quantifier | Entails - | Rulebase)* + | Rulebase + | Rule)* } Retract = element Retract { @@ -178,7 +180,7 @@ Retract = }? & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -197,14 +199,14 @@ Retract = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (formula | Atom | Equal @@ -218,13 +220,14 @@ Retract = | Forall | Quantifier | Entails - | Rulebase)* + | Rulebase + | Rule)* } Query = element Query { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -243,14 +246,14 @@ Query = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (formula_2 | Atom | Equal @@ -271,7 +274,7 @@ Atom = element Atom { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -290,14 +293,14 @@ Atom = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - ((meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?) + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid? & degree?), ((op | Rel) & (Skolem @@ -319,7 +322,7 @@ Rel = element Rel { (attribute iri { xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -347,7 +350,7 @@ And = element And { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -366,22 +369,22 @@ And = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (formula_3 + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (formula_9 | Atom | Equal | Time | Spatial | Interval - | And_2 - | Or_2 + | And + | Or | Neg | Negation | Naf)* @@ -390,7 +393,7 @@ Or = element Or { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -409,22 +412,22 @@ Or = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (formula_4 + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (formula_10 | Atom | Equal | Time | Spatial | Interval - | And_2 - | Or_2 + | And + | Or | Neg | Negation | Naf)* @@ -435,7 +438,7 @@ Implies = & attribute material { "yes" | "no" }? & attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -454,14 +457,14 @@ Implies = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), ((if & then) | ((Atom | Equal | Time | Spatial | Interval | Neg | Negation), if) | (then, @@ -485,12 +488,25 @@ Implies = | Neg | Negation | Naf), + (Atom | Equal | Time | Spatial | Interval | Neg | Negation)) + | ((Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf), + then) + | (if, (Atom | Equal | Time | Spatial | Interval | Neg | Negation))) } Forall = element Forall { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -509,14 +525,14 @@ Forall = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (declare | Var)+, (formula_5 | Atom @@ -529,12 +545,13 @@ Forall = | Implies | Equivalent | Forall - | Quantifier) + | Quantifier + | Rule) } Exists = element Exists { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -553,14 +570,14 @@ Exists = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (declare | Var)+, (formula_6 | Atom @@ -568,8 +585,8 @@ Exists = | Time | Spatial | Interval - | And_2 - | Or_2 + | And + | Or | Neg | Negation | Exists @@ -588,7 +605,7 @@ Expr = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -607,14 +624,14 @@ Expr = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), ((op_2 | Fun) & (Skolem | Reify @@ -637,7 +654,7 @@ Fun = & attribute val { "1" | "0.." }? & attribute iri { xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -666,7 +683,7 @@ Rulebase = }? & attribute mapClosure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -685,14 +702,14 @@ Rulebase = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (Atom | Equal | Time @@ -710,7 +727,7 @@ Rulebase = Entails = element Entails { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -729,23 +746,25 @@ Entails = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), ((if_2 & then_2) | (Rulebase, if_2) | (then_2, Rulebase) - | (Rulebase, Rulebase)) + | (Rulebase, Rulebase) + | (Rulebase, then_2) + | (if_2, Rulebase)) } Neg = element Neg { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -764,21 +783,30 @@ Neg = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & attribute iri { xsd:anyURI }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (Atom | Equal | Time | Spatial | Interval | strong) + & (attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?)), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (Atom | Equal | Time | Spatial | Interval | Naf | strong) } Naf = element Naf { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -797,22 +825,39 @@ Naf = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & attribute iri { xsd:anyURI }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (Atom | Equal | Time | Spatial | Interval | Neg | Negation | weak) + & (attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?)), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (Atom + | Equal + | Time + | Spatial + | Interval + | Neg + | Negation + | Naf + | weak) } Equivalent = element Equivalent { (attribute closure { "universal" | "existential" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -831,14 +876,14 @@ Equivalent = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (Atom | Equal | Time | Spatial | Interval | Neg | Negation | torso), (Atom | Equal | Time | Spatial | Interval | Neg | Negation | torso) } @@ -846,7 +891,7 @@ Equal = element Equal { (attribute oriented { "no" | "yes" }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -865,14 +910,14 @@ Equal = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - ((meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?) + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid? & degree?), (Skolem | Reify @@ -900,7 +945,7 @@ Equal = Data = element Data { attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -934,7 +979,7 @@ Skolem = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -958,7 +1003,7 @@ Skolem = Reify = element Reify { attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1056,13 +1101,10 @@ Reify = | quantification | else | formula_8 - | content | arg_2 - | content_2 | arg_3 - | content_3 - | content_4 - | arg_4)* + | arg_4 + | content)* } Ind = element Ind { @@ -1077,7 +1119,7 @@ Ind = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1110,7 +1152,7 @@ Var = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1135,7 +1177,7 @@ Var = Plex = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1154,14 +1196,14 @@ Plex = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), ((Skolem | Reify | Ind @@ -1179,30 +1221,74 @@ Plex = } Rule = element Rule { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - ((if & then & else?) - | ((Atom - | Equal - | Time - | Spatial - | Interval - | And_2 - | Or_2 - | Neg - | Negation - | Naf), - (Atom | Equal | Time | Spatial | Interval | Neg | Negation), - (Atom | Equal | Time | Spatial | Interval | Neg | Negation)?))?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (((Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf), + (Atom | Equal | Time | Spatial | Interval | Neg | Negation), + (Atom | Equal | Time | Spatial | Interval | Neg | Negation)) + | (((if & then) + | ((Atom | Equal | Time | Spatial | Interval | Neg | Negation), + if) + | (then, + (Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf)) + | ((Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf), + (Atom | Equal | Time | Spatial | Interval | Neg | Negation)) + | ((Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf), + then) + | (if, + (Atom + | Equal + | Time + | Spatial + | Interval + | Neg + | Negation))) + & else?))?, (attribute direction { "bidirectional" | "forward" | "backward" }? & attribute material { "yes" | "no" }? - & attribute style { "active" | "messaging" | "reasoning" }? + & attribute style { "active" | "messaging" | "reasoning" } & attribute closure { "universal" | "existential" }? & attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1214,7 +1300,7 @@ Rule = | xsd:anyURI }? & attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1236,15 +1322,15 @@ Rule = } Negation = element Negation { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (formula_8 | Atom | Equal | Time | Spatial | Interval), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (formula_8 | Atom | Equal | Time | Spatial | Interval | Naf), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1256,7 +1342,7 @@ Negation = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1278,16 +1364,16 @@ Negation = } Quantifier = element Quantifier { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (declare | Var)+, - (formula_9 + (formula_11 | Atom | Equal | Time @@ -1298,7 +1384,8 @@ Quantifier = | Implies | Equivalent | Forall - | Quantifier)?, + | Quantifier + | Rule)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1310,7 +1397,7 @@ Quantifier = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1332,14 +1419,14 @@ Quantifier = } Profile = element Profile { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (formula | Atom | Equal @@ -1354,6 +1441,7 @@ Profile = | Quantifier | Entails | Rulebase + | Rule | content)*, attribute iri { xsd:anyURI }?, attribute direction { "bidirectional" | "forward" | "backward" }?, @@ -1367,7 +1455,7 @@ Profile = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1393,38 +1481,55 @@ Profile = } Time = element Time { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - ((slot*, - resl?, - ((((arg_2 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | After - | Before - | Every - | Any - | Timer - | Operator)+, - repo?) - | repo), - slot*, - resl?)?) - | content_2*), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (((arg_2 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | After + | Before + | Every + | Any + | Timer + | Operator)*, + repo?, + slot*, + resl?) + | content_2* + | ((arg_2 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | After + | Before + | Every + | Any + | Timer + | Operator)* + & repo? + & slot* + & resl?)), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1436,7 +1541,7 @@ Time = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1458,38 +1563,55 @@ Time = } Spatial = element Spatial { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - ((slot*, - resl?, - ((((arg_3 - | Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | After - | Before - | Every - | Any - | Timer - | Operator)+, - repo?) - | repo), - slot*, - resl?)?) - | content_3*), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (((arg_3 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | After + | Before + | Every + | Any + | Timer + | Operator)*, + repo?, + slot*, + resl?) + | content_3* + | ((arg_3 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | After + | Before + | Every + | Any + | Timer + | Operator)* + & repo? + & slot* + & resl?)), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1501,7 +1623,7 @@ Spatial = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1523,15 +1645,16 @@ Spatial = } Interval = element Interval { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1550,9 +1673,9 @@ Interval = | Meets | Equal_2 | Finishes - | Operator_2 - | content_4), + | Operator_2), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1571,8 +1694,7 @@ Interval = | Meets | Equal_2 | Finishes - | Operator_2 - | content_4)?, + | Operator_2)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1584,7 +1706,7 @@ Interval = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1606,35 +1728,35 @@ Interval = } Operator = element Operator { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4+ - | (Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2)+ - | content_4+)?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)*, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1646,7 +1768,7 @@ Operator = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1668,15 +1790,16 @@ Operator = } After = element After { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1687,8 +1810,17 @@ After = | Var | Expr | Plex - | content_4), + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1699,7 +1831,15 @@ After = | Var | Expr | Plex - | content_4)?, + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1711,7 +1851,7 @@ After = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1733,15 +1873,16 @@ After = } Before = element Before { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1752,8 +1893,17 @@ Before = | Var | Expr | Plex - | content_4), + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1764,7 +1914,15 @@ Before = | Var | Expr | Plex - | content_4)?, + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1776,7 +1934,7 @@ Before = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1798,15 +1956,17 @@ Before = } Every = element Every { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (Skolem + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem | Reify | Ind | Data @@ -1816,8 +1976,15 @@ Every = | Var | Expr | Plex - | arg - | content_4)?, + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1829,7 +1996,7 @@ Every = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1851,35 +2018,35 @@ Every = } Any = element Any { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4+ - | (Skolem - | Reify - | Ind - | Data - | Time - | Spatial - | Interval_2 - | Var - | Expr - | Plex - | During - | Overlaps - | Starts - | Precedes - | Succeeds - | Meets - | Equal_2 - | Finishes - | Operator_2)+ - | content_4+)?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)*, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1891,7 +2058,7 @@ Any = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1913,15 +2080,16 @@ Any = } Timer = element Timer { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1932,8 +2100,17 @@ Timer = | Var | Expr | Plex - | content_4), + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), (arg_4 + | content_4 | Skolem | Reify | Ind @@ -1944,7 +2121,15 @@ Timer = | Var | Expr | Plex - | content_4)?, + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)?, attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -1956,7 +2141,7 @@ Timer = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -1978,102 +2163,56 @@ Timer = } During = element During { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), - attribute iri { xsd:anyURI }?, - attribute type { - xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } - | xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI - }?, - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -Overlaps = - element Overlaps { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), - attribute iri { xsd:anyURI }?, - attribute type { - xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } - | xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI - }?, - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -Starts = - element Starts { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2085,7 +2224,7 @@ Starts = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2105,18 +2244,58 @@ Starts = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -Precedes = - element Precedes { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), +Overlaps = + element Overlaps { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2128,7 +2307,7 @@ Precedes = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2148,18 +2327,58 @@ Precedes = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -Succeeds = - element Succeeds { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), +Starts = + element Starts { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2171,7 +2390,7 @@ Succeeds = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2191,18 +2410,58 @@ Succeeds = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -Meets = - element Meets { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), +Precedes = + element Precedes { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2214,7 +2473,7 @@ Meets = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2234,18 +2493,58 @@ Meets = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -Finishes = - element Finishes { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), +Succeeds = + element Succeeds { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -2257,7 +2556,7 @@ Finishes = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2277,18 +2576,184 @@ Finishes = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -formula = - element formula { - attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } +Meets = + element Meets { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?, + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?) + } +Finishes = + element Finishes { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?, + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?) + } +formula = + element formula { + attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? & attribute keyref { xsd:string { @@ -2310,11 +2775,12 @@ formula = | Forall | Quantifier | Entails - | Rulebase) + | Rulebase + | Rule) } formula_2 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2350,7 +2816,7 @@ formula_2 = } op = element op { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2373,7 +2839,7 @@ op = } formula_3 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2405,7 +2871,7 @@ formula_3 = } formula_4 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2437,7 +2903,7 @@ formula_4 = } then = element then { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2460,7 +2926,7 @@ then = } if = element if { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2492,7 +2958,7 @@ if = } declare = element declare { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2515,7 +2981,7 @@ declare = } formula_5 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2544,11 +3010,12 @@ formula_5 = | Implies | Equivalent | Forall - | Quantifier) + | Quantifier + | Rule) } formula_6 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2572,8 +3039,8 @@ formula_6 = | Time | Spatial | Interval - | And_2 - | Or_2 + | And + | Or | Neg | Negation | Exists @@ -2581,7 +3048,7 @@ formula_6 = } op_2 = element op { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2604,7 +3071,7 @@ op_2 = } formula_7 = element formula { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2638,7 +3105,7 @@ formula_7 = } then_2 = element then { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2661,7 +3128,7 @@ then_2 = } if_2 = element if { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2684,7 +3151,7 @@ if_2 = } degree = element degree { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2707,7 +3174,7 @@ degree = } strong = element strong { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2726,11 +3193,11 @@ strong = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & (Atom | Equal | Time | Spatial | Interval) + & (Atom | Equal | Time | Spatial | Interval | Naf) } weak = element weak { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2749,12 +3216,12 @@ weak = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }? - & (Atom | Equal | Time | Spatial | Interval | Neg | Negation) + & (Atom | Equal | Time | Spatial | Interval | Neg | Negation | Naf) } meta = element meta { attribute index { xsd:positiveInteger }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2785,11 +3252,12 @@ meta = | Forall | Quantifier | Entails - | Rulebase) + | Rulebase + | Rule) } torso = element torso { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2812,7 +3280,7 @@ torso = } oid = element oid { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2848,7 +3316,7 @@ slot = & attribute weight { xsd:decimal { minInclusive = "0.0" maxInclusive = "1.0" } }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2881,7 +3349,7 @@ slot = } left = element left { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2913,7 +3381,7 @@ left = } right = element right { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2945,8 +3413,8 @@ right = } arg = element arg { - (attribute index { xsd:positiveInteger } - & attribute ns1:schemaLocation { text }? + (attribute index { xsd:positiveInteger }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -2978,7 +3446,7 @@ arg = } resl = element resl { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3001,7 +3469,7 @@ resl = } repo = element repo { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3039,7 +3507,7 @@ scope = | Entails | Rulebase)?, attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3072,7 +3540,7 @@ guard = | Negation | Naf), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3096,7 +3564,7 @@ evaluation = element evaluation { Profile, attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3133,7 +3601,7 @@ signature = | Entails | Rulebase), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3167,9 +3635,10 @@ qualification = | Forall | Quantifier | Entails - | Rulebase), + | Rulebase + | Rule), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3193,7 +3662,7 @@ quantification = element quantification { (Forall_2 | Exists_2 | Quantifier), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3215,7 +3684,7 @@ quantification = } else = element else { - attribute ns1:schemaLocation { text }? + attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3238,31 +3707,8 @@ else = } formula_8 = element formula { - (Atom | Equal | Time | Spatial | Interval), - (attribute ns1:schemaLocation { text }? - & attribute xml:base { xsd:anyURI }? - & attribute xml:id { xsd:NCName }? - & attribute key { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }? - & attribute keyref { - xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) - } -content = - element content { - _2*, - (attribute ns1:schemaLocation { text }? + (Atom | Equal | Time | Spatial | Interval | Naf), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3301,7 +3747,7 @@ arg_2 = | Timer | Operator), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3321,10 +3767,26 @@ arg_2 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -content_2 = - element content { - _2*, - (attribute ns1:schemaLocation { text }? +arg_3 = + element arg { + (Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | After + | Before + | Every + | Any + | Timer + | Operator), + attribute index { xsd:positiveInteger }?, + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3344,7 +3806,7 @@ content_2 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -arg_3 = +arg_4 = element arg { (Skolem | Reify @@ -3356,14 +3818,17 @@ arg_3 = | Var | Expr | Plex - | After - | Before - | Every - | Any - | Timer - | Operator), + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3383,10 +3848,93 @@ arg_3 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -content_3 = +content = element content { - _2*, - (attribute ns1:schemaLocation { text }? + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile + | Time + | Spatial + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3406,9 +3954,10 @@ content_3 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -content_4 = - element content { - (attribute ns1:schemaLocation { text }? +act = + element act { + (attribute index { xsd:positiveInteger } + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3427,11 +3976,21 @@ content_4 = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - (text & _1*) + (Assert | Retract | Query)* } -arg_4 = - element arg { - (Skolem +Interval_2 = + element Interval { + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem | Reify | Ind | Data @@ -3450,8 +4009,39 @@ arg_4 = | Equal_2 | Finishes | Operator_2), - attribute index { xsd:positiveInteger }?, - (attribute ns1:schemaLocation { text }? + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2)?, + attribute iri { xsd:anyURI }?, + attribute type { + xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } + | xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI + }?, + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3471,10 +4061,74 @@ arg_4 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -act = - element act { - (attribute index { xsd:positiveInteger } - & attribute ns1:schemaLocation { text }? +formula_9 = + element formula { + attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & (Atom + | Equal + | Time + | Spatial + | Interval + | And + | Or + | Neg + | Negation + | Naf) + } +formula_10 = + element formula { + attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & (Atom + | Equal + | Time + | Spatial + | Interval + | And + | Or + | Neg + | Negation + | Naf) + } +And_2 = + element And { + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3493,54 +4147,88 @@ act = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - (Assert | Retract | Query)* + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (formula_3 + | Atom + | Equal + | Time + | Spatial + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf)* } -Interval_2 = - element Interval { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 - | Skolem - | Reify - | Ind - | Data +Or_2 = + element Or { + (attribute node { xsd:anyURI }? + & attribute xsi:schemaLocation { text }? + & attribute xml:base { xsd:anyURI }? + & attribute xml:id { xsd:NCName }? + & attribute key { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }? + & attribute keyref { + xsd:string { + minLength = "1" + pattern = + "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" + } + | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } + }?), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (formula_4 + | Atom + | Equal | Time | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4), - (arg_4 - | Skolem - | Reify - | Ind - | Data + | Interval + | And_2 + | Or_2 + | Neg + | Negation + | Naf)* + } +_1 = + element * { + attribute * { text }*, + (text & _1*) + } +formula_11 = + element formula { + (Atom + | Equal | Time | Spatial - | Interval_2 - | Var - | Expr - | Plex - | content_4)?, - attribute iri { xsd:anyURI }?, - attribute type { - xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } - | xsd:string { - minLength = "1" - pattern = - "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" - } - | xsd:anyURI - }?, - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + | Interval + | Neg + | Negation + | Implies + | Equivalent + | Forall + | Quantifier + | Rule), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3560,10 +4248,93 @@ Interval_2 = | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?) } -And_2 = - element And { - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? +content_2 = + element content { + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile + | Time + | Spatial + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3581,31 +4352,95 @@ And_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (formula_3 + }?) + } +content_3 = + element content { + ((text & _2*) + | RuleML + | Assert + | Retract + | Query | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile | Time | Spatial | Interval - | And_2 - | Or_2 - | Neg - | Negation - | Naf)* - } -Or_2 = - element Or { - (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content), + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3623,46 +4458,11 @@ Or_2 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (formula_4 - | Atom - | Equal - | Time - | Spatial - | Interval - | And_2 - | Or_2 - | Neg - | Negation - | Naf)* - } -_1 = - element * { - attribute * { text }*, - (text & _1*) + }?) } -formula_9 = - element formula { - (Atom - | Equal - | Time - | Spatial - | Interval - | Neg - | Negation - | Implies - | Equivalent - | Forall - | Quantifier), - (attribute ns1:schemaLocation { text }? +content_4 = + element content { + (attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3680,20 +4480,144 @@ formula_9 = "(([\i-[:]][\c-[:]]*)?:)?(/[^\s/][^\s]*|[^\s/][^\s]*|[^\s]?)" } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } - }?) + }?), + ((text & _2*) + | RuleML + | Assert + | Retract + | Query + | Atom + | Rel + | And + | Or + | Implies + | Forall + | Exists + | Expr + | Fun + | Rulebase + | Entails + | Neg + | Naf + | Equivalent + | Equal + | Data + | Skolem + | Reify + | Ind + | Var + | Plex + | Rule + | Negation + | Quantifier + | Profile + | Time + | Spatial + | Interval + | Operator + | After + | Before + | Every + | Any + | Timer + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Finishes + | formula + | formula_2 + | op + | formula_3 + | formula_4 + | then + | if + | declare + | formula_5 + | formula_6 + | op_2 + | formula_7 + | then_2 + | if_2 + | degree + | strong + | weak + | meta + | torso + | oid + | slot + | left + | right + | arg + | resl + | repo + | scope + | guard + | evaluation + | signature + | qualification + | quantification + | else + | formula_8 + | arg_2 + | arg_3 + | arg_4 + | content) } Equal_2 = element Equal { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -3705,7 +4629,7 @@ Equal_2 = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3727,16 +4651,56 @@ Equal_2 = } Operator_2 = element Operator { - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, - (arg_4 | Interval_2), - (arg_4 | Interval_2), + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), + (arg_4 + | content_4 + | Skolem + | Reify + | Ind + | Data + | Time + | Spatial + | Interval_2 + | Var + | Expr + | Plex + | During + | Overlaps + | Starts + | Precedes + | Succeeds + | Meets + | Equal_2 + | Finishes + | Operator_2), attribute iri { xsd:anyURI }?, attribute type { xsd:Name { pattern = "[\i-[:]][/\c-[:]]*" } @@ -3748,7 +4712,7 @@ Operator_2 = | xsd:anyURI }?, (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3771,7 +4735,7 @@ Operator_2 = Plex_2 = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3790,20 +4754,20 @@ Plex_2 = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (slot* & resl?) } Plex_3 = element Plex { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3822,14 +4786,14 @@ Plex_3 = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), ((Skolem | Reify | Ind @@ -3846,7 +4810,7 @@ Plex_3 = Forall_2 = element Forall { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3865,16 +4829,16 @@ Forall_2 = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (declare | Var)+, - (formula_5 + (formula_11 | Atom | Equal | Time @@ -3885,12 +4849,13 @@ Forall_2 = | Implies | Equivalent | Forall - | Quantifier)? + | Quantifier + | Rule)? } Exists_2 = element Exists { (attribute node { xsd:anyURI }? - & attribute ns1:schemaLocation { text }? + & attribute xsi:schemaLocation { text }? & attribute xml:base { xsd:anyURI }? & attribute xml:id { xsd:NCName }? & attribute key { @@ -3909,26 +4874,38 @@ Exists_2 = } | xsd:anyURI { pattern = "[\i-[:]][\c-[:]]+:.+" } }?), - meta*, - scope*, - guard*, - evaluation*, - signature*, - qualification*, - quantification*, - oid?, + (meta* + & scope* + & guard* + & evaluation* + & signature* + & qualification* + & quantification* + & oid?), (declare | Var)+, - (formula_6 + (formula_11 | Atom | Equal | Time | Spatial | Interval - | And_2 - | Or_2 | Neg | Negation - | Exists - | Quantifier)? + | Implies + | Equivalent + | Forall + | Quantifier + | Rule)? + } +_2 = + element * - ruleml:* { + (_3 + | attribute * { text } + | text)+ + } +_3 = + element * { + (_3 + | attribute * { text } + | text)+ } -_2 = element * { text } diff --git a/relaxng/dr/dr-all_ordered.rnc b/relaxng/dr/dr-all_ordered.rnc index 94ee74e..9a711cc 100644 --- a/relaxng/dr/dr-all_ordered.rnc +++ b/relaxng/dr/dr-all_ordered.rnc @@ -1,111 +1,280 @@ namespace dc = "http://purl.org/dc/elements/1.1/" -namespace ruleml = "http://www.ruleml.org/spec" +default namespace ruleml = "http://www.ruleml.org/spec" dc:title [ "Reaction RuleML Test Schema = Ordered" ] dc:version [ "1.0" ] dc:creator [ "Tara Athan (taraathan AT gmail.com)" ] dc:creator [ "Adrian Paschke" ] dc:subject [ "Reaction RuleML, all modules for validation, ordered" ] -dc:description [ - "all modules for the ordered serialization of Reaction RuleML ." -] +dc:description [ "all modules for the ordered serialization of Reaction RuleML ." ] dc:language [ "en" ] dc:rights [ "TBD" ] dc:relation [ "http://reaction.ruleml.org/1.0" ] - start = Node.choice | edge.choice - -include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" inherit = ruleml { - start |= notAllowed - meta.edge.def = element meta { index-attrib.choice? & - formula_AssertRetract.attlist? & formula_AssertRetract.content } +start = Node.choice | edge.choice +include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" { + start |= notAllowed + And-Query.Node.def = + + ## + element And { (And-Query-datt.choice & reAnd-Query.attlist), And.header, And-Query.main } + Or-Query.Node.def = + + ## + element Or { (Or-Query-datt.choice & reOr-Query.attlist), Or.header, Or-Query.main } +} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" { + start |= notAllowed + meta.edge.def = + element meta { + index-attrib.choice? & formula_AssertRetract.attlist? & formula_AssertRetract.content + } Node.header &= empty } -include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" { start |= notAllowed - Atom.header &= (Node.header? , degree-edge.choice?)? +} +include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" { + start |= notAllowed + Atom.header &= (Node.header?, degree-edge.choice?)? Expr.header &= Node.header? } -include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_any_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_nodes_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/short_name_contraction_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/termseq_bin_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" { + start |= notAllowed + Assert.Node.def = + + ## A KQML-like performative acting as a wrapper specifying that its content is + ## asserted, making an 'implicit ' assumption. + ## See http://www.ruleml.org/1.0/glossary/#gloss-Assert + element Assert { + (AssertRetract-datt.choice & reAssert.attlist), AssertRetract.header, AssertRetract.main + } +} +include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" { + start |= notAllowed + ExistsFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.notallowed + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-node.choice +} +include "http://ruleml.org/1.0/relaxng/modules/reify_any_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/reify_nodes_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/short_name_contraction_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/termseq_bin_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" { start |= notAllowed # Note: In Reaction RuleML the type is changed to Term or Curie or IRI type.value = termOrCurieOrIRI.datatype } -#include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" inherit = ruleml { +# include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" { # start |= notAllowed # Atom.header &= (Node.header? & degree-edge.choice?)? # Expr.header &= Node.header? -#} -include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_lang_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_space_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/dr-all_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/stripe_skipping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} - - \ No newline at end of file +# } +include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_lang_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_space_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/dr-all_module.rnc" { + start |= notAllowed +} +include "../modules/any_content_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/stripe_skipping_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/ordered_groups_expansion_module.rnc" { + start |= notAllowed +} diff --git a/relaxng/dr/dr-all_unordered.rnc b/relaxng/dr/dr-all_unordered.rnc index 74e144e..7616cd0 100644 --- a/relaxng/dr/dr-all_unordered.rnc +++ b/relaxng/dr/dr-all_unordered.rnc @@ -1,111 +1,280 @@ namespace dc = "http://purl.org/dc/elements/1.1/" -namespace ruleml = "http://www.ruleml.org/spec" +default namespace ruleml = "http://www.ruleml.org/spec" dc:title [ "Reaction RuleML Test Schema = Unordered" ] dc:version [ "1.0" ] dc:creator [ "Tara Athan (taraathan AT gmail.com)" ] dc:creator [ "Adrian Paschke" ] dc:subject [ "Reaction RuleML, all modules for validation, unordered" ] -dc:description [ - "all modules for the unordered serialization of Reaction RuleML ." -] +dc:description [ "all modules for the unordered serialization of Reaction RuleML ." ] dc:language [ "en" ] dc:rights [ "TBD" ] dc:relation [ "http://reaction.ruleml.org/1.0" ] - start = Node.choice | edge.choice - -include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" inherit = ruleml { - start |= notAllowed - meta.edge.def = element meta { index-attrib.choice? & - formula_AssertRetract.attlist? & formula_AssertRetract.content } +start = Node.choice | edge.choice +include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" { + start |= notAllowed + And-Query.Node.def = + + ## + element And { (And-Query-datt.choice & reAnd-Query.attlist), And.header, And-Query.main } + Or-Query.Node.def = + + ## + element Or { (Or-Query-datt.choice & reOr-Query.attlist), Or.header, Or-Query.main } +} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" { + start |= notAllowed + meta.edge.def = + element meta { + index-attrib.choice? & formula_AssertRetract.attlist? & formula_AssertRetract.content + } Node.header &= empty } -include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -#include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" { + start |= notAllowed +} +# include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" inherit = ruleml { # start |= notAllowed # Atom.header &= (Node.header? , degree-edge.choice?)? # Expr.header &= Node.header? -#} -include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_any_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/reify_nodes_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/short_name_contraction_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/termseq_bin_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inherit = ruleml { +# } +include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" { + start |= notAllowed + Assert.Node.def = + + ## A KQML-like performative acting as a wrapper specifying that its content is + ## asserted, making an 'implicit ' assumption. + ## See http://www.ruleml.org/1.0/glossary/#gloss-Assert + element Assert { + (AssertRetract-datt.choice & reAssert.attlist), AssertRetract.header, AssertRetract.main + } +} +include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" { + start |= notAllowed + ExistsFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.notallowed + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-node.choice +} +include "http://ruleml.org/1.0/relaxng/modules/reify_any_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/reify_nodes_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/short_name_contraction_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/termseq_bin_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" { start |= notAllowed # Note: In Reaction RuleML the type is changed to Term or Curie or IRI type.value = termOrCurieOrIRI.datatype } -include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" { start |= notAllowed Atom.header &= (Node.header? & degree-edge.choice?)? Expr.header &= Node.header? } -include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_lang_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xml_space_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/dr-all_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/stripe_skipping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} - - \ No newline at end of file +include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_lang_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xml_space_expansion_module.rnc" { + start |= notAllowed +} +include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/dr-all_module.rnc" { + start |= notAllowed +} +include "../modules/any_content_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/stripe_skipping_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/unordered_groups_expansion_module.rnc" { + start |= notAllowed +} diff --git a/relaxng/dr/dr-autogen-normal.rnc b/relaxng/dr/dr-autogen-normal.rnc index 8bd7f2d..b09d1f5 100644 --- a/relaxng/dr/dr-autogen-normal.rnc +++ b/relaxng/dr/dr-autogen-normal.rnc @@ -7,6 +7,14 @@ start |= Node.choice | edge.choice # include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" inherit = ruleml { start |= notAllowed +Assert.Node.def = + + ## A KQML-like performative acting as a wrapper specifying that its content is + ## asserted, making an 'implicit ' assumption. + ## See http://www.ruleml.org/1.0/glossary/#gloss-Assert + element Assert { + (AssertRetract-datt.choice & reAssert.attlist), AssertRetract.header, AssertRetract.main + } } # # ATOMIC FORMULAS INCLUDED @@ -17,9 +25,17 @@ include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" inheri # # CONJUNCTIONS AND DISJUNCTIONS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" { + start |= notAllowed + And-Query.Node.def = + + ## + element And { (And-Query-datt.choice & reAnd-Query.attlist), And.header, And-Query.main } + Or-Query.Node.def = + + ## + element Or { (Or-Query-datt.choice & reOr-Query.attlist), Or.header, Or-Query.main } +} # # IMPLICATIONS INCLUDED # @@ -31,11 +47,33 @@ include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" # include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" inherit = ruleml { start |= notAllowed + ExistsFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.notallowed + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-node.choice } # # EXPRESSIONS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} +# +# DISJUNCTIONS IN CONCLUSIONS INCLUDED +# +#include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" { +# start |= notAllowed +#} +# +# RESTRICTIONS ON COMPOUNDING CLASSICAL FORMULAS REMOVED +# FULL FIRST-ORDER EXPRESSIVITY (INCLUDING NEGATION) IS AVAILABLE +# +#include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" { # start |= notAllowed #} # @@ -47,18 +85,18 @@ include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" # # ATTRIBUTES WITH DEFAULT VALUES ARE ABSENT OR OPTIONAL # -include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml { - start |= notAllowed -} +#include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml { +# start |= notAllowed +#} include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" inherit = ruleml { start |= notAllowed } # # ATTRIBUTES WITH DEFAULT VALUES REQUIRED # -#include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} #include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" inherit = ruleml { # start |= notAllowed #} @@ -117,21 +155,21 @@ include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" inherit # # RULEBASES INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # ENTAILMENTS (PROVES) INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEGREE OF UNCERTAINTY INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # STRONG NEGATION INCLUDED # @@ -141,15 +179,15 @@ include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" inherit # # WEAK NEGATIONS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NODE IDENTIFIERS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # IN-PLACE ANNOTATIONS INCLUDED # @@ -174,50 +212,50 @@ include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" inheri # # EQUIVALENCES INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # INFERENCE DIRECTION ATTRIBUTE IS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NON-DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # MATERIAL IMPLICATION ATTRIBUTE IS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NON-DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # OBJECT IDENTIFIERS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml { # start |= notAllowed -#} +} # # SLOTS INCLUDED # @@ -227,39 +265,39 @@ include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" inheri # # SLOT CARDINALITY INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # SLOT WEIGHTS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # EQUATIONS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # ORIENTED EQUALITY ATTRIBUTE IS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NON-DEFAULT VALUES OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEFAULT VALUE OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # EXPLICIT TYPING OF TERMS INCLUDED # @@ -283,9 +321,9 @@ include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module # # SKOLEM CONSTANTS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # REIFICATION TERMS INCLUDED, EXPLICIT CONTENT # @@ -307,27 +345,27 @@ include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" in # # IMPLICIT CLOSURE INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # SLOTTED REST VARIABLES INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # POSITIONAL REST VARIABLES INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # GENERALIZED LISTS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # SET-VALUED EXPRESSION ATTRIBUTE IS ABSENT OR OPTIONAL # @@ -337,38 +375,38 @@ include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" in # # SET-VALUED EXPRESSION ATTRIBUTE IS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NON-DEFAULT VALUES OF THE SET-VALUED ATTRIBUTE INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEFAULT VALUE OF THE SET-VALUED ATTRIBUTE INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # INTERPRETED EXPRESSION ATTRIBUTE IS INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # NON-DEFAULT VALUES OF EXPRESSION INTERPRETATION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # DEFAULT VALUE OF EXPRESSION INTERPRETATION INCLUDED # -#include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml { -# start |= notAllowed -#} +include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml { + start |= notAllowed +} # # INITIALIZATION MODULES INCLUDED # @@ -379,3 +417,5 @@ include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" inheri include "../modules/dr-all_module.rnc" inherit = ruleml { start |= notAllowed } +include "../modules/ordered_groups_expansion_module.rnc" inherit = ruleml {start |= notAllowed} + diff --git a/relaxng/dr/dr-nafneghornlogeq_normal.rnc b/relaxng/dr/dr-nafneghornlogeq_normal.rnc index b7b5786..f0f2bf7 100644 --- a/relaxng/dr/dr-nafneghornlogeq_normal.rnc +++ b/relaxng/dr/dr-nafneghornlogeq_normal.rnc @@ -1,269 +1,310 @@ namespace dc = "http://purl.org/dc/elements/1.1/" namespace dcterms = "http://purl.org/dc/terms/" default namespace ruleml = "http://ruleml.org/spec" + start |= Node.choice | edge.choice # # ROOT NODE AND PERFORMATIVES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" { start |= notAllowed + Assert.Node.def = + + ## A KQML-like performative acting as a wrapper specifying that its content is + ## asserted, making an 'implicit ' assumption. + ## See http://www.ruleml.org/1.0/glossary/#gloss-Assert + element Assert { + (AssertRetract-datt.choice & reAssert.attlist), AssertRetract.header, AssertRetract.main + } } # # ATOMIC FORMULAS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" { start |= notAllowed } # # CONJUNCTIONS AND DISJUNCTIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" { start |= notAllowed + And-Query.Node.def = + + ## + element And { (And-Query-datt.choice & reAnd-Query.attlist), And.header, And-Query.main } + Or-Query.Node.def = + + ## + element Or { (Or-Query-datt.choice & reOr-Query.attlist), Or.header, Or-Query.main } } # # IMPLICATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" { start |= notAllowed } # # QUANTIFICATION OVER VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" { start |= notAllowed + ExistsFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.notallowed + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-node.choice } # # EXPRESSIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" { start |= notAllowed } # +# DISJUNCTIONS IN CONCLUSIONS INCLUDED +# +# include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" { +# start |= notAllowed +# } +# +# RESTRICTIONS ON COMPOUNDING CLASSICAL FORMULAS REMOVED +# FULL FIRST-ORDER EXPRESSIVITY (INCLUDING NEGATION) IS AVAILABLE +# +# include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" { +# start |= notAllowed +# } +# # ATTRIBUTES WITH DEFAULT VALUES ARE INITIALIZED # -include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" { start |= notAllowed } # # ATTRIBUTES WITH DEFAULT VALUES ARE ABSENT OR OPTIONAL -# -#include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml { +# +# include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" { # start |= notAllowed -#} -include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" inherit = ruleml { +# } +include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" { start |= notAllowed } # # ATTRIBUTES WITH DEFAULT VALUES REQUIRED # -include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" { start |= notAllowed } -#include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" inherit = ruleml { +# include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" { # start |= notAllowed -#} +# } # # POLYADIC TERM (ONE OR MORE TERMS) SEQUENCES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" { start |= notAllowed } # # ORDER MODE - UNORDERED GROUPS DISABLED # -include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" { start |= notAllowed - Atom.header &= (Node.header? , degree-edge.choice?)? + Atom.header &= (Node.header?, degree-edge.choice?)? Expr.header &= Node.header? } # # ORDER MODE - UNORDERED GROUPS ENABLED -# -#include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" inherit = ruleml { +# +# include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" { # start |= notAllowed # Atom.header &= (Node.header? & degree-edge.choice?)? # Expr.header &= Node.header? -#} +# } # STRIPE-SKIPPING MODE ENABLED -# -#include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" inherit = ruleml { +# +# include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" { # start |= notAllowed -#} +# } # # EXPLICIT DATATYPING ENABLED # -include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" { start |= notAllowed } -include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" { start |= notAllowed } -include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" { start |= notAllowed } # # xsi:schemaLocation ALLOWED IN RuleML # -include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" { start |= notAllowed } # # UNIVERSAL RESOURCE IDENTIFIERS (URIs) INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" { start |= notAllowed } # # # RULEBASES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" { start |= notAllowed } # # ENTAILMENTS (PROVES) INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" { start |= notAllowed } # # DEGREE OF UNCERTAINTY INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" { start |= notAllowed } # # STRONG NEGATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" { start |= notAllowed } # # WEAK NEGATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" { start |= notAllowed } # # NODE IDENTIFIERS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" { start |= notAllowed } # # IN-PLACE ANNOTATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" { start |= notAllowed - meta.edge.def = element meta { index-attrib.choice? & - formula_AssertRetract.attlist? & formula_AssertRetract.content } + meta.edge.def = + element meta { + index-attrib.choice? & formula_AssertRetract.attlist? & formula_AssertRetract.content + } Node.header &= empty } # # XML BASE ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" { start |= notAllowed } # # XML ID ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" { start |= notAllowed } # # EQUIVALENCES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" { start |= notAllowed } # # INFERENCE DIRECTION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" { start |= notAllowed } # MATERIAL IMPLICATION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" { start |= notAllowed } # # OBJECT IDENTIFIERS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" { start |= notAllowed } # # SLOTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" { start |= notAllowed } # # SLOT CARDINALITY INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" { start |= notAllowed } # # SLOT WEIGHTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" { start |= notAllowed } # # EQUATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" { start |= notAllowed } # # ORIENTED EQUALITY ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" { start |= notAllowed } # # EXPLICIT TYPING OF TERMS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" { start |= notAllowed # Note: In Reaction RuleML the type is changed to Term or Curie or IRI type.value = termOrCurieOrIRI.datatype @@ -271,112 +312,117 @@ include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inheri # # DATA TERMS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" { start |= notAllowed } # # DATA ELEMENTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" { start |= notAllowed } # # SKOLEM CONSTANTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" { start |= notAllowed } # # REIFICATION TERMS INCLUDED, EXPLICIT CONTENT # -include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" { start |= notAllowed } # # INDIVIDUAL TERMS (INTERPRETED NAMES) ARE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" { start |= notAllowed } # # VARIABLES (INTERPRETABLE NAMES) ARE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" { start |= notAllowed } # # IMPLICIT CLOSURE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" { start |= notAllowed } # # SLOTTED REST VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" { start |= notAllowed } # # POSITIONAL REST VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" { start |= notAllowed } # # GENERALIZED LISTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" { start |= notAllowed } # # SET-VALUED EXPRESSION ATTRIBUTE IS ABSENT OR OPTIONAL -# -#include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" inherit = ruleml { +# +# include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" { # start |= notAllowed -#} +# } # # SET-VALUED EXPRESSION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF THE SET-VALUED ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF THE SET-VALUED ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" { start |= notAllowed } # INTERPRETED EXPRESSION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF EXPRESSION INTERPRETATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF EXPRESSION INTERPRETATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" { start |= notAllowed } -# +# # INITIALIZATION MODULES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" { start |= notAllowed } # -include "../modules/dr-all_module.rnc" inherit = ruleml { +include "../modules/dr-all_module.rnc" { + start |= notAllowed +} +include "../modules/any_content_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/ordered_groups_expansion_module.rnc" { start |= notAllowed } -include "../modules/any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} diff --git a/relaxng/dr/dr-nafneghornlogeq_relaxed.rnc b/relaxng/dr/dr-nafneghornlogeq_relaxed.rnc index 770bcb7..8426017 100644 --- a/relaxng/dr/dr-nafneghornlogeq_relaxed.rnc +++ b/relaxng/dr/dr-nafneghornlogeq_relaxed.rnc @@ -1,273 +1,318 @@ namespace dc = "http://purl.org/dc/elements/1.1/" namespace dcterms = "http://purl.org/dc/terms/" default namespace ruleml = "http://ruleml.org/spec" + start |= Node.choice | edge.choice # # ROOT NODE AND PERFORMATIVES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/performative_expansion_module.rnc" { start |= notAllowed + Assert.Node.def = + + ## A KQML-like performative acting as a wrapper specifying that its content is + ## asserted, making an 'implicit ' assumption. + ## See http://www.ruleml.org/1.0/glossary/#gloss-Assert + element Assert { + (AssertRetract-datt.choice & reAssert.attlist), AssertRetract.header, AssertRetract.main + } } # # ATOMIC FORMULAS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/atom_expansion_module.rnc" { start |= notAllowed } # # CONJUNCTIONS AND DISJUNCTIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/andor_expansion_module.rnc" { start |= notAllowed + And-Query.Node.def = + + ## + element And { (And-Query-datt.choice & reAnd-Query.attlist), And.header, And-Query.main } + Or-Query.Node.def = + + ## + element Or { (Or-Query-datt.choice & reOr-Query.attlist), Or.header, Or-Query.main } } # # IMPLICATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/implication_expansion_module.rnc" { start |= notAllowed } # # QUANTIFICATION OVER VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" inherit = ruleml { - start |= notAllowed +include "http://ruleml.org/1.0/relaxng/modules/quantification_expansion_module.rnc" { + start |= notAllowed + ExistsFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.notallowed + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-node.choice } # # EXPRESSIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/expr_expansion_module.rnc" { start |= notAllowed } # +# DISJUNCTIONS IN CONCLUSIONS INCLUDED +# +# include "http://ruleml.org/1.0/relaxng/modules/dis_expansion_module.rnc" { +# start |= notAllowed +# } +# +# RESTRICTIONS ON COMPOUNDING CLASSICAL FORMULAS REMOVED +# FULL FIRST-ORDER EXPRESSIVITY (INCLUDING NEGATION) IS AVAILABLE +# +# include "http://ruleml.org/1.0/relaxng/modules/folog_cl_expansion_module.rnc" { +# start |= notAllowed +# } +# # ATTRIBUTES WITH DEFAULT VALUES ARE INITIALIZED # -include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_inf_expansion_module.rnc" { start |= notAllowed } # # ATTRIBUTES WITH DEFAULT VALUES ARE ABSENT OR OPTIONAL # -include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_absent_expansion_module.rnc" { start |= notAllowed } -include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_absent_folog_expansion_module.rnc" { start |= notAllowed } # # ATTRIBUTES WITH DEFAULT VALUES REQUIRED # -include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/default_present_expansion_module.rnc" { start |= notAllowed } -#include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" inherit = ruleml { +# include "http://ruleml.org/1.0/relaxng/modules/default_present_folog_expansion_module.rnc" { # start |= notAllowed -#} +# } # # POLYADIC TERM (ONE OR MORE TERMS) SEQUENCES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/termseq_poly_expansion_module.rnc" { start |= notAllowed } # # ORDER MODE - UNORDERED GROUPS DISABLED -# -#include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" inherit = ruleml { +# +# include "http://ruleml.org/1.0/relaxng/modules/ordered_groups_expansion_module.rnc" { # start |= notAllowed # Atom.header &= (Node.header? , degree-edge.choice?)? # Expr.header &= Node.header? -#} +# } # # ORDER MODE - UNORDERED GROUPS ENABLED # -include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/unordered_groups_expansion_module.rnc" { start |= notAllowed Atom.header &= (Node.header? & degree-edge.choice?)? Expr.header &= Node.header? } # STRIPE-SKIPPING MODE ENABLED # -include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/stripe_skipping_expansion_module.rnc" { start |= notAllowed } # -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" inherit = ruleml {start |= notAllowed} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_entailment_expansion_module.rnc" { + start |= notAllowed +} # -include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" inherit = ruleml {start |= notAllowed} +include "http://ruleml.org/1.0/relaxng/modules/asynchronous_stripe_skipping_implication_expansion_module.rnc" { + start |= notAllowed +} # # EXPLICIT DATATYPING ENABLED # -include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/explicit_datatyping_expansion_module.rnc" { start |= notAllowed } -include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/dataterm_simple_expansion_module.rnc" { start |= notAllowed } -include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/data_simple_content_expansion_module.rnc" { start |= notAllowed } # # xsi:schemaLocation ALLOWED IN RuleML # -include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xsi_schemalocation_expansion_module.rnc" { start |= notAllowed } # # UNIVERSAL RESOURCE IDENTIFIERS (URIs) INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/iri_expansion_module.rnc" { start |= notAllowed } # # # RULEBASES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/rulebase_expansion_module.rnc" { start |= notAllowed } # # ENTAILMENTS (PROVES) INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/metalevel_expansion_module.rnc" { start |= notAllowed } # # DEGREE OF UNCERTAINTY INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/fuzzy_expansion_module.rnc" { start |= notAllowed } # # STRONG NEGATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/neg_expansion_module.rnc" { start |= notAllowed } # # WEAK NEGATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/naf_expansion_module.rnc" { start |= notAllowed } # # NODE IDENTIFIERS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/node_attribute_expansion_module.rnc" { start |= notAllowed } # # IN-PLACE ANNOTATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/meta_expansion_module.rnc" { start |= notAllowed - meta.edge.def = element meta { index-attrib.choice? & - formula_AssertRetract.attlist? & formula_AssertRetract.content } + meta.edge.def = + element meta { + index-attrib.choice? & formula_AssertRetract.attlist? & formula_AssertRetract.content + } Node.header &= empty } # # XML BASE ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xml_base_expansion_module.rnc" { start |= notAllowed } # # XML ID ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/xml_id_expansion_module.rnc" { start |= notAllowed } # # EQUIVALENCES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/equivalent_expansion_module.rnc" { start |= notAllowed } # # INFERENCE DIRECTION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUES OF INFERENCE DIRECTION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/direction_default_expansion_module.rnc" { start |= notAllowed } # MATERIAL IMPLICATION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUES OF MATERIAL IMPLICATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/material_default_expansion_module.rnc" { start |= notAllowed } # # OBJECT IDENTIFIERS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oid_expansion_module.rnc" { start |= notAllowed } # # SLOTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/slot_expansion_module.rnc" { start |= notAllowed } # # SLOT CARDINALITY INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/card_expansion_module.rnc" { start |= notAllowed } # # SLOT WEIGHTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/weight_expansion_module.rnc" { start |= notAllowed } # # EQUATIONS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/equal_expansion_module.rnc" { start |= notAllowed } # # ORIENTED EQUALITY ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF ORIENTED EQUALITY ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/oriented_default_expansion_module.rnc" { start |= notAllowed } # # EXPLICIT TYPING OF TERMS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" { start |= notAllowed # Note: In Reaction RuleML the type is changed to Term or Curie or IRI type.value = termOrCurieOrIRI.datatype @@ -275,113 +320,120 @@ include "http://ruleml.org/1.0/relaxng/modules/type_expansion_module.rnc" inheri # # DATA TERMS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/dataterm_any_expansion_module.rnc" { start |= notAllowed } # # DATA ELEMENTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/data_any_content_expansion_module.rnc" { start |= notAllowed } # # SKOLEM CONSTANTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/skolem_expansion_module.rnc" { start |= notAllowed } # # REIFICATION TERMS INCLUDED, EXPLICIT CONTENT # -include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/reify_expansion_module.rnc" { start |= notAllowed } # # INDIVIDUAL TERMS (INTERPRETED NAMES) ARE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/individual_expansion_module.rnc" { start |= notAllowed } # # VARIABLES (INTERPRETABLE NAMES) ARE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/variable_expansion_module.rnc" { start |= notAllowed } # # IMPLICIT CLOSURE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/closure_expansion_module.rnc" { start |= notAllowed } # # SLOTTED REST VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/resl_expansion_module.rnc" { start |= notAllowed } # # POSITIONAL REST VARIABLES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/repo_expansion_module.rnc" { start |= notAllowed } # # GENERALIZED LISTS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/plex_expansion_module.rnc" { start |= notAllowed } # # SET-VALUED EXPRESSION ATTRIBUTE IS ABSENT OR OPTIONAL # -include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_absence_expansion_module.rnc" { start |= notAllowed } # # SET-VALUED EXPRESSION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF THE SET-VALUED ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF THE SET-VALUED ATTRIBUTE INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/val_default_expansion_module.rnc" { start |= notAllowed } # INTERPRETED EXPRESSION ATTRIBUTE IS INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_attrib_expansion_module.rnc" { start |= notAllowed } # # NON-DEFAULT VALUES OF EXPRESSION INTERPRETATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_non-default_expansion_module.rnc" { start |= notAllowed } # # DEFAULT VALUE OF EXPRESSION INTERPRETATION INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/per_default_expansion_module.rnc" { start |= notAllowed } -# +# # INITIALIZATION MODULES INCLUDED # -include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" inherit = ruleml { +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" { start |= notAllowed } # -include "../modules/dr-all_module.rnc" inherit = ruleml { +include "../modules/dr-all_module.rnc" { + start |= notAllowed +} +include "../modules/any_content_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/stripe_skipping_expansion_module.rnc" { + start |= notAllowed +} +include "../modules/unordered_groups_expansion_module.rnc" { start |= notAllowed } -include "../modules/any_content_expansion_module.rnc" inherit = ruleml {start |= notAllowed} -include "../modules/stripe_skipping_expansion_module.rnc" inherit = ruleml {start |= notAllowed} diff --git a/relaxng/indep_valid_modules/ordered_groups_expansion_module.rnc b/relaxng/indep_valid_modules/ordered_groups_expansion_module.rnc new file mode 100644 index 0000000..b852b84 --- /dev/null +++ b/relaxng/indep_valid_modules/ordered_groups_expansion_module.rnc @@ -0,0 +1,3 @@ +include "../modules/ordered_groups_expansion_module.rnc" +include "../modules/init_expansion_module.rnc" +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" diff --git a/relaxng/indep_valid_modules/unordered_groups_expansion_module.rnc b/relaxng/indep_valid_modules/unordered_groups_expansion_module.rnc new file mode 100644 index 0000000..711f952 --- /dev/null +++ b/relaxng/indep_valid_modules/unordered_groups_expansion_module.rnc @@ -0,0 +1,3 @@ +include "../modules/unordered_groups_expansion_module.rnc" +include "../modules/init_expansion_module.rnc" +include "http://ruleml.org/1.0/relaxng/modules/init_expansion_module.rnc" diff --git a/relaxng/modules/any_content_expansion_module.rnc b/relaxng/modules/any_content_expansion_module.rnc index 8917cc7..24ac644 100644 --- a/relaxng/modules/any_content_expansion_module.rnc +++ b/relaxng/modules/any_content_expansion_module.rnc @@ -1,5 +1,6 @@ namespace dc = "http://purl.org/dc/elements/1.1/" namespace dcterms = "http://purl.org/dc/terms/" +namespace this = inherit dc:title [ "Foreign Namespace content in Reaction RuleML" ] dc:version [ "1.0" ] @@ -17,27 +18,32 @@ edge.choice |= profile_anycontent # *** content *** # -formula_Profile-edge.choice |= formula_AssertRetract-edge.choice +formula_Profile-edge.choice |= profile_anycontent profile_anycontent = element content { profile_anycontent.type } profile_anycontent.type = profile_anycontent.content, profile_anycontent.attlist -profile_anycontent.content = text & anyElement.choice* +profile_anycontent.content = anycontent.content profile_anycontent.attlist = commonInit.attlist? # argumentsForTime.sequence |= time_anycontent* time_anycontent = element content { time_anycontent.type } time_anycontent.type = time_anycontent.content, time_anycontent.attlist -time_anycontent.content = text & anyElement.choice* +time_anycontent.content = anycontent.content time_anycontent.attlist = commonInit.attlist? # argumentsForSpatial.sequence |= spatial_anycontent* spatial_anycontent = element content { spatial_anycontent.type } spatial_anycontent.type = spatial_anycontent.content, spatial_anycontent.attlist -spatial_anycontent.content = text & anyElement.choice* +spatial_anycontent.content = anycontent.content spatial_anycontent.attlist = commonInit.attlist? # arg_interval.choice |= interval_anycontent interval_anycontent = element content { interval_anycontent.type } interval_anycontent.type = interval_anycontent.attlist, interval_anycontent.content -interval_anycontent.content = text & anyElement.choice* +interval_anycontent.content = anycontent.content interval_anycontent.attlist = commonInit.attlist +## +anycontent.content = (text & foreign-element*) | Node.choice | edge.choice + +foreign-element = element * - (this:*) { anything } +anything = ( element * { anything } | attribute * { text } | text )* \ No newline at end of file diff --git a/relaxng/modules/dr-all_module.rnc b/relaxng/modules/dr-all_module.rnc index 465bf86..3a0b9b8 100644 --- a/relaxng/modules/dr-all_module.rnc +++ b/relaxng/modules/dr-all_module.rnc @@ -172,15 +172,12 @@ Forall-node.choice |= Quantifier # *** Exists *** Exists = Exists-node.choice Exists-node.choice |= Quantifier -# *** declare *** -declare = declare-edge.choice # needed for Quantifier and quantification formula-forall.type = formula_Forall.content, formula_Forall.attlist formula-forall = element formula { formula-forall.type } # *** Implies *** Implies = Implies-node.choice # *** then *** -then.attlist = head_Implies.attlist? then.content = head_Implies.content then.type = head_Implies.attlist? & head_Implies.content # *** Entails *** @@ -191,8 +188,60 @@ Equivalent = Equivalent-node.choice Rulebase = Rulebase-node.choice # *** And *** And = And-node.choice +And-Query.main |= formula_And-query-edge.choice* + +## an extension point for stripe skipping as well as alternate spellings and internationalization of the formula tag name in conjunctions. +formula_And-query-edge.choice |= formula_And-query.edge.def + +## The formula role of a conjunctive () expression, +## Within And ... +formula_And-query.edge.def = + + ## : contains a single formula. See + ## http://www.ruleml.org/1.0/glossary/#gloss-formula + element formula { formula_And.attlist? & formula_And-query.content } + +## Formulas within conjunctions consist of a single formula +formula_And-query.content |= AndQueryFormula.choice + +## formulas allowed to participate in conjunctions. +AndQueryFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.choice + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-fo-node.choice # *** Or *** Or = Or-node.choice +Or-Query.main |= formula_Or-query-edge.choice* + +## an extension point for stripe skipping as well as alternate spellings and internationalization of the formula tag name in conjunctions. +formula_Or-query-edge.choice |= formula_Or-query.edge.def + +## The formula role of a conjunctive () expression, +## Within Or ... +formula_Or-query.edge.def = + + ## : contains a single formula. See + ## http://www.ruleml.org/1.0/glossary/#gloss-formula + element formula { formula_Or.attlist? & formula_Or-query.content } + +## Formulas within conjunctions consist of a single formula +formula_Or-query.content |= OrQueryFormula.choice + +## formulas allowed to participate in conjunctions. +OrQueryFormula.choice |= + SimpleFormula-node.choice + | And-Query-node.choice + | Or-Query-node.choice + | Negation-node.choice + | NegationAsFailure-node.choice + | Implication-fo-node.choice + | Forall-fo-node.choice + | Exists-fo-node.choice # *** @mapMaterial *** mapMaterial.attrib = mapMaterial-att-inf.choice # *** @material *** @@ -296,6 +345,11 @@ key.attrib = attribute key { curieOrAbsIRI.datatype }? # # optional attribute keyref.attrib = attribute keyref { curieOrAbsIRI.datatype }? +# *** Assert *** +reAssert.attlist &= commonNode.attlist? +reAssert.attlist &= mapClosure-att.choice? +reAssert.attlist &= safety.attrib? +reAssert.attlist &= size.attrib? # *** Rule *** # The Rule that provides the basic syntax for rules # in Reaction RuleML. @@ -329,9 +383,6 @@ RulebaseFormula.choice |= Rule # else = element else { then.type } edge.choice |= else -# *** Derivation Rule content model *** -# ((else?, then, if) | (if, then, else?) | (if.content, then.content, then.content?)) -DerivationRule.content |= Implies.main, else? # *** Negation *** # A generic polymorphic negation, which can be specialized by using # the @type attribute to specify the type of negation and/or @@ -356,9 +407,11 @@ formula-negation = element formula { formula-negation.type } edge.choice |= formula-negation # *** Naf *** Naf = NegationAsFailure-node.choice -reNaf.attlist &= iri-att.choice? +reNaf.attlist &= iri-att.choice?, Type.attlist +NafFormula.choice |= NegationAsFailure-node.choice # *** Neg *** -reNeg.attlist &= iri-att.choice? +reNeg.attlist &= iri-att.choice?, Type.attlist +NegFormula.choice |= NegationAsFailure-node.choice # *** Quantifier *** # Explicit generic quantifier, where the quantifier name can be defined by the # @type attribute and the @iri attribute can point to an external definition @@ -373,6 +426,7 @@ formula-quant.choice |= formula-quant formula-quant = element formula { formula-forall.type } Quantifier.type = Quantifier.content, Quantifier.attlist Quantifier = element Quantifier { Quantifier.type } +Node.choice |= Quantifier # make the quantifier constraint restrictions ("such that") optional # # ( meta*, scope*, guard*, evaluation*, signature*, qualification*, quantification*, oid?, (declare|Var)+, (formula | Atom|Rule|Negation|Naf|Neg|Equivalent|Equal|And|Or|Exists|Forall|Quantifier)? ) @@ -436,8 +490,6 @@ Time.attlist = iri-att.choice?, Type.attlist, commonNode.attlist Time.content = Node.header, argumentsForTime.sequence argumentsForTime.sequence |= arg_time.choice*, repo?, slot*, resl? arg_time.choice |= arg_time -# unordered -# argumentsForTime.sequence |= arg_time.choice+ & repo? & slot* & resl? Time.type = Time.content, Time.attlist Node.choice |= Time_formula Time_term = element Time { Time.type } @@ -475,8 +527,6 @@ Spatial.attlist = iri-att.choice?, Type.attlist, commonNode.attlist Spatial.content = Node.header, argumentsForSpatial.sequence argumentsForSpatial.sequence |= arg_spatial.choice*, repo?, slot*, resl? arg_spatial.choice |= arg_spatial -# unordered -# argumentsForSpatial.sequence |= arg_spatial.choice* & repo? & slot* & resl?Spatial.type = Spatial.content, Spatial.attlist Node.choice |= Spatial_formula Spatial.type = Spatial.content, Spatial.attlist Spatial_term = element Spatial { Spatial.type } @@ -740,60 +790,9 @@ interval_primitives.content = arg.content | interval_algebra_group.content # *** @style *** # +# optional attribute # restriction: active | messaging | reasoning -# default value: reasoning (in DR Reaction RuleML), active (in PR and ECA RuleML), and messaging (in CEP RuleML) -# optional attribute +# when absent, equivalent to: reasoning (in DR Reaction RuleML), active (in PR and ECA RuleML), and messaging (in CEP RuleML) style.datatype |= "active" | "messaging" | "reasoning" -# *** @style *** -# -# restriction: active | messaging | reasoning -# default value: reasoning (in DR Reaction RuleML) -# optional attribute -style.attrib = style-att-inf.choice -# in default_inf_reactive module -style-att-inf.choice |= notAllowed -# in default_absent_reactive module -style-att-inf.choice |= empty -# in default_present_reactive module -style-att-inf.choice |= style-att.choice -# in style_attrib module +style.attrib = style-att.choice style-att.choice |= attribute style { style.datatype } -# Managing the ordered and unordered forms of the extended Node header pattern in DR -# 1. to deal with the different distribution of oid, define a new pattern for element oid that -# is added to Node.header if the oid_all module is included. -# This is a temporary fix until the oid distribution is harmonized in the next release. -# 2. to deal with the different definition of the meta element, define a new patterm for -# element meta that is added to Node.header if the meta_indexed module is included. -# This is a temporary fix until the meta distribution is harmonized in the next release. -# Node_unordered.header -# content model: meta* & scope* & guard* & evaluation* & signature* & qualification* & quantification* & oid? -# In the modules for the corresponding features -# metadata.content, interface.content, instance.content -metadata_unordered.header &= meta* -metadata_unordered.header &= scope* -metadata_unordered.header &= guard* -interface_unordered.header &= evaluation* -interface_unordered.header &= signature* -instance_unordered.header &= qualification* -instance_unordered.header &= quantification* -# special case -instance_unordered.header &= oid? -# -Node_unordered.header &= metadata_unordered.header? -Node_unordered.header &= interface_unordered.header? -Node_unordered.header &= instance_unordered.header? -# In the unordered_header_dr module -# Node.header &= Node_unordered.header? -# -# In the ordered_header_dr module -# Node_ordered.header -# content model: meta* , scope* , guard* , evaluation* , signature* , qualification* , quantification* , oid? -metadata_ordered-header.choice |= meta*, scope*, guard* -interface_ordered-header.choice |= evaluation*, signature* -instance_ordered-header.choice |= qualification*, quantification*, oid? -Node_ordered-header.choice |= - metadata_ordered-header.choice, interface_ordered-header.choice, instance_ordered-header.choice -# unordered_group_dr -# Node.header &= Node_unordered.header? -# ordered_group_dr - redefine ordered_group -Node.header &= Node_ordered-header.choice? diff --git a/relaxng/modules/init_expansion_module.rnc b/relaxng/modules/init_expansion_module.rnc index b6fa1c0..35c5cf9 100644 --- a/relaxng/modules/init_expansion_module.rnc +++ b/relaxng/modules/init_expansion_module.rnc @@ -1,5 +1,5 @@ start = notAllowed -# DR patterns referenced in RR-DR, but not intialized in the DR init module +## DR patterns referenced in RR-DR, but not intialized in the DR init module Implies-node.choice |= notAllowed formula_Exists-edge.choice |= notAllowed anyElement.choice |= notAllowed @@ -13,10 +13,31 @@ declare-edge.choice |= notAllowed formula_Forall-edge.choice |= notAllowed slot-edge.choice |= notAllowed formula_Forall.content |= notAllowed -# RR patterns -formula-negation.content |= notAllowed +formula_And-query.content |= notAllowed +formula_Or-query.content |= notAllowed +slot |= notAllowed if.content |= notAllowed then.content |= notAllowed +oid |= notAllowed +repo |= notAllowed +resl |= notAllowed +slot-edge.choice |= notAllowed + +## RR patterns +formula-negation.content |= notAllowed time_primitives.content |= notAllowed spatial_primitives.content |= notAllowed interval_primitives.content |= notAllowed +arg_spatial.choice |= notAllowed +signature |= notAllowed +quantification |= notAllowed +meta |= notAllowed +guard |= notAllowed +qualification |= notAllowed +Spatial.attlist |= notAllowed +Spatial.content |= notAllowed +arg_time.choice |= notAllowed +scope |= notAllowed +evaluation |= notAllowed +else |= notAllowed +DerivationRule.content |= notAllowed diff --git a/relaxng/modules/ordered_groups_expansion_module.rnc b/relaxng/modules/ordered_groups_expansion_module.rnc new file mode 100644 index 0000000..818bbbb --- /dev/null +++ b/relaxng/modules/ordered_groups_expansion_module.rnc @@ -0,0 +1,42 @@ +namespace dc = "http://purl.org/dc/elements/1.1/" +namespace dcterms = "http://purl.org/dc/terms/" + +dc:title [ "Reaction RuleML Positional Dependence" ] +dc:version [ "1.0" ] +dc:creator [ "Tara Athan (taraathan AT gmail.com" ] +dc:creator [ "Adrian Paschke" ] +dc:subject [ "RuleML, Reaction, positional dependence" ] +dc:description [ + "The expansion module for positional dependence." +] +dc:language [ "en" ] +dcterms:rights [ "TBD" ] +dc:relation [ "http://reaction.ruleml.org" ] +start |= notAllowed +# Managing the ordered and unordered forms of the extended Node header pattern in DR +# 1. to deal with the different distribution of oid, define a new pattern for element oid that +# is added to Node.header if the oid_all module is included. +# This is a temporary fix until the oid distribution is harmonized in the next release. +# 2. to deal with the different definition of the meta element, define a new patterm for +# element meta that is added to Node.header if the meta_indexed module is included. +# This is a temporary fix until the meta distribution is harmonized in the next release. +# +# Node_ordered.header +# content model: meta* , scope* , guard* , evaluation* , signature* , qualification* , quantification* , oid? +metadata_ordered-header.choice |= meta*, scope*, guard* +interface_ordered-header.choice |= evaluation*, signature* +instance_ordered-header.choice |= qualification*, quantification*, oid? +Node_ordered-header.choice |= + metadata_ordered-header.choice, interface_ordered-header.choice, instance_ordered-header.choice +# +Node.header &= Node_ordered-header.choice? +# *** Derivation Rule content model *** +DerivationRule.content |= Implies.main, else? + + + + + + + + diff --git a/relaxng/modules/stripe_skipping_expansion_module.rnc b/relaxng/modules/stripe_skipping_expansion_module.rnc index 82d9c4d..972869e 100644 --- a/relaxng/modules/stripe_skipping_expansion_module.rnc +++ b/relaxng/modules/stripe_skipping_expansion_module.rnc @@ -6,21 +6,17 @@ dc:version [ "1.0" ] dc:creator [ "Tara Athan (taraathan AT gmail.com" ] dc:creator [ "Adrian Paschke" ] dc:subject [ "RuleML, Reaction, stripe-skipping" ] -dc:description [ - "The expansion module for stripe-skipping." -] +dc:description [ "The expansion module for stripe-skipping." ] dc:language [ "en" ] dcterms:rights [ "TBD" ] dc:relation [ "http://reaction.ruleml.org" ] start |= notAllowed - DerivationRule.content |= body_Implies.content, then.content, then.content formula-negation.choice |= formula-negation.content arg_time.choice |= time_primitives.content arg_spatial.choice |= spatial_primitives.content arg_interval.choice |= interval_primitives.content formula-quant.choice |= formula_Forall.content - - - - +# +formula_And-query-edge.choice |= formula_And-query.content +formula_Or-query-edge.choice |= formula_Or-query.content diff --git a/relaxng/modules/unordered_groups_expansion_module.rnc b/relaxng/modules/unordered_groups_expansion_module.rnc new file mode 100644 index 0000000..961a0d5 --- /dev/null +++ b/relaxng/modules/unordered_groups_expansion_module.rnc @@ -0,0 +1,55 @@ +namespace dc = "http://purl.org/dc/elements/1.1/" +namespace dcterms = "http://purl.org/dc/terms/" + +dc:title [ "Reaction RuleML Positional Independence" ] +dc:version [ "1.0" ] +dc:creator [ "Tara Athan (taraathan AT gmail.com" ] +dc:creator [ "Adrian Paschke" ] +dc:subject [ "RuleML, Reaction, positional independence" ] +dc:description [ + "The expansion module for positional independence." +] +dc:language [ "en" ] +dcterms:rights [ "TBD" ] +dc:relation [ "http://reaction.ruleml.org" ] +start |= notAllowed + +# unordered +argumentsForTime.sequence |= arg_time.choice* & repo? & slot* & resl? +# unordered +argumentsForSpatial.sequence |= arg_spatial.choice* & repo? & slot* & resl? + + + +# Node_unordered.header +# content model: meta* & scope* & guard* & evaluation* & signature* & qualification* & quantification* & oid? +# In the modules for the corresponding features +# metadata.content, interface.content, instance.content +metadata_unordered.header &= meta* +metadata_unordered.header &= scope* +metadata_unordered.header &= guard* +interface_unordered.header &= evaluation* +interface_unordered.header &= signature* +instance_unordered.header &= qualification* +instance_unordered.header &= quantification* +# special case +instance_unordered.header &= oid? +# +Node_unordered.header &= metadata_unordered.header? +Node_unordered.header &= interface_unordered.header? +Node_unordered.header &= instance_unordered.header? +# +Node.header &= Node_unordered.header? +# +arg-datt.choice |= empty + +# *** Derivation Rule content model *** +DerivationRule.content |= Implies.main & else? + + + + + + + +