Skip to the Main Content

Note:These pages make extensive use of the latest XHTML and CSS Standards. They ought to look great in any standards-compliant modern browser. Unfortunately, they will probably look horrible in older browsers, like Netscape 4.x and IE 4.x. Moreover, many posts use MathML, which is, currently only supported in Mozilla. My best suggestion (and you will thank me when surfing an ever-increasing number of sites on the web which have been crafted to use the new standards) is to upgrade to the latest version of your browser. If that's not possible, consider moving to the Standards-compliant and open-source Mozilla browser.

July 22, 2020

Octonions and the Standard Model (Part 2)

Posted by John Baez

My description of the octonions in Part 1 raised enough issues that I’d like to talk about it a bit more. I’ll show you a prettier formula for octonion multiplication in terms of 3\mathbb{C} \oplus \mathbb{C}^3… and also a very similar-looking formula for it in terms of 7\mathbb{R} \oplus \mathbb{R}^7.

Last time I took the usual construction of the quaternions from 3\mathbb{R}^3 and modified it to construct the octonions from 3\mathbb{C}^3. The key step was replacing the dot product on 3\mathbb{R}^3 by the inner product on 3\mathbb{C}^3, which is conjugate-linear in one slot.

Layra Idarani pointed out some other conventions that make the formula for multiplication more beautiful, so let me explain those here. This stuff deserves to be made beautiful.

First, we’ll make the inner product conjugate-linear in the second slot:

a,b= i=1 3a ib¯ i \langle \vec{a} , \vec{b} \rangle = \sum_{i=1}^3 a_i \overline{b}_{i}

It breaks my heart to do this: physicists do it the other way, so this is the convention preferred only by mathematicians who have never studied quantum mechanics. But life is cruel: sticking with the other convention would force me to do other unpleasant things.

Next, we define the hermitian cross product of vectors in 3\mathbb{C}^3 by

(aׯb) i=(a×b) i¯ (\vec{a} \overline{\times} \vec{b})_i = \overline{(\vec{a} \times \vec{b})_{i}}

We saw last time that this operation is invariant under SU(3)\mathrm{SU}(3), though the usual cross product is not, nor is the operation of taking the conjugate of each component of a vector.

Lastly, we’ll define a funny way of multiplying vectors in 3\mathbb{C}^3 on the right by complex numbers:

aa=a¯a \vec{a} a = \overline{a} \vec{a}

for all a,a 3a \in \mathbb{C}, \vec{a} \in \mathbb{C}^3.

The payoff for all these contortions is a very pretty formula for octonion multiplication. We’ll take elements of 3\mathbb{C} \oplus \mathbb{C}^3 and write them like a+aa + \vec{a}, where the ‘scalar part’ aa lives in \mathbb{C} and the ‘vector part’ a\vec{a} lives in 3\mathbb{C}^3. And these will be our octonions!

Theorem 2. If we define multiplication on 3\mathbb{C} \oplus \mathbb{C}^3 by (a+a)(b+b)=aba,b+ab+ab+aׯb (a + \vec{a})(b + \vec{b}) = a b - \langle \vec{a}, \vec{b}\rangle + a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b} then this space becomes a 8-dimensional normed division algebra over the real numbers, since 11 \in \mathbb{C} acts as the multiplicative identity and (a+a)(b+b)=a+ab+b \|(a + \vec{a})(b + \vec{b})\| = \|a + \vec{a}\| \|b + \vec{b}\| This normed division algebra is isomorphic to the octonions.

I’ll prove this at the end of this post. It’s almost exactly like the proof of the theorem last time, but I want everyone to be able to check it.

The idea of making 3\mathbb{C}^3 into a right \mathbb{C}-module in a nontrivial way, ‘twisted by conjugation’, may seem weird. Pragmatically speaking we do this to hide the appearance of conjugation in our formula for multiplication. But it’s actually quite natural. Let me explain why.

First of all, note that if we pick any element i𝕆i \in \mathbb{O} with i 2=1i^2 = -1, we get a copy of \mathbb{C} sitting in 𝕆\mathbb{O} as a subalgebra. 𝕆\mathbb{O} then becomes a left \mathbb{C}-module by left multiplication. This is not as obvious as it sounds, since it’s saying that

