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

Rank Player Team Pick Projected Diff
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

Rank Player Team Pick Projected Diff
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 Announces the First Toonie Night of 2025-26: Goals, Assists, and Glory on the Line

Saturday, October 11th marks a special night in the league calendar — the debut of Toonie Night. With all 32 NHL teams in action, fantasy squads will have their rosters pushed to the limit in a high-scoring frenzy.

The rules are simple:

This is more than just another Saturday slate — it’s a one-night sprint where every shot, setup, and finish carries extra weight. Depth scorers become hidden gems, power play quarterbacks are golden, and a single multi-point night could swing the standings.


What Makes This Toonie Night Special?

  • Every NHL team is playing. It’s the rare perfect storm where no manager has an empty lineup slot. Expect fireworks across the board.
  • The prize. The winner secures not only bragging rights but also the first official Toonie Night title — a badge that will be remembered all season.
  • Strategy twist. With goals worth double, managers leaning on snipers may find themselves holding the upper hand. But don’t discount the playmakers — a three-assist night could be just as valuable.

Storylines to Watch

  • Which manager’s stars will erupt? Will it be a McDavid hat trick, a Pastrnak power play clinic, or a Kaprizov takeover?
  • Dark horses. Third-line grinders or rookie call-ups who light the lamp could tilt the balance in unexpected ways.
  • The bragging rights. In an 18-team league, winning a one-night contest means beating 17 rivals head-to-head in a single showdown.

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.


10. Going in Drai (formerly Fuzzy Peach)

2024–25 Record: 100-112-19 (.474) – 11th overall (as Fuzzy Peach) Change vs. last year: ▲1 Key Players: Leon Draisaitl, Jesper Bratt, Dougie Hamilton

A rebrand and a retool — and with Draisaitl leading the charge, expectations are higher. Bratt provides elite playmaking, while Hamilton quarterbacks the powerplay. Projections suggest a more balanced output this year, pushing them into mid-table and within reach of the playoffs.


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