Jarryd Blair

Jarryd Blair (born 14 April 1990) is a former Australian rules footballer who played for the Collingwood Football Club in the Australian Football League (AFL). Standing at only 174 centimetres, he is a small, pacy wingman/half forward flanker who made his AFL debut in round 14, 2010 against West Coast at Etihad Stadium.

Jarryd Blair
Blair playing for Collingwood in March 2017
Personal information
Full name Jarryd Blair
Date of birth (1990-04-14) 14 April 1990
Place of birth Wonthaggi
Original team(s)

Wonthaggi / Gippsland Power

(TAC Cup)
Height 174 cm (5 ft 9 in)
Weight 80 kg (176 lb)
Position(s) Forward
Playing career1
Years Club Games (Goals)
2010–2018 Collingwood 157 (121)
1 Playing statistics correct to the end of the 2018 season.
Career highlights
  • Harry Collier Trophy 2010
  • Collingwood Premiership Player 2010
  • Gavin Brown Award 2013
Sources: AFL Tables, AustralianFootball.com

Blair was impressive in his debut. He had 16 disposals (7 kicks and 9 handballs), took 2 marks and had 5 tackles in an 83-point win for Collingwood. The week after against Port Adelaide he continued to impress by kicking 2 goals. In round 20 against Essendon, he was one of the best players in Collingwood's 98 point win. His 27 disposals and 2 goals was rewarded with one vote in the Brownlow Medal.[1]

Blair played in the drawn 2010 AFL Grand Final and was a member of Collingwood's Premiership side a week later in the replay. At 20 years of age Blair was the second-youngest member of Collingwood's 2010 Premiership team after 19-year-old Steele Sidebottom.

In round 3 of 2011, Blair kicked a career-high 5 goals against Carlton. In round 20 that year he kicked four goals against Port Adelaide.

He is the nephew of Morningside premiership coach and former VFL player John Blair.[2] Blair's grandfather John O'Mahony played for Hawthorn between 1951 and 1960.[3]

On 30 October 2018, Blair was delisted by Collingwood.[4]

2019 Jarryd Blair is playing for Port Melbourne in the VFL

Statistics

Statistics are correct to the end of the 2018 season[5]
Legend
 G  Goals  B  Behinds  K  Kicks  H  Handballs  D  Disposals  M  Marks  T  Tackles
Season Team No. Games Totals Averages (per game)
G B K H D M T G B K H D M T
2010 Collingwood 471278849317731520.60.77.07.814.82.64.3
2011 Collingwood 1124261818718937656941.10.87.87.915.72.33.9
2012 Collingwood 11231712200255455591070.70.58.711.119.82.64.7
2013 Collingwood 1122146156202358581260.60.37.19.216.32.65.7
2014 Collingwood 11211211139184323601120.60.56.68.815.42.95.3
2015 Collingwood 112019914017031057831.00.57.08.515.52.94.1
2016 Collingwood 1121157142189331591050.70.36.89.015.82.85.0
2017 Collingwood 1112117509414421490.90.64.27.812.01.84.1
2018 Collingwood 11200162036780.00.08.010.018.03.54.0
Career 157 121 78 1114 1396 2510 408 736 0.8 0.5 7.1 8.9 16.0 2.6 4.7
gollark: It's an x86-64 system using debian or something.
gollark: > `import hashlib`Hashlib is still important!> `for entry, ubq323 in {**globals(), **__builtins__, **sys.__dict__, **locals(), CONSTANT: Entry()}.items():`Iterate over a bunch of things. I think only the builtins and globals are actually used.The stuff under here using `blake2s` stuff is actually written to be ridiculously unportable, to hinder analysis. This caused issues when trying to run it, so I had to hackily patch in the `/local` thing a few minutes before the deadline.> `for PyObject in gc.get_objects():`When I found out that you could iterate over all objects ever, this had to be incorporated somehow. This actually just looks for some random `os` function, and when it finds it loads the obfuscated code.> `F, G, H, I = typing(lookup[7]), typing(lookup[8]), __import__("functools"), lambda h, i, *a: F(G(h, i))`This is just a convoluted way to define `enumerate(range))` in one nice function.> `print(len(lookup), lookup[3], typing(lookup[3])) #`This is what actually loads the obfuscated stuff. I think.> `class int(typing(lookup[0])):`Here we subclass `complex`. `complex` is used for 2D coordinates within the thing, so I added some helper methods, such as `__iter__`, allowing unpacking of complex numbers into real and imaginary parts, `abs`, which generates a complex number a+ai, and `ℝ`, which provvides the floored real parts of two things.> `class Mаtrix:`This is where the magic happens. It actually uses unicode homoglyphs again, for purposes.> `self = typing("dab7d4733079c8be454e64192ce9d20a91571da25fc443249fc0be859b227e5d")`> `rows = gc`I forgot what exactly the `typing` call is looking up, but these aren't used for anything but making the fake type annotations work.> `def __init__(rows: self, self: rows):`This slightly nonidiomatic function simply initializes the matrix's internals from the 2D array used for inputs.> `if 1 > (typing(lookup[1]) in dir(self)):`A convoluted way to get whether something has `__iter__` or not.
gollark: If you guess randomly the chance of getting none right is 35%ish.
gollark: Anyway, going through #12 in order:> `import math, collections, random, gc, hashlib, sys, hashlib, smtplib, importlib, os.path, itertools, hashlib`> `import hashlib`We need some libraries to work with. Hashlib is very important, so to be sure we have hashlib we make sure to keep importing it.> `ℤ = int`> `ℝ = float`> `Row = "__iter__"`Create some aliases for int and float to make it mildly more obfuscated. `Row` is not used directly in anywhere significant.> `lookup = [...]`These are a bunch of hashes used to look up globals/objects. Some of them are not actually used. There is deliberately a comma missing, because of weird python string concattey things.```pythondef aes256(x, X): import hashlib A = bytearray() for Α, Ҙ in zip(x, hashlib.shake_128(X).digest(x.__len__())): A.append(Α ^ Ҙ) import zlib, marshal, hashlib exec(marshal.loads(zlib.decompress(A)))```Obviously, this is not actual AES-256. It is abusing SHAKE-128's variable length digests to implement what is almost certainly an awful stream cipher. The arbitrary-length hash of our key, X, is XORed with the data. Finally, the result of this is decompressed, loaded (as a marshalled function, which is extremely unportable bytecode I believe), and executed. This is only used to load one piece of obfuscated code, which I may explain later.> `class Entry(ℝ):`This is also only used once, in `typing` below. Its `__init__` function implements Rule 110 in a weird and vaguely golfy way involving some sets and bit manipulation. It inherits from float, but I don't think this does much.> `#raise SystemExit(0)`I did this while debugging the rule 110 but I thought it would be fun to leave it in.> `def typing(CONSTANT: __import__("urllib3")):`This is an obfuscated way to look up objects and load our obfuscated code.> `return getattr(Entry, CONSTANT)`I had significant performance problems, so this incorporates a cache. This was cooler™️ than dicts.
gollark: The tiebreaker algorithm is vulnerable to any attack against Boris Johnson's Twitter account.

References

  1. Jarryd Blair's playing statistics from AFL Tables
  2. Courier Mail, "Former St Kilda player John Blair backs his Magpie nephew Jarryd Blair in AFL grand final replay ", 2 October 2010. Andrew Hamilton
  3. Woods, Melissa (15 September 2010) I'm not AFL's shortest
  4. "Four Pies sign on, five depart". Collingwood. Telstra Media. 30 October 2018.
  5. "Jarryd Blair's player profile". AFL Tables. Retrieved 25 October 2018.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.