a(bx)=(ab)x a(b x) = (a b)x

for all a,b𝕆a, b \in \mathbb{C} \subseteq \mathbb{O} and x𝕆x \in \mathbb{O}. The octonions are not associative! But they are alternative — the subalgebra generated by any two elements is associative — and in the above equation aa and bb are in the subalgebra generated by ii, while xx is in the subalgebra generated by xx. So the desired equation holds!

We can similarly make 𝕆\mathbb{O} into a right \mathbb{C}-bimodule by right multiplication. Even better, 𝕆\mathbb{O} is then a ,\mathbb{C},\mathbb{C}-bimodule. The reason is that

(ax)b=a(xb) (a x)b = a(x b)

for all a,b𝕆a, b \in \mathbb{C} \subseteq \mathbb{O} and x𝕆x \in \mathbb{O}, again because the octonions are alternative.

The left and right actions of \mathbb{C} on the octonions are really different:

axxa a x \ne x a

for most aa \in \mathbb{C}, x𝕆x \in \mathbb{O}, because the octonions are noncommutative. But we can say more than just this negative statement. There’s an inner product on the octonions that’s invariant under all automorphisms, so we can pick an invariant complement VV to 𝕆\mathbb{C} \subseteq \mathbb{O}. We then have

av=va¯ a v = v \overline{a}

for aa \in \mathbb{C}, vVv \in V, because orthogonal square roots of 1-1 in the octonions anticommute.

VV is a ,\mathbb{C},\mathbb{C}-bimodule. As a left \mathbb{C}-module it’s isomorphic to 3\mathbb{C}^3 . So, we can use this idea to describe 𝕆\mathbb{O} as 3\mathbb{C} \oplus \mathbb{C}^3, and it then becomes very natural to have \mathbb{C} act on 3\mathbb{C}^3 in a ‘twisted’ way, obeying av=va¯ a v = v \overline{a}. This is exactly what we need to make 3\mathbb{C}^3 isomorphic to VV as a ,\mathbb{C},\mathbb{C}-bimodule!

It’s probably good to summarize this:

Theorem 3. Any element i𝕆i \in \mathbb{O} with i 2=1i^2 = -1 generates a subalgebra of the octonions that can be canonically identified with \mathbb{C}. Left and right multiplication by this copy of \mathbb{C} makes 𝕆\mathbb{O} into a ,\mathbb{C},\mathbb{C}-bimodule. As a ,\mathbb{C},\mathbb{C}-bimodule we then have 𝕆 3 \mathbb{O} \cong \mathbb{C} \oplus \mathbb{C}^3 where the left action of \mathbb{C} on 3 \mathbb{C} \oplus \mathbb{C}^3 is the usual one, but the right action is given by (b,b)a=(ab,a¯b) (b , \vec{b})a = (a b, \overline{a}\vec{b}) for a,b,b 3a,b \in \mathbb{C}, \vec{b} \in \mathbb{C}^3.

Finally, one more thing for today — a cute fact I’m not sure what to do with.

We can also take the octonions and split them as 7\mathbb{R} \oplus \mathbb{R}^7 where \mathbb{R} contains 11 and 7\mathbb{R}^7 contains all the ‘imaginary’ octonions: those orthogonal to 11. We can thus write any octonion as a+aa + \vec{a} where now aa \in \mathbb{R} and a 7\vec{a} \in \mathbb{R}^7. And now octonion multiplication looks like this:

(a+a)(b+b)=abab+ab+ab+a×b (a + \vec{a})(b + \vec{b}) = a b - \vec{a} \cdot \vec{b} + a \vec{b} + \vec{a} b + \vec{a} \times \vec{b}

This formula looks almost exactly like the one in the theorem! But now ab\vec{a} \cdot \vec{b} is defined using the usual dot product on 7\mathbb{R}^7, and a×b\vec{a} \times \vec{b} is defined using a funny cross product in 7 dimensions, which unfortunately is easiest to define using the octonions. So, this formula is less useful than the one in terms of 3\mathbb{C} \oplus \mathbb{C}^3 if you’re trying to get off the ground and explain the octonions from scratch.

