2025-26 Fantasy Hockey Draft Recap: Steals and Reaches

The dust has settled on the 2025 draft, and with 18 teams
battling across 16 rounds, every pick mattered. The probability
model — built on X-Rank, league rank, ADP, and positional
weighting — gave us a lens to measure draft efficiency. Let’s
see which managers mined value, who swung early, and how closely the
draft followed projections.
Steals of the Draft
Logan Cooley (Banger Catz, Pick 105 — Projected 75, Diff
–30) Patience rewarded. Projected three rounds earlier, Cooley
fell into the triple digits. A young playmaker who could outperform
instantly.
Matthew Tkachuk (The Untouchables, Pick 75 — Projected 45,
Diff –30) His injury until December explains the slide, but
when healthy, he’s a multi-cat juggernaut. This might be the steal of
the second half of the season.
Linus Ullmark (Rock ’Em Sock ’Em Robots, Pick 155 — Projected
126, Diff –29) In season two with the Capital City Senators,
Ullmark is now a starting No. 1. Drafted almost three rounds later than
projected, this could stabilize Robots’ goaltending all year.
Alex Tuch (Valeri-on Ice, Pick 103 — Projected 76, Diff
–27) A safe, productive winger with top-six usage. ReBuild
grabbed him two rounds later than expected. Quietly excellent value.
Reaches of the Draft
Dougie Hamilton (Going in Drai, Pick 38 — Projected 111, Diff
+73) The largest reach of the draft. If Hamilton bounces back
from injury, Drai will look like a genius. Otherwise, it’s a pick that
cost serious board value.
Jeremy Swayman (Team “.”, Pick 77 — Projected 141, Diff
+64) Goaltending runs always shift ADPs. Swayman went four
rounds early here, a bold bet on Boston’s crease.
Anthony Stolarz (Valeri-on Ice, Pick 66 — Projected 119, Diff
+53) The model expected him late. Instead, he went in the 5th
round as Toronto’s presumed starter. High upside, high risk.
Andrei Svechnikov (Banger Catz, Pick 76 — Projected 127, Diff
+51) Two rounds early for a winger returning from knee surgery.
If he posts a 70-point pace, this will be forgotten. If not, it’s a
costly gamble.
Lane Hutson (Valeri-on Ice, Pick 42 — Projected 92, Diff
+50) The model said 9th round, discounting his play-making
prowess, but Valeri jumped in the 3rd. Keeper upside? Sure. Redraft?
Risky.
Top 10 Steals
1 |
Thatcher Demko |
Mathletes |
153 |
130 |
–23 |
2 |
Logan Cooley |
Banger Catz |
105 |
75 |
–30 |
3 |
Matthew Tkachuk |
The Untouchables |
75 |
45 |
–30 |
4 |
Linus Ullmark |
Rock ’Em Sock ’Em Robots |
155 |
126 |
–29 |
5 |
Alex Tuch |
Valeri-on Ice |
103 |
76 |
–27 |
6 |
Macklin Celebrini |
Rock ’Em Sock ’Em Robots |
26 |
10 |
–16 |
7 |
Connor Bedard |
The Mighty Quokkas |
50 |
34 |
–16 |
8 |
Wyatt Johnston |
Valeri-on Ice |
78 |
62 |
–16 |
9 |
Jacob Trouba |
Magic Mike |
160 |
144 |
–16 |
10 |
Tim Stützle |
Rock ’Em Sock ’Em Robots |
47 |
29 |
–18 |
Top 10 Reaches
1 |
Dougie Hamilton |
Going in Drai |
38 |
111 |
+73 |
2 |
Jeremy Swayman |
Team “.” |
77 |
141 |
+64 |
3 |
Anthony Stolarz |
Valeri-on Ice |
66 |
119 |
+53 |
4 |
Andrei Svechnikov |
Banger Catz |
76 |
127 |
+51 |
5 |
Lane Hutson |
Valeri-on Ice |
42 |
92 |
+50 |
6 |
Gabriel Vilardi |
Mathletes |
117 |
162 |
+45 |
7 |
Ryan Nugent-Hopkins |
The Midtown Mids |
116 |
159 |
+43 |
8 |
Mitch Marner |
Super High Intensity Team |
20 |
52 |
+32 |
9 |
Sergei Bobrovsky |
Peterpumpkineater69 |
51 |
82 |
+31 |
10 |
Kiefer Sherwood |
Going in Drai |
107 |
138 |
+31 |
Final Word
The 18-team grind means every misstep is magnified — and every steal
is gold. Managers who found bargains like Cooley, Tkachuk, and Ullmark
will look brilliant if those players hit. Those who reached for
Hamilton, Swayman, or Hutson are betting heavily on ceiling over
consensus.
The model proved its worth, with two-thirds of all picks landing
within a round, and near-perfect alignment at the top of the board.
Where it missed, it highlighted the very human
tendencies that make drafts exciting: chasing goalies, gambling
on rookies, and daring to dream on injury comebacks.
The season is long, but one thing’s clear — the 2025 draft already
gave us storylines that will be revisited all year.
Norfolk in Chance 2025–26 Power Rankings

