### Tesselations based on simplicial domains

Both, spherical space tesselations (aka polytopes) and Euclidean space tesselations, base their reflection symmetry groups on simplicial fundamental domains. In 2D spherical geometry those are known as Schwarz triangles, in 3D they are called Goursat tetrahedra. In Euclidean space this restriction was relaxed in so far as parallel mirrors would be allowed, i.e. ones which don't intersect anymore. The submultiplicative number of the dihedral angle (i.e. the link mark) in such cases was set to ∞. This results in an offshore vertex of the former simplicial fundamental domain, drifted far away to infinity. But that's all what can happen. Now taking over this view onto hyperbolic space, already gives lots of stuff to deal with. – Even so, it should be noted, that this still is not the end of the story, there are other possibilities too.

Besides from the shape and the size of the fundamental domain, for instance its extend to infinity ("cusps"), also the extend of the tiles can be considered. For Euclidean tilings, honeycombs, etc. there are 2 classes, one using only finite tiles (polytopes of spherical geometry) but building up complexes which nonetheless fill all of Euclidean space, or alternatively those other ones, which use additionally infinitely extended tiles, i.e. euclidean tilings, honeycombs, etc. from one dimension less as building blocks within the next dimension. In hyperbolic space, there even is one case more:

1. compact:   hyperbolic tesselations using finite (spherical polytopial) tiles only
2. paracompact:   hyperbolic tesselations which additionally (to class 1) include lower dimensional euclidean tesselations as infinite tiles
3. hypercompact:   hyperbolic tesselations which additionally (to either class 1 or 2) include lower dimensional hyperbolic constituends

Finally, right from their definition, Dynkin symbols, both for the mere symmetry groups, and for the described polytopes or tesselations, are essentially based on that simplicial restriction and thus not versatile outside that very scope. (But attempts for more general Coxeter domains can be made too.)

A further class are laminates. These are built from infinite regions of a tesselation, which are made from compact tiles only. Those regions further are bounded by some infinite (pseudo) facetings, which serve as reflection, glide-reflection, etc. As such laminates belong to class 1. – Note that these facets might become real ones within class 3: There such laminar regions could occur between bollotiles (tiles of hyperbolic structure themselves). Clearly we should restrict here to cases, where these bollotiles do have exactly the same curvature as the whole tesselation. Because then those behave like hemi-facets of spherical space: One could consider the external, infinitely multiple self-blends of those tesselations, which would just blend out these bollotiles. That is, these serve as mirrors, each reflecting the laminar region. The such derived laminate accordingly is called the lamina-truncate of the un-blended structure. Both these notions were introduced by W.Krieger.

Just as for spherical geometry, the hyperbolic one has also a non-vanishing uniform curvature. Accordingly a circumradius here too is well-defined. Only that this quantity would provide purely imaginary values for hyperbolics. In fact, the formulas for radius derivation, based on a given Wythoffian Dynkin diagram (being implemented within the spreadsheet, which is provided at the download page), would work here exactly the same.

```----
2D  Tilings (up)
----
```

In this dimension any Dynkin symbol of type oPoQo would be hyperbolic, whenever 1/P + 1/Q < 1/2 (or equivalently (P-2)(Q-2) > 4). (In fact ">" within the first formula would qualify spherical, and "=" would qualify euclidean.) For convex cases, i.e. integral line mark numbers, the single euclidean solution for a loop Dynkin symbol is o3o3o3*a; no spherical does exist. Anything beyond thus qualifies as a symmetry group of hyperbolic space. As long as finite line mark numbers are used only, for this dimension we remain within the above mentioned first class. – But even the general hyperbolic case for oPoQoR*a can be formalized by 1/P + 1/Q + 1/R < 1 for any rational P,Q,R (each >1), thereby extending the above formula to cases with R<>2 as well.

With respect to the node markings we will have exactly the same cases as given explicitely in that listing for the general Schwarz triangle oPoQoR*a (providing cases and their general incidence matrices; even so there, in addition for each of those general incidence matrix cases, so far only links to spherical and euclidean space representants are provided).

#### Compact Tilings

(A nice applet for visualization of 2D hyperbolic tilings (as well as euclidean ones) is tyler. In case make sure to check "hyperbolic". In fact it was designed to work beyond triangular domains as well.)

