C = Point(xAxis)
C' = Point(xAxis)
f = OrthogonalLine(C, xAxis)
g = OrthogonalLine(C', xAxis)
C_{1} = Point(f)
D = Point(g)
c = Circle(C, C_{1})
d = Circle(C', D)
i = Line(C, C')
j = Segment(C_{1}, C)
k = Segment(D, C')
E = Intersect(c, i, 2)
l = Segment(C_{1}, E)
h = Line(C_{1}, D)
S = Intersect(i, h)
E_2 = Mirror(E, C)
m = Line(D, l)
F_2 = Intersect(m, i)
F = Mirror(F_2, C')
A = Point(i)
n = OrthogonalLine(A, i)
B_{1} = Intersect(h, n)
p = OrthogonalLine(F, i)
G = Intersect(h, p)
q = Segment(E, B_{1})
r = Line(G, q)
B = Intersect(i, r)
s = Segment(A, B_{1})
t = Segment(F, G)
a = Segment(G, B)
M = Point(d)
M_{1} = Circle(A, B, M)
I = Center(M_{1})
b = Line(I, C')
N = Mirror(M, b)
e = Line(N, M)
P = Intersect(i, e)
c_1 = Semicircle(P, C')
T = Intersect(d, c_1, 1)
f_1 = Line(T, C')
g_1 = LineBisector(A, B)
O = Intersect(f_1, g_1)
d_1 = Circle(O, A)
O' = Mirror(O, i)
e_1 = Circle(O', A)
h_1 = Segment(T, P)
D' = Mirror(D, C')
i_1 = Line(C_{1}, D')
S_2 = Intersect(i_1, i)
j_1 = OrthogonalLine(A, i)
H = Intersect(i_1, j_1)
k_1 = OrthogonalLine(E, i)
J = Intersect(k_1, i_1)
l_1 = Line(H, F_2)
m_1 = Line(J, l_1)
B_2 = Intersect(m_1, i)
M_2 = Point(d)
p_1 = Circle(A, B_2, M_2)
L = Center(p_1)
n_1 = LineBisector(A, B_2)
q_1 = Line(L, C')
N_2 = Mirror(M_2, q_1)
r_1 = Line(M_2, N_2)
P_2 = Intersect(i, r_1)
s_1 = Semicircle(C', P_2)
T_2 = Intersect(s_1, d)
t_1 = Circle(A, B_2, T_2)
O_2 = Center(t_1)
O'_2 = Mirror(O_2, i)
c_2 = Circle(O'_2, A)