Oh, and by the way: I wrote ab\vec{a} b in this formula just to be cute: in this real context it’s just the same as bab \vec{a}: no sneaky tricks with complex conjugation.

That’s all for today, except proving this:

Theorem 2. If we define multiplication on 3\mathbb{C} \oplus \mathbb{C}^3 by (a+a)(b+b)=aba,b+ab+ab+aׯb (a + \vec{a})(b + \vec{b}) = a b - \langle \vec{a}, \vec{b}\rangle + a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b} then this space becomes a 8-dimensional normed division algebra over the real numbers, since 11 \in \mathbb{C} acts as the multiplicative identity and (a+a)(b+b)=a+ab+b \|(a + \vec{a})(b + \vec{b})\| = \|a + \vec{a}\| \|b + \vec{b}\| This normed division algebra is isomorphic to the octonions.

Proof. It’s enough to show that we have a normed division algebra, since the octonions are the only 8-dimensional normed division algebra over the reals. We’ll use the norm with

a+a 2=|a| 2+a,a \|a + \vec{a}\|^2 = |a|^2 + \langle \vec{a} , \vec{a} \rangle

and show that

(a+a)(b+b)=a+ab+b \|(a + \vec{a})(b + \vec{b})\| = \|a + \vec{a}\| \|b + \vec{b}\|

We start with

(a+a)(b+b) 2=aba,b+ab+ab+aׯb 2 \|(a + \vec{a})(b + \vec{b})\|^2 = \|a b - \langle\vec{a}, \vec{b}\rangle + a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b} \|^2

and use the definition of the norm to break this up into two terms:

|aba,b| 2+ab+ab+aׯb 2 |a b - \langle \vec{a}, \vec{b} \rangle|^2 + \| a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b} \|^2

We can expand the first term:

|aba,b| 2=|ab| 22Re(abb,a)+|a,b| 2 |a b - \langle \vec{a}, \vec{b} \rangle|^2 = |a b|^2 - 2 \mathrm{Re}(a b \langle \vec{b} , \vec{a} \rangle) + |\langle \vec{a}, \vec{b}\rangle|^2

We can expand the second term:

ab+ab+aׯb 2= \|a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b} \|^2 = ab 2+ab 2+aׯb 2+2Re(abb,a+a¯b,aׯb+ba,aׯb) \| a \vec{b} \|^2 + \|\vec{a} b\|^2 + \|\vec{a} \overline{\times} \vec{b}\|^2 + 2 \mathrm{Re} \big(a b \langle \vec{b}, \vec{a} \rangle + \overline{a} \langle \vec{b}, \vec{a} \overline{\times} \vec{b} \rangle + b \langle \vec{a}, \vec{a} \overline{\times} \vec{b} \rangle \big)

But note that

a,aׯb=a(a×b)=0 \langle \vec{a}, \vec{a} \overline{\times} \vec{b} \rangle = \vec{a} \cdot (\vec{a} \times \vec{b}) = 0

by a well-known vector identity which works for complex vectors just as for real ones. Similarly b,aׯb=0\langle \vec{b}, \vec{a} \overline{\times} \vec{b} \rangle = 0. So, the expanded second term simplifies, and when we add it to the expanded first term the bits involving Re(abb,a)\mathrm{Re}(a b \langle \vec{b} , \vec{a} \rangle) cancel out. We’re left with this:

|ab| 2+|a,b| 2+ab 2+ab 2+aׯb 2 |a b|^2 + |\langle \vec{a}, \vec{b}\rangle|^2 + \| a \vec{b} \|^2 + \|\vec{a} b\|^2 + \|\vec{a} \overline{\times} \vec{b}\|^2

We need to show this equals

a+a 2b+b 2 = (|a| 2+a 2)(|b| 2+b 2) = |a| 2|b| 2+|a| 2b 2+|b| 2a 2+a 2b 2 \begin{array}{ccl} \|a + \vec{a} \|^2 \| b + \vec{b}\|^2 &=& (|a|^2 + \|\vec{a}\|^2) (|b|^2 + \|\vec{b}\|^2) \\ \\ &=& |a|^2 |b|^2 + |a|^2 \|\vec{b}\|^2 + |b|^2 \|\vec{a}\|^2 + \|\vec{a}\|^2 \|\vec{b}\|^2 \end{array}