linear ones loop ones o3o7o o3o8o ... o4o5o o4o6o ... o4o8o ... o5o5o ... o5o10o Just to provide some examplifying symmetries ... ```x3o7o o3x7o o3o7x x3x7o x3o7x o3x7x x3x7x ``` ```x3o8o o3x8o o3o8x x3x8o x3o8x o3x8x x3x8x ``` ```x4o5o o4x5o o4o5x x4x5o x4o5x o4x5x x4x5x ``` ```x4o6o o4x6o o4o6x x4x6o x4o6x o4x6x x4x6x ``` ```x4o8o o4x8o o4o8x x4x8o x4o8x o4x8x x4x8x ``` ```x5o5o o5x5o x5x5o x5o5x x5x5x ``` ```x5o10o o5x10o o5o10x x5x10o x5o10x o5x10x x5x10x ``` ```x6o6o o6x6o x6x6o x6o6x x6x6x ``` ```x8o8o o8x8o x8x8o x8o8x x8x8x ``` ```x3o3o4*a o3x3o4*a x3x3o4*a x3o3x4*a x3x3x4*a ``` ```x3o4o4*a o3o4x4*a x3x4o4*a x3o4x4*a x3x4x4*a ``` ```x3o4o5*a o3x4o5*a o3o4x5*a x3x4o5*a x3o4x5*a o3x4x5*a x3x4x5*a ``` ```x4o4o4*a x4x4o4*a x4x4x4*a ``` ```s3s7s ``` ```o3o8s x3o8s o3x8s x3x8s s3s8o s3s8x s3s8s ``` ```s4o5o s4x5o s4o5x s4x5x o4s5s x4s5s s4s5s ``` ```s4o6o s4o6x o4s6o x4s6x o4o6s x4o6s ... s4s6o s4s6x s4o6s s4o6s' o4s6s x4s6s ... s4s6s ``` ```s4o8o o4s8o o4o8s s4s8o s4o8s o4s8s s4s8s ... ``` ```s5s5s ``` ```o5o10s s5s10o s5s10s ... ``` ```s6o6o o6s6o x6s6o s6s6o s6o6s s6s6s ... ``` ```s8o8o o8s8o s8s8o s8o8s s8s8s ... ``` ```s3s3s4*a ``` ```o3o4s4*a x3o4s4*a s3s4o4*a s3s4s4*a ... ``` ```s3s4s5*a ``` ```s4o4o4*a s4s4o4*a s4s4s4*a ... ```

In contrast to the situation of euclidean space tilings for both the spherical and hyperbolical tilings the size of the tiles is fixed by the absolute geometry of the filled manifold, i.e. its curvature, and the to be used vertex figure. For instance, let P0 be a vertex of xPoQo, let P1 be the center of an adjacent edge, and P2 the center of an adjacent face (in fact a xPo), then the distances φ = P0P1, χ = P0P2, and ψ = P1P2 depend on the absolute geometry of oPoQo via

```cosh(φ) = cos(π/P) / sin(π/Q)
cosh(χ) = cot(π/P) · cot(π/Q)
cosh(ψ) = cos(π/Q) / sin(π/P)
```

Therefore xPoQo itself can be described as a tiling with edge length 2φ, having Q P-gons at each vertex, and the P-gons will have a circumradius of χ and an inradius of ψ.

The only regular star-tesselations have the symmetries o-P-o-P/2-o, here P being an odd integer greater than 5. All those star-tesselations would have density 3. (The case P = 5 already describes the spherical space tesselation or polyhedron sissid respectively gad.) In fact, x-P/2-o-P-o are derived as stellations of xPo3o. Dually, the edge-skeletons of x-P-o-P/2-o and of x3oPo are the same.

#### Paracompact Tilings

As there is just a single 1D euclidean space tiling, aze, the only wythoffian tilings of hyperbolic plane, which use euclidean tiles in addition to polygons, are based on the reflection groups oPoQoR*a, where still 1/P + 1/Q + 1/R < 1, but at least one of those link marks being infinite. Here aze then will be understood to describe an horocyclic tile (a.k.a. apeirogon).

