''')
for r in sorted(races, key = lambda x: x['date'] if 'date' in x else datetime.datetime(1970,1,1)):
print('''
#### {name1}{res1} × {name2}{res2}

Status
'''.format(
nick = r['nick'],
gname = r['roundname'],
date = r['date'].strftime('%A, %b %d @ %-I:%M%p ET').replace('AM','am').replace('PM','pm') if 'date' in r else '',
name1 = r['runners'][0],
res1 = ' {} +{}'.format(str(r[('winner' if r['runners'][0] == r['winner'] else 'loser')+'_time']).split('.')[0], r[('winner' if r['runners'][0] == r['winner'] else 'loser')+'_points']) if 'winner_time' in r else '',
res2 = ' {} +{}'.format(str(r[('winner' if r['runners'][1] == r['winner'] else 'loser')+'_time']).split('.')[0], r[('winner' if r['runners'][1] == r['winner'] else 'loser')+'_points']) if 'winner_time' in r else '',
name2 = r['runners'][1],
lower1 = r['runners'][0].lower(),
lower2 = r['runners'][-1].lower(),
labels = '\n'.join([ '{}'.format(s) for s in r['statuses'] ]) if 'statuses' in r else '',
datesecs = str(r['date'].timestamp()),
winnerclass = ' winner' if 'stats' in r else '',
loserclass = ' loser' if 'stats' in r else '',
))
print('''

{gname}

*{date}*

{labels}

{}

Trick | {runner1} | {runner2} |
---|

''')
for rn in runners.keys():
r = runners[rn]
print('''
#### {rank} {name}

Rankings
'''.format(
nick = r['nick'],
lower = rn.lower(),
rank = str(r['pts']) + 'pts_{×{}} | '.format(len([ ra for ra in races if rn in ra['runners'] and 'stats' in ra ])) + ('T-' if r['standing']['tied'] else '') + ordinal(r['standing']['rank']),
name = rn,
pb = r['pb'],
comparisons = '\n'.join([ '{}: {}'.format(cn, ('T-' if r['comparisons'][cn]['tied'] else '') + ordinal(r['comparisons'][cn]['rank'])) for cn in r['comparisons'].keys() ]),
points = str(r['pts']).zfill(10),
))
print('''

PB: {pb}

{points}{comparisons}

'), )) ### end runners print('''

made and updated by sbah, graphics generously made by Limcube. generated with python, source code is free to use and agplv3-only, last updated {}. not at all affiliated with GSA — contact me, or sbah#1649@discord