Three terms match, so it’s enough to show

|a,b| 2+aׯb 2=a 2b 2 |\langle \vec{a}, \vec{b}\rangle|^2 + \|\vec{a} \overline{\times} \vec{b}\|^2 = \|\vec{a}\|^2 \|\vec{b}\|^2

This would be a familiar vector identity if we were working in 3\mathbb{R}^3 with the usual cross product instead of the mutant one. But notice, the mutant cross product is obtained from the ordinary one by componentwise complex conjugation, so

aׯb 2=a×b 2 \|\vec{a} \overline{\times} \vec{b}\|^2 = \|\vec{a} \times \vec{b}\|^2

Thus, we just need to show

|a,b| 2+a×b 2=a 2b 2 |\langle \vec{a}, \vec{b}\rangle|^2 + \|\vec{a} \times \vec{b}\|^2 = \|\vec{a}\|^2 \|\vec{b}\|^2

This works for 3\mathbb{C}^3 and its inner product exactly as it does for 3\mathbb{R}^3 and its dot product: you can either write out both sides using components and see they agree, or do a geometrical argument using the law of cosines and the law of sines.   █


  • Part 1. How to define octonion multiplication using complex scalars and vectors, much as quaternion multiplication can be defined using real scalars and vectors. This description requires singling out a specific unit imaginary octonion, and it shows that octonion multiplication is invariant under SU(3)\mathrm{SU}(3).
  • Part 2. A more polished way to think about octonion multiplication in terms of complex scalars and vectors, and a similar-looking way to describe it using the cross product in 7 dimensions.
  • Part 3. How a lepton and a quark fit together into an octonion — at least if we only consider them as representations of SU(3)\mathrm{SU}(3), the gauge group of the strong force. Proof that the symmetries of the octonions fixing an imaginary octonion form precisely the group SU(3)\mathrm{SU}(3).
  • Part 4. Introducing the exceptional Jordan algebra 𝔥 3(𝕆)\mathfrak{h}_3(\mathbb{O}): the 3×33 \times 3 self-adjoint octonionic matrices. A result of Dubois-Violette and Todorov: the symmetries of the exceptional Jordan algebra preserving their splitting into complex scalar and vector parts and preserving a copy of the 2×22 \times 2 adjoint octonionic matrices form precisely the Standard Model gauge group.
  • Part 5. How to think of 2×22 \times 2 self-adjoint octonionic matrices as vectors in 10d Minkowski spacetime, and pairs of octonions as left- or right-handed spinors.
  • Part 6. The linear transformations of the exceptional Jordan algebra that preserve the determinant form the exceptional Lie group E 6\mathrm{E}_6. How to compute this determinant in terms of 10-dimensional spacetime geometry: that is, scalars, vectors and left-handed spinors in 10d Minkowski spacetime.
  • Part 7. How to describe the Lie group E 6\mathrm{E}_6 using 10-dimensional spacetime geometry.
  • Part 8. A geometrical way to see how E 6\mathrm{E}_6 is connected to 10d spacetime, based on the octonionic projective plane.
  • Part 9. Duality in projective plane geometry, and how it lets us break the Lie group E 6\mathrm{E}_6 into the Lorentz group, left-handed and right-handed spinors, and scalars in 10d Minkowski spacetime.
Posted at July 22, 2020 7:36 PM UTC

TrackBack URL for this Entry:   https://golem.ph.utexas.edu/cgi-bin/MT-3.0/dxy-tb.fcgi/3234

9 Comments & 0 Trackbacks

Re: Octonions and the Standard Model (Part 2)

Typo:

𝕆\mathbb{O} then becomes [a] left \mathbb{C}-module by left multiplication.

Also, there seems to be one too many hyphens after “alternative”.

Posted by: Blake Stacey on July 23, 2020 8:53 AM | Permalink | Reply to this

Re: Octonions and the Standard Model (Part 2)

Thanks, fixed! I might someday turn this stuff into a paper or at least a bunch of webpages, so it’s nice to get everything corrected.