linear ones loop ones
oPo∞o o∞o∞o oPoQo∞*a oPo∞o∞*a o∞o∞o∞*a
```x3o∞o
o3x∞o
o3o∞x
x3x∞o
x3o∞x
o3x∞x
x3x∞x

x4o∞o
o4x∞o
o4o∞x
x4x∞o
x4o∞x
o4x∞x
...
```
```x∞o∞o
o∞x∞o
x∞x∞o
x∞o∞x
x∞x∞x
```
```x3o3o∞*a
o3x3o∞*a
x3x3o∞*a
x3o3x∞*a
x3x3x∞*a

...
x4o4x∞*a
x4x4x∞*a

...
```
```x3o∞o∞*a
o3o∞x∞*a
x3x∞o∞*a
x3o∞x∞*a
x3x∞x∞*a

...
```
```x∞o∞o∞*a
x∞x∞o∞*a
x∞x∞x∞*a
```
```o3o∞s
s3s∞o
s3s∞s

o4s∞s
...
```
```s∞s∞s
```
```s3s3s∞*a

...
```
```s3s∞s∞*a

...
```
```s∞s∞s∞*a
```

(For tilings with more general fundamental domains cf. Coxeter domains.)

```----
3D  Honeycombs (up)
----
```

#### Compact Honeycombs

Here the restriction to finite tiles is much more effective, at least if being considered with respect to non-product honeycombs. For convex cases (integral line mark numbers) we only have the following 9 irreducible symmetry groups, resp. the therefrom derived listed Wythoffian hyperbolic honeycombs.

linear ones tri-dental ones
o3o5o3o o4o3o5o o5o3o5o o3o3o *b5o
```x3o5o3o
o3x5o3o
x3x5o3o
x3o5x3o
x3o5o3x
o3x5x3o
x3x5x3o
x3x5o3x
x3x5x3x
```
```x4o3o5o
o4x3o5o
o4o3x5o
o4o3o5x
x4x3o5o
x4o3x5o
x4o3o5x
o4x3x5o
o4x3o5x
o4o3x5x
x4x3x5o
x4x3o5x
x4o3x5x
o4x3x5x
x4x3x5x
```
```x5o3o5o
o5x3o5o
x5x3o5o
x5o3x5o
x5o3o5x
o5x3x5o
x5x3x5o
x5x3o5x
x5x3x5x
```
```x3o3o *b5o
o3x3o *b5o
o3o3o *b5x
x3x3o *b5o
x3o3x *b5o
x3o3o *b5x
o3x3o *b5x
x3x3x *b5o
x3x3o *b5x
x3x3x *b5x
```
```...
```
```s4o3o5o
s4o3x5o
s4o3o5x
s4o3x5x
...
```
```...
```
```...
```
loop ones
o3o3o3o4*a o3o4o3o4*a o3o3o3o5*a o3o4o3o5*a o3o5o3o5*a
```x3o3o3o4*a
o3x3o3o4*a
x3x3o3o4*a
x3o3x3o4*a
x3o3o3x4*a
o3x3x3o4*a
x3x3x3o4*a
x3x3o3x4*a
x3x3x3x4*a
```
```x3o4o3o4*a
x3x4o3o4*a
x3o4x3o4*a
x3o4o3x4*a
x3x4x3o4*a
x3x4x3x4*a
```
```x3o3o3o5*a
o3x3o3o5*a
x3x3o3o5*a
x3o3x3o5*a
x3o3o3x5*a
o3x3x3o5*a
x3x3x3o5*a
x3x3o3x5*a
x3x3x3x5*a
```
```x3o4o3o5*a
o3x4o3o5*a
x3x4o3o5*a
x3o4x3o5*a
x3o4o3x5*a
o3x4x3o5*a
x3x4x3o5*a
x3x4o3x5*a
x3x4x3x5*a
```
```x3o5o3o5*a
x3x5o3o5*a
x3o5x3o5*a
x3o5o3x5*a
x3x5x3o5*a
x3x5x3x5*a
```
```...
```
```...
```
```...
```
```...
```
```...
```

Trying to extend the class with linear Dynkin diagrams into non-convex realms, i.e. asking for compact regular star-honeycombs, would come out to be hopeless either. In fact, the actual choice of any Kepler-Poinsot polyhedron (as well for cell as for vertex figure) produces spherical curvatures only. – But this would not bother the other types of Dynkin diagram structures (nor non-compact linears)!

