Tuesday, November 25, 2014

Sumosim uses ScalaJS

Because of all the problems I had using Java-Webstart (Signing makes only sense with certified keys) I switched to ScalaJS. Explore the examples at the Sumosim Homepage if you want to find out how it works.

Monday, October 22, 2012

Results of Breeding

Changing some parameters of the base configuration, and running sessions on that configurations, led to the following results.

Meaning of the columns in the following table:

1. Configuration
2. Session ID
3. Qualification
4 - 11. Generation of the session

The configurations mean:
base: The base configuration
crossoverProb05: Set crossover probability to 5%
crossoverProb09: Set crossover probability to 9%
decMutationProb10: Decreased mutation probablity to 10%
evaluateElite: Use elite selection strategy
grammarRuleFourRules: Generate always 4 rules
grammarRuleThreeRules: Generte always 3 rules
grammarRuleTwoRules: Generate akways 2 rules
incMaxWrapTo5: Increase max wrap to 5
incMutationProb10: Increase mutation probability to 10%
maxDepth15: Set max depth to 15
nodal: Use a nodal mutation strategy
nodalMaxDerivationTreeDepth1: Use a nodal mutation strategy with derivation tree depth of 1
nodalMaxDerivationTreeDepth10: Use a nodal mutation strategy with derivation tree depth of 10
nodalMaxDerivationTreeDepth2: Use a nodal mutation strategy with derivation tree depth of 2
populationSize40: Popuöation size 40

base20120619-19451292,3 31,5 4,1 3,61102550100200500
20120612-21062397,3 46,8 6,5 5,81102550100200500
20120615-19252529,9 29,9 7,0 7,0110255010020050010003000
20120613-10422147,3 24,4 8,9 7,01102550100200
20120615-21045348,4 19,4 12,3 8,9110255010020050010003000
20120611-10270739,7 18,3 11,9 8,911025501002005001000
20120611-18495645,0 23,5 18,7 9,61102550100200500
20120613-18531193,7 47,5 13,9 9,811025501002005001000
20120612-09394648,2 19,4 13,9 9,81102550100200500
20120610-23362732,7 19,3 12,2 10,71102550100200500
20120614-10332232,5 14,1 11,0 11,01102550100200
20120614-19573023,3 18,3 - 11,91102550100
20120611-190036395,5 24,4 16,3 12,1110255010020050010003000
20120610-09425790,4 23,5 13,8 12,21102550100200500
20120609-10273889,9 32,6 12,2 12,211025501002005001000
20120615-174629226,5 38,7 16,2 12,311025501002005001000
20120609-171239276,8 30,9 15,6 13,51102550100200500
20120608-2333504446,2 97,3 15,9 13,711025501002005001000
20120610-00264047,8 24,1 19,4 13,911025501002005001000
20120610-175412248,6 32,6 14,0 14,01102550100200
20120609-23465923,8 16,1 - 16,11102550100
20120608-1925181195,5 46,5 19,4 16,21102550100200
20120613-08423197,2 76,4 29,7 28,91102550100200500
crossoverProb0520120717-11270115,8 12,1 8,2 7,011025501002005001000
20120713-10422130,5 30,2 15,7 13,511025501002005001000
crossoverProb0920120713-104225191,6 23,6 10,9 8,911025501002005001000
20120717-112706987,1 91,4 18,6 15,311025501002005001000
decMutationProb1020120615-2104532340,6 807,8 8,9 5,2110255010020050010003000
20120615-174629236,9 14,0 9,0 6,611025501002005001000
20120615-19252532,3 16,1 9,8 7,5110255010020050010003000
20120705-2224111585,1 42,0 18,9 7,511025501002005001000
20120703-22115447,9 16,2 12,2 7,611025501002005001000
20120702-08132924,2 19,6 12,3 9,011025501002005001000
20120614-19573097,2 23,1 - 9,81102550100
20120613-18531146,5 24,2 13,9 9,811025501002005001000
20120705-232615216,7 69,1 14,0 10,911025501002005001000
20120614-19504031,3 23,2 13,6 12,01102550100200
20120620-03540645,4 22,9 15,8 13,611025501002005001000
20120630-15135475,2 75,2 18,6 13,611025501002005001000
20120702-19105632,6 24,4 18,6 13,811025501002005001000
20120703-20032346,9 24,1 16,5 14,111025501002005001000
20120614-1033221595,1 42,5 23,3 18,41102550100200
20120619-19451249,0 43,9 18,8 18,81102550100200500
evaluateElite20120713-10424423,7 13,8 9,8 9,811025501002005001000
20120717-11272243,1 10,9 10,9 10,911025501002005001000
grammarRuleFourRules20120721-10043524,0 18,9 12,3 7,5110255010020050010003000
grammarRuleThreeRules20120725-11035742,6 39,5 4,0 2,7110255010020050010003000
20120721-100429617,1 19,5 12,3 7,1110255010020050010003000
grammarRuleTwoRules20120721-10042416,3 14,0 8,2 6,1110255010020050010003000
incMaxWrapTo520120703-22115430,0 16,4 2,7 2,611025501002005001000
20120630-15135494,7 31,1 7,1 5,211025501002005001000
20120702-08132995,5 10,9 9,7 7,011025501002005001000
20120614-18024749,1 19,7 7,1 7,1110255010020050010003000
20120705-232615191,7 68,5 18,7 7,611025501002005001000
20120620-03540675,3 65,4 16,3 9,011025501002005001000
20120702-19105632,1 24,1 15,9 10,711025501002005001000
20120705-222411696,9 22,7 18,4 13,511025501002005001000
20120703-20032341,3 23,2 15,6 15,61102550100200500
incMutationProb1020120614-10332244,1 22,8 3,8 3,3110255010020050010003000
20120610-09423631,4 29,6 4,9 3,91102550100200500
20120614-122812343,1 32,8 4,7 4,7110255010020050010003000
20120612-21062392,3 39,8 12,1 6,211025501002005001000
20120620-03540632,1 19,6 12,2 6,2110255010020050010003000
20120611-18495624,7 16,4 7,0 6,51102550100200500
20120611-10274118,3 18,3 10,9 7,011025501002005001000
20120612-093946698,3 19,6 9,0 7,11102550100200500
20120613-1853111069,1 24,2 12,2 9,811025501002005001000
20120611-19003629,8 18,6 13,9 12,1110255010020050010003000
20120613-10422131,8 16,1 14,0 12,11102550100200500
20120613-08423172,0 45,3 13,8 12,211025501002005001000
20120610-2342094481,0 44,0 19,3 13,811025501002005001000
20120610-17542780,1 23,1 14,1 14,01102550100200
20120611-11373380,4 77,9 22,8 18,51102550100200500
maxDepth1520120717-11273297,4 48,9 6,2 5,811025501002005001000
20120713-10424540,6 22,6 15,6 13,411025501002005001000
nodal20120824-163537221,9 193,6 177,1 152,9110255010020050010003000
20120824-163449392,5 310,1 190,0 171,6110255010020050010003000
20120827-190453353,4 295,8 188,7 186,11102550100200500
20120827-190432556,5 258,8 199,0 194,21102550100200500
nodalMaxDerivationTreeDepth120120809-19465318,4 13,5 13,4 9,6110255010020050010003000
20120814-18165279,3 30,2 15,9 15,711025501002005001000
nodalMaxDerivationTreeDepth1020120809-19470547,9 14,1 6,1 4,5110255010020050010003000
20120814-18170432,2 16,3 12,2 9,011025501002005001000
nodalMaxDerivationTreeDepth220120809-19465876,9 13,6 6,6 3,8110255010020050010003000
20120814-1816581360,4 48,4 12,3 8,911025501002005001000
populationSize4020120713-10423446,0 29,9 9,6 4,111025501002005001000
20120717-11271391,1 47,5 10,9 9,811025501002005001000

Monday, October 1, 2012

Basic Breeding Session

In order to explore the effects, the parameters of the genetic algorithm have a reference parameter set is needed. After trying around a little bit I have chosen the following parameters

