Six years ago, a bald-headed, llama-speaking, crazy New Jersey cop crash-landed on an island in the Philippines and became an instant Survivor icon. “I’m the king of the jungle!” he declared during one of his many idol finds on his way to the million-dollar prize. Little did we know how prescient those words would become. That’s right, Tony Vlachos is the champion of champions, the recipient of $2 million. He’s the Survivor King, taking his rightful place on the throne next to Queen Sandra — the show’s only other two-time winner. As the final vote reading from Jeff Probst’s garage (literally) reminds us, we’re living in a scary and unusual world full of uncertainty. However, I can sleep a little easier knowing Tony and Sandra are the King and Queen of Survivor.
If you asked me about Tony’s odds of winning coming into this season, I would have borrowed a phrase from Tony’s former Cagayan castmate, Spencer Bledsoe. “Tony, zero percent chance of winning the game.” Even with his threat level somewhat reduced after his clownish early exit in Game Changers, Tony remained one of the biggest targets on the beach, simply due to how momentous his first win was. All-star seasons tend to favor the quieter, under-the-radar players, and Tony’s previous games were anything but under-the-radar. He was bold, brash, and in-your-face, an agent of chaos who flipped on allies with such frequency you’d think he was aiming for a world record. It was a style of gameplay that never should have won the first time, let alone a second, especially against a cast of all winners. And to do it with zero votes against him the entire game? Wowee!
What’s most impressive about Tony’s victory is that he didn’t have to compromise his gameplay or his personality. He didn’t sneak into the final three by laying low, nor did he rely on a bevy of twists and advantages. Tony’s game was complex, multi-layered, and overall, dominant. He displayed unexpected patience early on, hoping to avoid the mistakes of his Game Changers outing. Resisting the urge to look for idols, he instead channeled his frantic energy into camp life activities, such as constructing a rickety-ass bamboo ladder to go fruit picking. And it worked — both the strategy and the ladder. People lowered their guards, allowing him to make the merge — that’s when the old Tony emerged. Empowered by his Immunity Challenge wins, Tony took control, maneuvering the pieces to his advantage, his last-minute 4-3-2 blindside of Sophie being his magnum opus. The more power he gained, the more the mad genius came out — the jungle runs, the spy nests, the flip-flopping. Even when he wasn’t immune, he’d put himself into a position where nobody dared take a shot. It was a game worthy of the ultimate Survivor crown.
Yet, there was almost a last-second, nightmarish twist in the tale — the first boot of the season nearly won the whole damn thing! Natalie’s return seemed inevitable. As the first eliminated, Natalie spent the longest time on the Edge of Extinction, meaning she had more opportunities than anyone to earn fire tokens. As a self-described “fire token billionaire,” she spent her coins on an idol, peanut butter, and THREE advantages for the Battle Back challenge. She even had enough spare change to buy a second idol for Tyson — a gesture that undoubtedly bought her his jury vote. Not only was Natalie dripping in fire token swag, but she never had to betray or blindside anybody. She didn’t have to deal with the pre-Tribal paranoia and ever-shifting alliances. When she wasn’t collecting tokens, she was bonding with the very people who would ultimately determine the winner. As I’ve said before, the Edge becomes cult-like very quickly; the shared suffering forms an almost unbreakable bond. Not to mention that an Edge dweller voting for one of their own validates their individual experience.
Don’t get me wrong, I’m not blaming Natalie. I think Natalie is fantastic, and under normal circumstances, I’d have been rooting for her. It’s not her fault, she doesn’t create the twists, as she says herself, she’s just playing the hand she’s dealt. But it demonstrates the inherent flaw in the Edge. It punishes those who make it far while rewarding those voted out earlier. Much like Chris Underwood before her, Natalie returns at the final six armed with an idol and invaluable knowledge of the game dynamics and the jury’s mindset. She immediately causes waves by pumping up how much the jurors are on the Tony bandwagon. “Deep down, I hope that’s true,” Tony says. “But, I hope the others don’t believe it.” As Ben astutely points out, Natalie’s tales from the Edge are like a President Trump press conference; there is no fact-checking. You can’t debrief or corroborate her stories because she holds all the cards. Who can determine what is real and what is merely a ploy to shake up the game to Natalie’s own benefit?
Oddly, though, it seems Tony is the only one who recognizes just how much a threat Natalie is to the end-game. Her story of being the first boot who struggled through the desolation of the Edge for 31 days only to fight her way back in and reach Final Tribal? That’s a Hallmark movie in the making. Tony realizes the power in that narrative, especially having seen Chris succeed with a similar story in Season 38. He also correctly assumes Natalie has an idol, which becomes a very worrying prospect after Michele puzzle-kicks her way to another Immunity win. But for reasons beyond comprehension, Ben and Sarah dismiss Tony’s hunch, refusing to jump on his plan to split the votes 2-2-2, which would put Denise in danger should Natalie play an idol. Cagayan-era “President Sarah” makes a brief appearance as she arrogantly disregards any notion of danger, merely chalking it up to Tony paranoia. Of course, Tony’s suspicion is right, Natalie plays an idol, forcing Ben and Tony to use theirs and leaving them both vulnerable at the next vote.
The thing is, Denise is eliminated anyway after Natalie and Michele’s votes against Ben are voided, leaving Sarah and Denise as the only options in the re-vote. Michele and Natalie’s decision here baffles me for a couple of reasons. Firstly, why did they target Ben over Sarah? Surely breaking up Cops ‘R’ Us is priority number one? And secondly, why didn’t they force a tie on the re-vote? By voting with the majority, they kept the perception of power within the Ben, Sarah, Tony trio.
But that’s not the most bewildering move of the finale. Let’s talk about Ben’s mystifying act of humanitarianism. Ben has spoken a lot this season about wanting to improve his social game; he didn’t want to become the tribe pariah like in his first season, scratching every day to stay alive. This time he tried to form trusting alliances and make genuine friendships. That’s why he struggled to write Denise’s name down, and it’s why he straight-up gives his blessing for Sarah to vote him out. “Having friends is worth more than money,” he says. We’ve come a long way from Kelly Wiglesworth’s, “I’m not here to make friends.”
Now, there’s a lot to wrap our heads around here. First, let’s provide some context. It’s the final five, Tony just won Immunity, and Natalie found another idol. Everyone is aware of Nat’s idol because Sarah spots it under her buff, all while Tony snoops from above in his Spy Nest. But it doesn’t matter, right? Ben, Sarah, and Tony can just vote out Michele. Well, unless Natalie decides to get fancy and play her idol for Michele, who is the only person willing to work with her. It’s that consideration that suddenly sees Ben offer himself up as a sacrifice. He tells Sarah to vote for him, not tell Tony about it, and use it as a move on her resume. “That way, no one can say you got drug along,” he explains, referencing the jury’s perception of Sarah as Tony’s puppet. It’s a weirdly Rafe-like (Survivor: Guatemala) gesture and one that I’m not quite sure I understand. Perhaps Ben discerned that he had no shot at winning over the jury, so he’d rather fall on his sword for a friend? Still, does this really improve Sarah’s odds of winning? If anything, it only makes the path to the end harder for her, as Natalie would have unquestionably put Ben against Tony in the final four fire-making challenge over Sarah. And if Ben had won the last Immunity Challenge, odds are he takes Sarah with him to the Final Tribal.
Sarah is right about one thing, though, she needed to make a move without Tony. Other than the Sophie vote, the Cops ‘R’ Us alliance has worked in tandem this whole season. Sarah has been a part of every decision Tony has made and vice versa. It’s been one of the most remarkable performances by a Survivor duo ever. However, as Natalie reiterates, the jurors perceive Tony as the one running the show. This is a wake-up call for Sarah, not for the flaws in her game, but for the implicit gender biases that haunt Survivor. “If a woman lies, cheats, and steals in this game, they’re a liar or a bitch,” she states at Tribal. “If a guy does it, they’re a stud.” She makes a valid point that is true not only of Survivor but many facets of everyday life. Even Jeff himself — who fans have called out for favoring of alpha males in the past — owns up to his own gender biases. He admits how it’s almost always male players he bestows the “surname” honor upon. “You can call me Lacina,” Sarah quips. This clarity allows Sarah to lift the weight that she’s been carrying since Game Changers, realizing she doesn’t have to feel guilty for the cutthroat game she played. “I can play however I want,” she says. “Because if a man can do it, so can I.” It’s a fascinating example of how real life blends with the game of Survivor, and it’s also full of beautiful dichotomies. Because while what Sarah says is true, it’s also true that Tony played his ass off. Both deserve credit, and both would have been deserving champions.
Alas, the blue-blood showdown at Final Tribal is not meant to be. With Natalie winning the last Immunity Challenge, and choosing to take Michele to the final three, it leaves Sarah and Tony to face off in fire-making. This, in its own way, is the perfect ending to the Cops ‘R’ Us arc. “If we’re gonna get shot, I’d rather shoot at each other than someone else shoot at us,” says Sarah. It’s a tense, back-and-forth battle, culminating in victory for Tony and an emotional outpouring from the real-life friends. “I’m so sorry,” Tony cries. “You have nothing to be sorry for,” Sarah assures him. For two people that couldn’t stand the sight of each other at the Cagayan reunion, to Tony not being able to look at Sarah out of guilt, it’s quite the journey.
This is also very likely the moment that secures Tony the win. Natalie’s decision not to put herself in fire-making against Tony is clearly a mark against her. As Rob says in his voting confessional, she needed to play the perfect game, and that involved getting rid of Tony, which she failed to do. Natalie argues her case to the jury well, even if it is mostly just listing off all the scavenger hunt treasure she found. But that’s the game she played, “the Edge game,” as Adam puts it. It’s enough to earn her four votes (from Ethan, Jeremy, Parvati, and Tyson), but it doesn’t compare to Tony’s 39-day display of high-wire trickery, master manipulation, and control of the votes. He commands the Final Tribal just as he did the game, with humor, charisma, and heartfelt passion for representing the best of the best.
Michele, unfortunately, ends up the zero-vote-getter. And that sucks. Michele came into this season wanting to prove herself worthy, and she started strong. She played a key role in dismantling the old-school alliance before slithering her way into the majority after being down in numbers post-swap. But come the merge, Michele struggled to keep up with the increased pace and aggressiveness. She often found herself on the wrong side of the votes. It’s not as if she pissed people off or made any huge blunders. If anything, she was left out because other players wrote her off, perhaps viewing her as unworthy themselves. Yet she continued to survive, pulling out a clutch Immunity win and making it to Final Tribal as the only winner on the cast that can say they’ve never been voted out. In any other season, that kind of underdog story would at least garner at least a vote or two. However, that scrappy, socially adept but under-the-radar strategy did not work for this season.
And so, we close the book on Winners At War. It hasn’t been a perfect season — it certainly isn’t “the greatest season of all time” as Jeff keeps repeating. The Edge of Extinction is still a flawed twist, it hurt seeing all the old-schoolers leave pre-merge, and the editing was inconsistent at times. But you know what? It made me laugh, it made me emotional, it made me happy. Most of all, for at least one hour a week, it made me forget about all the shit going on in the world. I’ll always cherish this season for that. And I’ll never forget the superfan exhilaration of seeing these 20 winners arrive on the beach, watching Parvati and Rob bury the hatchet, nerding out over Sophie and Yul teaming up, laughing as Adam tried to play the podium idol. Denise the Queenslayer, Ethan’s “It feels good to be back,” the Sophie blindside, the Cops ‘R’ Us domination. Tony’s Spy Nest, Tony’s ladder, Tony’s shark, Tony’s everything. Tony’s victory! Winners At War was a fitting celebration of 20 years of Survivor, and here’s to 20 years more!
Idol Thoughts
• The closing moments of the Edge certainly seemed like a final goodbye to many of those players. Amber, Ethan, Rob, and Tyson all gave emotional farewells, acknowledging what Survivor’s given them before riding off into the sunset for good.
• Despite the promises of a “virtual” reunion, we didn’t get one. Jeff said they just didn’t have time, but I think the real reason is technical difficulties in the pre-record. I bet there somewhere out there is footage of Jeff breaking down over Zoom.
• Jeff’s makeshift Tribal set in his garage was pretty neat, though. I just wish we had more time to dwell on Tony’s win after the rushed reading of the votes. Jeff cut him off like he had dinner waiting.
• When will we see Survivor again? Filming for Season 41 was postponed due to the coronavirus pandemic; however, Jeff said they’re committed to being on in the Fall. We’ll see.
By submitting your email, you agree to our
Terms and Privacy Notice
and to receive email correspondence from us. This site is protected by reCAPTCHA and the Google
Privacy Policy and
Terms of Service apply.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
or
Already a subscriber?
What is your email?
This email will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
Password must be at least 8 characters and contain:
Lower case letters (a-z)
Upper case letters (A-Z)
Numbers (0-9)
Special Characters (!@#$%^&*)
This password will be used to sign into all New York sites. By submitting your email, you agree to our Terms and Privacy Policy and to receive email correspondence from us.
You’re in!
As part of your account, you’ll receive occasional updates and offers from New York, which you can opt out of anytime.
Already a subscriber?
Already a subscriber?
`;
// integrate Sub(x) scripts and elements
if (hostname !== 'subs.nymag.com') { // do not integrate on this subdomain
document.head.appendChild(trackingScript);
document.body.insertAdjacentHTML('beforeend', subXAnimationElements);
}
There was an error processing the request. Please try again later."}).catch(e=>console.error("Error verifying email: ",e)))(r.querySelector(".content"),o.bannerCTAVerification)})):(l.remove(),s.remove()),o.dismissable||n.remove(),o.useAlertIcon||a.remove(),r.classList.add("show"),n.addEventListener("click",()=>{u(),r.classList.remove("show")})}else r.remove()}});
}, {"1":1,"6":6,"12":12,"35":35,"40":40}];
window.modules["global-nav.client"] = [function(require,module,exports){"use strict";const dom=require(4),auth=require(12),signInButton=dom.find(".user-signin"),signOutButton=dom.find(".user-signout"),globalNav=dom.find('[class^="global-nav"]'),body=dom.find("body"),dropdownItems=dom.findAll(".dropdown-wrap"),gtm=require(1),appendLandingPageParams=require(135),pageUri=require(124).getPageUri(),subscriptionPromoLinks=dom.findAll(".persist-params"),searchString=window.location.search||"";function closeDropdowns(e){let n=globalNav.querySelectorAll(".dropdown.open");dropdownItems.forEach(function(t){let o=t.querySelector(".dropdown");!n||t.contains(e.target)&&27!==e.keyCode||o.classList.remove("open")})}function gtmSendReport(e,n,t){let o={eventCategory:"ecommerce",eventAction:"componentClick",brand:e,dimension23:"global-nav",list:pageUri,pageZone:"header",variant:"nav-link"};"global-nav-link"===t&&(o.eventLabel=n.href),gtm.reportNow(o)}function updateElementTargetUrlsIfQueryStrings(e){if(searchString){const n=new URLSearchParams(searchString);let t=e.href;if(t.includes("?")){const o=t.split("?"),i=new URLSearchParams(o[1]);for(let e of n.entries())i.set(e[0],e[1]);t=`${o[0]}?${i.toString()}`,e.href=t}else e.href=`${t}?${n.toString()}`}}function init(e){const n=e.querySelectorAll(".to-landing-page");window.addEventListener("auth:init",()=>{signInButton.addEventListener("click",function(e){e.preventDefault(),auth.showEmbeddedLoginFlow("top navigation")}),signOutButton.addEventListener("click",function(e){e.preventDefault(),gtmSendReport("Sign Out",e.target,"user-info-link"),auth.logout()}),auth.isAuthenticated()&&e.classList.add("signed-in"),auth.isSubscriber()&&e.classList.add("subscribed"),e.querySelectorAll(".user-link").forEach(e=>{e.classList.add("active")}),subscriptionPromoLinks.forEach(e=>{updateElementTargetUrlsIfQueryStrings(e)}),appendLandingPageParams(n)})}dropdownItems.forEach(function(e){e.addEventListener("click",function(){e.querySelector(".dropdown").classList.toggle("open")})}),body.addEventListener("click",closeDropdowns),document.addEventListener("keydown",closeDropdowns),globalNav.addEventListener("click",function(e){let n=e.target;n.classList.contains("global-nav-track")&>mSendReport(n.text,n,"global-nav-link")}),module.exports=init;
}, {"1":1,"4":4,"12":12,"124":124,"135":135}];
window.modules["aaa-module-mounting.legacy"] = [function(require,module,exports){"use strict";const _pickBy=require(221),_each=require(406),Fingerprint2=require(408),DS=require(407),Eventify=require(246);function registerGlobals(){window.DS=DS,window.Eventify=Eventify,window.Fingerprint2=Fingerprint2,DS.value("Eventify",Eventify),DS.value("Fingerprint2",Fingerprint2),DS.value("$document",window.document),DS.value("$window",window)}function mountDollarSliceComponents(){DS.service("components",["$document","$module",function(e,n){var o=_pickBy(n.definitions,e=>e.providerStrategy===n.providers.controller),r=Object.keys(o);function t(e){return o=>{try{n.get(e,o)}catch(e){logMountError(o,e)}}}_each(r,n=>{var o=e.querySelectorAll('[data-uri*="/_components/'+n+'/"]'),r=e.querySelectorAll('[data-uri$="/_components/'+n+'"]');_each(o,t(n)),_each(r,t(n))}),this.components=r}]),DS.get("components")}function logMountError(e,n){const o=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error("Error attaching controller to "+o,n)}registerGlobals(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{mountDollarSliceComponents()}):mountDollarSliceComponents();
}, {"221":221,"246":246,"406":406,"407":407,"408":408}];
window.modules["ads.legacy"] = [function(require,module,exports){"use strict";const _map=require(118),_forEach=require(107),_isString=require(268),_intersectionWith=require(409),_isEqual=require(274),_each=require(406),_debounce=require(182),_sortBy=require(205),page=require(124),visit=require(114);DS.service("adService",["Eventify","$cid","$document","$window",function(e,t,a,i){var o,n,s,r,d,c,u,l,g={},p=this,h=[],f=visit.getQueryParamsObject(["utm_campaign"]),m=document.querySelector('script[data-type="ad-a9"]'),b=[],w=!1,v=[],y=document.querySelector('script[data-name="ad-doubleverify"]');document.querySelector('script[data-name="concert-ads"]')||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],u=i.googletag,(m||y)&&(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()})),m&&(l=i.setInterval(function(){void 0!==window.apstag&&void 0!==window.apstag.timeout&&(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l&&(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log("MESSAGE: Timeout for A9 load exceeded, aborting"))},500)),y&&(b.push(new Promise(function(e){w?e():v.push(e)})),c=i.setTimeout(T,2500)),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?u.defineSlot(o.name,o.sizes,o.id).addService(u.pubads()):u.defineOutOfPageSlot(o.name,o.id).addService(u.pubads())).setTargeting("adid",o.id),f.hasOwnProperty("utm_campaign")&&t.setTargeting("utmcamp",f.utm_campaign),a=p.getAdCount(o.label),t.setTargeting("label",o.label+"_"+o.site+"-"+a),u.display(o.id),u.pubads().addEventListener("slotOnload",function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),n=_(o),Promise.all(b).then(function(){n?window.apstag&&window.apstag.cleared?window.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([t],{changeCorrelator:!1})})}):y&&u.pubads().refresh([t],{changeCorrelator:!1}):u.pubads().refresh([t],{changeCorrelator:!1})}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute("data-name"),r=e.getAttribute("data-sizes"),d=e.getAttribute("data-label"),c=e.getAttribute("data-site");n=e.id,r&&r.length?(r=r.split(","),a=[],_map(r,function(e){e=e.split("x"),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add("oop"),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},g[n]=this},r=function(e){u.cmd.push(function(){var t=o(e);g[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=_(e))&&window.apstag&&window.apstag.cleared&&window.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){u.cmd.push(function(){window.apstag.setDisplayBids(),u.pubads().refresh([e.slot],{changeCorrelator:!1})})}):e&&r(e)},u.cmd.push(function(){var e,t,o,n=page.getMeta("article:tag"),s=page.getMeta("author"),r=i.location.href,d=(e=a.head.querySelector(".head-gtm"),t=a.body.querySelector(".gtm"),e&&"top"===e.getAttribute("data-gtm")?"gtmtop":t&&"bottom"===t.getAttribute("data-gtm")?"gtmbottom":"");o=[],_forEach([n,s,d],function(e){_forEach(e.split(","),function(e){(e=e.trim().toLowerCase().replace(/\s/g,"-").replace(/\'|\’/g,"")).length&&o.push(e)})}),u.pubads().setTargeting("kw",o),u.pubads().setTargeting("entry_group",o),r=r.slice(r.lastIndexOf("/")+1),u.pubads().setTargeting("pn",r),u.companionAds().setRefreshUnfilledSlots(!0),u.pubads().enableAsyncRendering(),u.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=""},this.getAdCount=function(e){var t,a=0,i=Object.keys(g);return _each(i,function(i){(t=g[i]).data.loaded&&t.data.label===e&&a++}),a},this.getById=function(e){return g[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,"homepageTakeover/TopLeaderboard":1},t=_sortBy(h,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),y&&window.PQ.cmd.push(()=>{try{window.PQ.loadSignals(["ids","bsc","vlp"],T)}catch(e){T(),console.error(`There has been an error loading Double Verify signals: ${e}`)}}),h=[]},10),this.addToPageLoadQueue=function(e){h.push(e),d()});function _(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizes&&e.sizes.length&&(t={slotID:e.id,sizes:a,slotName:e.label}),t}function T(){i.clearTimeout(c),w=!0,_forEach(v,function(e){e()})}}]);
}, {"107":107,"114":114,"118":118,"124":124,"182":182,"205":205,"268":268,"274":274,"406":406,"409":409}];
window.modules["cid.legacy"] = [function(require,module,exports){"use strict";DS.service("$cid",function(){var r=Math.floor(100*Math.random());return function(){return"cid-"+ ++r}});
}, {}];
window.modules["client.legacy"] = [function(require,module,exports){"use strict";require("cid.legacy"),require("ads.legacy"),require("facebook.legacy"),require("aaa-module-mounting.legacy");
}, {"cid.legacy":"cid.legacy","ads.legacy":"ads.legacy","facebook.legacy":"facebook.legacy","aaa-module-mounting.legacy":"aaa-module-mounting.legacy"}];
window.modules["facebook.legacy"] = [function(require,module,exports){"use strict";DS.service("facebook",[function(){this.fb=function(i){window.FB&&window.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o typeof key === 'string' && key.match(/\.legacy$/)).forEach(key => window.require(key));
}
function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for "${name}" on "${elementTag}"`, e);
}
}
/**
* mount client.js component controllers
*/
function mountComponentModules() {
Object.keys(window.modules).filter(key => typeof key === 'string' && key.match(/\.client$/)).forEach(key => {
let controllerFn = window.require(key);
if (typeof controllerFn === 'function') {
const name = key.replace('.client', ''),
instancesSelector = `[data-uri*="_components/${name}/"]`,
defaultSelector = `[data-uri$="_components${name}"]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);
for (let el of instances) {
tryToMount(controllerFn, el, name);
}
for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
}
// Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the `` value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = '';
}
// note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices();
mountComponentModules();
// ]]