]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Enable subface quadratures for triangles 18407/head
authorDominik Still <dominik.still@tum.de>
Fri, 2 May 2025 11:09:30 +0000 (13:09 +0200)
committerDominik Still <dominik.still@tum.de>
Fri, 2 May 2025 11:09:30 +0000 (13:09 +0200)
source/base/qprojector.cc
source/fe/mapping_fe.cc
tests/simplex/q_projection_02.cc [new file with mode: 0644]
tests/simplex/q_projection_02.output [new file with mode: 0644]
tests/simplex/q_projection_subfaces.cc [new file with mode: 0644]
tests/simplex/q_projection_subfaces.output [new file with mode: 0644]
tests/simplex/q_projection_subfaces_2.cc [new file with mode: 0644]
tests/simplex/q_projection_subfaces_2.output [new file with mode: 0644]

index e4f96c006e650f997fd030f56c66ece182406118..dd2bfdbbe7c1c2138ed06f7a1302aac5d055a5b4 100644 (file)
@@ -701,6 +701,8 @@ QProjector<dim>::project_to_subface(
           std::reverse(q_points.begin(), q_points.end());
           std::reverse(q_weights.begin(), q_weights.end());
         }
+      for (auto &w : q_weights)
+        w *= reference_cell.face_measure(face_no);
     }
   else if constexpr (dim == 3)
     {
@@ -806,11 +808,9 @@ Quadrature<2>
 QProjector<2>::project_to_all_subfaces(const ReferenceCell &reference_cell,
                                        const SubQuadrature &quadrature)
 {
-  if (reference_cell == ReferenceCells::Triangle ||
-      reference_cell == ReferenceCells::Tetrahedron)
-    return Quadrature<2>(); // nothing to do
-
-  Assert(reference_cell == ReferenceCells::Quadrilateral, ExcNotImplemented());
+  Assert(reference_cell == ReferenceCells::Quadrilateral ||
+           reference_cell == ReferenceCells::Triangle,
+         ExcNotImplemented());
 
   const unsigned int dim = 2;
 
@@ -1154,7 +1154,9 @@ QProjector<2>::DataSetDescriptor::subface(
   const unsigned int                 n_quadrature_points,
   const internal::SubfaceCase<2>)
 {
-  Assert(reference_cell == ReferenceCells::Quadrilateral, ExcNotImplemented());
+  Assert(reference_cell == ReferenceCells::Quadrilateral ||
+           reference_cell == ReferenceCells::Triangle,
+         ExcNotImplemented());
 
   const unsigned int n_faces = reference_cell.n_faces();
   const unsigned int n_subfaces =
index 65be199d1e0dfe862ae8dcdf751bcb51bb330987..cbb2fa2b6512b01cf9b14c1276e5297e84bce29b 100644 (file)
@@ -1468,14 +1468,16 @@ namespace internal
 
                   if (subface_no != numbers::invalid_unsigned_int)
                     {
-#if false
-                       const double area_ratio =
-                        GeometryInfo<dim>::subface_ratio(
-                          cell->subface_case(face_no), subface_no);
-                       output_data.JxW_values[i] *= area_ratio;
-#else
-                      DEAL_II_NOT_IMPLEMENTED();
-#endif
+                      if (dim == 2)
+                        {
+                          const double area_ratio =
+                            1. / cell->reference_cell()
+                                   .face_reference_cell(face_no)
+                                   .n_isotropic_children();
+                          output_data.JxW_values[i] *= area_ratio;
+                        }
+                      else
+                        DEAL_II_NOT_IMPLEMENTED();
                     }
                 }
 
diff --git a/tests/simplex/q_projection_02.cc b/tests/simplex/q_projection_02.cc
new file mode 100644 (file)
index 0000000..740e0eb
--- /dev/null
@@ -0,0 +1,141 @@
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2020 - 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+
+// Like q_projection_01 but test project_to_all_subfaces
+// Test QProjection for QGaussSimplex.
+
+
+#include <deal.II/base/qprojector.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/grid/reference_cell.h>
+
+#include "../tests.h"
+
+
+template <int dim>
+void
+test(const unsigned int)
+{
+  AssertThrow(false, ExcNotImplemented());
+}
+
+template <>
+void
+test<2>(const unsigned int n_points)
+{
+  const int dim = 2;
+
+  QGaussSimplex<dim - 1> quad_ref(n_points);
+
+  // test: QProjector::project_to_all_subfaces
+  {
+    deallog.push("project_to_all_subfaces");
+
+    const auto quad =
+      QProjector<dim>::project_to_all_subfaces(ReferenceCells::Triangle,
+                                               quad_ref);
+
+    for (unsigned int q = 0; q < quad.size(); ++q)
+      {
+        deallog << quad.point(q) << ' ';
+        deallog << quad.weight(q) << ' ';
+        deallog << std::endl;
+      }
+    deallog << std::endl;
+
+    deallog << std::endl;
+    deallog.pop();
+  }
+
+
+  // test unsigned int DataSetDescriptor::subface
+  {
+    deallog.push("DataSetDescriptor::subface");
+    const unsigned int nq = quad_ref.size();
+    for (const unsigned int face_no :
+         ReferenceCells::get_simplex<dim>().face_indices())
+      for (unsigned int o = 0; o < 2; ++o)
+        for (unsigned int subface_no = 0; subface_no < 2; ++subface_no)
+          {
+            unsigned int offset = QProjector<dim>::DataSetDescriptor::subface(
+              ReferenceCells::get_simplex<dim>(), face_no, subface_no, o, nq);
+            deallog << "Face:" << face_no << " subface:" << subface_no
+                    << " orientation:" << o << " offset:" << offset
+                    << std::endl;
+          }
+    deallog.pop();
+  }
+
+  {
+    const auto quad =
+      QProjector<dim>::project_to_all_subfaces(ReferenceCells::Triangle,
+                                               quad_ref);
+
+    const auto print = [&](const unsigned int face_no,
+                           const unsigned int subface_no,
+                           const unsigned int face_orientation) {
+      deallog << "face_no=" << face_no << " subface_no=" << subface_no
+              << " face_orientation=" << face_orientation << ':' << std::endl;
+      for (unsigned int q = 0,
+                        i = QProjector<dim>::DataSetDescriptor::subface(
+                          ReferenceCells::Triangle,
+                          face_no,
+                          subface_no,
+                          face_orientation,
+                          false,
+                          false,
+                          quad_ref.size());
+           q < quad_ref.size();
+           ++q, ++i)
+        {
+          deallog << quad.point(i) << ' ';
+          deallog << quad.weight(i) << ' ';
+          deallog << std::endl;
+        }
+      deallog << std::endl;
+    };
+
+    // Loop over faces and loop over subfaces
+    for (unsigned int i = 0; i < 3; ++i)
+      for (unsigned int j = 0; j < 2; ++j)
+        {
+          print(i, j, 0);
+          print(i, j, 1);
+        }
+  }
+}
+
+int
+main()
+{
+  initlog();
+
+  {
+    deallog.push("2d-1");
+    test<2>(1);
+    deallog.pop();
+  }
+  {
+    deallog.push("2d-2");
+    test<2>(2);
+    deallog.pop();
+  }
+  {
+    deallog.push("2d-3");
+    test<2>(3);
+    deallog.pop();
+  }
+}
diff --git a/tests/simplex/q_projection_02.output b/tests/simplex/q_projection_02.output
new file mode 100644 (file)
index 0000000..a7796e3
--- /dev/null
@@ -0,0 +1,259 @@
+
+DEAL:2d-1:project_to_all_subfaces::0.250000 0.00000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.750000 0.00000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.750000 0.00000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.250000 0.00000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.750000 0.250000 1.41421 
+DEAL:2d-1:project_to_all_subfaces::0.250000 0.750000 1.41421 
+DEAL:2d-1:project_to_all_subfaces::0.250000 0.750000 1.41421 
+DEAL:2d-1:project_to_all_subfaces::0.750000 0.250000 1.41421 
+DEAL:2d-1:project_to_all_subfaces::0.00000 0.750000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.00000 0.250000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.00000 0.250000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::0.00000 0.750000 1.00000 
+DEAL:2d-1:project_to_all_subfaces::
+DEAL:2d-1:project_to_all_subfaces::
+DEAL:2d-1:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:2d-1:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:1
+DEAL:2d-1:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:2
+DEAL:2d-1:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:3
+DEAL:2d-1:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:4
+DEAL:2d-1:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:5
+DEAL:2d-1:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:6
+DEAL:2d-1:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:7
+DEAL:2d-1:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:8
+DEAL:2d-1:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:9
+DEAL:2d-1:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:10
+DEAL:2d-1:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:11
+DEAL:2d-1::face_no=0 subface_no=0 face_orientation=0:
+DEAL:2d-1::0.750000 0.00000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=0 subface_no=0 face_orientation=1:
+DEAL:2d-1::0.250000 0.00000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=0 subface_no=1 face_orientation=0:
+DEAL:2d-1::0.250000 0.00000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=0 subface_no=1 face_orientation=1:
+DEAL:2d-1::0.750000 0.00000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=1 subface_no=0 face_orientation=0:
+DEAL:2d-1::0.250000 0.750000 1.41421 
+DEAL:2d-1::
+DEAL:2d-1::face_no=1 subface_no=0 face_orientation=1:
+DEAL:2d-1::0.750000 0.250000 1.41421 
+DEAL:2d-1::
+DEAL:2d-1::face_no=1 subface_no=1 face_orientation=0:
+DEAL:2d-1::0.750000 0.250000 1.41421 
+DEAL:2d-1::
+DEAL:2d-1::face_no=1 subface_no=1 face_orientation=1:
+DEAL:2d-1::0.250000 0.750000 1.41421 
+DEAL:2d-1::
+DEAL:2d-1::face_no=2 subface_no=0 face_orientation=0:
+DEAL:2d-1::0.00000 0.250000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=2 subface_no=0 face_orientation=1:
+DEAL:2d-1::0.00000 0.750000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=2 subface_no=1 face_orientation=0:
+DEAL:2d-1::0.00000 0.750000 1.00000 
+DEAL:2d-1::
+DEAL:2d-1::face_no=2 subface_no=1 face_orientation=1:
+DEAL:2d-1::0.00000 0.250000 1.00000 
+DEAL:2d-1::
+DEAL:2d-2:project_to_all_subfaces::0.105662 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.394338 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.605662 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.894338 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.894338 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.605662 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.394338 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.105662 0.00000 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.894338 0.105662 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.605662 0.394338 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.394338 0.605662 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.105662 0.894338 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.105662 0.894338 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.394338 0.605662 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.605662 0.394338 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.894338 0.105662 0.707107 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.894338 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.605662 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.394338 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.105662 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.105662 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.394338 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.605662 0.500000 
+DEAL:2d-2:project_to_all_subfaces::0.00000 0.894338 0.500000 
+DEAL:2d-2:project_to_all_subfaces::
+DEAL:2d-2:project_to_all_subfaces::
+DEAL:2d-2:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:2d-2:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:2
+DEAL:2d-2:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:4
+DEAL:2d-2:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:6
+DEAL:2d-2:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:8
+DEAL:2d-2:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:10
+DEAL:2d-2:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:12
+DEAL:2d-2:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:14
+DEAL:2d-2:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:16
+DEAL:2d-2:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:18
+DEAL:2d-2:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:20
+DEAL:2d-2:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:22
+DEAL:2d-2::face_no=0 subface_no=0 face_orientation=0:
+DEAL:2d-2::0.894338 0.00000 0.500000 
+DEAL:2d-2::0.605662 0.00000 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=0 subface_no=0 face_orientation=1:
+DEAL:2d-2::0.105662 0.00000 0.500000 
+DEAL:2d-2::0.394338 0.00000 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=0 subface_no=1 face_orientation=0:
+DEAL:2d-2::0.394338 0.00000 0.500000 
+DEAL:2d-2::0.105662 0.00000 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=0 subface_no=1 face_orientation=1:
+DEAL:2d-2::0.605662 0.00000 0.500000 
+DEAL:2d-2::0.894338 0.00000 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=1 subface_no=0 face_orientation=0:
+DEAL:2d-2::0.105662 0.894338 0.707107 
+DEAL:2d-2::0.394338 0.605662 0.707107 
+DEAL:2d-2::
+DEAL:2d-2::face_no=1 subface_no=0 face_orientation=1:
+DEAL:2d-2::0.894338 0.105662 0.707107 
+DEAL:2d-2::0.605662 0.394338 0.707107 
+DEAL:2d-2::
+DEAL:2d-2::face_no=1 subface_no=1 face_orientation=0:
+DEAL:2d-2::0.605662 0.394338 0.707107 
+DEAL:2d-2::0.894338 0.105662 0.707107 
+DEAL:2d-2::
+DEAL:2d-2::face_no=1 subface_no=1 face_orientation=1:
+DEAL:2d-2::0.394338 0.605662 0.707107 
+DEAL:2d-2::0.105662 0.894338 0.707107 
+DEAL:2d-2::
+DEAL:2d-2::face_no=2 subface_no=0 face_orientation=0:
+DEAL:2d-2::0.00000 0.105662 0.500000 
+DEAL:2d-2::0.00000 0.394338 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=2 subface_no=0 face_orientation=1:
+DEAL:2d-2::0.00000 0.894338 0.500000 
+DEAL:2d-2::0.00000 0.605662 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=2 subface_no=1 face_orientation=0:
+DEAL:2d-2::0.00000 0.605662 0.500000 
+DEAL:2d-2::0.00000 0.894338 0.500000 
+DEAL:2d-2::
+DEAL:2d-2::face_no=2 subface_no=1 face_orientation=1:
+DEAL:2d-2::0.00000 0.394338 0.500000 
+DEAL:2d-2::0.00000 0.105662 0.500000 
+DEAL:2d-2::
+DEAL:2d-3:project_to_all_subfaces::0.0563508 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.250000 0.00000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.443649 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.556351 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.750000 0.00000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.943649 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.943649 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.750000 0.00000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.556351 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.443649 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.250000 0.00000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.0563508 0.00000 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.943649 0.0563508 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.750000 0.250000 0.628539 
+DEAL:2d-3:project_to_all_subfaces::0.556351 0.443649 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.443649 0.556351 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.250000 0.750000 0.628539 
+DEAL:2d-3:project_to_all_subfaces::0.0563508 0.943649 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.0563508 0.943649 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.250000 0.750000 0.628539 
+DEAL:2d-3:project_to_all_subfaces::0.443649 0.556351 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.556351 0.443649 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.750000 0.250000 0.628539 
+DEAL:2d-3:project_to_all_subfaces::0.943649 0.0563508 0.392837 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.943649 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.750000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.556351 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.443649 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.250000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.0563508 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.0563508 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.250000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.443649 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.556351 0.277778 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.750000 0.444444 
+DEAL:2d-3:project_to_all_subfaces::0.00000 0.943649 0.277778 
+DEAL:2d-3:project_to_all_subfaces::
+DEAL:2d-3:project_to_all_subfaces::
+DEAL:2d-3:DataSetDescriptor::subface::Face:0 subface:0 orientation:0 offset:0
+DEAL:2d-3:DataSetDescriptor::subface::Face:0 subface:1 orientation:0 offset:3
+DEAL:2d-3:DataSetDescriptor::subface::Face:0 subface:0 orientation:1 offset:6
+DEAL:2d-3:DataSetDescriptor::subface::Face:0 subface:1 orientation:1 offset:9
+DEAL:2d-3:DataSetDescriptor::subface::Face:1 subface:0 orientation:0 offset:12
+DEAL:2d-3:DataSetDescriptor::subface::Face:1 subface:1 orientation:0 offset:15
+DEAL:2d-3:DataSetDescriptor::subface::Face:1 subface:0 orientation:1 offset:18
+DEAL:2d-3:DataSetDescriptor::subface::Face:1 subface:1 orientation:1 offset:21
+DEAL:2d-3:DataSetDescriptor::subface::Face:2 subface:0 orientation:0 offset:24
+DEAL:2d-3:DataSetDescriptor::subface::Face:2 subface:1 orientation:0 offset:27
+DEAL:2d-3:DataSetDescriptor::subface::Face:2 subface:0 orientation:1 offset:30
+DEAL:2d-3:DataSetDescriptor::subface::Face:2 subface:1 orientation:1 offset:33
+DEAL:2d-3::face_no=0 subface_no=0 face_orientation=0:
+DEAL:2d-3::0.943649 0.00000 0.277778 
+DEAL:2d-3::0.750000 0.00000 0.444444 
+DEAL:2d-3::0.556351 0.00000 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=0 subface_no=0 face_orientation=1:
+DEAL:2d-3::0.0563508 0.00000 0.277778 
+DEAL:2d-3::0.250000 0.00000 0.444444 
+DEAL:2d-3::0.443649 0.00000 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=0 subface_no=1 face_orientation=0:
+DEAL:2d-3::0.443649 0.00000 0.277778 
+DEAL:2d-3::0.250000 0.00000 0.444444 
+DEAL:2d-3::0.0563508 0.00000 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=0 subface_no=1 face_orientation=1:
+DEAL:2d-3::0.556351 0.00000 0.277778 
+DEAL:2d-3::0.750000 0.00000 0.444444 
+DEAL:2d-3::0.943649 0.00000 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=1 subface_no=0 face_orientation=0:
+DEAL:2d-3::0.0563508 0.943649 0.392837 
+DEAL:2d-3::0.250000 0.750000 0.628539 
+DEAL:2d-3::0.443649 0.556351 0.392837 
+DEAL:2d-3::
+DEAL:2d-3::face_no=1 subface_no=0 face_orientation=1:
+DEAL:2d-3::0.943649 0.0563508 0.392837 
+DEAL:2d-3::0.750000 0.250000 0.628539 
+DEAL:2d-3::0.556351 0.443649 0.392837 
+DEAL:2d-3::
+DEAL:2d-3::face_no=1 subface_no=1 face_orientation=0:
+DEAL:2d-3::0.556351 0.443649 0.392837 
+DEAL:2d-3::0.750000 0.250000 0.628539 
+DEAL:2d-3::0.943649 0.0563508 0.392837 
+DEAL:2d-3::
+DEAL:2d-3::face_no=1 subface_no=1 face_orientation=1:
+DEAL:2d-3::0.443649 0.556351 0.392837 
+DEAL:2d-3::0.250000 0.750000 0.628539 
+DEAL:2d-3::0.0563508 0.943649 0.392837 
+DEAL:2d-3::
+DEAL:2d-3::face_no=2 subface_no=0 face_orientation=0:
+DEAL:2d-3::0.00000 0.0563508 0.277778 
+DEAL:2d-3::0.00000 0.250000 0.444444 
+DEAL:2d-3::0.00000 0.443649 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=2 subface_no=0 face_orientation=1:
+DEAL:2d-3::0.00000 0.943649 0.277778 
+DEAL:2d-3::0.00000 0.750000 0.444444 
+DEAL:2d-3::0.00000 0.556351 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=2 subface_no=1 face_orientation=0:
+DEAL:2d-3::0.00000 0.556351 0.277778 
+DEAL:2d-3::0.00000 0.750000 0.444444 
+DEAL:2d-3::0.00000 0.943649 0.277778 
+DEAL:2d-3::
+DEAL:2d-3::face_no=2 subface_no=1 face_orientation=1:
+DEAL:2d-3::0.00000 0.443649 0.277778 
+DEAL:2d-3::0.00000 0.250000 0.444444 
+DEAL:2d-3::0.00000 0.0563508 0.277778 
+DEAL:2d-3::
diff --git a/tests/simplex/q_projection_subfaces.cc b/tests/simplex/q_projection_subfaces.cc
new file mode 100644 (file)
index 0000000..b55672b
--- /dev/null
@@ -0,0 +1,143 @@
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2020 - 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+
+// Test FESubfaceValues for different subface quadrature rules on triangles.
+
+
+#include <deal.II/base/function_lib.h>
+#include <deal.II/base/qprojector.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/reference_cell.h>
+
+#include <deal.II/hp/q_collection.h>
+
+#include <deal.II/numerics/vector_tools.h>
+
+#include "../tests.h"
+
+#include "./simplex_grids.h"
+
+template <int dim>
+void
+test()
+{}
+
+template <>
+void
+test<2>()
+{
+  const unsigned int dim = 2;
+
+  // test FESubFaceValues for FE_SimplexP
+  {
+    deallog.push("FESubFaceValues");
+    const hp::QCollection<dim - 1> quad_ref(QGaussSimplex<dim - 1>(1),
+                                            QGaussSimplex<dim - 1>(2),
+                                            QGaussSimplex<dim - 1>(3),
+                                            QGaussSimplex<dim - 1>(4));
+
+    MappingFE<dim>   mapping(FE_SimplexP<dim>(1));
+    FE_SimplexP<dim> fe(3);
+
+    const UpdateFlags flags =
+      update_values | update_quadrature_points | update_JxW_values;
+
+    Triangulation<dim> tria;
+    GridGenerator::subdivided_hyper_cube_with_simplices(tria, 1);
+    tria.begin_active()->set_refine_flag(
+      RefinementCase<dim>::isotropic_refinement);
+    tria.execute_coarsening_and_refinement();
+
+    DoFHandler<dim> dof_handler(tria);
+    dof_handler.distribute_dofs(fe);
+
+    Vector<double> vector_0(dof_handler.n_dofs());
+    Vector<double> vector_1(dof_handler.n_dofs());
+
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({1., 0.})),
+                             vector_0);
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({0., 1.})),
+                             vector_1);
+
+    std::vector<double> values_0, values_1;
+
+    for (unsigned int current_quad = 0; current_quad < quad_ref.size();
+         ++current_quad)
+      {
+        FESubfaceValues<dim> fe_face_values(mapping,
+                                            fe,
+                                            quad_ref[current_quad],
+                                            flags);
+
+        for (const auto &cell : dof_handler.active_cell_iterators())
+          for (const auto face_no : cell->face_indices())
+            for (unsigned int subface_no = 0; subface_no < 2; ++subface_no)
+              {
+                fe_face_values.reinit(cell, face_no, subface_no);
+
+                values_0.resize(fe_face_values.n_quadrature_points);
+                values_1.resize(fe_face_values.n_quadrature_points);
+
+                fe_face_values.get_function_values(vector_0, values_0);
+                fe_face_values.get_function_values(vector_1, values_1);
+
+                for (unsigned int q = 0; q < values_0.size(); ++q)
+                  {
+                    if (std::abs(values_0[q] -
+                                 fe_face_values.quadrature_point(q)[0]) < 1e-12)
+                      deallog << "Ok"
+                              << " ";
+                    else
+                      deallog << "False"
+                              << " ";
+
+                    if (std::abs(values_1[q] -
+                                 fe_face_values.quadrature_point(q)[1]) < 1e-12)
+                      deallog << "Ok"
+                              << " ";
+                    else
+                      deallog << "False"
+                              << " ";
+                    deallog << std::endl;
+                  }
+              }
+      }
+    deallog << std::endl;
+  }
+}
+
+
+int
+main()
+{
+  initlog();
+
+  deallog.push("dim=2");
+  test<2>();
+  deallog.pop();
+}
diff --git a/tests/simplex/q_projection_subfaces.output b/tests/simplex/q_projection_subfaces.output
new file mode 100644 (file)
index 0000000..eda804d
--- /dev/null
@@ -0,0 +1,302 @@
+
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::
diff --git a/tests/simplex/q_projection_subfaces_2.cc b/tests/simplex/q_projection_subfaces_2.cc
new file mode 100644 (file)
index 0000000..27a2048
--- /dev/null
@@ -0,0 +1,197 @@
+// ------------------------------------------------------------------------
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+// Copyright (C) 2020 - 2025 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// Part of the source code is dual licensed under Apache-2.0 WITH
+// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
+// governing the source code and code contributions can be found in
+// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
+//
+// ------------------------------------------------------------------------
+
+
+// Test FESubfaceValues for different subface quadrature rules on a mixed mesh.
+
+
+#include <deal.II/base/function_lib.h>
+#include <deal.II/base/qprojector.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_simplex_p.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/fe/fe_values.h>
+#include <deal.II/fe/mapping_fe.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/reference_cell.h>
+
+#include <deal.II/hp/fe_collection.h>
+#include <deal.II/hp/fe_values.h>
+#include <deal.II/hp/mapping_collection.h>
+#include <deal.II/hp/q_collection.h>
+
+#include <deal.II/numerics/vector_tools.h>
+
+#include "../tests.h"
+
+#include "./simplex_grids.h"
+
+template <int dim>
+void
+test(const unsigned int n_q)
+{}
+
+template <>
+void
+test<2>(const unsigned int n_q)
+{
+  const unsigned int dim = 2;
+
+  // test FESubFaceValues for mixed meshes
+  {
+    deallog.push("FESubFaceValues");
+    QGaussSimplex<dim - 1>         quad_simplex(n_q);
+    QGauss<dim - 1>                quad_q(n_q);
+    const hp::QCollection<dim - 1> quad_ref(quad_simplex, quad_q);
+
+    hp::MappingCollection<dim> mapping(MappingFE<dim>(FE_SimplexP<dim>(1)),
+                                       MappingQ1<dim>());
+    hp::FECollection<dim>      fe(FE_SimplexP<dim>(3), FE_Q<dim>(3));
+
+    const UpdateFlags flags =
+      update_values | update_quadrature_points | update_JxW_values;
+
+    Triangulation<dim> tria;
+    {
+      std::vector<Point<dim>>    vertices;
+      std::vector<CellData<dim>> cells;
+      // determine cell sizes
+      const Point<dim> dx(0.25, 0.25);
+
+      // create vertices
+      for (unsigned int j = 0; j <= 4; ++j)
+        for (unsigned int i = 0; i <= 4; ++i)
+          vertices.push_back(Point<dim>(dx[0] * i, dx[1] * j));
+
+      // create cells
+      for (unsigned int j = 0; j < 4; ++j)
+        for (unsigned int i = 0; i < 4; ++i)
+          {
+            // create reference QUAD cell
+            std::array<unsigned int, 4> quad{{
+              (j + 0) * (4 + 1) + i + 0, //
+              (j + 0) * (4 + 1) + i + 1, //
+              (j + 1) * (4 + 1) + i + 0, //
+              (j + 1) * (4 + 1) + i + 1  //
+            }};                          //
+
+            if (j < 4 / 2 && i < 4 / 2)
+              {
+                CellData<dim> quad_;
+                quad_.vertices = {quad[0], quad[3], quad[1], quad[2]};
+                cells.push_back(quad_);
+
+                continue;
+              }
+
+            // TRI cell 0
+            {
+              CellData<dim> tri;
+              tri.vertices = {quad[0], quad[1], quad[2]};
+              cells.push_back(tri);
+            }
+
+            // TRI cell 1
+            {
+              CellData<dim> tri;
+              tri.vertices = {quad[3], quad[2], quad[1]};
+              cells.push_back(tri);
+            }
+          }
+      tria.create_triangulation(vertices, cells, SubCellData());
+    }
+
+    DoFHandler<dim> dof_handler(tria);
+    for (const auto &cell : dof_handler.active_cell_iterators())
+      {
+        if (cell->reference_cell() == ReferenceCells::Triangle)
+          cell->set_active_fe_index(0);
+        else
+          cell->set_active_fe_index(1);
+      }
+    dof_handler.distribute_dofs(fe);
+
+
+    Vector<double> vector_0(dof_handler.n_dofs());
+    Vector<double> vector_1(dof_handler.n_dofs());
+
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({1., 0.})),
+                             vector_0);
+    VectorTools::interpolate(mapping,
+                             dof_handler,
+                             Functions::Monomial<dim, double>(
+                               Tensor<1, dim, double>({0., 1.})),
+                             vector_1);
+
+    std::vector<double>      values_0, values_1;
+    hp::FESubfaceValues<dim> hp_fe_subface_values(mapping, fe, quad_ref, flags);
+
+    for (const auto &cell : dof_handler.active_cell_iterators())
+      for (const auto face_no : cell->face_indices())
+        for (unsigned int subface_no = 0; subface_no < 2; ++subface_no)
+          {
+            hp_fe_subface_values.reinit(cell, face_no, subface_no);
+            const FESubfaceValues<dim> &fe_face_values =
+              hp_fe_subface_values.get_present_fe_values();
+
+            values_0.resize(
+              hp_fe_subface_values.get_quadrature_collection()[0].size());
+            values_1.resize(
+              hp_fe_subface_values.get_quadrature_collection()[1].size());
+
+            fe_face_values.get_function_values(vector_0, values_0);
+            fe_face_values.get_function_values(vector_1, values_1);
+
+            for (unsigned int q = 0; q < values_0.size(); ++q)
+              {
+                if (std::abs(values_0[q] -
+                             fe_face_values.quadrature_point(q)[0]) < 1e-12)
+                  deallog << "Ok"
+                          << " ";
+                else
+                  deallog << "False"
+                          << " ";
+
+                if (std::abs(values_1[q] -
+                             fe_face_values.quadrature_point(q)[1]) < 1e-12)
+                  deallog << "Ok"
+                          << " ";
+                else
+                  deallog << "False"
+                          << " ";
+                deallog << std::endl;
+              }
+          }
+    deallog << std::endl;
+    deallog.pop();
+  }
+}
+
+
+int
+main()
+{
+  initlog();
+
+  deallog.push("dim=2");
+  for (unsigned int q = 1; q < 5; ++q)
+    test<2>(q);
+  deallog.pop();
+}
diff --git a/tests/simplex/q_projection_subfaces_2.output b/tests/simplex/q_projection_subfaces_2.output
new file mode 100644 (file)
index 0000000..caed849
--- /dev/null
@@ -0,0 +1,1765 @@
+
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::Ok Ok 
+DEAL:dim=2:FESubFaceValues::

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.