Posted by: John Baez on July 23, 2020 11:03 PM | Permalink | Reply to this

Right action on complex vector space

Here’s another take on why you should define the right action as you did.

Let AA be a kk-algebra (i.e. kk central in AA), and MM a left AA-module. Let M *:=Hom k(A,k)M^\ast := Hom_k(A,k). Then one easily makes M *M^* into a right AA-module. If we want it to be a left AA-module, we can use an anti-homomorphism ι:AA\iota: A \to A, and precompose the natural right action with that. But now (M *) *(M^\ast)^\ast has two left module structures: the natural one (dual of a right module) and the new one (which involves ι\iota twice). These will only agree if ι 2=Id\iota^2 = Id.

One reason we’d want to make the right module MM into a left module is to be able to define module morphisms MM *M\to M^*, i.e. inner products on MM.

If AA is commutative, then there’s an obvious anti-involution - the identity. But usually this isn’t available. If A=A = kGkG is a group algebra, there’s another one people like, taking gg 1g \mapsto g^{-1}, which is how we usually define “the dual of a rep of GG”. If AA is a ring of matrices, there’s transpose.

Now consider A=A = \mathbb{H}, k=k = \mathbb{R}. Up to conjugation, the only anti-involution is quaternion conjugate. If we think of the complex numbers as living in \mathbb{H}, then it’s unnatural to use ι=Id\iota=Id on \mathbb{C} - that won’t extend to \mathbb{H}. Similarly, if we use the usual 2×22\times 2 real picture of \mathbb{C}, we run into transpose as the natural anti-involution. The view here is that \mathbb{C} is “accidentally” commutative - why should matrices commute?

Using complex conjugate for ι\iota, when we try to define inner products on \mathbb{C}-modules, they are automatically sesquilinear. (They need not be positive definite; that’s not an algebraic condition.)

Posted by: Allen Knutson on July 23, 2020 1:14 PM | Permalink | Reply to this

Re: Octonions and the Standard Model (Part 2)

The chatty discursive style of a blog article is fun to read, but sometimes you don’t have the patience to pick out the theorems lurking in the chatter, so I decided to add a theorem to my post above:

Theorem 3. Any element i𝕆i \in \mathbb{O} with i 2=1i^2 = -1 generates a subalgebra of the octonions that can be canonically identified with \mathbb{C}. Left and right multiplication by this copy of \mathbb{C} makes 𝕆\mathbb{O} into a ,\mathbb{C},\mathbb{C}-bimodule. As a ,\mathbb{C},\mathbb{C}-bimodule we then have 𝕆 3 \mathbb{O} \cong \mathbb{C} \oplus \mathbb{C}^3 where the left action of \mathbb{C} on 3 \mathbb{C} \oplus \mathbb{C}^3 is the usual one, but the right action is given by (b,b)a=(ab,a¯b) (b , \vec{b})a = (a b, \overline{a}\vec{b}) for a,b,b 3a,b \in \mathbb{C}, \vec{b} \in \mathbb{C}^3.

Posted by: John Baez on July 23, 2020 11:00 PM | Permalink | Reply to this

Re: Octonions and the Standard Model (Part 2)

A bit tangentially, I’m pretty sure that you can’t construct the sedenions as 3\mathbb{H}\oplus \mathbb{H}^3 in the same manner, even accounting for all of the nonsense you have to do to get “scalar multiplication” to work out. The problem is that there is a distinguished copy of \mathbb{C} that you can pick out in the sedenions using only the associator, and unless you’re really willing to break things, 3\mathbb{H}\oplus \mathbb{H}^3 has too much symmetry going on to single out a particular copy of \mathbb{C}.

I haven’t tested out whether you can construct the sedenions as 7\mathbb{C}\oplus \mathbb{C}^7 as a twisted complexification of the octonion construction, but at least this one has a distinguished embedding of \mathbb{C} in it.

Posted by: Layra on July 24, 2020 12:21 AM | Permalink | Reply to this

Interesting norm identity?

To me it feels like there is also something interesting going one in the final form of the product of two octonions in the final proof - can’t put my finger on it exactly, but the fact that the norm sort of threads over the terms of the product terms seems vaguely significant, does it not?