eliteSelectionRepalcementStrategy = DefaultEliteSelectionRepalcementStrategy
fitnessEvaluationStrategy = DefaultFitnessEvaluation
initialiserImpl = RampedHalfAndHalfInitialiser
crossoverOperationImpl = SinglePointCrossover
mutationOperationImpl = IntFlipMutation
selectionRepalcementStrategy = Generational
randomNumberGeneratorImpl = Jre
fitnessFunction = SGevaFitnessFuction
fitnessFunction.canCache = false
fitnessFunction.maxDuration = 200
fitnessFunction.testResultConverterName = TheWinnerTakesItAll
fitnessFunction.opponentResourceName = fcl/ref-001.fcl
fitnessFunction.opponentsCount = 100

outputDirPrefix = base
outputBaseDir = C:\Users\wwagner4\pgm\cygwin\home\wwagner4\sumosim-optimizer
growProb = 0,500
maxDerivationTreeDepth = 50
maxDepth = 10
maxWraps = 0
eliteSize = 10
evaluateElite = false
fixedPointCrossover = false
crossoverProb = 0,800
mutationProb = 0,010
populationSize = 20
generations = 100000
seed = None

Running several breeding sessions with the above parameters leaded to the following fitness value trend. The fitness value is the fitness of the best developed individual in the current generation.

The diagram shows that many sessions start with a fairly good fitness value (below 100) and that the othes have a strong tendency to fall below hundred very quickly (before 10 generations). For the meaning of a fitness value see the post: The winner takes it all

Having a closer look at the low fitness values, shows that there is even a trend to fall below 50 within the first 25 generations.

Fitness values in the first generation

             session         bestFitness
base-20120614-195730           30.184661
base-20120609-234659            30.91526
base-20120614-103322           32.503989
base-20120610-233627           32.706588
base-20120610-002640            47.75487
base-20120615-192525           69.534912
base-20120611-102707           80.029995
base-20120611-184956           86.826697
base-20120613-104221           87.284369
base-20120609-102738           89.910391
base-20120610-094257           90.352723
base-20120619-194512           92.292769
base-20120615-210453           94.551918
base-20120612-210623           97.246372
base-20120615-174629          226.501808
base-20120609-171239          320.595443
base-20120613-084231          352.821817
base-20120610-175412          365.867119
base-20120611-190036          697.852911
base-20120612-093946         1352.827676
base-20120613-185311         1367.676366
base-20120608-192518         3029.902041
base-20120608-233350         4446.222934

These are the exact fitness values after 25 generations

             session         bestFitness
base-20120619-194512            4.444169
base-20120615-210453           12.291047
base-20120614-195730           13.675698
base-20120614-103322           14.073996
base-20120609-234659           16.116512
base-20120612-093946           16.271329
base-20120611-102707           16.297538
base-20120613-185311           16.326053
base-20120612-210623           18.963986
base-20120610-094257           19.142386
base-20120610-233627           19.249123
base-20120608-192518            19.58362
base-20120615-192525           22.771596
base-20120608-233350           22.916315
base-20120611-184956            23.50955
base-20120609-171239           23.903934
base-20120610-175412           24.060014
base-20120610-002640           24.060659
base-20120613-104221           24.181404
base-20120611-190036             24.4093
base-20120609-102738           31.385305
base-20120615-174629           37.357823
base-20120613-084231           44.244381

Saturday, September 22, 2012

The Winner Takes it All

Another fitness function.

Before explaining the fitness function, i have to describe how fitness is measured. All robots of a population have to play a fixed amount of games against a reference robot. The number of wins, undecided game and losses is counted for every robot. Depending on these parameters a fitness value for each robot is calculated. This post describes the strategy for calculating the fitness value.

The strategy used favors won games to undecided ones. An example: If you win e.g 5 games of 10 and loose the other 5 games you get a better fitness value, than winning 4 games with 6 undecided games.

For the case of loosing all games, which i normal at the beginning of a breeding session, the length of the game i also considered. A robot that stays longer on the field is denoted fitter than one that is pushed out quickly.