1. Rock ’Em Sock ’Em Robots
2024–25 Record: 140-79-12 (.632) – 2nd overall
Change vs. last year: ▲1 Key Players: J.T.
Miller, Tim Stützle, Evander Kane
The Robots earned the top seed in these rankings after another draft
brimming with high-end talent. Stützle and Miller give them scoring
balance, while Evander Kane shores up the hits column. Last year they
were a juggernaut in wins and overall dominance, and while that roster
is history in a redraft, their draft strategy hasn’t lost a step. Their
per-game projections show consistency across all skater categories,
making them the benchmark team heading into 2025–26.
2. Banger Catz
2024–25 Record: 121-97-13 (.552) – 3rd overall
Change vs. last year: ▲1 Key Players: Connor
McDavid, Moritz Seider, Mika Zibanejad
Any roster with Connor McDavid instantly raises the ceiling. This
year’s Catz also boast Seider’s defensive punch and Zibanejad’s
dual-threat scoring. Their projections show elite assists and PPP
production, plus strong peripherals. While last year they came up just
short, this iteration looks even sharper — and could finally deliver a
championship to one of the league’s most consistent managers.
3. The Untouchables
2024–25 Record: 117-95-19 (.548) – 1st overall
Change vs. last year: ▼2 Key Players: Brady
Tkachuk, Matthew Tkachuk, Timo Meier
The Tkachuk brothers headline one of the toughest rosters in the
league. Last season’s champs dominated with physicality, and this year’s
draft again leans into a bruising identity. The Untouchables project
extremely high in hits and blocks, but their offensive projections are
slightly down from other top teams. In a redraft format, that leaves
them vulnerable to being passed, but no one should expect an easy
matchup against this heavy-hitting squad.
4. Magic Mike
2024–25 Record: 113-96-22 (.537) – 6th overall
Change vs. last year: ▲2 Key Players: Jack
Hughes, Dylan Larkin, Kevin Fiala
Magic Mike built a team with speed and offensive versatility. Hughes
is one of the best fantasy centers in the game, Larkin adds goal-scoring
and faceoffs, and Fiala contributes across PPP and shots. Their
projections show above-average numbers in nearly every skater category,
which in a redraft is often the formula for consistency. Last year’s
middle-of-the-pack finish feels like the floor for a team that has
championship upside.
5. Valeri-on Ice ❄️
2024–25 Record: 109-113-9 (.491) – 7th overall
Change vs. last year: ▲2 Key Players: Auston
Matthews, Mark Scheifele, Adin Hill
Matthews’ goal totals alone can swing weekly matchups, and Scheifele
provides a steady assist complement. Hill gives them a goalie
foundation, but the skater projections also show above-average goals and
shots. Last year’s team was streaky; this year’s build feels steadier.
With more balance, Valeri-on Ice could emerge as a dark-horse top-4
contender.
6. Broad Street Bullies
2024–25 Record: 117-102-12 (.532) – 4th overall
Change vs. last year: ▼2 Key Players: David
Pastrnak, Jake Guentzel, Nico Hischier
The Bullies are always competitive, and this year’s roster has some
familiar star power. Pastrnak is a top-tier sniper, Guentzel provides
finishing touch, and Hischier offers well-rounded two-way value. But
projections suggest a small dip, particularly in peripherals compared to
the league’s elite. Expect another strong season, but perhaps not quite
the same top-tier dominance they’ve shown in years past.
7. Peterpumpkineater69
2024–25 Record: 123-95-13 (.561) – 5th overall
Change vs. last year: ▼2 Key Players: William
Nylander, Kyle Connor, Darnell Nurse
Nylander and Connor bring high-volume shooting and goals, while Nurse
adds toughness and blocks. On paper, this roster is balanced, but
projections don’t put them among the top-5 in any single skater
category. That makes them dangerous but not elite, and in a redraft
league, that’s often the difference between a deep playoff run and a
second-round exit.
8. Aqua Dumps
2024–25 Record: 112-96-23 (.535) – 8th overall
Change vs. last year: — Key Players: Mikko
Rantanen, Artemi Panarin, Victor Hedman
Rantanen and Panarin headline one of the better playmaking rosters,
while Hedman adds both PPP and blocks. Projections place Aqua around
league average across most categories, keeping them in the playoff
bubble. They finished 8th last year and seem destined to fight for that
same spot again.
9. The Brady Bunch
2024–25 Record: 103-115-13 (.474) – 10th overall
Change vs. last year: ▲1 Key Players: Brayden
Point, Sam Reinhart, Jake Oettinger
Point and Reinhart give the Brady Bunch a potent offensive duo, while
Oettinger offers stability in goal. Their projections suggest more goals
and assists than last year, putting them on the rise. From 10th to 9th
may not seem like much, but in a tight league, every rung counts.
11. Waving the White Flag 🏳️
2024–25 Record: 93-123-15 (.435) – 18th overall
Change vs. last year: ▲7 Key Players: Jack
Eichel, Filip Forsberg, Adrian Kempe
The league’s biggest projected riser. After bottoming out last
season, White Flag’s draft delivered a much stronger offensive core.
Eichel, Forsberg, and Kempe headline a roster projected for better goals
and shots. A playoff berth is suddenly within reach, a shocking
turnaround from last year.
12. Mack Daddy
2024–25 Record: 109-114-8 (.489) – 9th overall
Change vs. last year: ▼3 Key Players: Nathan
MacKinnon, Roman Josi, Tage Thompson
MacKinnon is still a top-3 fantasy asset, Josi is elite on defense,
and Thompson adds goal upside. But projections show weaker support
behind the stars. This version of Mack Daddy could struggle for
consistency, explaining their slide in the preseason rankings.
13. Super High Intensity Team
2024–25 Record: 100-114-17 (.470) – 12th overall
Change vs. last year: ▼1 Key Players: Quinn
Hughes, Mitchell Marner, John Tavares
This roster has marquee names, but projections show middling totals
in goals and hits. Hughes and Marner will carry them in assists and PPP,
but depth issues limit their ceiling. It feels like another year stuck
in the bottom half.
14. Mathletes
2024–25 Record: 95-121-15 (.444) – 17th overall
Change vs. last year: ▲3 Key Players: Kirill
Kaprizov, Roope Hintz, Miro Heiskanen
The Mathletes rise slightly thanks to improved projections in assists
and PPP. Kaprizov provides top-end production, and Hintz adds steady
per-game value. Still, depth is thin, and any playoff push will require
everything to break right.
15. The Midtown Mids
2024–25 Record: 101-120-10 (.459) – 14th overall
Change vs. last year: ▼1 Key Players: Nikita
Kucherov, Alex Ovechkin, Zach Hyman
Aging stars headline this roster, and projections reflect some
decline in overall output. Kucherov still dominates in PPP, but Ovechkin
and Hyman can’t cover every weakness. The Mids look headed for another
bottom-tier finish.
16. The Mighty Quokkas
2024–25 Record: 94-118-19 (.448) – 16th overall
Change vs. last year: — Key Players: Connor
Bedard, Elias Pettersson, Connor Hellebuyck
The Quokkas are built for the future but stuck in the present.
Bedard’s development will dictate how far they go this year, but
projections place them firmly in the bottom tier again.
17. How do I set a lineup?
2024–25 Record: 99-121-11 (.452) – 15th overall
Change vs. last year: ▼2 Key Players: Cale
Makar, Jason Robertson, Nick Suzuki
Despite top-end names like Makar and Robertson, projections show
glaring holes in secondary categories. Without consistent depth, they’re
likely to fall further down, making this another rebuilding year.
18. . (Dot Team)
2024–25 Record: 99-114-18 (.468) – 13th overall
Change vs. last year: ▼5 Key Players: Sidney
Crosby, Clayton Keller, Brad Marchand
The biggest projected faller. Crosby and Marchand are still great,
but projections suggest decline, and Keller can’t carry the roster
alone. A lack of depth in multiple categories makes Dot the preseason
favorite for the basement.
LS0tDQp0aXRsZTogIk5vcmZvbGsgaW4gQ2hhbmNlOiAyMDI1LTI2IERyYWZ0IFJlY2FwIGFuZCBTZWFzb24gUHJldmlldyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIDIwMjUtMjYgRmFudGFzeSBIb2NrZXkgRHJhZnQgUmVjYXA6IFN0ZWFscyBhbmQgUmVhY2hlcw0KDQogICFbXShDOi9Vc2Vycy9icmFuZC9PbmVEcml2ZS9Eb2N1bWVudHMvbm9yZm9sa19kcmFmdF9yZWNhcF8zLnBuZykNCg0KICBUaGUgZHVzdCBoYXMgc2V0dGxlZCBvbiB0aGUgMjAyNSBkcmFmdCwgYW5kIHdpdGggKioxOCB0ZWFtcyBiYXR0bGluZyBhY3Jvc3MgMTYgcm91bmRzKiosIGV2ZXJ5IHBpY2sgbWF0dGVyZWQuIFRoZSBwcm9iYWJpbGl0eSBtb2RlbCDigJQgYnVpbHQgb24gKipYLVJhbmssIGxlYWd1ZSByYW5rLCBBRFAsIGFuZCBwb3NpdGlvbmFsIHdlaWdodGluZyoqIOKAlCBnYXZlIHVzIGEgbGVucyB0byBtZWFzdXJlIGRyYWZ0IGVmZmljaWVuY3kuIExldOKAmXMgc2VlIHdoaWNoIG1hbmFnZXJzIG1pbmVkIHZhbHVlLCB3aG8gc3d1bmcgZWFybHksIGFuZCBob3cgY2xvc2VseSB0aGUgZHJhZnQgZm9sbG93ZWQgcHJvamVjdGlvbnMuDQoNCi0tLQ0KICANCiMjIyBTdGVhbHMgb2YgdGhlIERyYWZ0DQogIA0KICAqKkxvZ2FuIENvb2xleSAoQmFuZ2VyIENhdHosIFBpY2sgMTA1IOKAlCBQcm9qZWN0ZWQgNzUsIERpZmYg4oCTMzApKioNCiAgUGF0aWVuY2UgcmV3YXJkZWQuIFByb2plY3RlZCB0aHJlZSByb3VuZHMgZWFybGllciwgQ29vbGV5IGZlbGwgaW50byB0aGUgdHJpcGxlIGRpZ2l0cy4gQSB5b3VuZyBwbGF5bWFrZXIgd2hvIGNvdWxkIG91dHBlcmZvcm0gaW5zdGFudGx5Lg0KDQoqKk1hdHRoZXcgVGthY2h1ayAoVGhlIFVudG91Y2hhYmxlcywgUGljayA3NSDigJQgUHJvamVjdGVkIDQ1LCBEaWZmIOKAkzMwKSoqDQogIEhpcyBpbmp1cnkgdW50aWwgRGVjZW1iZXIgZXhwbGFpbnMgdGhlIHNsaWRlLCBidXQgd2hlbiBoZWFsdGh5LCBoZeKAmXMgYSBtdWx0aS1jYXQganVnZ2VybmF1dC4gVGhpcyBtaWdodCBiZSB0aGUgc3RlYWwgb2YgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBzZWFzb24uDQoNCioqTGludXMgVWxsbWFyayAoUm9jayDigJhFbSBTb2NrIOKAmEVtIFJvYm90cywgUGljayAxNTUg4oCUIFByb2plY3RlZCAxMjYsIERpZmYg4oCTMjkpKioNCiAgSW4gc2Vhc29uIHR3byB3aXRoIHRoZSBDYXBpdGFsIENpdHkgU2VuYXRvcnMsIFVsbG1hcmsgaXMgbm93IGEgc3RhcnRpbmcgTm8uIDEuIERyYWZ0ZWQgYWxtb3N0IHRocmVlIHJvdW5kcyBsYXRlciB0aGFuIHByb2plY3RlZCwgdGhpcyBjb3VsZCBzdGFiaWxpemUgUm9ib3Rz4oCZIGdvYWx0ZW5kaW5nIGFsbCB5ZWFyLg0KDQoqKkFsZXggVHVjaCAoVmFsZXJpLW9uIEljZSwgUGljayAxMDMg4oCUIFByb2plY3RlZCA3NiwgRGlmZiDigJMyNykqKg0KICBBIHNhZmUsIHByb2R1Y3RpdmUgd2luZ2VyIHdpdGggdG9wLXNpeCB1c2FnZS4gUmVCdWlsZCBncmFiYmVkIGhpbSB0d28gcm91bmRzIGxhdGVyIHRoYW4gZXhwZWN0ZWQuIFF1aWV0bHkgZXhjZWxsZW50IHZhbHVlLg0KDQotLS0NCiAgDQojIyMgUmVhY2hlcyBvZiB0aGUgRHJhZnQNCiAgDQogICoqRG91Z2llIEhhbWlsdG9uIChHb2luZyBpbiBEcmFpLCBQaWNrIDM4IOKAlCBQcm9qZWN0ZWQgMTExLCBEaWZmICs3MykqKg0KICBUaGUgbGFyZ2VzdCByZWFjaCBvZiB0aGUgZHJhZnQuIElmIEhhbWlsdG9uIGJvdW5jZXMgYmFjayBmcm9tIGluanVyeSwgRHJhaSB3aWxsIGxvb2sgbGlrZSBhIGdlbml1cy4gT3RoZXJ3aXNlLCBpdOKAmXMgYSBwaWNrIHRoYXQgY29zdCBzZXJpb3VzIGJvYXJkIHZhbHVlLg0KDQoqKkplcmVteSBTd2F5bWFuIChUZWFtIOKAnC7igJ0sIFBpY2sgNzcg4oCUIFByb2plY3RlZCAxNDEsIERpZmYgKzY0KSoqDQogIEdvYWx0ZW5kaW5nIHJ1bnMgYWx3YXlzIHNoaWZ0IEFEUHMuIFN3YXltYW4gd2VudCBmb3VyIHJvdW5kcyBlYXJseSBoZXJlLCBhIGJvbGQgYmV0IG9uIEJvc3RvbuKAmXMgY3JlYXNlLg0KDQoqKkFudGhvbnkgU3RvbGFyeiAoVmFsZXJpLW9uIEljZSwgUGljayA2NiDigJQgUHJvamVjdGVkIDExOSwgRGlmZiArNTMpKioNCiAgVGhlIG1vZGVsIGV4cGVjdGVkIGhpbSBsYXRlLiBJbnN0ZWFkLCBoZSB3ZW50IGluIHRoZSA1dGggcm91bmQgYXMgVG9yb250b+KAmXMgcHJlc3VtZWQgc3RhcnRlci4gSGlnaCB1cHNpZGUsIGhpZ2ggcmlzay4NCg0KKipBbmRyZWkgU3ZlY2huaWtvdiAoQmFuZ2VyIENhdHosIFBpY2sgNzYg4oCUIFByb2plY3RlZCAxMjcsIERpZmYgKzUxKSoqDQogIFR3byByb3VuZHMgZWFybHkgZm9yIGEgd2luZ2VyIHJldHVybmluZyBmcm9tIGtuZWUgc3VyZ2VyeS4gSWYgaGUgcG9zdHMgYSA3MC1wb2ludCBwYWNlLCB0aGlzIHdpbGwgYmUgZm9yZ290dGVuLiBJZiBub3QsIGl04oCZcyBhIGNvc3RseSBnYW1ibGUuDQoNCioqTGFuZSBIdXRzb24gKFZhbGVyaS1vbiBJY2UsIFBpY2sgNDIg4oCUIFByb2plY3RlZCA5MiwgRGlmZiArNTApKioNCiAgVGhlIG1vZGVsIHNhaWQgOXRoIHJvdW5kLCBkaXNjb3VudGluZyBoaXMgcGxheS1tYWtpbmcgcHJvd2VzcywgYnV0IFZhbGVyaSBqdW1wZWQgaW4gdGhlIDNyZC4gS2VlcGVyIHVwc2lkZT8gU3VyZS4gUmVkcmFmdD8gUmlza3kuDQoNCg0KLS0tDQoNCiMjIyBUb3AgMTAgU3RlYWxzDQogIA0KICB8IFJhbmsgfCBQbGF5ZXIgICAgICAgICAgICB8IFRlYW0gICAgICAgICAgICAgICAgICAgICB8IFBpY2sgfCBQcm9qZWN0ZWQgfCBEaWZmIHwNCiAgfCAtLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tIHwgLS0tLS0tLS0tIHwgLS0tLSB8DQogIHwgMSAgICB8IFRoYXRjaGVyIERlbWtvICAgIHwgTWF0aGxldGVzICAgICAgICAgICAgICAgIHwgMTUzICB8IDEzMCAgICAgICB8IOKAkzIzICB8DQogIHwgMiAgICB8IExvZ2FuIENvb2xleSAgICAgIHwgQmFuZ2VyIENhdHogICAgICAgICAgICAgIHwgMTA1ICB8IDc1ICAgICAgICB8IOKAkzMwICB8DQogIHwgMyAgICB8IE1hdHRoZXcgVGthY2h1ayAgIHwgVGhlIFVudG91Y2hhYmxlcyAgICAgICAgIHwgNzUgICB8IDQ1ICAgICAgICB8IOKAkzMwICB8DQogIHwgNCAgICB8IExpbnVzIFVsbG1hcmsgICAgIHwgUm9jayDigJhFbSBTb2NrIOKAmEVtIFJvYm90cyB8IDE1NSAgfCAxMjYgICAgICAgfCDigJMyOSAgfA0KICB8IDUgICAgfCBBbGV4IFR1Y2ggICAgICAgICB8IFZhbGVyaS1vbiBJY2UgICAgICAgICB8IDEwMyAgfCA3NiAgICAgICAgfCDigJMyNyAgfA0KICB8IDYgICAgfCBNYWNrbGluIENlbGVicmluaSB8IFJvY2sg4oCYRW0gU29jayDigJhFbSBSb2JvdHMgfCAyNiAgIHwgMTAgICAgICAgIHwg4oCTMTYgIHwNCiAgfCA3ICAgIHwgQ29ubm9yIEJlZGFyZCAgICAgfCBUaGUgTWlnaHR5IFF1b2trYXMgICAgICAgfCA1MCAgIHwgMzQgICAgICAgIHwg4oCTMTYgIHwNCiAgfCA4ICAgIHwgV3lhdHQgSm9obnN0b24gICAgfCBWYWxlcmktb24gSWNlICAgICAgICAgfCA3OCAgIHwgNjIgICAgICAgIHwg4oCTMTYgIHwNCiAgfCA5ICAgIHwgSmFjb2IgVHJvdWJhICAgICAgfCBNYWdpYyBNaWtlICAgICAgICAgICAgICAgfCAxNjAgIHwgMTQ0ICAgICAgIHwg4oCTMTYgIHwNCiAgfCAxMCAgIHwgVGltIFN0w7x0emxlICAgICAgIHwgUm9jayDigJhFbSBTb2NrIOKAmEVtIFJvYm90cyB8IDQ3ICAgfCAyOSAgICAgICAgfCDigJMxOCAgfA0KICANCi0tLQ0KICANCiMjIyBUb3AgMTAgUmVhY2hlcw0KICANCiAgfCBSYW5rIHwgUGxheWVyICAgICAgICAgICAgICB8IFRlYW0gICAgICAgICAgICAgICAgICAgICAgfCBQaWNrIHwgUHJvamVjdGVkIHwgRGlmZiB8DQogIHwgLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLSB8IC0tLS0tLS0tLSB8IC0tLS0gfA0KICB8IDEgICAgfCBEb3VnaWUgSGFtaWx0b24gICAgIHwgR29pbmcgaW4gRHJhaSAgICAgICAgICAgICB8IDM4ICAgfCAxMTEgICAgICAgfCArNzMgIHwNCiAgfCAyICAgIHwgSmVyZW15IFN3YXltYW4gICAgICB8IFRlYW0g4oCcLuKAnSAgICAgICAgICAgICAgICAgIHwgNzcgICB8IDE0MSAgICAgICB8ICs2NCAgfA0KICB8IDMgICAgfCBBbnRob255IFN0b2xhcnogICAgIHwgVmFsZXJpLW9uIEljZSAgICAgICAgICB8IDY2ICAgfCAxMTkgICAgICAgfCArNTMgIHwNCiAgfCA0ICAgIHwgQW5kcmVpIFN2ZWNobmlrb3YgICB8IEJhbmdlciBDYXR6ICAgICAgICAgICAgICAgfCA3NiAgIHwgMTI3ICAgICAgIHwgKzUxICB8DQogIHwgNSAgICB8IExhbmUgSHV0c29uICAgICAgICAgfCBWYWxlcmktb24gSWNlICAgICAgICAgIHwgNDIgICB8IDkyICAgICAgICB8ICs1MCAgfA0KICB8IDYgICAgfCBHYWJyaWVsIFZpbGFyZGkgICAgIHwgTWF0aGxldGVzICAgICAgICAgICAgICAgICB8IDExNyAgfCAxNjIgICAgICAgfCArNDUgIHwNCiAgfCA3ICAgIHwgUnlhbiBOdWdlbnQtSG9wa2lucyB8IFRoZSBNaWR0b3duIE1pZHMgICAgICAgICAgfCAxMTYgIHwgMTU5ICAgICAgIHwgKzQzICB8DQogIHwgOCAgICB8IE1pdGNoIE1hcm5lciAgICAgICAgfCBTdXBlciBIaWdoIEludGVuc2l0eSBUZWFtIHwgMjAgICB8IDUyICAgICAgICB8ICszMiAgfA0KICB8IDkgICAgfCBTZXJnZWkgQm9icm92c2t5ICAgIHwgUGV0ZXJwdW1wa2luZWF0ZXI2OSAgICAgICB8IDUxICAgfCA4MiAgICAgICAgfCArMzEgIHwNCiAgfCAxMCAgIHwgS2llZmVyIFNoZXJ3b29kICAgICB8IEdvaW5nIGluIERyYWkgICAgICAgICAgICAgfCAxMDcgIHwgMTM4ICAgICAgIHwgKzMxICB8DQogIA0KDQogIA0KIyMjIEZpbmFsIFdvcmQNCiAgDQogIFRoZSAxOC10ZWFtIGdyaW5kIG1lYW5zIGV2ZXJ5IG1pc3N0ZXAgaXMgbWFnbmlmaWVkIOKAlCBhbmQgZXZlcnkgc3RlYWwgaXMgZ29sZC4gTWFuYWdlcnMgd2hvIGZvdW5kIGJhcmdhaW5zIGxpa2UgQ29vbGV5LCBUa2FjaHVrLCBhbmQgVWxsbWFyayB3aWxsIGxvb2sgYnJpbGxpYW50IGlmIHRob3NlIHBsYXllcnMgaGl0LiBUaG9zZSB3aG8gcmVhY2hlZCBmb3IgSGFtaWx0b24sIFN3YXltYW4sIG9yIEh1dHNvbiBhcmUgYmV0dGluZyBoZWF2aWx5IG9uIGNlaWxpbmcgb3ZlciBjb25zZW5zdXMuDQoNClRoZSBtb2RlbCBwcm92ZWQgaXRzIHdvcnRoLCB3aXRoIHR3by10aGlyZHMgb2YgYWxsIHBpY2tzIGxhbmRpbmcgd2l0aGluIGEgcm91bmQsIGFuZCBuZWFyLXBlcmZlY3QgYWxpZ25tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGJvYXJkLiBXaGVyZSBpdCBtaXNzZWQsIGl0IGhpZ2hsaWdodGVkIHRoZSAqKnZlcnkgaHVtYW4gdGVuZGVuY2llcyoqIHRoYXQgbWFrZSBkcmFmdHMgZXhjaXRpbmc6IGNoYXNpbmcgZ29hbGllcywgZ2FtYmxpbmcgb24gcm9va2llcywgYW5kIGRhcmluZyB0byBkcmVhbSBvbiBpbmp1cnkgY29tZWJhY2tzLg0KDQpUaGUgc2Vhc29uIGlzIGxvbmcsIGJ1dCBvbmUgdGhpbmfigJlzIGNsZWFyIOKAlCB0aGUgMjAyNSBkcmFmdCBhbHJlYWR5IGdhdmUgdXMgc3RvcnlsaW5lcyB0aGF0IHdpbGwgYmUgcmV2aXNpdGVkIGFsbCB5ZWFyLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiMjIE5vcmZvbGsgaW4gQ2hhbmNlIEFubm91bmNlcyB0aGUgRmlyc3QgVG9vbmllIE5pZ2h0IG9mIDIwMjUtMjY6IEdvYWxzLCBBc3Npc3RzLCBhbmQgR2xvcnkgb24gdGhlIExpbmUNCiAgDQogICFbXShDOi9Vc2Vycy9icmFuZC9PbmVEcml2ZS9Eb2N1bWVudHMvbm9yZm9sa19kcmFmdF9yZWNhcF8yLnBuZykNCg0KICBTYXR1cmRheSwgT2N0b2JlciAxMXRoIG1hcmtzIGEgc3BlY2lhbCBuaWdodCBpbiB0aGUgbGVhZ3VlIGNhbGVuZGFyIOKAlCB0aGUgZGVidXQgb2YgKipUb29uaWUgTmlnaHQqKi4gV2l0aCBhbGwgMzIgTkhMIHRlYW1zIGluIGFjdGlvbiwgZmFudGFzeSBzcXVhZHMgd2lsbCBoYXZlIHRoZWlyIHJvc3RlcnMgcHVzaGVkIHRvIHRoZSBsaW1pdCBpbiBhIGhpZ2gtc2NvcmluZyBmcmVuenkuDQoNClRoZSBydWxlcyBhcmUgc2ltcGxlOg0KICANCiAgKiAqKkdvYWxzIGFyZSB3b3J0aCBkb3VibGUgKHgyKSoqLg0KKiAqKkFkZCBpbiBhc3Npc3RzKiosIGFuZCB0aGUgdGVhbSB3aXRoIHRoZSAqKmhpZ2hlc3QgY29tYmluZWQgdG90YWwqKiBhdCB0aGUgZW5kIG9mIHRoZSBuaWdodCB0YWtlcyBob21lIHRoZSAqKmNvdmV0ZWQgVG9vbmllIE5pZ2h0IHByaXplKiouDQoNClRoaXMgaXMgbW9yZSB0aGFuIGp1c3QgYW5vdGhlciBTYXR1cmRheSBzbGF0ZSDigJQgaXTigJlzIGEgb25lLW5pZ2h0IHNwcmludCB3aGVyZSBldmVyeSBzaG90LCBzZXR1cCwgYW5kIGZpbmlzaCBjYXJyaWVzIGV4dHJhIHdlaWdodC4gRGVwdGggc2NvcmVycyBiZWNvbWUgaGlkZGVuIGdlbXMsIHBvd2VyIHBsYXkgcXVhcnRlcmJhY2tzIGFyZSBnb2xkZW4sIGFuZCBhIHNpbmdsZSBtdWx0aS1wb2ludCBuaWdodCBjb3VsZCBzd2luZyB0aGUgc3RhbmRpbmdzLg0KDQotLS0NCiAgDQojIyMgV2hhdCBNYWtlcyBUaGlzIFRvb25pZSBOaWdodCBTcGVjaWFsPw0KICANCiAgKiAqKkV2ZXJ5IE5ITCB0ZWFtIGlzIHBsYXlpbmcuKiogSXTigJlzIHRoZSByYXJlIHBlcmZlY3Qgc3Rvcm0gd2hlcmUgbm8gbWFuYWdlciBoYXMgYW4gZW1wdHkgbGluZXVwIHNsb3QuIEV4cGVjdCBmaXJld29ya3MgYWNyb3NzIHRoZSBib2FyZC4NCiogKipUaGUgcHJpemUuKiogVGhlIHdpbm5lciBzZWN1cmVzIG5vdCBvbmx5IGJyYWdnaW5nIHJpZ2h0cyBidXQgYWxzbyB0aGUgZmlyc3Qgb2ZmaWNpYWwgKipUb29uaWUgTmlnaHQgdGl0bGUqKiDigJQgYSBiYWRnZSB0aGF0IHdpbGwgYmUgcmVtZW1iZXJlZCBhbGwgc2Vhc29uLg0KKiAqKlN0cmF0ZWd5IHR3aXN0LioqIFdpdGggZ29hbHMgd29ydGggZG91YmxlLCBtYW5hZ2VycyBsZWFuaW5nIG9uIHNuaXBlcnMgbWF5IGZpbmQgdGhlbXNlbHZlcyBob2xkaW5nIHRoZSB1cHBlciBoYW5kLiBCdXQgZG9u4oCZdCBkaXNjb3VudCB0aGUgcGxheW1ha2VycyDigJQgYSB0aHJlZS1hc3Npc3QgbmlnaHQgY291bGQgYmUganVzdCBhcyB2YWx1YWJsZS4NCg0KLS0tDQogIA0KIyMjIFN0b3J5bGluZXMgdG8gV2F0Y2gNCiAgDQogICogKipXaGljaCBtYW5hZ2Vy4oCZcyBzdGFycyB3aWxsIGVydXB0PyoqIFdpbGwgaXQgYmUgYSBNY0RhdmlkIGhhdCB0cmljaywgYSBQYXN0cm5hayBwb3dlciBwbGF5IGNsaW5pYywgb3IgYSBLYXByaXpvdiB0YWtlb3Zlcj8NCiAgKiAqKkRhcmsgaG9yc2VzLioqIFRoaXJkLWxpbmUgZ3JpbmRlcnMgb3Igcm9va2llIGNhbGwtdXBzIHdobyBsaWdodCB0aGUgbGFtcCBjb3VsZCB0aWx0IHRoZSBiYWxhbmNlIGluIHVuZXhwZWN0ZWQgd2F5cy4NCiogKipUaGUgYnJhZ2dpbmcgcmlnaHRzLioqIEluIGFuIDE4LXRlYW0gbGVhZ3VlLCB3aW5uaW5nIGEgb25lLW5pZ2h0IGNvbnRlc3QgbWVhbnMgYmVhdGluZyAxNyByaXZhbHMgaGVhZC10by1oZWFkIGluIGEgc2luZ2xlIHNob3dkb3duLg0KDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMgTm9yZm9sayBpbiBDaGFuY2UgMjAyNeKAkzI2IFBvd2VyIFJhbmtpbmdzDQoNCiFbXShDOi9Vc2Vycy9icmFuZC9PbmVEcml2ZS9Eb2N1bWVudHMvbm9yZm9sa19kcmFmdF9yZWNhcF80LnBuZykNCg0KDQojIyMgMS4gKipSb2NrIOKAmEVtIFNvY2sg4oCYRW0gUm9ib3RzKioNCg0KKioyMDI04oCTMjUgUmVjb3JkOioqIDE0MC03OS0xMiAoLjYzMikg4oCTIDJuZCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWsjENCipLZXkgUGxheWVyczoqIEouVC4gTWlsbGVyLCBUaW0gU3TDvHR6bGUsIEV2YW5kZXIgS2FuZQ0KDQpUaGUgUm9ib3RzIGVhcm5lZCB0aGUgdG9wIHNlZWQgaW4gdGhlc2UgcmFua2luZ3MgYWZ0ZXIgYW5vdGhlciBkcmFmdCBicmltbWluZyB3aXRoIGhpZ2gtZW5kIHRhbGVudC4gU3TDvHR6bGUgYW5kIE1pbGxlciBnaXZlIHRoZW0gc2NvcmluZyBiYWxhbmNlLCB3aGlsZSBFdmFuZGVyIEthbmUgc2hvcmVzIHVwIHRoZSBoaXRzIGNvbHVtbi4gTGFzdCB5ZWFyIHRoZXkgd2VyZSBhIGp1Z2dlcm5hdXQgaW4gd2lucyBhbmQgb3ZlcmFsbCBkb21pbmFuY2UsIGFuZCB3aGlsZSB0aGF0IHJvc3RlciBpcyBoaXN0b3J5IGluIGEgcmVkcmFmdCwgdGhlaXIgZHJhZnQgc3RyYXRlZ3kgaGFzbuKAmXQgbG9zdCBhIHN0ZXAuIFRoZWlyIHBlci1nYW1lIHByb2plY3Rpb25zIHNob3cgY29uc2lzdGVuY3kgYWNyb3NzIGFsbCBza2F0ZXIgY2F0ZWdvcmllcywgbWFraW5nIHRoZW0gdGhlIGJlbmNobWFyayB0ZWFtIGhlYWRpbmcgaW50byAyMDI14oCTMjYuDQoNCi0tLQ0KDQojIyMgMi4gKipCYW5nZXIgQ2F0eioqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMjEtOTctMTMgKC41NTIpIOKAkyAzcmQgb3ZlcmFsbA0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrIxDQoqS2V5IFBsYXllcnM6KiBDb25ub3IgTWNEYXZpZCwgTW9yaXR6IFNlaWRlciwgTWlrYSBaaWJhbmVqYWQNCg0KQW55IHJvc3RlciB3aXRoIENvbm5vciBNY0RhdmlkIGluc3RhbnRseSByYWlzZXMgdGhlIGNlaWxpbmcuIFRoaXMgeWVhcuKAmXMgQ2F0eiBhbHNvIGJvYXN0IFNlaWRlcuKAmXMgZGVmZW5zaXZlIHB1bmNoIGFuZCBaaWJhbmVqYWTigJlzIGR1YWwtdGhyZWF0IHNjb3JpbmcuIFRoZWlyIHByb2plY3Rpb25zIHNob3cgZWxpdGUgYXNzaXN0cyBhbmQgUFBQIHByb2R1Y3Rpb24sIHBsdXMgc3Ryb25nIHBlcmlwaGVyYWxzLiBXaGlsZSBsYXN0IHllYXIgdGhleSBjYW1lIHVwIGp1c3Qgc2hvcnQsIHRoaXMgaXRlcmF0aW9uIGxvb2tzIGV2ZW4gc2hhcnBlciDigJQgYW5kIGNvdWxkIGZpbmFsbHkgZGVsaXZlciBhIGNoYW1waW9uc2hpcCB0byBvbmUgb2YgdGhlIGxlYWd1ZeKAmXMgbW9zdCBjb25zaXN0ZW50IG1hbmFnZXJzLg0KDQotLS0NCg0KIyMjIDMuICoqVGhlIFVudG91Y2hhYmxlcyoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMTctOTUtMTkgKC41NDgpIOKAkyAxc3Qgb3ZlcmFsbA0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrwyDQoqS2V5IFBsYXllcnM6KiBCcmFkeSBUa2FjaHVrLCBNYXR0aGV3IFRrYWNodWssIFRpbW8gTWVpZXINCg0KVGhlIFRrYWNodWsgYnJvdGhlcnMgaGVhZGxpbmUgb25lIG9mIHRoZSB0b3VnaGVzdCByb3N0ZXJzIGluIHRoZSBsZWFndWUuIExhc3Qgc2Vhc29u4oCZcyBjaGFtcHMgZG9taW5hdGVkIHdpdGggcGh5c2ljYWxpdHksIGFuZCB0aGlzIHllYXLigJlzIGRyYWZ0IGFnYWluIGxlYW5zIGludG8gYSBicnVpc2luZyBpZGVudGl0eS4gVGhlIFVudG91Y2hhYmxlcyBwcm9qZWN0IGV4dHJlbWVseSBoaWdoIGluIGhpdHMgYW5kIGJsb2NrcywgYnV0IHRoZWlyIG9mZmVuc2l2ZSBwcm9qZWN0aW9ucyBhcmUgc2xpZ2h0bHkgZG93biBmcm9tIG90aGVyIHRvcCB0ZWFtcy4gSW4gYSByZWRyYWZ0IGZvcm1hdCwgdGhhdCBsZWF2ZXMgdGhlbSB2dWxuZXJhYmxlIHRvIGJlaW5nIHBhc3NlZCwgYnV0IG5vIG9uZSBzaG91bGQgZXhwZWN0IGFuIGVhc3kgbWF0Y2h1cCBhZ2FpbnN0IHRoaXMgaGVhdnktaGl0dGluZyBzcXVhZC4NCg0KLS0tDQoNCiMjIyA0LiAqKk1hZ2ljIE1pa2UqKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogMTEzLTk2LTIyICguNTM3KSDigJMgNnRoIG92ZXJhbGwNCioqQ2hhbmdlIHZzLiBsYXN0IHllYXI6Kiog4payMg0KKktleSBQbGF5ZXJzOiogSmFjayBIdWdoZXMsIER5bGFuIExhcmtpbiwgS2V2aW4gRmlhbGENCg0KTWFnaWMgTWlrZSBidWlsdCBhIHRlYW0gd2l0aCBzcGVlZCBhbmQgb2ZmZW5zaXZlIHZlcnNhdGlsaXR5LiBIdWdoZXMgaXMgb25lIG9mIHRoZSBiZXN0IGZhbnRhc3kgY2VudGVycyBpbiB0aGUgZ2FtZSwgTGFya2luIGFkZHMgZ29hbC1zY29yaW5nIGFuZCBmYWNlb2ZmcywgYW5kIEZpYWxhIGNvbnRyaWJ1dGVzIGFjcm9zcyBQUFAgYW5kIHNob3RzLiBUaGVpciBwcm9qZWN0aW9ucyBzaG93IGFib3ZlLWF2ZXJhZ2UgbnVtYmVycyBpbiBuZWFybHkgZXZlcnkgc2thdGVyIGNhdGVnb3J5LCB3aGljaCBpbiBhIHJlZHJhZnQgaXMgb2Z0ZW4gdGhlIGZvcm11bGEgZm9yIGNvbnNpc3RlbmN5LiBMYXN0IHllYXLigJlzIG1pZGRsZS1vZi10aGUtcGFjayBmaW5pc2ggZmVlbHMgbGlrZSB0aGUgZmxvb3IgZm9yIGEgdGVhbSB0aGF0IGhhcyBjaGFtcGlvbnNoaXAgdXBzaWRlLg0KDQotLS0NCg0KIyMjIDUuICoqVmFsZXJpLW9uIEljZSDinYTvuI8qKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogMTA5LTExMy05ICguNDkxKSDigJMgN3RoIG92ZXJhbGwNCioqQ2hhbmdlIHZzLiBsYXN0IHllYXI6Kiog4payMg0KKktleSBQbGF5ZXJzOiogQXVzdG9uIE1hdHRoZXdzLCBNYXJrIFNjaGVpZmVsZSwgQWRpbiBIaWxsDQoNCk1hdHRoZXdz4oCZIGdvYWwgdG90YWxzIGFsb25lIGNhbiBzd2luZyB3ZWVrbHkgbWF0Y2h1cHMsIGFuZCBTY2hlaWZlbGUgcHJvdmlkZXMgYSBzdGVhZHkgYXNzaXN0IGNvbXBsZW1lbnQuIEhpbGwgZ2l2ZXMgdGhlbSBhIGdvYWxpZSBmb3VuZGF0aW9uLCBidXQgdGhlIHNrYXRlciBwcm9qZWN0aW9ucyBhbHNvIHNob3cgYWJvdmUtYXZlcmFnZSBnb2FscyBhbmQgc2hvdHMuIExhc3QgeWVhcuKAmXMgdGVhbSB3YXMgc3RyZWFreTsgdGhpcyB5ZWFy4oCZcyBidWlsZCBmZWVscyBzdGVhZGllci4gV2l0aCBtb3JlIGJhbGFuY2UsIFZhbGVyaS1vbiBJY2UgY291bGQgZW1lcmdlIGFzIGEgZGFyay1ob3JzZSB0b3AtNCBjb250ZW5kZXIuDQoNCi0tLQ0KDQojIyMgNi4gKipCcm9hZCBTdHJlZXQgQnVsbGllcyoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMTctMTAyLTEyICguNTMyKSDigJMgNHRoIG92ZXJhbGwNCioqQ2hhbmdlIHZzLiBsYXN0IHllYXI6Kiog4pa8Mg0KKktleSBQbGF5ZXJzOiogRGF2aWQgUGFzdHJuYWssIEpha2UgR3VlbnR6ZWwsIE5pY28gSGlzY2hpZXINCg0KVGhlIEJ1bGxpZXMgYXJlIGFsd2F5cyBjb21wZXRpdGl2ZSwgYW5kIHRoaXMgeWVhcuKAmXMgcm9zdGVyIGhhcyBzb21lIGZhbWlsaWFyIHN0YXIgcG93ZXIuIFBhc3RybmFrIGlzIGEgdG9wLXRpZXIgc25pcGVyLCBHdWVudHplbCBwcm92aWRlcyBmaW5pc2hpbmcgdG91Y2gsIGFuZCBIaXNjaGllciBvZmZlcnMgd2VsbC1yb3VuZGVkIHR3by13YXkgdmFsdWUuIEJ1dCBwcm9qZWN0aW9ucyBzdWdnZXN0IGEgc21hbGwgZGlwLCBwYXJ0aWN1bGFybHkgaW4gcGVyaXBoZXJhbHMgY29tcGFyZWQgdG8gdGhlIGxlYWd1ZeKAmXMgZWxpdGUuIEV4cGVjdCBhbm90aGVyIHN0cm9uZyBzZWFzb24sIGJ1dCBwZXJoYXBzIG5vdCBxdWl0ZSB0aGUgc2FtZSB0b3AtdGllciBkb21pbmFuY2UgdGhleeKAmXZlIHNob3duIGluIHllYXJzIHBhc3QuDQoNCi0tLQ0KDQojIyMgNy4gKipQZXRlcnB1bXBraW5lYXRlcjY5KioNCg0KKioyMDI04oCTMjUgUmVjb3JkOioqIDEyMy05NS0xMyAoLjU2MSkg4oCTIDV0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWvDINCipLZXkgUGxheWVyczoqIFdpbGxpYW0gTnlsYW5kZXIsIEt5bGUgQ29ubm9yLCBEYXJuZWxsIE51cnNlDQoNCk55bGFuZGVyIGFuZCBDb25ub3IgYnJpbmcgaGlnaC12b2x1bWUgc2hvb3RpbmcgYW5kIGdvYWxzLCB3aGlsZSBOdXJzZSBhZGRzIHRvdWdobmVzcyBhbmQgYmxvY2tzLiBPbiBwYXBlciwgdGhpcyByb3N0ZXIgaXMgYmFsYW5jZWQsIGJ1dCBwcm9qZWN0aW9ucyBkb27igJl0IHB1dCB0aGVtIGFtb25nIHRoZSB0b3AtNSBpbiBhbnkgc2luZ2xlIHNrYXRlciBjYXRlZ29yeS4gVGhhdCBtYWtlcyB0aGVtIGRhbmdlcm91cyBidXQgbm90IGVsaXRlLCBhbmQgaW4gYSByZWRyYWZ0IGxlYWd1ZSwgdGhhdOKAmXMgb2Z0ZW4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGRlZXAgcGxheW9mZiBydW4gYW5kIGEgc2Vjb25kLXJvdW5kIGV4aXQuDQoNCi0tLQ0KDQojIyMgOC4gKipBcXVhIER1bXBzKioNCg0KKioyMDI04oCTMjUgUmVjb3JkOioqIDExMi05Ni0yMyAoLjUzNSkg4oCTIDh0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKAlA0KKktleSBQbGF5ZXJzOiogTWlra28gUmFudGFuZW4sIEFydGVtaSBQYW5hcmluLCBWaWN0b3IgSGVkbWFuDQoNClJhbnRhbmVuIGFuZCBQYW5hcmluIGhlYWRsaW5lIG9uZSBvZiB0aGUgYmV0dGVyIHBsYXltYWtpbmcgcm9zdGVycywgd2hpbGUgSGVkbWFuIGFkZHMgYm90aCBQUFAgYW5kIGJsb2Nrcy4gUHJvamVjdGlvbnMgcGxhY2UgQXF1YSBhcm91bmQgbGVhZ3VlIGF2ZXJhZ2UgYWNyb3NzIG1vc3QgY2F0ZWdvcmllcywga2VlcGluZyB0aGVtIGluIHRoZSBwbGF5b2ZmIGJ1YmJsZS4gVGhleSBmaW5pc2hlZCA4dGggbGFzdCB5ZWFyIGFuZCBzZWVtIGRlc3RpbmVkIHRvIGZpZ2h0IGZvciB0aGF0IHNhbWUgc3BvdCBhZ2Fpbi4NCg0KLS0tDQoNCiMjIyA5LiAqKlRoZSBCcmFkeSBCdW5jaCoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMDMtMTE1LTEzICguNDc0KSDigJMgMTB0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWsjENCipLZXkgUGxheWVyczoqIEJyYXlkZW4gUG9pbnQsIFNhbSBSZWluaGFydCwgSmFrZSBPZXR0aW5nZXINCg0KUG9pbnQgYW5kIFJlaW5oYXJ0IGdpdmUgdGhlIEJyYWR5IEJ1bmNoIGEgcG90ZW50IG9mZmVuc2l2ZSBkdW8sIHdoaWxlIE9ldHRpbmdlciBvZmZlcnMgc3RhYmlsaXR5IGluIGdvYWwuIFRoZWlyIHByb2plY3Rpb25zIHN1Z2dlc3QgbW9yZSBnb2FscyBhbmQgYXNzaXN0cyB0aGFuIGxhc3QgeWVhciwgcHV0dGluZyB0aGVtIG9uIHRoZSByaXNlLiBGcm9tIDEwdGggdG8gOXRoIG1heSBub3Qgc2VlbSBsaWtlIG11Y2gsIGJ1dCBpbiBhIHRpZ2h0IGxlYWd1ZSwgZXZlcnkgcnVuZyBjb3VudHMuDQoNCi0tLQ0KDQojIyMgMTAuICoqR29pbmcgaW4gRHJhaSAoZm9ybWVybHkgRnV6enkgUGVhY2gpKioNCg0KKioyMDI04oCTMjUgUmVjb3JkOioqIDEwMC0xMTItMTkgKC40NzQpIOKAkyAxMXRoIG92ZXJhbGwgKGFzIEZ1enp5IFBlYWNoKQ0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrIxDQoqS2V5IFBsYXllcnM6KiBMZW9uIERyYWlzYWl0bCwgSmVzcGVyIEJyYXR0LCBEb3VnaWUgSGFtaWx0b24NCg0KQSByZWJyYW5kIGFuZCBhIHJldG9vbCDigJQgYW5kIHdpdGggRHJhaXNhaXRsIGxlYWRpbmcgdGhlIGNoYXJnZSwgZXhwZWN0YXRpb25zIGFyZSBoaWdoZXIuIEJyYXR0IHByb3ZpZGVzIGVsaXRlIHBsYXltYWtpbmcsIHdoaWxlIEhhbWlsdG9uIHF1YXJ0ZXJiYWNrcyB0aGUgcG93ZXJwbGF5LiBQcm9qZWN0aW9ucyBzdWdnZXN0IGEgbW9yZSBiYWxhbmNlZCBvdXRwdXQgdGhpcyB5ZWFyLCBwdXNoaW5nIHRoZW0gaW50byBtaWQtdGFibGUgYW5kIHdpdGhpbiByZWFjaCBvZiB0aGUgcGxheW9mZnMuDQoNCi0tLQ0KDQojIyMgMTEuICoqV2F2aW5nIHRoZSBXaGl0ZSBGbGFnIPCfj7PvuI8qKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogOTMtMTIzLTE1ICguNDM1KSDigJMgMTh0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWsjcNCipLZXkgUGxheWVyczoqIEphY2sgRWljaGVsLCBGaWxpcCBGb3JzYmVyZywgQWRyaWFuIEtlbXBlDQoNClRoZSBsZWFndWXigJlzIGJpZ2dlc3QgcHJvamVjdGVkIHJpc2VyLiBBZnRlciBib3R0b21pbmcgb3V0IGxhc3Qgc2Vhc29uLCBXaGl0ZSBGbGFn4oCZcyBkcmFmdCBkZWxpdmVyZWQgYSBtdWNoIHN0cm9uZ2VyIG9mZmVuc2l2ZSBjb3JlLiBFaWNoZWwsIEZvcnNiZXJnLCBhbmQgS2VtcGUgaGVhZGxpbmUgYSByb3N0ZXIgcHJvamVjdGVkIGZvciBiZXR0ZXIgZ29hbHMgYW5kIHNob3RzLiBBIHBsYXlvZmYgYmVydGggaXMgc3VkZGVubHkgd2l0aGluIHJlYWNoLCBhIHNob2NraW5nIHR1cm5hcm91bmQgZnJvbSBsYXN0IHllYXIuDQoNCi0tLQ0KDQojIyMgMTIuICoqTWFjayBEYWRkeSoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMDktMTE0LTggKC40ODkpIOKAkyA5dGggb3ZlcmFsbA0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrwzDQoqS2V5IFBsYXllcnM6KiBOYXRoYW4gTWFjS2lubm9uLCBSb21hbiBKb3NpLCBUYWdlIFRob21wc29uDQoNCk1hY0tpbm5vbiBpcyBzdGlsbCBhIHRvcC0zIGZhbnRhc3kgYXNzZXQsIEpvc2kgaXMgZWxpdGUgb24gZGVmZW5zZSwgYW5kIFRob21wc29uIGFkZHMgZ29hbCB1cHNpZGUuIEJ1dCBwcm9qZWN0aW9ucyBzaG93IHdlYWtlciBzdXBwb3J0IGJlaGluZCB0aGUgc3RhcnMuIFRoaXMgdmVyc2lvbiBvZiBNYWNrIERhZGR5IGNvdWxkIHN0cnVnZ2xlIGZvciBjb25zaXN0ZW5jeSwgZXhwbGFpbmluZyB0aGVpciBzbGlkZSBpbiB0aGUgcHJlc2Vhc29uIHJhbmtpbmdzLg0KDQotLS0NCg0KIyMjIDEzLiAqKlN1cGVyIEhpZ2ggSW50ZW5zaXR5IFRlYW0qKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogMTAwLTExNC0xNyAoLjQ3MCkg4oCTIDEydGggb3ZlcmFsbA0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrwxDQoqS2V5IFBsYXllcnM6KiBRdWlubiBIdWdoZXMsIE1pdGNoZWxsIE1hcm5lciwgSm9obiBUYXZhcmVzDQoNClRoaXMgcm9zdGVyIGhhcyBtYXJxdWVlIG5hbWVzLCBidXQgcHJvamVjdGlvbnMgc2hvdyBtaWRkbGluZyB0b3RhbHMgaW4gZ29hbHMgYW5kIGhpdHMuIEh1Z2hlcyBhbmQgTWFybmVyIHdpbGwgY2FycnkgdGhlbSBpbiBhc3Npc3RzIGFuZCBQUFAsIGJ1dCBkZXB0aCBpc3N1ZXMgbGltaXQgdGhlaXIgY2VpbGluZy4gSXQgZmVlbHMgbGlrZSBhbm90aGVyIHllYXIgc3R1Y2sgaW4gdGhlIGJvdHRvbSBoYWxmLg0KDQotLS0NCg0KIyMjIDE0LiAqKk1hdGhsZXRlcyoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiA5NS0xMjEtMTUgKC40NDQpIOKAkyAxN3RoIG92ZXJhbGwNCioqQ2hhbmdlIHZzLiBsYXN0IHllYXI6Kiog4payMw0KKktleSBQbGF5ZXJzOiogS2lyaWxsIEthcHJpem92LCBSb29wZSBIaW50eiwgTWlybyBIZWlza2FuZW4NCg0KVGhlIE1hdGhsZXRlcyByaXNlIHNsaWdodGx5IHRoYW5rcyB0byBpbXByb3ZlZCBwcm9qZWN0aW9ucyBpbiBhc3Npc3RzIGFuZCBQUFAuIEthcHJpem92IHByb3ZpZGVzIHRvcC1lbmQgcHJvZHVjdGlvbiwgYW5kIEhpbnR6IGFkZHMgc3RlYWR5IHBlci1nYW1lIHZhbHVlLiBTdGlsbCwgZGVwdGggaXMgdGhpbiwgYW5kIGFueSBwbGF5b2ZmIHB1c2ggd2lsbCByZXF1aXJlIGV2ZXJ5dGhpbmcgdG8gYnJlYWsgcmlnaHQuDQoNCi0tLQ0KDQojIyMgMTUuICoqVGhlIE1pZHRvd24gTWlkcyoqDQoNCioqMjAyNOKAkzI1IFJlY29yZDoqKiAxMDEtMTIwLTEwICguNDU5KSDigJMgMTR0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWvDENCipLZXkgUGxheWVyczoqIE5pa2l0YSBLdWNoZXJvdiwgQWxleCBPdmVjaGtpbiwgWmFjaCBIeW1hbg0KDQpBZ2luZyBzdGFycyBoZWFkbGluZSB0aGlzIHJvc3RlciwgYW5kIHByb2plY3Rpb25zIHJlZmxlY3Qgc29tZSBkZWNsaW5lIGluIG92ZXJhbGwgb3V0cHV0LiBLdWNoZXJvdiBzdGlsbCBkb21pbmF0ZXMgaW4gUFBQLCBidXQgT3ZlY2hraW4gYW5kIEh5bWFuIGNhbuKAmXQgY292ZXIgZXZlcnkgd2Vha25lc3MuIFRoZSBNaWRzIGxvb2sgaGVhZGVkIGZvciBhbm90aGVyIGJvdHRvbS10aWVyIGZpbmlzaC4NCg0KLS0tDQoNCiMjIyAxNi4gKipUaGUgTWlnaHR5IFF1b2trYXMqKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogOTQtMTE4LTE5ICguNDQ4KSDigJMgMTZ0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKAlA0KKktleSBQbGF5ZXJzOiogQ29ubm9yIEJlZGFyZCwgRWxpYXMgUGV0dGVyc3NvbiwgQ29ubm9yIEhlbGxlYnV5Y2sNCg0KVGhlIFF1b2trYXMgYXJlIGJ1aWx0IGZvciB0aGUgZnV0dXJlIGJ1dCBzdHVjayBpbiB0aGUgcHJlc2VudC4gQmVkYXJk4oCZcyBkZXZlbG9wbWVudCB3aWxsIGRpY3RhdGUgaG93IGZhciB0aGV5IGdvIHRoaXMgeWVhciwgYnV0IHByb2plY3Rpb25zIHBsYWNlIHRoZW0gZmlybWx5IGluIHRoZSBib3R0b20gdGllciBhZ2Fpbi4NCg0KLS0tDQoNCiMjIyAxNy4gKipIb3cgZG8gSSBzZXQgYSBsaW5ldXA/KioNCg0KKioyMDI04oCTMjUgUmVjb3JkOioqIDk5LTEyMS0xMSAoLjQ1Mikg4oCTIDE1dGggb3ZlcmFsbA0KKipDaGFuZ2UgdnMuIGxhc3QgeWVhcjoqKiDilrwyDQoqS2V5IFBsYXllcnM6KiBDYWxlIE1ha2FyLCBKYXNvbiBSb2JlcnRzb24sIE5pY2sgU3V6dWtpDQoNCkRlc3BpdGUgdG9wLWVuZCBuYW1lcyBsaWtlIE1ha2FyIGFuZCBSb2JlcnRzb24sIHByb2plY3Rpb25zIHNob3cgZ2xhcmluZyBob2xlcyBpbiBzZWNvbmRhcnkgY2F0ZWdvcmllcy4gV2l0aG91dCBjb25zaXN0ZW50IGRlcHRoLCB0aGV54oCZcmUgbGlrZWx5IHRvIGZhbGwgZnVydGhlciBkb3duLCBtYWtpbmcgdGhpcyBhbm90aGVyIHJlYnVpbGRpbmcgeWVhci4NCg0KLS0tDQoNCiMjIyAxOC4gKiouIChEb3QgVGVhbSkqKg0KDQoqKjIwMjTigJMyNSBSZWNvcmQ6KiogOTktMTE0LTE4ICguNDY4KSDigJMgMTN0aCBvdmVyYWxsDQoqKkNoYW5nZSB2cy4gbGFzdCB5ZWFyOioqIOKWvDUNCipLZXkgUGxheWVyczoqIFNpZG5leSBDcm9zYnksIENsYXl0b24gS2VsbGVyLCBCcmFkIE1hcmNoYW5kDQoNClRoZSBiaWdnZXN0IHByb2plY3RlZCBmYWxsZXIuIENyb3NieSBhbmQgTWFyY2hhbmQgYXJlIHN0aWxsIGdyZWF0LCBidXQgcHJvamVjdGlvbnMgc3VnZ2VzdCBkZWNsaW5lLCBhbmQgS2VsbGVyIGNhbuKAmXQgY2FycnkgdGhlIHJvc3RlciBhbG9uZS4gQSBsYWNrIG9mIGRlcHRoIGluIG11bHRpcGxlIGNhdGVnb3JpZXMgbWFrZXMgRG90IHRoZSBwcmVzZWFzb24gZmF2b3JpdGUgZm9yIHRoZSBiYXNlbWVudC4NCg0K