Also to class 1 would belong additionally all the honeycomb products of any 2D hyperbolic tiling with (an appropriate hyperbolic space version of) aze. This is due to the fact that in this product neither of the full-dimensional elements themselves (considered as bodies) remain true elements of the product (even so those could be seen as being pseudo elements thereof).

More generally the laminates belong here. The only known uniform lamina-truncates (cf. definition) are lamina-trunc( x4x3o8o ) and lamina-trunc( o8o4x *b3x ).

#### Paracompact Honeycombs

Irreducible 3D hyperbolic reflectional symmetry groups within class 2, with finite integral link marks only, would group into the following classes, which would include euclidean tilings in addition to spherical space tiles. Those noncompact hyperbolic groups can be considered over-extended forms, like the affine groups, adding a second node in sequence to the first added node, with letter names marked up by a '++' superscript.

linear ones
C2++ & G2++
tri-dental ones
B2++
loop-n-tail ones
some A2++
loop ones
D2++
2-loop ones
more A2++
simplicial ones
more A2++
```o3o6o3o

o3o4o4o
o4o4o4o
```
```o3o3o6o
o4o3o6o
o5o3o6o
o6o3o6o
```
```o3o3o *b6o

o4o4o *b3o
o4o4o *b4o
```
```o3o3o3o3*b
o4o3o3o3*b
o5o3o3o3*b
o6o3o3o3*b
```
```o3o3o3o6*a
o3o4o3o6*a
o3o5o3o6*a
o3o6o3o6*a
```
```o3o3o4o4*a
o3o4o4o4*a
o4o4o4o4*a
```
```o3o3o3o3*a3*c
```
```o3o3o3o3*a3*c *b3*d
```
```x3o6o3o
o3x6o3o
x3x6o3o
x3o6x3o
x3o6o3x
o3x6x3o
x3x6x3o
x3x6o3x
x3x6x3x

x3o4o4o
o3x4o4o
o3o4x4o
o3o4o4x
x3x4o4o
x3o4x4o
x3o4o4x
o3x4x4o
o3x4o4x
o3o4x4x
x3x4x4o
x3x4o4x
x3o4x4x
o3x4x4x
x3x4x4x

x4o4o4o
o4x4o4o
x4x4o4o
x4o4x4o
x4o4o4x
o4x4x4o
x4x4x4o
x4x4o4x
x4x4x4x
```
```o3x3o6o
o3o3x6o
o3o3o6x
...

x4o3o6o
o4o3o6x
x4o3o6x
...

o5o3o6x
...

o6x3o6o
o6x3x6o
...
```
```x3o3o *b6x
...

x4o4o *b3o
o4x4o *b3o
o4o4o *b3x
x4x4o *b3o
x4o4x *b3o
x4o4o *b3x
o4x4o *b3x
x4x4x *b3o
x4x4o *b3x
x4o4x *b3x
x4x4x *b3x

x4o4o *b4o
o4x4o *b4o
x4x4o *b4o
x4o4x *b4o
x4x4x *b4o
x4o4x *b4x
x4x4x *b4x
```
```x3o3o3o3*b
o3x3o3o3*b
o3o3x3o3*b
x3x3o3o3*b
x3o3x3o3*b
o3x3x3o3*b
o3o3x3x3*b
x3x3x3o3*b
x3o3x3x3*b
o3x3x3x3*b
x3x3x3x3*b

x4o3o3o3*b
o4x3o3o3*b
o4o3x3o3*b
x4x3o3o3*b
x4o3x3o3*b
o4x3x3o3*b
o4o3x3x3*b
x4x3x3o3*b
x4o3x3x3*b
o4x3x3x3*b
x4x3x3x3*b

x5o3o3o3*b
o5x3o3o3*b
o5o3x3o3*b
x5x3o3o3*b
x5o3x3o3*b
o5x3x3o3*b
o5o3x3x3*b
x5x3x3o3*b
x5o3x3x3*b
o5x3x3x3*b
x5x3x3x3*b

x6o3o3o3*b
o6x3o3o3*b
o6o3x3o3*b
x6x3o3o3*b
x6o3x3o3*b
o6x3x3o3*b
o6o3x3x3*b
x6x3x3o3*b
x6o3x3x3*b
o6x3x3x3*b
x6x3x3x3*b
```
```...

...

...

x3o6o3o6*a
x3x6o3o6*a
...
```
```o3o3o4x4*a
...

x3o4o4o4*a
...
o3o4x4o4*a
...

x4o4o4o4*a
x4x4o4o4*a
x4o4x4o4*a
x4x4x4o4*a
x4x4x4x4*a
```
```o3x3o3o3*a3*c
x3x3o3o3*a3*c
...
```
```x3o3o3o3*a3*c *b3*d
x3x3o3o3*a3*c *b3*d
x3x3x3o3*a3*c *b3*d
x3x3x3x3*a3*c *b3*d
```
```...

o3o4o4s
o3o4s4o
s3s4o4o **)
x3x4o4s
s3s4o4x **)
s3s4o4s'
...

s4o4o4o
o4s4o4o
s4o4s4o
s4o4o4s
...
```
```o3o3o6s
...

s4o3o6o
o4o3o6s
s4o3o6x
x4o3o6s
s4o3o6s'
...

o5o3o6s
...
```
```x3o3o *b6s
...

s4o4s *b3o
x4s4o *b3s
...

s4o4o *b4o
o4s4o *b4o
s4o4s *b4o
...
```
```s4o3o3o3*b
s4o3x3o3*b
...
```
```s3s6o3o6*a
...
```
```o3o3o4s4*a
...

o3o4s4o4*a
...

s4o4o4o4*a
s4o4s4o4*a
...
```
```...
```
```...
```