The function in scala:

  def fitness(result: TestResult): Double = {
    def downSizeFactor = 1.0 / result.count.toDouble
    def winContingent = result.relWinCount
    def lossContingent = (1.0 - result.relLossCount * 0.99) * downSizeFactor
    def durationContingent = if (result.relWinCount > 0.00000000001) winDurationContingent else noWinDurationContingent
    def winDurationContingent = (1.0 - result.relDurationMeanOnWin * 0.99) * downSizeFactor * downSizeFactor
    def noWinDurationContingent = (result.relDurationMeanOnLoss * 0.99) * downSizeFactor * downSizeFactor
    100.0 / (winContingent + lossContingent + durationContingent) / result.count.toDouble

I have also prepared some Diagrams to show the behavior of the functions.

This diagram shows the dependency of the fitness from the number of won games. The more games are won, the lower is the fitness (what is interpreted as a good fitness)

This diagram show that the fitness value does almost not depend on the number of losses. Except in top-left diagram, that shows the situation of no won match. In that diagram you can also see that the duration of the match has some (little) influence to the resulting fitness. Actually all diagrams contain five different colored lines that show the fitness depending on the mean relative length of the matches. But they are so close to each other, that a distinction is not possible.

Thursday, May 17, 2012

SGeva, a scala wrapper around Geva

Geva is a genetic programming algorithm that I am using to optimize the fuzzy language programs that control sumo robots. In order to understand the capabilities of Geva and for a convenient usage in scala programs I wrote this wrapper.



Instantiate an Instance of SGeva (WordMatchSGeva in our case) and call the run method.
object WordMatchSGevaRunner extends App {
  new WordMatchSGeva().run()

Derive your SGeva from AbstractSGeva and mixin the necessary factories to instantiate the designated Geva modules.
class WordMatchSGeva extends net.entelijan.sgeva.AbstractSGeva
  with net.entelijan.sgeva.conf.RampedHalfAndHalfInitialiserFactory
  with net.entelijan.sgeva.conf.DefaultDerivationTreeFactory
  with net.entelijan.sgeva.conf.SinglePointCrossoverFactory
  with net.entelijan.sgeva.conf.IntFlipMutationFactory
  with net.entelijan.sgeva.conf.GenerationalSelectionRepalcementFactory
  with net.entelijan.sgeva.conf.ProportionalRouletteWheelFactory
  with net.entelijan.sgeva.conf.StdoutCollectorFactory
  with net.entelijan.sgeva.conf.JreRandomFactory 
  with ExampleFormatter {

  // The properties needed for the above defined factories
  @SGevaProperty def seed = None

  @SGevaProperty def generations = 100

  @SGevaProperty def populationSize = 150
  @SGevaProperty def initChromSize = 100
  @SGevaProperty def growProb = 0.5

  @SGevaProperty def evaluateElite = false
  @SGevaProperty def eliteSize = 10

  @SGevaProperty def mutationProb = 0.01

  @SGevaProperty def crossoverProb = 0.8
  @SGevaProperty def fixedPointCrossover = false

  @SGevaProperty def maxWraps = 0
  @SGevaProperty def maxDepth = 10
  @SGevaProperty def maxDerivationTreeDepth = 50

  // The fitness function
  def fitnessFunction = new WordMatchFitnessFunction {
    def word = "noah"
    def canCache = true

  // The grammar
  // In scala you can use XML directly inside the sourcecode. I used
  // that feature to define the grammer without using external resources.
  // So you can have all the relevant information together in one file
  def grammarString =
       ::= |
 ::= ||
 ::= _
# Vowels and consonats
 ::= a|o|u|e|i
 ::= q|w|r|t|y|p|s|d|f|g|h|j|k|l|z|x|c|v|b|n|m


A fitness function for the WordMatchSGeva. Returnes a fitness value according to the fitness of a program, expressed by the grammar above 
 * The fitness function for the wordmatch.
 * The code was migrated from geva (java) to scala
trait WordMatchFitnessFunction extends net.entelijan.sgeva.DoubleValueFitnessFunction {

  import Individuals.Phenotype
  def word: String

  override def toString() = "WordMatchFitnessFunction('%s') cache=%s" format (word, canCache)

   * Compare a string to the word. Each symbol not matching increases the fitness by 1.
   * Max fitness is max(length of the word, phenotype).
   * @param p Compared phenotype
   * @return Number of missmatches
  protected def evaluateFitness(pheno: Phenotype): Double = {
    val indiWord: String = pheno.getStringNoSpace()
    if (indiWord == null) word.length()
    else {
      val minLength = math.min(indiWord.length(), word.length())
      val matchList = (0 to (minLength - 1)).map(i => if (indiWord.charAt(i) == word.charAt(i)) 1 else 0)
      val matchCount = matchList.foldLeft(0)((a, b) => a + b)
      val maxFitnessValue = math.max(indiWord.length(), word.length())
      return maxFitnessValue - matchCount;

Defines how the results of the SGeva run are recorded. In our case the results are written to standard output as the StdoutCollectorFactory is used in WordMatchSGeva (see above). The StdoutCollectorFactory needs a Formatter to define how to format results.
 * Define the output of the results
trait ExampleFormatter extends net.entelijan.sgeva.module.Formatter 
 with net.entelijan.sgeva.module.PopulationStat 
 with net.entelijan.sgeva.module.SGevaProperties 
 with net.entelijan.sgeva.module.FormatterUtil {

  import scala.collection.JavaConversions._
  def printHeader(pw: java.io.PrintWriter) {
    pw.println("-- Properties -------------------------------------------------------------------------------")
    sGevaProperties.foreach(p => pw.println("%s = %s" format (p.key, p.value)))
    pw.println("%15s\t%15s\t%15s\t%15s\t%s" format ("gen", "best", "mean", "worst", "words"))
  def printGenerationData(pw: java.io.PrintWriter, genCount: Int, pop: Individuals.Populations.Population) {
    val stat = fitness(pop)
    val indis = pop.getAll()
    val words = formatList("%9s", "")(indis.map(i => "'%s'" format i.getPhenotype().getStringNoSpace()).toList)
    pw.println("%15d\t%15.2f\t%15.2f\t%15.2f\t%s" format (
      genCount, stat.min, stat.mean, stat.max,
Running the program above leads to the following output
-- Properties -------------------------------------------------------------------------------
generations = 100
fitnessFunction = WordMatchFitnessFunction('noah') cache=true
randomNumberGeneratorImpl = Jre
seed = None
initialiserImpl = RampedHalfAndHalfInitialiser
crossoverOperationImpl = SinglePointCrossover
mutationOperationImpl = IntFlipMutation
eliteSelectionRepalcementStrategy = DefaultEliteSelectionRepalcementStrategy
selectionRepalcementStrategy = Generational
fitnessEvaluationStrategy = DefaultFitnessEvaluation
populationSize = 150
initChromSize = 100
growProb = 0,500
evaluateElite = false
eliteSize = 10
mutationProb = 0,010
crossoverProb = 0,800
fixedPointCrossover = false
maxWraps = 0
maxDepth = 10
maxDerivationTreeDepth = 50
            gen            best            mean           worst words
              1            3,00            4,08            9,00      'ko'      'n'   'oiao'     'co'    '__a'     '_o'     '_o'     'co'   '_o__'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      '_'      'x'      'm'      '_'      'a'   '_i_u'      '_'      '_'     '_i'      'e'      'o'     '__'      '_'    'fi_'      'i'      '_'    'hi_'     'xu'      'w'      '_'      'u'      '_'      '_'      'a'      't'   'hixo'      'i'    'aat'     '_e'     'e_'      'j'      '_'      'z'    'b_s'      'u'      '_'     '_w'     '_e'     '_a'      'o'      'j'      'a'      '_'    '_e_'      'o'      'u'     '__'      'a'     'yk'      'c'      'e'      'o'      'o'      'g'      'x'      'y'   '_l__'      '_'      'o'      'f'     '__'     '_a'      'q'      'i'      'a'      'w'      '_'    '__o'      '_'     '_y'    '_i_'     'u_'      '_'     '__'      'a'      'l'      '_'    'ixu'    '___'      'i'     'a_'      '_'      '_'     'ce'    '___'   'hade'    '_y_'      '_'      'z' 'esao_c'  '_pocn'  'vv_en'  '_w_lo' '__eaee' '_i_l_j' 'z_n_db''oojmkias''i_lae_e''e_vzuoh_''_eedpxud''_eedpgm_o'   '_pue'       ''       ''       ''      '_'     'a_'   'z___'      '_'     '_l'      '_'   'nog_'    'm_x'      'i'      'a'  'i_l__'       ''   '_o__'      '_'     'zp'       ''      '_'       ''      'e'      'q'       ''       ''      '_'       ''       ''
              2            3,00            3,86            8,00    'oiao'    'i_a'    'oia'  'noga_'   'esa_'    'oia'     'ko'    '__a'     'co'     'go'     '_o'      'n'     'ko'    'hia'     'jo'    'lox'    'oia'      'n'    'uox'  'noga_'     '_o'      'n'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      'g'      'e'      'w'      'w'      '_'     '_k'     '_t'    '_l_'      'r'     'e_'   'hade'    'ixu'     '__'      '_'   '_u_t'    'b_s'      '_'     '_i'     '_a'      '_'    'b_k'      '_'      'u'     '__'   'hixo'     'xu'     '_e'    'o_i'    'beo'    '__u'      'a'      'a'      'a'      'o'     '_e'      'x'     'yz'     'a_'     'c_'      '_'      '_'    'yas'      'o'      'o'     'za'     '_j'    'b_y'      'i'      'o'      'i'    '_e_'     '_u'      '_'      'h'      'u'      '_'      'o'      'm'     'i_'     'xu'     '_e'     'uh'      'd'      '_'    '___'      'i'      '_'    '__u'      '_'      '_'    '__i'      'e'      't'      'u'     'l_'     'xu'      'l'      'u'      'o'     '_y'      'a'   '_ane'      'a'      'a'     '__'      'z'    '_e_'     '__'      'o'    'hi_'     'f_'      'z'     'yh'      '_'      'y' 'esao_c'  'k_xud'  '_ee_i'  'vv_en''oojmk_e''ojmkias''oi_lae_e'    'oea'     'iu'      'i'      'z'   '_poy'     '_j'   '_poc'     'oz'    '_ea''_nfoawy'      'o'       ''      'b'      '_'       ''
              3            2,00            3,85            7,00     'no_'      'n'     'ne'  'noga_'    'i_a'     '_o'    '__a'    'oia'     'ko'    '__a'    'p_a'     'ng'    'oia'     'jo'     '_o'    '__a'   'esa_'    '__a'    'uox'   'oiai'   'esa_'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'oia'      'v'      'y'     '__'      'o'      'd'      's'     '_j'      '_'      'w'     'xi'     '_e'      'i'   '_ana'      'e'   '_a_i'      '_'    '__o'      '_'      '_'      'o'      'z'     '_u'    'o__'     'g_'      '_'      'u'     'xu'      '_'      'o'     'bu'   'eyun'      '_'    'c__'      'o'      'v'     'o_'    '__i'    'i_l'     'o_'     'xv'    'eai'     '_d'     'e_'     'kd'     'a_'     '_j'    '_l_'    'b_y'     'f_'      '_'      '_'     '_a'    'oiw'     '__'      'i'      'i'      'u'      'g'     'gu'     'ke'     'pw'      'i'      '_'     '_i'      'l'     'ud'      'i'      '_'      '_'     '_a'      'o'      'i'     '__'      'j'    'b_s'     '__'     'it'     'ea'    '__u'    'k_o'      'a'    'o__'     '_i'  'k_xud'  'k_xud'  'k_xuh'  'iykye' 'oedeai' 'l_v_en''ojmkiae''oim_ga_'      '_'      '_'      'y'       ''       ''    'hao'     '__'     'bu'     '__'     '_o'      'u'     'iu'       ''      '_'      'a'      'o'       ''      'z'      'x'      'e'    '_uo'      '_'       ''      'd'   'hwit'    '_oq'     '__'
              4            2,00            3,74            5,00     'no_'    'no_'     'jo'   '_olx'   'nt_w'    '_ow'    'nun'     'co'    '__a'    '__a'     '_o'    '__a'      'n'    'nxv'   'oga_'      'n'    '__a'    '__a'     'go'    'lot'   'oeai'  'nog_a'     'ne'      'n'    '_ow'    'oia'    'lou'      'n'      'n'    'na_'   '_ga_'     '_o'  'nogod'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'   '_oli'    'b_s'     't_'     'i_'    'l__'     'ox'     'kd'      'e'      'e'      '_'      '_'      'u'      'i'      'u'      'f'      'e'      'i'     '_g'      'i'   'k__i'    '___'     'c_'     '__'     'xu'     '_n'     'u_'     '_n'     '_u'    '_ai'      'o'     '__'   'eyun'      'a'    '__i'      'v'     '_j'      'u'     '_i'      'u'      '_'     'o_'      '_'     '_y'      'o'   '_ana'     'ef'      'o'    'k_t'     '_u'      'v'    '_b_'     'mt'      'i'      '_'      '_'     'ei'    'ewi'     'ud'    '_a_'      'i'      'o'     'fi'      'd'     '__'      '_'     'od'      'l'    '___'     'ea'     'g_'    'c__'      '_'    '__i'    '__o'     '_e'    '__u'     'a_'   'eyuo'      'f'   'v_en'    'yas'      'j'      'm'      'e'    'oe_'    '___'      'i'      '_'    '__i'      'u'    'c__'    'eyu'   'iu_s'     'w_'      'm'      'f'      't'      'u'      'e'      'u'  'oi__a'  'm_ga_'  'k_xud'  'l_lox'  'iykye'  '____a'      '_'      'o'
              5            2,00            3,76            5,00     'noe'    'no_'    'no_'   '_oly'    'lox'     '_o'     'io'   '_oxw'    '_ea'   'oeai'    '_ow'     'co'     '_o'    '__a'    '_oy'    'na_'    'loj'     '_o'    'low'    'sca'  'noga_'   'nt_g'     'co'    '__a'     '_o'     'n_'    'lot'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'  'noga_'      'j'   'iuuy'    'b_s'     '_y'    '__u'      'l'      'x'      '_'   '_u_s'     'a_'     '__'      'e'    'lbe'    '_li'     'ms'    'b_o'      'e'     'j_'     'kd'    'odz'     '_a'     '_g'     '_u'    '_io'    'kye'     'oy'    'k_m'      'u'      'f'     'gx'      'i'      'j'      'j'     'xu'      'o'      '_'      'o'      '_'      'i'      'o'    '__o'     '__'     'me'      'o'     'be'    'c__'    'oai'     '__'      '_'      'i'      'p'      'u'      'w'    'ias'     'pw'    '__u'      'o'      'o'      '_'      'd'      '_'   'iu_a'    'ou_'      'o'      '_'    'la_'      'l'      'u'      'a'    '__u'     'lu'      'a'     'l_'   'eyu_'      't'     'ii'      'u'      'l'     'ga'   'oee_'      'u'      '_'    '__u'      '_'     '__'     'ez'      'e'      'o'     'a_'     'xu'      'm'      't'      't'     'oj'      'd'      'x'     'ci'  'leyuo'  '__m__'  'l_lox'  'm_ga_'  '_avdu'   'ogal'      't'      'u'       ''       ''      'c'       ''     'iu'     'k_'    'baa'  'oiwit'       ''
              6            2,00            3,83            7,00    'boai'    'no_'    'no_'    'no_'    'noe'   '_oiw'     'mo'     'co'     '_o'   '_oxs'    'lox'    '_oy'     'go'    'lon'     'ko'      'n'     'co'   'nno_'     'co'     'ao'    'low'      'n'    'bo_'    '_ua'    '__a'   'oeai'    '_o_'     '_o'     'jo'     'co'      'n'    'boi'    '__a'   'oeai'    'lox'     'a_'   'm_gx'    '__i'      'e'    '_l_'      'e'     'cs'   'ce_i'     'r_'     'mu'   'gu__'   'eyco'      'i'    'oai'     'ii'     '_l'      'o'      'i'      '_'      'o'     'p_'      'd'      'e'      's'      'm'   'eyus'    '___'      'f'     '_e'      'o'      'e'      'a'     'ca'      'u'      'm'      'u'    'xpw'    'b_u'     '__'      'o'      't'   '_u_s'      '_'      'l'      'u'    'm__'     'y_'    '__i'    '__j'     'eg'    'sco'      '_'     'a_'      '_'     'i_'      '_'      '_'     'ie'      'u'    '__o'     'e_'     'l_'     'o_'     'xu'     'kd'     'kd'      'a'     '_i'      's'      't'     'ox'      'i'     'be'     'l_'      'i'     'xe'      'l'      't'      'e'    'ca_'      'o'    'oao'     'oj'    '_io'      'e'      'z' 'nogaw_'    '___'      'k'      'u'      'e'     'he'      'u'    '___'      't'     '_s'    'iiu'    '__u'    'c__'      'a'      't'     'ei'     'am'      'o'   'oee_'   '_u_n'      'g'  'g_ga_'  'oet_w'  'i_eai' 'ea_u_s' 'cm_ga_' 'ouoga_''zx_deai'
              7            2,00            3,72            7,00     'no_'   'boai'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'      'n'     'nu'     'io'   '_o_a'     'co'      'n'    '__a'   '_u_h'     'eo'    'aoi'    'bo_'   '_oxs'     'ao'     'ni'   '_o_j'     'mo'   'aya_'     'co'      'n'      'n'    'lox'      'n'    'lod'   '_ois'    'boi'     'jo'     'co'      'n'    'boi'    '__a'      'i'      'y'     '_u'      'm'      'f'     'e_'      'a'      'u'     'au'     'ow'   'ce_v'     'a_'      'o'      '_'     'l_'   'oewb'     'h_'      '_'    'eai'      'o'     'u_'    'ea_'      'z'     'r_'      '_'      'a'      'j'      't'    '_ai'   'ce__'      'i'     'y_'      '_'    'c_o'      '_'    'aam'     '_e'      'o'     'ce'   '__o_'     '_y'     'ce'      '_'    '__i'      'g'     'cs'      'e'   'eyco'      'u'      'u'      'c'      'b'      'i'    '_ai'    'o_u'      't'      '_'      'o'      'i'    'iiu'    'g_z'      'e'    't_i'      'l'      'e'      'u'     'az'     '_u'      'b'     '_e'      'h'      'e'     'cs'    'b__'      'a'   '_u__'     '_k'    'ejt'     'cg'      'o'     'ke'     '_i'    '_xe'      'u'     'ei'     'iv'     '_u'      'a'    '__e'     'cw'      'g'    '__o'      'a'      '_'     'kh'      '_'      'q'    '__u'  'u_ga_'  'g_ga_' '_x_da_''bx_deai'       ''       ''     '_g'     '_l'      'u'    'eyu'      'i'    'eyo'      '_'
              8            1,00            3,84            9,00     'noa'   'boao'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'     'n_'    'bo_'     '_o'   '_o_a'    '__a'   '_oin'     'nu'    '_o_'   'oga_'    'nco'     'uo'      'n'    'lod'    'bo_'    'boo'   'dga_'     'jo'     'co'     'il'      'a'    '_ai'      '_'     'y_'      'f'      't'      'x'      'a'     'ce'      'a'      'j'      'i'    'o__'   'x_i_'      'e'      'g'     'y_'     '_y'      'u'      'o'      'u'     '_g'      'i'      'g'      'd'      'k'     'jt'      'u'     'yl'     'jn'      'o'      'o'      's'      'i'    'o_o'      's'   '___a'    '_ut'     'y_'     '_e'      'c'    'ca_'      'o'      'o'      'o'   'ku__'    '_a_'      'u'      's'     'ha'      'v'     'h_'      'u'      '_'      'c'      'e'      'r'      'o'     'uu'     'o_'    'be_'      'g'      '_'      '_'      'o'     'e_'     'rv'      't'      'e'      'i'    '__u'    'o_u'      'e'     '_a'   'ykyn'      '_'      'a'     'fu'      'u'      'b'      's'      't'      'i'     'in'    '_ii'      '_'      'o'     'b_'     '__'      'i'     'cg'      '_'      'h'      'g'    'ea_'      'i'      '_'     '_a'      'i'      'o'    'ow_'    '_wb'      'e'      'a'      'u'      'u'  '_x_bt'  'g_ga_'  '_uia_'  'h_eai' 'x_deai''zx_deai''h_x_deai''euzx_deai'     'c_'    '__i' 'tfoawy'     'aa'       ''
              9            1,00            3,69            7,00     'noa'    'no_'    'no_'    'no_'    '_oa'    'noi'    'boa'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'   'boao'    'nuu'    'n_g'     'jo'    'nh_'      'n'     'nw'   'oga_'    'ny_'    'boo'    'lod'     'ne'     'n_'     'uo'   'oga_'    '_oi'    'zoi'    'lod'    'boe'     'ro'    'na_'      'a'      'o'      'j'      'u'     'o_'      '_'      'a'    'eco'      'i'      '_'      's'     'fi'      'm'      'u'      'i'      't'      'o'      'f'      'o'     'od'     '__'      'g'    'be_'      'f'      'g'      'o'      'u'      'u'  'n_eai'     'b_'    'oai'      't'      'u'      's'      'v'      '_'     'yl'    '__o'      'u'      '_'     'rc'      'a'     'ee'    '_ei'      'g'      'g'      'a'      'e'     '__'     'mr'     'hr'      't'      'o'     'yz'      'a'      'a'     '_a'      'o'      'a'     'w_'    'kye'    '_ai'    'o_u'      'o'      'g'     't_'    'oli'  'nz__j'     'uw'    '_uh'    '__g'     'ca'      'a'      'j'      'u'      'x'      'b'    '_ae'   '___a'    'kco'      'h'      'o'      '_'      'o'      '_'      'm'      '_'      'y'      'a'      't'    'o__'     'u_'      'a'     'jm'      'o'     'ba'     '_g'      'y'   '_kye'    'e_i'      'u'      'a'      '_'    'owi'      'a'    'b__'  '_uiue''ocaobe_' '_aobe_''_x_deai'      'n'      '_'       ''
             10            1,00            3,63            6,00     'noa'    'noa'    'boa'   'no_m'   'boae'    'no_'   'boai'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'   'boao'      'n'    'uot'   'nboi'   'nuo_'     'zo'    'nuu'      'n'    'n_g'    '_ea'    'm_a'   'oga_'    'nnw'    '_o_'    'n_g'    'nac'   'nkco'     'uo'    '_of'    'n_y'      'n'   '_eai'     '_o'   'nalu'     '_o'  'nom__'      'y'     'o_'      'u'      'r'      '_'      't'     'ee'      'm'      'e'     'ky'    '_mr'     'e_'     'ii'    'e_u'      'o'     'fi'      'b'    '_ai'      'y'     'u_'      'o'      'i'      'j'    'e_i'      'g'     'o_'  'oga_w'      'c'      'v'     'cl'      'o'      't'      'a'      'i'  'n_eae'     'ow'      '_'    '__o'      'y'     'ru'     'ca'  'nz__j'    'owi'   'ox__'    'e__'      'c'      '_'      'j'      'g'      '_'     'ca'     'ei'     'is'      'd'      'c'    'e_i'      'g'      '_'      'j'      't'      't'      'l'      'i'      'g'      'g'      '_'    'omr'      'a'      '_'      'm'      'w'      'a'      'i'      '_'      'm'     '__'      'o'    'oce'      'a'     'b_'      'o'      'r'     'ce'      'e'      'o'      '_'      'j'     'rr'      'a'      'u'  'np_ui'   '____'     '_a'    'eae'      'a'   'yb_a'     '_i'      'w'     '_a' 'uk_xud' 'oedeai' '_x_da_'     'ja'       ''    'boa'       ''     'la'     'bv'
             11            1,00            3,45            9,00     'noa'    'noa'   'noat'    'noa'    'noa'    'noa'   'nsau'    'boa'   'boam'   'boa_'    'no_'    'boa'    'no_'   'boau'   'boau'    'no_'    'n_a'    'no_'    'no_'    'no_'    'no_'    'noe'   'boai'    'no_'    'no_'   'boai'    'no_'    'nac'     'co'    'mot'   'eeae'     '_o'   'na__'    '_o_'    'n_g'    'n_g'   'nn_s'    'n__'    'nao'      'n'    'nac'      'n'     '_o'   'nx__'     'ni'     'uo'     'nj'   'nm_a'    '_of'      'n'    'n_g'     'w_'    'e_e'      'e'      'i'     'ku'    'a_i'    'wut'      'b'      'b'     '_s'     'e_'      'b'      'a'      's'      'u'    'm__'      'o'      '_'   '_m__'      'c'      'o'     '_l'      'u'      'l'      'j'      'a'     'e_'     '__'      'o'      'w'     'z_'     'ce'      '_'      'a'      'q'  'np_ua'      'o'     'cu'     'ri'      '_'      'u'     'w_'      'i'     'u_'     '_e'     'e_'      'c'     '_u'      't'      'a'      'g'      'e'     'le'     'at'      '_'      'd'      'i'   'anoa'     'wi'    '_bo'      'o'      'y'    'tau'      'q'      'i'  'nboao'      'o'     'b_'     '_u'      '_'      'u'      'u'     '_g'     'fi'  'nz__j'     'o_'     'yk'   'uk_b'      'a'     '__'  'n_ga_'    'ujm'      'o'    'omr'     'cl'      'c'     '_t'      '_'     'w_'     'h_' 'nknboi''np_ax_deai'    'bom'     '_a'      'u'     'at'      'a'       ''
             12            1,00            3,49            8,00    'noaq'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'    'loa'    'no_'    'no_'   'boa_'    'noo'   'yoat'    'no_'    'non'    'noi'    'nom'    'n_a'    'noe'   'boai'   'boau'   'now_'    'no_'    'boa'    'boa'    'no_'    'no_'    'noe'   'boai'      'n'  'noomr'     'nj'      'n'      'n'    'nac'     '_o'    '__a'     '_o'     'eo'    'naq'    'n_m'   'na_m'   'nb__'   'nnoa'    'm_a'     'uo'    'nan'    'n_r'    'n_w'     'yo'    'nk_'   'nm_a'   'n__a'     'n_'   'n_yk'     'na'     'zo'     'o_'      'u'     '_r'  'nsu_a'     'bu'     'be'      '_'     'oc'    '_ei'      'w'  'n_gw_'     'c_'      '_'      't'  'n_goo'     '_t'     'e_'      'u'      'e'     'o_'      'a'      '_'    '___'      'u'     'oi'      'a'   'uk_d'     '_a'      'b'      'c'      'g'  'caaq_'    'x__'      'o'     'wn'     'at'      'i'      'k'      '_'     'eu'      '_'      'e'  'na__a'      '_'      'x'     'cu'  'n_no_'      't'      'w'  'nz__o'     '_a'      'b'     'e_'     'ee'    'e_e'     '__'  'ne_oa'      'm'    'bi_'     'za'      'b'      'a'      'o'     'at'      'u'      '_'     '_t'      'o'     'le'      'u'      'm'     'ba'      'o'      'e'      '_'      'm'     '__'     'we'     'oa'      'u'  '__yu_'  'a_no_' 'np_awu' 'naobe_'  'ujno_''n_gaobe_''nknbboa_''nozx_deai''nnzx_deai'      'a'      'i'      'd'
             13            1,00            3,31            6,00     'noa'   'noaq'   'noaq'    'noa'   'noa_'   'noa_'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'   'boai'   'no_o'   'uoa_'    'no_'   'yoat'   'noyk'    'noc'    'nou'    'not'    'no_'    'no_'   'boae'   'boa_'    'noe'   'n_ai'   'no_a'    'no_'    'no_'    'noe'    'm_a'     'eo'    'x_a'      'n'    'n__'      'n'     'n_'   'n_yb'     '_o'   'wpad'     'ns'    'bo_'    'n_r'   'n_vo'     'eo'    'm_a'     'n_'    'p_a'    'nau'    'nax'   'na__'    'nnw'   'nb__'   'cow_'     'yo'   'n__a'     'bo'    'nau'    'nan'      'x'      'e'     'ai'     'ei'      'j'  'na__a'     'aw'      'e'     'wu'     '_c'     '_a'    'oio'     'es'      '_'      'a'      'a'    'bw_'   'unnw'     '__'      'u'      '_'      'w'      't'     '_n'      'c'   'on_g'   'bio_'   'edea'     'at'     'ke'     'ou'     'wi'      'u'   'x_wi'     'ua'     'o_'   'omo_'      '_'     'e_'      'e'     'oi'      'o'  'aobe_'    '__u'      'a'      'o'      't'     'c_'  'bom_n'    'm__'     'w_'    'dvd'    'uwu'     '__'      'w'      '_'      'o'     'ba'     'ye'      'z'      'a'  'ne_o_'  'ne_oo'      '_'      '_'     'ci'      'j'     'ei'      'y'    'owi'      'w'    'myo'     '_a'     'o_'     '_a'     '_a'      '_'    '__o'      'a'     '_a'     'eu'      'a'      '_'      'u'   'uk_d'      'x'    '__d'      'e'
             14            1,00            3,21            5,00    'noai'    'noa'    'noa'   'noaa'   'noa_'   'noam'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'nou'   'noz_'    'nou'    'noo'   'nnau'    'nou'   'no_a'    'nou'    'nog'   'no_e'    'noc'    'n_a'    'no_'   'no_a'    'noe'   'no_o'    'no_'    'non'   'uoao'    'noc'    'noe'    'nax'   'bow_'      'n'    'nnw'    '_o_'     'na'  'nonoa'    'nco'    'bo_'     'co'      'n'    'ne_'    'nau'    'nan'    'nan'    'nau'    'n_r'  'nom_a'    'n_i'   'na_u'     'ns'    'nle'    'bo_'   'nao_'   'n_w_'    'woi'     'eo'    'nan'     'n_'     'ns'    'kau'     'bu'      '_'      'w'    '__o'      'o'  'aobea'     'be'      '_'     'ei'    'a__'     'u_'     'wu'      'u'    'b_x'  'nanon'      '_'      'm'      '_' 'noou__'      '_'  'ne_oo'    'qke'      'c'      'a'      'u'     'k_'     'ou'      '_'      'w'     'ai'     'oa'     'ke'    'm__'      't'      'u'      'u'     '__'     'en'     'au'      'a'    'm__'     'ad'    'p_w'      'x'      'o'      'u'    'uwu'      '_'   'emo_'     'o_'      'w'   'x_wi'      'u'   'uk_d'      'g'      'o'     'ue'    'tau'      'r'      '_'     'ai'     'wu'     'au'    'xad'     '_a'      '_'    'owi'      'x'     'e_'   'x_w_'      'f'     'bu'    'p_t'     '_w'      'e'      'w'   'm_ke'      'u'     'o_'     'w_'      'w'
             15            1,00            3,15            5,00    'noaa'   'noaa'   'noaq'    'noa'   'noak'    'noa'   'noaz'   'noa_'   'noa_'    'noa'   'noaq'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'n_a'    'noo'    'no_'    'noe'    'n_a'   'noow'   'nmat'    'nou'    'n_a'    'nou'    'noe'   'no_o'   'no_a'    'noe'    'nna'    'nco'   'n__o'    'bo_'    'nao'  'noe_a'    'nax'    'yow'    'n_r'     'n_'     'na'      'n'     'wo'    'm_a'    'nec'    'nau'    'nco'    'bo_'   'nm_e'   'n__u'      'n'   'nawi'    'nan'     'n_'    'bou'    'nau'   'nao_'     'ni'    'naj'    'ne_'  'no_wo'     '_o'  'nonoa'    'n_y'    'ne_'    'nle'  'nonau'   'n_o_'    'nau'    'n_e'    'nw_'      '_'     'en'    '_ke'   'mnoo'      't'     '_u'   'ke_a'     'oe'   '_m_a'     'a_'      'm'     'zm'    'uwu'     'kx'      'm'    'm_u'      '_'      '_'      'u'   'm_ke'      '_'      'c'  'nu_ai'     'w_'    'owi'    'b_x'      'e'    '__o'    'oa_'      '_'      't'      '_'      't'      'g'     'en'      '_'      'o'    'eai'      'o'      '_'     'uu'     'ow'    'u_i'      '_'   'hb_e'    'm_e'     '__'     'm_'     'w_'      'w'      'a'     'eu'     '_a'    'oeo'     'u_'   'exw_'     'w_'     'w_'    'qkm'      'u'    'ou_'      'u'     'fi'     'oa'     'oa'     'uy'     'w_'      '_'  '_noom' 'ngelca' 'nuk_xu'  'edcxu''no_deai'
             16            1,00            3,01            4,00    'noaq'   'noaa'    'noa'   'noaa'    'noa'   'noaz'   'noaq'   'noat'   'noae'    'noa'    'noa'   'noak'    'noa'   'noam'    'noa'    'noa'   'noa_'   'noa_'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'non'    'noi'   'ntau'   'nmat'   'noeo'    'noe'    'nua'    'nou'    'nou'    'n_a'    'noe'    'nou'   'no_w'   'noon'   'now_'     'no'    'no_'    'm_a'    'nfi'     'nm'   'nukt'    'nag'    'nsg'      'n'    'nw_'    'nao'     'n_'    'o_a'   'n_oa'  'nonau'    'n__'    'nm_'    'nce'    'n_i'    'nlb'    'nau'  'noxw_'    'n_o'    'mo_'    'm_a'    'nec'    'ne_'    'nw_'      'n'   'nm_a'    'nau'  'nom_a'  'nou__'   'ww_p'     'ad'     'oa'      '_'     '_a'     'aw'     'w_'      'u'     'e_'     'wu'      '_'     'm_'     'w_'     'aj'      '_'     'aa'      'u'    '__e'  'ngel_' 'no_lod'     'au'     'au'    '_w_'      'u'      'u'     'ow'      'e'    'eai'     'oe'  'nnoa_'      '_'  'nu_au'   '_m__'      'm'      'z'      'g' 'noom_v'      'w'    'm__'     'o_'     '_u'     'aw'      'j'   'bm_a'      'a'   'hb_e'      'w'     'e_'    '_ai'     'z_'     'oa'      'a'     'w_'    '__e'      'z'      '_'   'hb_e'      '_'     'w_'     'om'      'w'      'c'     'w_'     'ce'   'm__o'      '_'    'e__'    'mwu'    'm_o'     'et'     'oe'      'm'     'wd'
             17            1,00            2,87            4,00     'noa'   'noaq'    'noa'   'noak'    'noa'   'noaq'    'noa'    'noa'    'noa'    'noa'   'noaq'   'noa_'   'noaq'   'noa_'   'noa_'    'noa'   'noam'    'noa'   'noan'   'noa_'   'noa_'   'noaq'   'noaa'   'noa_'    'noa'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'noo'   '_oat'    'noo'   'nmau'   'no__'   'now_'   'nofi'    'noe'    'no_'   'noe_'    'no_'    'no_'    'nsw'    'mwa'   'nm_u'    'nag'    'nad'   'nawi'    'ne_'    'mo_'    'n_e'    'nu_'    'nau'      'n'     'wo'  'noooe'    'ntm'    'na_'      'n'      'n'    'n__'    'nm_'   'nz_e'   'nukt'     'wo'  'nom__'    'ntm'    'n_i'    'nw_'   'ncw_'    'u_a'    'nau'    '_on'     'n_'    'nzy'   'nww_'    'n_o'    'nau'    'n_g'   'hb_e'     'aq'     'w_'    'tw_' 'nox_a_'      'z'     '__'     'fi'      'w'     'za'   '_m_f'      'c'     'wi'     'o_'     'a_'    '__u'   'hb_e'     'aa'    'e__'     'wu'     'hu'      'w'    '__e'     'w_'     'ez'     '_a'    '__e'   'hb_e'     'te'     'et'     'oi'     'w_'      'o'   'mxw_'     'ad'  'ns_na'      'g'      'g'     '_a'      'y'    '_au'      'm'     'jq'     'aj'    '_ai'      'a'      'm'      'w'     'w_'      '_'    'gu_'     '_g'      'x'     'j_'     'ze'  'nn_oa'     '_q'    'oat'      'j'      'o'   'bb_a'     'wd'      '_'     'e_'
             18            1,00            2,87            5,00    'noan'   'noaq'   'noa_'   'noaq'    'noa'   'noaq'   'noa_'   'noa_'   'noa_'    'noa'   'noan'    'noa'    'noa'   'noa_'    'noa'   'noan'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'noe'    'nou'   'nom_'     'no'   'n_au'    'nou'   'nooa'    'noe'    'no_'    'no_'    'nou'    'no_'   'noee'    'nma'   'no_i'  'noa_a'    'nou'    'noj'    'nou'    'noh'   'nooo'    'now'    'no_'    'nta'   'no_q'    'noe'   '_oat'    'nwa'    'noo'    'n__'   'naea'   'nuzo'    'n_q'    'n_e'     'n_'  'nooo_'  'noe_a'    'nag'    'nak'    'nti'      'n'    'nue'    'nuu'    'neg'    'neo'   'nukt'    'nsw'     'n_'     'nd'    'nau'    'nu_'    '_aa'    'u_a'   'nnoa'  'noxw_'   'nmo_'    'n_e'    'nww'     'wo'    'n__'    'nw_'   'nmx_'   'n__a'    'nwo'    'ntn'    '_on'    'nag'     'ew'     '__'    '__e' 'noooa_'    '_et'     '_e'     'o_'    'oat'   'www_'      'e'     '_u'     'hu'      '_'     'et'     'oa'    'aau'     'zi'     'at'      'o'     '_a'     'ek'   '_m__'      'e'     'ja'      'w'     'w_'      'a'     'fi'    'e_e'     'oa'      'o'    '_a_'     '_a'   'm_o_'     'bu'     'w_'  'nwww_'     'a_'     'a_'      'e'   'mxsw'     '_a'    'uwn'      'q'     '__'     'aa'    'oat'      'y'   'hb_e'     'ad'    'xw_'     'wu'     '_a'  'guh__'  'mzeai''nous_na'
             19            1,00            2,79            5,00    'noaq'    'noa'   'noaq'   'noaq'   'noa_'    'noa'   'noan'    'noa'   'noa_'   'noa_'    'noa'   'noan'   'noaq'    'noa'    'noa'   'noa_'    'noa'   'noaq'    'noa'   'noaq'   'noaw'   'noa_'    'noa'   'noaw'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'now'   'now_'    'now'    'nou'   'noea'    'no_'    'n_a'    'noe'    'no_'    'noe'    'noo'    'no_'    'no_'  'noa_u'    'noe'   'noeu'   'n_au'    'noy'     'no'    'noe'   'no_a'   'nona'    'non'    'nma'     'no'    'noi'    'num'   'nuo_'   'nn__'   'nuoa'     'zo'   'nuw_'    'nw_'   'mda_'    'nww'   'nxw_'    'ntn'   'nnu_'   'nm_a'   'ntm_'     'eo'    'nmo'    'nak'     'nt'     'n_'    'n__'    'nie'    'nu_'     'n_'   'nm_a'    'n__'    'nz_'     'nd'   'nuoa'    'nau'    'mwa'      'q'  'nm_on'     '_s'     'at'     'bu'     'te'     '_m'     'oj'     '_a'     'za'     'ei'     'x_'     '__'     'tu'   'ane_'     'tm'      '_'      '_'     'w_' 'noooa_'  'nun__'     'kt'    '_et'     '_u'    'xw_'     'a_'    'u_q'     'ze'     '_n'    'cth'    'wau'     'a_' 'noroee' 'noom_e'     '__'     'zi'     '_q'      'a'    '__w'     'w_'    '_a_'     'o_'     'w_'    'mw_'     '_z'     'g_'      'o'      't'     'ew'    'gu_'    'xw_'      'o'     'wu'  'nwww_'      '_'     'oa'      'e' 'nanoaq'  'wk_xu'
             20            1,00            2,90            4,00    'noak'   'noao'   'noaz'   'noaq'    'noa'    'noa'    'noa'   'noaa'   'noat'   'noan'   'noat'    'noa'   'noaq'   'noan'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'now'    'no_'   'noe_'    'now'    'no_'   'no__'  'noag_'   'nona'    'non'    'nea'   'noo_'    'nod'    '_oa'   'nou_'    'nou'    'nob'    'noe'    'n_a'    'noo'    'non'     'no'    'nou'   'n_au'  'noa_e'     'no'    'nor'   'noo_'    'ne_'   'nxw_'   'nuwu'    'nu_'    'm_a'   'nm__'     'nq'    'nao'     'eo'    'nee'     'nh'  'nooaq'     'ng'   'nu_a'    'm_a'   'nnou'    'uo_'   'nn_z'   'nuoa'     'nd'   'n__a'    'nau'   'nxwe'    'nug'    'nte'    'nee'   'nm_e'     'eo'    'nwt'    'naw'    'nmu'     'zo'   'nm_a'   'nu_j'   'nno_' 'noaoa_'     'w_'     'wu'   '_a_u'     'ta'   'om__'      'a'     'g_'    'haq'     'ke'     '_q'     '_z'     'aq'  'nm_o_'  'nun_a'     'w_'     '_u'  'numoa'     'x_'    'mzu' 'noom_u'     'w_'    'tau'     '_q'     'oj'    'm_y'     'qd'    'oaq'   'wnuy'     'an'      '_'      '_'    'bau'     '__'      'a'      '_'     'an'     'oi'     'au'     'w_'    'm_i'    '_eq'      'u'     'at'      '_'    'oa_'  'nnu_a'      '_'      'u'     'e_'     'w_'     'wu'    'rw_'     '_q'    'u_z'    'ha_'      'j'  'aooa_'    'mwe'     'at'     'oa'     'ze'
             21            0,00            2,83            4,00    'noah'   'noa_'   'noat'   'noao'    'noa'   'noan'   'noaz'   'noaq'   'noat'   'noan'   'noa_'   'noaq'    'noa'    'noa'   'noan'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noaq'    'nua'   'noza'   'nooa'    'non'    'now'    'now'   'niak'    'noe'    'no_'    'noe'    'no_'    'noo'   'neai'    'n_a'    'now'    'now'    'noo'    'noe'   'nou_'    'noo'    'noi'   'nowu'   'noum'     'no'     'no'    'noo'   'noet'    'noe'    'nou'    'nou'    '_ot'    'n_z'      'n'     'nu'    'nau'     'nw'    'nu_'   'nm_m'    'n_q'   'mow_'   'nxw_'     'ao'    'nee'     'nd'     'nu'   'n__a'   'nnoe'   'nmoa'   'nuwu'    'uo_'    'nnd'    'nbw'   'nnoa'     'na'    'ne_'    'nug'    'nuu'   'nmoa'    'uo_'   'nnou'     'ng'     'nz'  'nou_a'   'nao_'    'u_a'  'nooo_'   'nxw_'     'n_'    'ne_'      'm'    'rwn'      'g'     'ow'      'i'    'oan'     'eu'    'hw_'   'dpxu'      '_'     'o_'     'bu'  'nm_o_'     'oa'    'tto' 'nodey_'     'ke'     'w_'      'a'      '_'      '_'    'e_e'     'w_'  'ndmo_'      '_'     'wu'   'u_ke'     'xu'     'oa'      'q'     'te'     'ug'    'xw_' 'noom_r'    'u_u'     'qd'      'g'   'mk__'  'aooa_'  'numoa'     '_i'      'e'     'aw'     'ww'    'ma_'     'z_'     'an'     'o_'     'gz'      '_'      '_'    'm_e'   'd_ue'   'dpxu'    'm_w'
             22            0,00            2,77            4,00    'noah'   'noah'   'noaq'    'noa'    'noa'    'noa'    'noa'    'noa'   'noaq'    'noa'    'noa'   'noat'    'noa'   'noaq'   'noau'   'noaq'   'noat'    'noa'   'noan'   'noae'    'noa'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'noaq'   'noza'   'noum'   'noze'   'neai'   'noow'    'no_'   'nooa'    'nog'    'n_a'     'no'   'nou_'    'noe'    'no_'    'noe'    'now'    'now'    'nou'    'no_'   'toat'    'no_'  'nooo_'   'mow_'     'nw'   'aouo'    'nau'  'nound'     'jo'    'e_a'    'm_a'  'noux_'   'nu_a'    'nu_'     'nu'    'ntg'    'nau'     'nw'    '_o_'    'nm_'    'uo_'     'nz'    'n__'     'na'    'u_a'    'uow'    'nez'     'n_'   'nm_o'  'nom_n'  'norwn'    'nau'     'nw'   'n__a'    'nuo'    'nug'      'n'   'uooi'      'n'   'nu_e'   'nnxa'     'nu'     'to'     'na'     'bo'    'nio'     'nk'    'na_'    'nto'      'n'     'n_'     'nz'   'dpa_'     'n_'     'nw'      '_'     'aq'     'w_'     't_'  'numoa'      'o'    'wew'    'ba_'    'r_u'     'oa'     'oa'    'm_o'      'z'      '_'      'a'     'o_'     'k_'    'jai'     'kj'      'o'    '___'      '_'     'wu'    'u_u'    'rwn'    'hah'     'uw'     'ua''noadpxu'      'e'     'o_'     'eu'      'u' 'no_om_'     '_c'     'za'      'm'      'o'      'a'    'y_n'     'o_'   'd_ua'     '_a' 'nodeza'     '_q'   'uu_w'
             23            0,00            2,73            4,00    'noah'   'noah'   'noah'   'noa_'   'noat'   'noaq'   'noax'   'noa_'   'noaq'   'noat'    'noa'   'noaq'   'noaq'   'noaq'   'noaq'   'noaq'   'noaw'   'noak'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noa'   'nouo'   'noze'    'noo'   'naau'   'naau'    'non'   'nou_'  'noaey'   'nout'    '_oa'    'noo'    'n_a'    'nza'   'noo_'   'noze'     'no'    'nou'   'nooe'    'noo'   'nou_'   'noow'    'no_'    'nou'   'nea_'   'noze'   'noee'    'nou'    'uoa'   'nuau'    'nog'    'not'     'nu'      'n'     'nw'  'noxz_'  'nonoa'     'ne'  'nean_'     'nb'      'n'      'n'    'ng_'    'to_'   '_om_'  'nonoa'    'nuz'     'n_'    'q_a'   'nnxa'   'nmw_'   'nn_a'    'nau'   'ngu_'     'nw'     'nx'   'm_an'    'too'  'noo_a'     'nw'     'nw'    'ni_'    'nau'    'nw_'    '_o_'     'bo'    'nmx'     'nk'    'nu_'  'nou_e'     'na'   '_om_'     'ni'    'nuu'    'n_u'    'ne_'     'n_'  'no__g'    'uoe'    'tau'      'a'     'aq'     'o_'     'an'     'ba'  'nmu_o' 'noo_a_'      'i'      'q'   '_rwn'   'hano'      'h'      '_'    'tau' 'nodeza''noadpxe'  'nnoan'     'u_'     'ha'     'b_'     'ag'     '_e'   'e__a'      'g'    'uw_'     '_a'     'w_'     'at'      'u'     '__'      't'      'w'     'w_'      'o'    'uuu'     'ta'     'z_'     'uu' 'nooaey'     '_a'    'wew'     'za'     'jq'     'kw'
             24            0,00            2,72            4,00    'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noad'   'noaq'   'noa_'   'noab'   'noak'   'noat'   'noaq'   'noaq'   'noau'   'noau'    'noa'    'noa'   'noaq'   'noa_'    'noa'   'noat'    'noa'    'noa'    'noa'    'noa'   'noat'    'noa'   'noaq'    'noo'    'non'   'nouw'   'nouo'  'noage'    'no_'    'noo'   'ngae'   'now_'   'nozu'   'noo_'    'noo'   'xoat'   'noi_'    'nou'   'naad'    'noe'    'noh'   'now_'  'noadu'    'noi'    'nou'     'no'   'nooq'   'noe_'   'nou_'    'noe'   'ooa_'    'nzo' 'noaenx'    '_o_'     'to'     'nx'  'nuaau'    't_a'    'nw_'     'nm'    'nwu'    'nw_'     'nx'     'n_'   'nu_a'    '_o_'   'nm_n'  'nonoa'  'nom_e'  'nona_'  'nonaa'    'w_a'    'nm_'   'm_an'   'nuuu'  'no__g'     'n_'    'nu_'   'nxw_' 'noam_g'    'oja'    'new'    'n_e'   'nnu_'     'ao'  'noo_a'      'n'    'nwu'  'noi_t'     'nt'      'u'      'y'   'ugu_' 'nouoah'     'j_'  'nuoza'      'a'      'e'    'm_e'     'ue'     '_u'     'aq'    '_aq'      'a' 'nooxw_'     'oa'     'us'     'bx'   'mw_a'     '_u'     'ha'     'zu'     'at'    'ow_'     'h_'     'oe'    '_um'      'w'    'oa_'      '_'    '_i_'     'ze'     'ws'     'sn' 'nox_ae'      'a'     'zu'      'u'      '_'     'qa'      '_'      'w'     '_q'     'ag' 'nooxza'     'ah'      'o'     'oa' 'nodttg'  'nip_a'    'tau'     'uu'
             25            0,00            2,65            4,00    'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noah'   'noab'   'noaw'   'noan'   'noab'   'noan'   'noan'   'nuah'   'noa_'   'noao'    'noa'   'noa_'   'noao'    'noa'   'noau'   'noa_'   'noam'    'noa'    'noa'    'noa'    'noq'   'nou_'  'noa_a'    'nna'    'no_'    'noe'    'noh'    'nou'   'noug'    'noo'  'noaau'   'nong'    'no_'   'nou_'   'noex'   'ngae'   'nooq'    'noo'    'no_'   'ngae'    'no_'   'nou_'   'noeq'    'nw_'    'nm_'    'n__'    'nau'   'nuw_'  'noxoa'    'nu_'     'oo'    'na_'  'noi_t'     'ne'    'nwu'    'n_e'     'ne'     'ni'     'n_'    'nke'   'nu_a'     '_o'    'nem'    'ni_'    'nwu'   'nxwx'   'nuw_'     'ng'   'nxw_'     'n_' 'nonhu_'  'noxwa'   'nuoa'    'mua'  'noim_'   'uoit'    'nw_'   'nnoa'  'noi_t'     'n_'     'na'  'nonax'    'nwn'    'nak'     'ng'   'nuw_'     'w_'   'o_o_'     'ta'   'gmoa'     'zu'    'xw_'     'w_'      '_'     'wu'      'a'      'a'      'o'     'u_'     'w_'     'tg'     'bu'      'e'      'w'      'u'    '_i_'      '_'     'w_' 'nonoaq'     'zu'     'a_'     'th'     '_u'    'uw_'     'ja'    'ug_'     'ah'     'wu'    'xw_'     'gu'    'hap' 'nooxw_'    'gae'     'ae'      'u'     '_a'    'oah'     'aq'     'aq'     'w_'  'nmoue'    '__n'     'u_'      'a'      'g'     'aa'