Posted by: Isabel Pirsic on July 25, 2020 8:15 PM | Permalink | Reply to this

Re: Interesting norm identity?

I’m not sure what you mean by “the norm sort of threads over the terms of the product terms”. But if you’re talking about this formula

(a+a)(b+b)=aba,b+ab+ab+aׯb (a + \vec{a})(b + \vec{b}) = a b - \langle \vec{a}, \vec{b}\rangle + a \vec{b} + \vec{a} b + \vec{a} \overline{\times} \vec{b}

what’s nice is that each scalar or vector is getting multiplied by each scalar or vector in each possible way.

Posted by: John Baez on July 26, 2020 2:01 AM | Permalink | Reply to this

Re: Octonions and the Standard Model (Part 2)

I’m slightly confused by the rule

ab=b¯a\vec{a} b = \bar{b} \vec{a}

How does it actually work in components?

Because on one hand I might have (a ja_j and bb are reals, ii is the imaginary unit)

(a 1 a 2 a 3)bi=(a 1bi a 2bi a 3bi) \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b i = \begin{pmatrix} a_1 b i \\ a_2 b i \\ a_3 b i \end{pmatrix}

And on the other hand,

i(a 1 a 2 a 3)b=(ia 1b ia 2b ia 3b) -i \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b = \begin{pmatrix} - i a_1 b \\ - i a_2 b \\ - i a_3 b \end{pmatrix}

but those are supposed to be the same thing, right?

Is the right rule simply, that, if I pull an ii out of a vector, it switches sign if it’s pulled out to the left but stays the same if it’s pulled out to the right? (And in reverse if it’s pulled in)

i.e would it actually be:

i(a 1 a 2 a 3)b=(ia 1b ia 2b ia 3b)=(a 1bi a 2bi a 3bi)=(a 1 a 2 a 3)bi -i \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b = \begin{pmatrix} i a_1 b \\ i a_2 b \\ i a_3 b \end{pmatrix} = \begin{pmatrix} a_1 b i \\ a_2 b i \\ a_3 b i \end{pmatrix} = \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b i

?

Posted by: kram1032 on August 3, 2020 2:05 PM | Permalink | Reply to this

Re: Octonions and the Standard Model (Part 2)

Kram wrote:

I’m slightly confused by the rule

ab=b¯a\vec{a} b = \bar{b} \vec{a}

How does it actually work in components?

I was defining the left hand side, which is something mathematicians hardly ever write, in terms of the right-hand side, which is a standard thing. People multiply vectors on the left by scalars all the time. Here I’m using that to define a way to multiply vectors on the right by scalars.

In components I’d write ab\vec{a} b as

(a 1,a 2,a 3)b (a_1,a_2,a_3) b

and I’m defining this to mean

(b¯a 1,b¯a 2,b¯a 3) (\overline{b} a_1, \overline{b}a_2, \overline{b} a_3)

which is often written b¯a\bar{b} \vec{a}.

Is the right rule simply, that, if I pull an ii out of a vector, it switches sign if it’s pulled out to the left but stays the same if it’s pulled out to the right?

Close, but no: it stays the same if it’s pulled out to the left but switches sign if it’s pulled out to the right.

… I might have (a ja_j and bb are reals, ii is the imaginary unit)

(a 1 a 2 a 3)bi=(a 1bi a 2bi a 3bi) \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b i = \begin{pmatrix} a_1 b i \\ a_2 b i \\ a_3 b i \end{pmatrix}

No, you are not following my definition of what it means to multiply a vector on the right by bib i. When bb is real, my definition says we multiply a vector on the right by bib i by multiplying it on the left by bi- bi. So you get

(a 1 a 2 a 3)bi=(bia 1 bia 2 bia 3) \begin{pmatrix} a_1 \\ a_2 \\ a_3 \end{pmatrix} b i = \begin{pmatrix} - b i a_1 \\ -b i a_2 \\ -b i a_3 \end{pmatrix}

which is the negative of what you said.

(You’re using column vectors, I was using row vectors since they’re quicker to type, but that doesn’t make any difference here.)

Posted by: John Baez on August 3, 2020 8:52 PM | Permalink | Reply to this

Post a New Comment