**) Even so being rescalable to equal edge lengths, those figures are only scaliform.

E.g. the linear diagrams oPoQoRo, in order to be at most paracompact, in general would require to bow under both, (P-2)(Q-2) ≤ 4 and (Q-2)(R-2) ≤ 4. Further, those numbers again can be used to derive the according geometry: Any xPoQoRo consists of xPoQo-cells only, those having edges of length 2φ, an circumradius of χ, and an inradius of ψ, where

```cosh(φ) = cos(π/P) sin(π/R) / sin(π/hQ,R)
cosh(ψ) = sin(π/P) cos(π/R) / sin(π/hP,Q)
cosh(χ) = cos(π/P) cos(π/Q) cos(π/R) / sin(π/hP,Q) sin(π/hQ,R)
with:
cos2(π/hP,Q) = cos2(π/P) + cos2(π/Q)
```

(The last equation clearly evaluates into hP,2 = Ph2,Q = Qh3,3 = 4h3,4 = h4,3 = 6h3,5 = h5,3 = 10h3,6 = h4,4 = h6,3 = ∞. Geometrically this number is related to the Petrie polygon of each of the corresponding regular polyhedra or tilings, i.e. their largest regular shadow polygon.)

#### Hypercompact Honeycombs

As any neither compact nor paracompact hyperbolic honeycomb would be hypercompact, those clearly have infinite count. So there cannot be a complete listing, not even tentatively. Only a few, randomly selected examples might follow here.

linear ones tri-dental ones loop-n-tail ones loop ones 2-loop ones Just some random examples... ```o3o4o8x o3o4o8s o3o5o10x o3o5o10s o4x4oPo (for P>4) o4s4oPo (for P>4) x4oPo4x (for P>4) s4oPo4s (for P>4) x4x3o8o ``` ```x8o4o *b3o o8o4x *b3x ``` ```o3o4x4o4*b o3o5x5o5*b ``` ```o4x4o4x4*aP*c (for P>2) o4s4o4s4*aP*c (for P>2) ``` ```x xPoQo (for any hyperbolic xPoQo) x oPxQo (for any hyperbolic oPxQo) x xPxQo (for any hyperbolic xPxQo) x xPoQx (for any hyperbolic xPoQx) x xPxQx (for any hyperbolic xPxQx) ```

(For honeycombs with more general fundamental domains cf. Coxeter domains.)

```----
4D  Tetracombs (up)
----
```

#### Compact Tetracombs

Dwelling within class 1 only, is equally restrictive here. Potential irreducible symmetries are:

