|
Logos Foundation Flanders Robotics |
|
<Ekla>
Version 1.0 |
<Ekla>
Instrument:
This small clarinet must be dated in the very first half of the 19th century. The lowest note it sounds now is F# (midi note 54) . This would lead us to assume it is a quite rare D-clarinet, however taking into account the pitch in the time of its construction, it most likely is an Eb instrument with a diapason somewhere around 415Hz. On the instrument no signs of the maker could be found. Our colleage dr.Ignace De Keyser agrees on this and tends to date it around or before 1820.
The mouthpiece on the picture is most
certainly not original as mouthpieces from that time used to be in wood and
used twine or rope to secure the reed to the mouthpiece. We bought the instrument
in the mid seventies from the Maheu woodwind workshop in Ghent. We know for
sure -as they told us- it was not made by them, but brought in for repair by
a client that passed away and then never picked it up.
Automating the fingering requires 7 valve-solenoids for the open tone holes and 5 for the valves, 4 closed at rest, 1 open. The fingering table ought to be like this:

Tuning:
The clarinet was automated using the same mechanism as developed earlier for robots such as <Asa>, <Fa>, <Ob> and <Autosax>. Thus it uses a membrane compressor and an acoustic impedance convertor with a capillary to drive the following air column into resonance.
The diapason can be selected and/or adjusted using controller 20. By default the clarinet plays in equal temperament with a diapason set to A = 440Hz. The range corresponding to that of a (quite rare) high pitched D-clarinet.
Excitation:
Acoustic researchers for a long time have been looking into methods to capture the source of the vibration in wind instrument mouth pieces. Practical methods to measure and record the vibration of lips or reeds on wind instruments directly, never lead to convincing results, as the transducers required for measurement influence normal sound production to a great extend. Hence our idea to derive the vibration of the excitation source indirectly. A now verified method to generate the required wave-form lookup tables for driving the membrane compressor coupled to the impedance convertor we developed and tested thoroughly in 2020 for robots such as <Flut>, <Autosax>, <So>, <Hunt>, <Teno>, <Cornalto>, <Trumpeter> and now also <Ekla> consists of the following steps:
1. Excite the membrane compressor with a waveform (at least 4 periods are required and these must be looped in the firmware) corresponding to what you would like the robot to sound like. Lets call it WavIn(). This waveform must be without any modulation and recorded in an anechoic chamber using high quality microphones at a distance not larger than the size of the sound source. This signal can best be derived from a recording of the instrument, played in the traditional way. So, it should be recorded prior to modifications required to build the actual robotic instrument. Make sure you record sound samples for a large series of different notes in different dynamics and registers as excitation waveforms differ greatly in function of these parameters.
2.- Record the sound of the robot, using a high quality condenser microphone, with this excitation and convert it to a format suitable for the microprocessor selected. Lets call this waveform WavOut() . Make sure the sizes of WavIN() and WavOut() are the same and take care to align the phase as well as possible. Normalization is also required. This is a quite tedious job, in particular for instruments where the contribution of the instrument to the sound result is relatively small as compared to that of the playing style, the mouthpiece etc. For the saxophone this is noticeably the case, whereas we had less problems in this respect with the oboe and the flute. The clarinet comes in somewhere in-between.
3.- Calculate the required excitation waveform as: WavEx() = (2 * WavIn()) - WavOut(), in the time domain. Normalize this wave and remove any DC components. This wave now is a model of the excitation wave deprived from the influence of the instrument. Of course this cannot be fully true, as it doesn't take into account the mutual coupling of excitation and instrument. However, the model does work quite well on practical robots if enough waves are prepared to cover the different registers and dynamic levels.
4.- Reprogram the microprocessor to use WavEx() as an excitation waveform for as many notes and dynamics as the microprocessor can cope with.
This method was also applied in the construction of the <Flut> and version 3 of the <So> robot in 2020. Of course, the procedure ought to be performed for a note in each register the instrument is supposed to sound. It would be ideal -but tedious- to follow this procedure for each individual note. However, the microprocessor used should than have a very large memory. The 16 bit 24EP256MC202 type used for the <Ekla> robot, is limited to 32kBytes, enough for a maximum of 20 wavetables, 1024 bytes each.
The theory behind this approach is that the excitation-wave should correspond as much as possible with the vibration of the lips or reeds that cause the vibration in the instrument. As it is nearly impossible to capture this vibration by direct methods, we reason that the sound produced by the instrument is the sum of the excitation and whatever the instrument adds (or omits) to it. Thus, by sending a sample of the normally produced sound to the membrane compressor, we should get the excitation wave plus twofold the contribution of the instrument. By calculation of WavEx() = (2 * WavIn()) - WavOut() we get a model of the excitation wave. When studying and analyzing waveforms produced by real instruments, you will notice that in fact no two periods are the same, neither in shape, neither in length. That's why we take a minimum of four full periods. Do not use more than say 16 periods though, because it may introduce subharmonics, if not even rhythmical pulsation in the sound on long sustained notes. With four periods, you get a very soft subharmonic two octaves below the sounding pitch. For this reason we always add a tiny amount of jitter to the sampling rate. In theory it should be a Gaussean, but in practice straight random jitter over a narrow range leeds to very acceptable results. No two periods have exactly the same length, just as in humanly played wind instruments.
Construction:
This small clarinet can move slowly forwards up and down. A controller (#10) can be used to steer motor speed. The low PWM base frequency can be controlled with controller #67. It is mounted on a sturdy 3-wheel base. The front wheel has a brake. This brake should be set whenever the motor is in use as otherwize the robot may move on stage.
Midi implementation and mapping:

The midi channel <Ekla> listens to is 6 (If counting from 1, this would be channel 7).
Lights:
note 120: Red light under the robot (velo byte steers the flashing speed)
note 121: Tungsten light (can be dimmed, using the velo byte)
note 122:
note 123: White LED light strip on the front (velo steers flashing speed)
note 124:
note 125:.'Logos' display in front. Automated with motor movement.
Motor: automated movement if controller 69 is set. If controller 10 is set to zero, the motor will not run at all.
Controllers:
#1: controller 1: Wind noise in the sound of the clarinet [default setting
30]
#2: controller 2: Vibrato delay time after note-on [default is 48 for a delay
time of 375 ms]
#3: controller 3: Vibrato depth for the clarinet [default setting 8]
#4: controller 4: vibrato speed for the clarinet [default setting 94]
#5: controller 5: tremolo depth (amplitude modulation) for the clarinet [default
setting 4, high values give flatterzunge]]
#6: controller 6: tremolo speed for the clarinet . [default setting 20]
#7: controller 7: volume control - global volume controller for the clarinet.[default
setting mp 80]
#10: Motor speed. Default value is 25..
#15: controller 15 - ADSR time scaling for the clarinet [default setting: 30]
#16: controller 16 - attack time controller [default setting: 20]
#17: controller 17 - attack level controller [default setting 100]
#18: controller 18 - decay time controller [default setting 8]
#19: controller 19 - release time controller (release time can also be controlled
with the release byte of a note-off command) [default setting 110]
The interdepencies for the controllers 7, 15, 16, 17, 18 and 19 are shown in
the graph below (It's the same graph as for <Teno> since the <Ekla>
implementation is the same:
#20: controller 20 - tuning for the clarinet. By default equal temperament and A = 440 Hz for value 64.
#40: This controller selects the waveform lookup for the chalumeau register
53 to 65 . Possible values are 0 to 10. Default value is 2.
#41: This controller selects the waveform lookup for the throat register 66
to 73. Possible values are 0 to 10. Default value is 2.
#42: This controller selects the waveform lookup for the clarion register 74
to 88. Possible values are 0 to 10. Default value is 2.
#43: This controller selects the waveform lookup for the register 89 to 105.
Possible values are 0 to 10. Default value is 2.
#66: Power on / off. This command also resets all controllers to their default
cold-boot values.
#67: Motor slow pwm period. Values 0 to 4. Other values are disregarded.
#69: Enable or disable automation of the eye-lights and
the motor. Default value : > 0, ON. To switch this off, send controller with
value = 0.
#80: Dynamic range controller. Default is 32 for 30 dB dynamic range.
#104: sets the symmetry parameter for the square wave
[default value is 42]
#105: parameter for dirty sine wave [default value = 35]
#106: noisyness parameter for the dirty sinewave [default value = 40].
#123: All notes off
Note: controllers 20, 40,42,42,43,104,105,106 should never we sent whilst notes are playing! It may cause a crash on the wave generator board.
pitch bend: range 1 semitone (-50 to + 50 cents) [note that pitch-bend must follow a note-on].
| subject to changes during the building process |
|
Music composed for <Ekla>:
none so far
Note that Igor Stravinsky's 'Le Sacre du Printemps' has an original part for
a D-clarinet!
We made an <Ekla> version of Ludwig Van Beethoven's 'Drei Duos fuer Klarinette
und Fagott'.
This robot is projected to be fully ready by the end of 2026, if Godfried's
health permits and if we can get some subsidy again to continue our research.
As of 27.08.2026, the <Ekla> robot can play and can be freely used although
there is still place for improvements.
| Back to Logos-Projects page : projects.html | Back to Main Logos page:index.html | To Godfried-Willem Raes personal homepage... | To Instrument catalogue | ![]() |
Construction diary:
15.02.2020: First sketches and designs.
02.02.2026: Project taken up again. We might use the bistable solenoids we still
have in stock from the construction of <Tinti> for the open tone holes
on this clarinet. Anyhow, we dont have the money anymore to buy new and more
suitable solenoids for this project.
03.02.2026: Construction of an acoustic impedance convertor on the lathe, starting
from brass staff material. For the compression driver we re-use a driver that
we used in one of the early versions of our <Autosax> robot. It is certainly
more than powerfull enough. 30 Watts is our estimate.
04.02.2026: First acoustic tests with the impedance convertor and the motor
driver. The instrument appears to be either a D clarinet, diapason 440Hz or
an Eb instrument, diapason 415Hz.
05.07.2026: Could we use this board for the fingering? :
It was designed in 2025 as a hub board with 26 outputs for hold only solenoids.
06.07.2026: If we use the bistable solenoid assemblies (Syndyne) we have in
stock, we need 14 outputs for the open holes and 5 to 10 outputs for the valve
operated holes, depending on the solenoids to be used here. Thus a 26 output
board would reach out here.
What do we have in stock? Use older 14-output pulse-hold boards?
07.07.2026: Start construction of a carrier plate in stainless steel.
25.07.2026: Project taken up again after a pause as we had to work on our full
evening 'Linac Elekta' production with Emilie De Vlam for the Ghent feasts.
26.07.2026: design and construction of brass 'fingers' for the open holes on
the instrument. Welding of the driver part to the instrument carrier. Constructing
of a holder for the 'eye' lights.
27.07.2026: Further work on the preparation and selection of suitable solenoids
to operate the valves. For the right pink tonehole, the bidirectional solenoid
will not work. We have to use a simple square 12V solenoid with a spring. A
32 mm pvc clamp digged up to clamp the clarinet at its bell. Do these clamps
have an M7 thread really?
28.07.2026: Continued work on the left side solenoid assembly.
29.07.2026: Horizontal tube welded on the clarinet holder. So the robot will
be able to move a bit, provided we can dig up a suitable motor. Mounting of
the solenoid for the open dumb hole on the underside of the clarinet. Working
on the automation of the side valves for the left hand little finger. By accident
we perforrated the windings of a coil we were going to use for the low G# valve...
30.07.2026: Trying to find a replacement for the perforated valve... A Laukhuff
type digged up and mounted. A day of work lost...
31.07.2026: Vertical L-profiles sawn and drilled to mount the bearings. Sizing:
30 x 30 x 3, stainless steel. Study of the possibilities for the wheel base
as well as the mounting for the PCB's. We still have a couiple of rollator wheels,
diameter 100 mm, width 50 mm, axle 8 mm, that could be used in combination with
a frontal wheel, building heigth 105 mm. Heavy but sturdy: use a 10 mm thick
bottom plate?
01.08.2026: Hele dag gewerkt aan het boren en handmatig tappen van de bodemplaat
uit 10 mm dik inox. Gebruikte tapmaten: M4, M5, M6 en M8. Nog geen uitsluitsel
met betrekking tot een bruikbare motor. Het MIDI-hub board moet nu onderaan
gemonteerd worden.
02.08.2026: Boren van de montagegaten in de vertikale L-profielen. Lassen ervan
op de basisplaat.
Uitsnijden
van een polykarbonaat drager-plaat voor de puls-hold boards, de power-amp module
en de generator. Motor besteld bij RS-components: Mellor Electric UB T6, 24
W, 230 V RS bestelnummer RS 248-3659. Toerental 80 rpm, as 7.95 mm, as lengte
31 mm, moment: 1.68 Ncm. Kostprijs 97 Euro. Levering op 5 augustus...
03.08.2026: Tentatieve eerste montage van de robot, nog zonder voedingen en
elektronika. Uitzoeken
koelvin voor de Kemo versterkermodule. Montage van de versterker, de synth print
en de pulse-hold bordjes op de achterzijde:
De kogel is door de kerk: we gaan twee nog resterende puls/hold boards recycleren
voor de besturing van de kleppen. Da's alvast weer wat uitgespaard... Voor het
hub board kunnen we de film voor <Ubu> (06.10.2025) gebruiken om een nieuw
board op te bouwen. Dit board heeft twee Crydom optorelais, waarvan de eentje
kunnen gebruiken voor de Crouzet motor.
04.08.2026: CT-scan vanmorgen... Toestand blijkt redelijk stabiel. Even pauze
voor het werk aan <Ekla>... De <Ekla> robot geimplementeerd in GMT.
De testkode is gelijkaardig aan die voor <Teno>. De GMT fileplayer moet
nog gecheckt worden. Midi hub board belicht en geetst, gebruik makend van de
PCB film voor <Ubu>. Printje geboord en meteen het soldeerwerk aangevat.
05.08.2026: Print helemaal bestukt en gesoldeerd. We hebben echter onvoldoende
optorelais op voorraad. Besteld bij Farnell.
06.08.2026: Motor besteld bij RS-components. Mellor Electric UBTG, 24 W, 230
V ac. 1.68Ncm kracht, 80 rpm , as 7.95mm. Bestelnummer RS 248-3659.
08.08.2026: Motor geleverd door RS-components.
09.08.2026: Konstruktie van een hefboom voor de motoras uit gehard profielstaal,
vierkant 15 mm. Asgat 7.9 mm! Vastzetschroef: M6, inbus.
10.08.2026: Verder werk aan de montage en de mechanika rond de motor.
11.08.2026: Eerste tests met de motor: met een excentriek van 50 mm is de motor
slechts marginaal voldoende sterk. Excentriek verkleind tot 35 mm (bewegingstrajekt
wordt dan 70 mm) en getest met de motor. Dit lijkt te werken al is de 80 rpm
snelheid aan de hoge kant.
12.08.2026: Aangezien we als klant bij Farnell klaarblijkelijk geclausuleerd
zijn geraakt (... met dank aan vroegere medewerkers voor het te grabbel gooien
van interne dokumenten en notas), hebben we de ontbrekende komponenten nu bij
RS-components besteld. Vandaag zou een en ander geleverd worden...
13.08.2026: Polsters op de klepjes aangebracht, sommige uit kalfsleer, andere
visblaaspolsters uit een setje voor klarinet van Boosey & Hawkes. De
voedingsmodules werden inmiddels door RS-components geleverd. Farnell blijkt
nu ook -na een heel boze mail van onzentwege- op zijn stappen teruggekomen om
ons als klant te schrappen. Een eerste begin met de bedrading vandaag.
Dit
is het PH1 board voor de besturing van de bipolaire elektromagneten.
14.08.2026: Montageplaat in polykarbonaat voor de voedingsmodules uitgezaagd
en geboord.
16.08.2026: Bedrading van de kleppen solenoiden afgewerkt. Dit is het tweede
puls-hold board:
17.08.,2026: Voor het programmeren van de puls-hold boards hebben we nood aan
een tabel met de historische vingerzettingen voor klarinetten met vijf kleppen.
Hier zijn twee bronnen: Frans, 1802 en Duits,
1803. Het eerste board (PH1) bestuurt de bidirectionele magneten, het tweede
(PH2) alle overige elektromagneten evenals de lichtjes voor de 'ogen'.
18.08.2026: Verder werk aan de firmware voor de vingerzettingen. Versie 1.0
afgewerkt van de firmware voor de twee 18F4620 processors. Klarinet vastgezet
op de houder. Driver vast gemonteerd. Polster aangebracht op de kern van de
elektromagneet voor de rechterpink.
19.08.2026: Versie 1.0 uitgewerkt voor de kompressor motor driver. Twee 24EP256MC202
chips geprogrammeerd. Verder hele namiddag gewerkt aan het goed functioneren
van de duimklep. Die is nu in rust -onbekrachtigde spoel dus- geopend.
20.08.2026: Verder werk aan de polykarbonaat montageplaat waarop de PCB's gemonteerd
worden. PH1 board, voor de bidirectionele magneten geprogrammeerd.
21.08.2026: Extra Weidmueller konnektors en 15 V / 3 A voeding (voor de Kemo
amplifier) geleverd door Farnell. Verwarring tussen PH1 en PH2 boards... Korrekt
is PH1 voor de bidirectionele magneten werkend op +9V/ -12V en PH2 voor de unidirectionale
magneten en de oog-lampjes, werkend op + 12V / -12V. Bedrading van de voedingen
afgewerkt.
22.08.2026: Voedingen getest. de kleine +/-15V module op het synth board doet
het niet...
23.08.2026: Extra XP module +/-15V, 500mA gemonteerd op de vertikale polykarbonaat
rugplaat. Nu lijkt alles te werken.
24.08.2026: Bug report: de elektromagneet voor het rechterpinkgat wordt veel
te warm..., er is een inconsistentie in de reaktie op release (CC19) instrukties,
de wave-lookups moeten verbeterd worden en we zouden er goed aan doen vier registers
te onderscheiden en met eigen golfvormen te implementeren: chalumeau, throat,
clarino, altissimo. Tessituurdokumentatie aangepast.
25.08.2026: Display printje bestukt zoals dat voor<Ubu>. Da's
nog een PCB gemaakt in 2001. Stroomverbruik bij 12 V voeding is 150 mA, wat
(bij 22 segmenten) neerkomt op 6.8 mA per segment. Lampjes bedraad en mapping
aangepast in de firmware voor het hub board. Het gloeidraadlampje is nu 12 V
/ 15 W maar een 5 W exemplaar zou beter geschikt zijn hier. De lichtsterkte
kan geregeld worden met PWM. Drie rode high-power LED eenheden vastgekleefd
aan de onderzijde van de robot. Upgrade en upload van alle firmware. Het uitgangssignaal
op de synth PCB is ca. 1.3 Vrms, over de membraankompressor gemeten is dat 13V
rms. De gain van de Kemo module is dus precies 20 dB. Bij een driver impedantie
van 8 Ohm zou dit een vermogen van 21 Watt moeten opleveren. (10 Watt bij een
16 Ohm driver). Driver nagemeten: het blijkt inderdaad een 16 Ohm exemplaar
te zijn... 10 Watt dus.
26.08.2026: Velocity sturing nu ook geimplementeerd voor de open stand van de
bidirectionele elektromagneten voor de open toongaten. Dit werkt heel wat beter
nu. Aan de golfvormen is evenwel nog heel wat werk... Beschermkap gelast voor
het E14 gloeidraadlampje vooraan. Verbindingsstang gemaakt om het verschuiven
van het bewegend deel in het lager te verhinderen: 2 nylon schijven 30mm, 2
idem. 25mm, een M6 draadstang en twee M6 dopmoeren in inox. Staatsieportretjes
van <Ekla> gemaakt. Test bestandjes met Beethoven's duo's voor klarinet
en fagot aangemaakt. Het werkt!
27.08.2026: White led light strip added and mapped on note 123. Implementation
for automatic legato playing added. For legato to work well, notes should be
made to overlap slightly. Firmware for the hub and the synth board updated with
the newest default controller values.
Maintenance information:
* +15 V/ 3 A amp power supply: Farnell order nr. 4668758. Multicomp Pro, part Nr. MP60-15003000. 45 W. (for audio amp)
* +9 V/11 A positive power supply for bidirectional solenoids (hold voltage),
XP-Power ECM100US09
* +15V - o -15V, 500mA, XP Power module (for synth board, analog circuitry)
* +12 V / 5A power supply for hold voltage and lights
* -12 V / 5A velocity power supply (negative!) for all pulse-hold boards
by Godfried-Willem Raes
Further reading by the author on this topic (some in dutch):
Technical data sheet, design calculations and maintenance instructions:
Wheels: Back : 100 mm x 50 mm, axle 8 mm. Massive PU tires. Recycled from an old wheelchair/. Font wheel: pivoting, Green PU tire, building height 105 mm.
Base plate: stainless steel, thickness 10 mm. AISI 316. 400 mm x 200 mm.
Vertical profiles: Stainless steel, 30 x 30 mm, 3 mm thick.
Motor: RS-components. Mellor Electric UBTG, 24 W, 230 V ac. 1.68Ncm kracht, 80 rpm , as 7.95mm. Bestelnummer RS 248-3659.
Optorelay's: MP240D4 (CX240D5 is a somewhat cheaper alternative).
Analog amplifier module: Kemo, M034N. 40W into 4 Ohm at 16V power supply. Kemo
Electronic Gmbh, Leher Landstrasse 20, D 27607 Geestland. BRD




This
is the circuit for board 1, PH1. For board 2, PH2, the positive hold voltage
is +12V. Board 2 also steers the automated eye lights.
Fingering table (based on 1802 clarinet chart):
| RIGHT |
1 no |
2 nc |
3 nc |
4 no |
5 | 6 | 7 | 8 | 9 | 10 |
11 duim |
12 nc |
PH1 | PH2 | |
| mi | 54 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | % | % |
| fa | 55 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
| fa# | 56 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||
| sol | 57 | 0 | |||||||||||||
| sol# | 58 | 0 | |||||||||||||
| la | 59 | 0 | |||||||||||||
| sib | 60 | 0 | |||||||||||||
|
si |
61 |
0 | |||||||||||||
| do | 62 | 0 | |||||||||||||
| do# | 63 | 0 | |||||||||||||
| re | 64 | 0 | |||||||||||||
| mib | 65 | 0 | |||||||||||||
| mi | 66 | 0 | |||||||||||||
| fa | 67 | 0 | |||||||||||||
| fa# | 68 | 0 | |||||||||||||
| sol | 69 | 0 | |||||||||||||
| sol# | 70 | 0 | |||||||||||||
| la | 71 | 0 | |||||||||||||
| sib | 72 | 0 | |||||||||||||
| si | 73 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| do | 74 | 0 | 1 | 1 | 1 | ||||||||||
| do# | 75 | 0 | |||||||||||||
| re | 76 | 0 | |||||||||||||
| mib | 77 | 0 | |||||||||||||
| mi | 78 | 0 | |||||||||||||
| fa | 79 | 0 | |||||||||||||
| fa# | 80 | 0 | |||||||||||||
| sol | 81 | 0 | |||||||||||||
| sol# | 82 | 0 | |||||||||||||
| la | 83 | 0 | |||||||||||||
| sib | 84 | 0 | |||||||||||||
| si | 85 | 0 | |||||||||||||
| do | 86 | 0 | |||||||||||||
| do# | 87 | 0 | |||||||||||||
| re | 88 | 1 | |||||||||||||
| mib | 89 | 0 | |||||||||||||
| mi | 90 | 0 | |||||||||||||
| fa | 91 | 1 | |||||||||||||
| 92 | 0 | ||||||||||||||
| 93 | 0 | ||||||||||||||
| 94 | 0 | ||||||||||||||
| 95 | 0 | ||||||||||||||
| 96 | 0 | ||||||||||||||
| 97 | 0 | ||||||||||||||
| 98 | 0 | ||||||||||||||
| 99 | 0 | ||||||||||||||
| 100 | 0 | ||||||||||||||
| 101 | 0 | ||||||||||||||
| 102 | 0 | ||||||||||||||
| 103 | 0 | ||||||||||||||
| 104 | 0 | ||||||||||||||
| 105 | 0 | ||||||||||||||
| 106 | 0 | ||||||||||||||
| 107 | 0 | ||||||||||||||
| 108 | |||||||||||||||
| 109 | |||||||||||||||
| 110 | |||||||||||||||
| 111 | |||||||||||||||
| 112 | |||||||||||||||
| 113 | |||||||||||||||
| 114 | |||||||||||||||
| 115 | |||||||||||||||
| 116 | |||||||||||||||
| 117 |
References: