ClickHole, a sister site of the Onion that parodies the internet’s most clickbaity content, launched in June 2014, but it arguably wasn’t until later that year that the site dropped its first timeless classic. This was a post so widely shared that New Yorker writer Jia Tolentino would later say it “derailed all operations for about an hour” when she was working at Gawker.
Published just a week before Thanksgiving, the satirical quiz “Which One of My Garbage Sons Are You?” wasn’t newsy or mind-blowing on the surface. But the contents within the quiz — a bitter Saab- and Jimmy Page–obsessed dad, phrases like “My gutter sons have sewer mouths that belch out true terrors,” and the doomed quiz result “the dreaded Laramie” — resonated immediately with readers. Along with the time the site published the entirety of Moby Dick under the Millennial travel thinkpiece-inspired headline “The Time I Spent On A Commercial Whaling Ship Totally Changed My Perspective On The World,” “Garbage Sons” still holds up today as iconic ClickHole content, and it’s been referenced by fans over the years as the site’s — even the internet’s — most hilarious article ever.
Because writers at both the Onion and ClickHole do not have their bylines attached to the pieces they write, for nearly five years “Garbage Sons” has continued to invade news and pop culture while its creator remained anonymous. Until today.
When “Garbage Sons” was published, then-24-year-old Adam Levine was a staff writer at ClickHole working his first — and to this day only — comedy-writing job. Levine, who now serves as the site’s head writer, recently agreed (with the Onion’s permission) to finally go on the record and clear up the mystery by confirming that he is the man responsible for the “Garbage Sons” quiz. He spoke with Vulture about the origins of the quiz, the internet’s response to it, and why you should never be quick to dismiss silly, absurd comedy as “pure fluff.”
So you started writing at ClickHole right from the launch. If you don’t mind my asking, what was the first thing you wrote for it? I think we launched on Father’s Day 2014. I think the first thing I ever wrote was … [There was] a headline that had been written by an Onion writer who I did not know before I even got there. It was a parody of those people who take pictures of themselves every day for a year. I think it was like, “This Girl Took a Photo of Herself Every Day for a Week,” so the video was like two seconds long, and I wrote the copy underneath that. Then I think the first one that I wrote that I also had pitched was, when we launched on Father’s Day, I wrote a quiz called “Is Your Dad Proud of You?” where, [from] most of the answers that you had to choose, it was pretty clear that your dad would only be proud of you if you were Pete Rose. It was a very, like, first month of so of ClickHole style, so one joke for the whole quiz, and you sort of got the idea from question one. But it was fun to write.
Let’s talk about “Garbage Sons.” Where did that come from? I think the germ of it was when the Onionwas trying to staff ClickHole when it first launched, I was a headline contributor at the Onion, which meant I was sending in a list of headlines remotely once or twice a week. But they were sort of tapping the contributor pool as potential people to write for [ClickHole]. I think in my writing packet they wanted X number of those parody clickbait articles, and I pitched a quiz that was “Which One of My Ex-Wives Are You?” and it would be very clear that this was a disgruntled divorcé who has been wronged by various ex-spouses.
I think when I went back and looked at that before I pitched “Garbage Sons,” the concept of “disgruntled guy who’s mad at his ex-wives” didn’t seem super-exciting. But the concept of using the BuzzFeed-style personality quiz where the person giving the quiz really resents all the possible answers and has a personal knowledge of all the possible results, and using that as a way to find out about the person administering the quiz and the people that are in that person’s life, [was exciting]. I sort of adapted that to what I thought would be a more interesting story about a guy who loves his wife but does not like the sons that he has with his wife.
What’s with the dad’s obsession with Saabs? It just seemed like a kind of car that a dad would be proud of. I think I just liked the idea that this character had a bunch of things that he thought were super-cool and impressive that he valued very much — including Jimmy Page and the fact that his car was a Saab — and I think he also really values the family unit. You can sort of tell that he had bigger dreams for domestic bliss that his sons have ruined, but I liked this idea that he was hung up on very specific things and cared very much about not just his car but the fact that his car was a Saab, and not just classic rock but specifically Jimmy Page.
Did you anticipate the piece going viral or have any inkling that it might be received so well? I don’t think so. As I was writing it, I remember spending more time than usual on it, but I also do that for a bunch of stuff that nobody seems to enjoy. So I put a lot of time and care into it, but yeah, I can never really tell. Things that I personally love that I’m sure everybody else will like are total duds, and some things that I think are fine end up being things that really resonate with people. The short answer is I personally can never tell when something is going to be successful or when something is going to fail.
The New Yorker mentioned the quiz in a piece in 2017, and the writer said she was working at Gawker when the quiz was published and that when it went up, “it derailed all operations for about an hour.” That’s very nice.
Did you witness the response online in real time? I didn’t, really. I guess I was on Twitter a little bit more than I am now. The only immediate response I knew about from the quiz were some of my co-workers — some of them were Onionwriters I had looked up to for a long time [who] said they liked it, so that was really exciting. And then for some reason Denny’s made a tweet about it that referenced the Dreaded Laramie. So I had won the admiration of two of my co-workers and Denny’s, so that was the extent, I think, that I experienced the feedback.
The Dreaded Laramie.
Photo: Clickhole
That’s so funny to me, because I look back at that quiz as this thing that exploded the internet for that day and a little bit after. I mean, that’s what my memory is, but for you it seems to be much smaller. Yeah. I think the way I experienced the fact that it had sort of succeeded a little bit more than some other things I had written [was that] people would keep referencing it, which was very nice of them to do. But that’s as much as I experienced the feedback from it or knew that it resonated with people.
Wasn’t ClickHole selling a Dreaded Laramie shirt for a little while? Yes. I think that was something that was suggested by our old managing editor, Dan Davis. I don’t know how well those sold, but yeah.
Do you have any idea what kind of traffic the post got? No. I don’t have any idea what kind of traffic anything gets. I’ve never had access to the whole metrics.
I planned to ask you what you learned from this whole ordeal or if there was a takeaway, but it sounds like, for you, it was just another day at ClickHole. I mean, I think I had a sense that people had enjoyed it, but I think I took maybe the wrong lesson from it, which was, for a while after, I thought I was trying to reverse-engineer another version of it. So a lot of the quizzes that I wrote immediately after it were sort of trying to use that broken-English style of a very specific cadence and vocabulary, and you can sort of tell. You can hear the gears in my brain working way too hard as I try to relive this one successful post. It’s a little embarrassing to go back to those older quizzes.
I think there’s a lot of other stuff about this quiz that makes it work that I hadn’t realized at the time, and I just thought, like, Well, if I write in the same specific style every single time, then it’ll always be funny. So I think eventually the lesson I learned from it is to not look for crutches like that, because the stuff that’s worked since I wrote that has been generally pretty different from “Garbage Sons” in terms of style. So I think just learning not to constantly rely on the same things and try to approach each new thing as its own specific set of challenges that has a different set of requirements.
I think there’s something to the fact that the quiz was published in 2014. This is not to say that weirder comedy that’s not directly responding to politics doesn’t get attention these days, but it does seem like it’s harder to see a “Garbage Sons”–style success now. What’s your take on that, as someone who’s been writing for ClickHole for the past five years? I mean, certainly it was a more carefree time. The sense I got was that people got a little bit more excited about what seems to be “not political comedy,” but I also think there’s still tons of “not political comedy,” or stuff that isn’t explicitly about Trump, that people really like — [Tim Robinson’s]I Think You Should Leave being a very recent example of comedy that really resonated with people just because it was trying to tell jokes.
Another thing that had a lot to do with it was the fact that there were still websites that people went to. I feel like most of the people I know consume the internet now mostly through Twitter and Facebook, and the era of the BuzzFeed personality quiz where you would go to a website and engage with a specific piece of content on that website is sort of gone. I think, definitely, the election started a lot of conversations about what comedy should be doing, or what people wanted in their comedy, or what socially responsible comedy would look like that I think have somewhat complicated answers.
There’s always a hunger for pure jokes, but I guess I wonder if it feels harder now to cut through so much seriousness, so many political jokes, with things that are very silly. And related to your comment about how people used to go on websites, now I’m thinking of that great Onion article “We Don’t Make Any Money If You Don’t Click the Fucking Link.”That was perfect. Yeah, I think it’s a good encapsulation of how everybody feels when they work at a place that requires people to actually click on stuff. But I do think a lot of ClickHole stuff that sort of gets written off as pure silliness or categorized as absurdist and not related to the real world is … Sometimes I think the engine of those sillier posts is often about something. I think even “Garbage Sons” — I mean, I don’t think it’s pure fluff. I don’t want to get overly academic about a 500-word parody quiz, but yeah, there’s a guy here who I think, if you strip away a lot of the stuff that’s happening with his weird sons, he’s subscribing to a type of outdated masculinity. He had an idea of what a family should look like, and it’s not necessarily a toxic masculinity, but it’s an outdated masculinity, and he’s trying to grapple with that.
I think a lot of stuff that people write off as purely absurdist or frivolous — not just on ClickHole — a lot of the time, the reason why it’s working is because the core of it is it’s actually interesting, a real issue, or a real aspect of being a person. It just isn’t explicitly about that; you have to sort of think a little bit more about Well, why is this joke making me laugh?
The Onion and ClickHole are famous for not giving writers bylines. And here I am, talking to you about a quiz you wrote five years ago that I really loved. To give ClickHole some credit, not knowing it was you for most of that time made me want to track you down. Oh, I’m sorry about that.
No, it’s fun. I’m glad it was fun. The goal of the anonymity is definitely not to add any sort of mystique. We are all just very normal people. And the goal is not to create this artificial sense of Who’s behind this? or anything. It’s a creative decision, mostly. Partially because a lot of what happens on ClickHole and the Onion is so collaborative — sometimes people are writing articles underneath headlines they didn’t write and vice versa. And sometimes something that ends up on the site was just riffed on endlessly by everybody in the writers’ room before it gets published.
Also, part of the goal of ClickHole and the Onion is that it’s coming from this unified editorial entity that isn’t, uh, “Adam writing for ClickHole.” When you told me you wanted to talk about the piece and do something [on it], we all talked together about whether or not it would be a huge deal at all to have one person talk about one thing they had written. It’s just about 500 words of fun jokes on the internet, and if I come off as a big dork in this interview then all the better, because certainly nobody should be going around thinking that there’s some sort of aura around “Which One of My Garbage Sons Are You?” other than it’s a fun thing to read, which hopefully people think it is.
Okay, but if I reached out like a month after the quiz, I wouldn’t have been able to do this, right? Enough time has passed. Yeah, I think it’s that enough time has passed, and just [that] the state of the internet is different than it was five years ago. The state of ClickHole is different than it was five years ago in that some of us are older than we were in the past, and there’s different people in the writers’ room than there was in the past. I guess the short answer is that after five years and various incarnations of the site, we all talked about it, and we sort of decided it wouldn’t be such a terrible thing.
Even with you going on the record, I will say you are hard to find online anyway. You aren’t really active on Twitter, I couldn’t find a website for you, and having the name “Adam Levine” does not help on Google. Certainly I did not intentionally share a name with an extremely famous somewhat unpopular singer-songwriter. I didn’t set out to be completely anonymous, but I don’t know. I’m sure, as somebody who is on the internet, [you know that] it can engender a lot of anxiety and sort of put a strain on your mental health sometimes, so that’s sort of the general reason why I’ve had to stay away from it. And it does help that I’m probably search result number 63 billion if you Google “Adam Levine.” Even if you Google “Adam Levine garbage,” probably.
It was announced recently that Mad magazine would no longer release issues with new content, and I know there’s been some layoffs at the Onion in recent months, so it’s clearly a tough time for humor writing. What’s your take on the state of it right now and where it might be headed? It’s really awful that so many of these great websites are shutting down or struggling. And obviously, from a financial standpoint, if you’re a comedy writer, getting hired at someplace that’s a stable business that can pay you a salary is probably ideal. But it is exciting that when some of these places are closing down, people are turning to things like Patreon and getting directly funded by people who like the specific thing that they’re doing. A lot of the most exciting comedy online that I’ve seen recently has been stuff that’s being directly funded by audience members.
That being said, I don’t know what the status of digital media is going to be in the future, and I will not pretend to. I’m anxious about the state of basically individual websites as an entity, not just for comedy. Because I’m like all the older, grouchier millennials who miss getting to visit specific websites and seeing the specific things that each individual website wants to present, as opposed to getting flooded with stuff on social media from all over the place [and] you can’t really tell where anything’s coming from. So I miss that a lot, but I think there’s always going to be funny people, and there’s currently extremely funny people who are making stuff. So I’m less pessimistic about the status of comedy as a whole, and just a little bit anxious about the status of the days of going to an individual website. That being said, if you like ClickHole or the Onion, please visit those websites — they’re not dead yet.
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();
// ]]