o3o3o3o5o (convex) o4o3o3o5o (convex) o5o3o3o5o (convex) o3o3o5o5/2o (µ=5) o3o5o5/2o5o (µ=10) o3o3o *b3o5o (convex) o3o3o3o3o4*a (convex) linear ones ```x3o3o3o5o o3x3o3o5o o3o3x3o5o o3o3o3x5o o3o3o3o5x ... ``` ```x4o3o3o5o o4x3o3o5o o4o3x3o5o o4o3o3x5o o4o3o3o5x ... ``` ```x5o3o3o5o o5x3o3o5o o5o3x3o5o ... ``` ```x3o3o5o5/2o o3x3o5o5/2o o3o3x5o5/2o o3o3o5x5/2o o3o3o5o5/2x ... ``` ```x3o5o5/2o5o o3x5o5/2o5o o3o5x5/2o5o o3o5o5/2x5o o3o5o5/2o5x ... ``` others ```x3o3o *b3o5o o3x3o *b3o5o o3o3o *b3x5o o3o3o *b3o5x ... ``` ```x3o3o3o3o4*a o3x3o3o3o4*a o3o3x3o3o4*a ... ``` ```... ``` ```... ``` ```... ``` ```... ``` ```... ```

Only the convex symmetries are exhausted within the table. This already is enough to show that here there are exactly 5 convex regulars and 4 regular star-tetracombs within class 1.

Beyond 4D, there will be no irreducible symmetry within class 1 anymore.

#### Paracompact Tetracombs

The potential irreducible convex cases within class 2 are provided by the following groups. Those provide 2 more regular figures.

linear ones tridental ones cross ones loop-n-tail ones loop ones 2-loop ones
```o3o4o3o4o
```
```o3o3o *b4o3o
o3o4o *b3o3o
o3o4o *b3o4o
```
```o3o4o *b3o *b3o
```
```o3o3o3o3o3*b
o4o3o3o3o3*b
```
```o3o3o4o3o4*a
```
```o3o3o3o3*a3o3*c
```
```x3o4o3o4o
o3x4o3o4o
o3o4x3o4o
o3o4o3x4o
o3o4o3o4x
...
x3x4o3o4o
...

...
s3s4o3o4o
...
```
```...
```
```...
```
```...
```
```...
```
```...
```

```----
5D  Pentacombs (up)
----
```

Just providing irreducible convex symmetries. In class 1 (compact ones) there is none. In class 2 (paracompact ones) we have only

linear ones tridental ones cross ones pentadental ones loop-n-tail ones loop ones
```o3o3o3o4o3o
o3o3o4o3o3o
o3o4o3o3o4o
```
```o3o3o *b3o4o3o
o3o3o3o4o *c3o
o4o3o3o4o *c3o
```
```o3o3o *b3o *b3o3o
o3o3o *b3o *b3o4o
```
```o3o3o *b3o *b3o *b3o
```
```o3o3o3o3o3o3*b
```
```o3o3o3o3o3o4*a
o3o3o4o3o3o4*a
```
```...
o3o3o3o4s3s
s3s4o3o4o3o
```

```----
6D  Hexacombs (up)
----
```

Just providing irreducible convex symmetries. In class 1 (compact ones) there is none. In class 2 (paracompact ones) we have only

tridental ones bi-tridental ones loop-n-tail ones
```o3o3o3o3o4o *c3o
```
```o3o3o3o3o *b3o *c3o
```
```o3o3o3o3o3o3o3*b
```

```----
7D  Heptacombs (up)
----
```

Just providing irreducible convex symmetries. In class 1 (compact ones) there is none. In class 2 (paracompact ones) we have only

tridental ones bi-tridental ones loop-n-tail ones
```o3o3o3o3o3o *c3o3o
o3o3o3o3o3o4o *c3o
```
```o3o3o3o3o3o *b3o *d3o
```
```o3o3o3o3o3o3o3o3*b
```

```----
8D  Octacombs (up)
----
```

Just providing irreducible convex symmetries. In class 1 (compact ones) there is none. In class 2 (paracompact ones) we have only

tridental ones bi-tridental ones loop-n-tail ones
```o3o3o3o3o3o3o3o *c3o
o3o3o3o3o3o3o4o *c3o
```
```o3o3o3o3o3o3o *b3o *e3o
```
```o3o3o3o3o3o3o3o3o3*b
```

```----
9D  Enneacombs (up)
----
```

Just providing irreducible convex symmetries. In class 1 (compact ones) there is none. In class 2 (paracompact ones) we have only

tridental ones bi-tridental ones
```o3o3o3o3o3o3o3o3o *c3o
o3o3o3o3o3o3o3o4o *c3o
```
```o3o3o3o3o3o3o3o *b3o *f3o
```

 © 2004-2019 top of page