Artist Stephen Wiltshire Draws Entire Cities From Memory


Stephen WiltshireStephen Wiltshire
Stephen Wiltshire at work on his Empire State project. Stephen Wiltshire

Like a lot of young kids, Stephen Wiltshire found comfort in the pages of a sketchpad. Born in 1974 to West Indian parents, the London native faced some unique challenges early on. While most kids start uttering words within their first two years, Wiltshire was mute. At age 3 he was diagnosed with autism. Unable to communicate his thoughts and feelings, Wiltshire channeled his energy onto blank pages. "When I was a young boy, I couldn't speak and drawing was my way of expressing myself," he says via email. "I drew animals, London buses, and sometimes demolitions of large buildings as well. It helped me to say what I couldn't with words."

Fast-forward 45 years, and not only has Wiltshire continued the practice of self-expression through art, but he's become one of the most successful and renowned artists in Britain and beyond. His commissions have four- to eight-month waiting lists, and he's routinely swarmed by flashbulb pops and fans clamoring for autographs, as is evident in the trailer for his upcoming feature length documentary, "Billions of Windows." And while the journey to his present-day triumph wasn't exactly simple or straightforward, Wiltshire's unique story has kept the world captivated for decades.

Using Visual Art Instead of Words

At age 5, Wiltshire was sent to London's Queensmill School, which specializes in the education of children and young people with autism. The faculty quickly realized Wiltshire was entirely capable of communication — he just chose pencil strokes over sentences. Once they picked up on his attachment to art, they began experimenting, temporarily taking away his materials to see if and how he'd react. The tactic worked: Wiltshire spoke. "Paper," he said to the staff, attempting to reclaim his artistic tools. He slowly developed his vocabulary, speaking in full sentences by age 9. But before he mastered verbal language, he demonstrated an aptitude for art that floored those around him, producing unfathomably detailed sketches of animals, London landmarks, and architectural structures by age 7.

"I enjoy drawing the chaos and order at the same time — the rush hour traffic versus square avenues and skyscrapers and the people who make these cities work," Wiltshire says. "Also, I like that some parts of the scenery will never change and others constantly develop."

Stephen WiltshireStephen Wiltshire
Wiltshire works to an astonished crowd on a panorama of Mexico City.
Stephen Wiltshire

That distinct perspective on the surrounding urban landscape and his ability to convey it on paper started to pique the interest of Wiltshire's teachers. One instructor in particular accompanied the young student on drawing excursions and entered his work in children's art competitions. Wiltshire began winning awards, and soon the local press started questioning how such a young artist could produce such impressive work.

But others — like Prime Minister Edward Heath — didn't need convincing; when Wiltshire was just 8, Heath became one of his first paying clients, purchasing one of his drawings of Salisbury Cathedral. In 1987, 13-year-old Wiltshire appeared in a BBC program called "The Foolish Wise Ones," in which Hugh Casson, a former president of London's Royal Academy of Arts, referred to him as "possibly the best child artist in Britain."

It was Casson who introduced the teen to literary agent Margaret Hewson, and helped him publish his first book, "Drawings," consisting of his early sketches. Two years later, after his first trip abroad with Hewson to see and sketch New York City's legendary skyscrapers, Wiltshire released his second book, titled "Cities."

"I like the details of the windows, shades, sharp edges, and foliage," Wiltshire says of his fondness for urban landscapes. "I often add mood and atmosphere to these views and sometimes change bits and pieces to make them look better."

Drawing the Cities of the World

After the release of his second book, Wiltshire embarked on a drawing tour of Venice, Amsterdam, Leningrad, and Moscow, compiling original drawings for his third book, "Floating Cities." In 1992, a Tokyo-based television company invited the young artist to tour Japan and create drawings of landmark structures like Shinjuku's metropolitan government building, and a year later, Wiltshire released yet another book titled "American Dream," including cityscapes of Chicago, San Francisco, and New York, and desert landscapes of Arizona.

Stephen WiltshireStephen Wiltshire
Wiltshire sketches the Singapore skyline.
Stephen Wiltshire

Wiltshire's extraordinary skill and prolific production captivated audiences, but his creative methods invited even more fascination: Many of his painstakingly detailed drawings were produced entirely from memory, including a panoramic piece depicting the city of Rome, including iconic structures like the Vatican and St. Peter's Cathedral.

Dozens of international trips, accolades and career highlights later, Wiltshire now owns his own permanent art gallery in London's Royal Opera Arcade, and has been named by Queen Elizabeth II as a Member of the Order of the British Empire. And while architecture and cityscapes are the subjects of some of his most popular works, he finds joy in creatively capturing everything from celebrity portraits to classic American cars. "I love movies from the '70s where these huge, comfortable, and powerful cars were travelling on the wide roads like boats," Wiltshire says. "I also like the culture of the '70s, just like disco as well as the earlier times like the '60s with motown music."

Music continues to play a major role in his creative process to this day. "I listen to music when I draw," he says. "Sixties motown, R&B, '70s disco, and the latest charts. It helps me focus better. I also play the piano and sing, but it's just a hobby."

Despite the astronomical success Wiltshire has already achieved, he continues to draw every single day, continuously seeking out new ways to capture the world and abiding by his own personal motto, "do the best you can, and never stop."



string(81252) "<div class="w-100 text-center p-4 padding-top1">ads disabled</div>'); }); } </script><script> /*! hsw-lite-frontend 2019-10-09 */ function prepareConfigForAC(a){function b(a){return a.replace(/[^\w\-\.\+]/gi,"")}var c=[{divId:"ad-div-bannerMiddle1",posName:"/bannermiddle1",code:a.slotName+"/bannermiddle1",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannermiddle1",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"540172482",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4865783",alias:"bannermiddle1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13636641",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"574417"}},{bidder:"ix",params:{siteId:"233507",size:[728,90]}},{bidder:"ix",params:{siteId:"233507",size:[970,90]}},{bidder:"ix",params:{siteId:"233507",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1002544",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerMiddle2",posName:"/bannermiddle2",code:a.slotName+"/bannermiddle2",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannermiddle2",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"540172483",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4865782",alias:"bannermiddle2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13636642",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"574418"}},{bidder:"ix",params:{siteId:"233509",size:[728,90]}},{bidder:"ix",params:{siteId:"233509",size:[970,90]}},{bidder:"ix",params:{siteId:"233509",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1002546",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-mobInline1",posName:"/mobinline1",code:a.slotName+"/mobinline1",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"mobinline1",mobile:!0,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882966",alias:"mobinline1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13761816",section:a.adUnit}},{bidder:"openx",params:{unit:"540216368",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"577104"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1021370"}},{bidder:"ix",params:{siteId:"290058",size:[300,250]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1855400391207619"}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_m_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-mobInline2",posName:"/mobinline2",code:a.slotName+"/mobinline2",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"mobinline2",mobile:!0,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882965",alias:"mobinline2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13761823",section:a.adUnit}},{bidder:"openx",params:{unit:"540216436",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"577105"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1021372"}},{bidder:"ix",params:{siteId:"290059",size:[300,250]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1855401471207511"}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_m_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerInline1",posName:"/bannerinline1",code:a.slotName+"/bannerinline1",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"bannerinline1",mobile:!1,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882061",alias:"bannerinline1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745312",section:a.adUnit}},{bidder:"openx",params:{unit:"540214023",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576926"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1020312"}},{bidder:"ix",params:{siteId:"290051",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerInline2",posName:"/bannerinline2",code:a.slotName+"/bannerinline2",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"bannerinline2",mobile:!1,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882063",alias:"bannerinline2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745313",section:a.adUnit}},{bidder:"openx",params:{unit:"540214024",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576927"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1020314"}},{bidder:"ix",params:{siteId:"290053",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailSticky",posName:"/rectanglerailsticky",code:a.slotName+"/rectanglerailsticky",sizes:[[160,600],[300,600],[300,250]],lazy:!1,prebidConfig:{posName:"rectanglerailsticky",mobile:!1,mediaTypes:{banner:{sizes:[[160,600],[300,600],[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882062",alias:"rectanglerailsticky",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745314",section:a.adUnit}},{bidder:"openx",params:{unit:"540214025",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576928"}},{bidder:"ix",params:{siteId:"290055",size:[160,600]}},{bidder:"ix",params:{siteId:"290055",size:[300,600]}},{bidder:"ix",params:{siteId:"290055",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerTop",posName:"/bannertop",code:a.slotName+"/bannertop",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannertop",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"538304556",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4122151",alias:"bannertop",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748140",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"338090"}},{bidder:"ix",params:{siteId:"182249",size:[728,90]}},{bidder:"ix",params:{siteId:"182249",size:[970,90]}},{bidder:"ix",params:{siteId:"182249",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428740",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_leaderboard_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailTop",posName:"/rectanglerailtop",code:a.slotName+"/rectanglerailtop",sizes:[[300,600],[300,250],[160,600]],lazy:!1,prebidConfig:{posName:"rectanglerailtop",mobile:!1,mediaTypes:{banner:{sizes:[[300,600],[300,250],[160,600]]}},bids:[{bidder:"aol",params:{placement:"4122152",alias:"rectanglerailtop",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748582",section:a.adUnit}},{bidder:"openx",params:{unit:"538304557",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338092"}},{bidder:"ix",params:{siteId:"182250",size:[300,600]}},{bidder:"ix",params:{siteId:"182250",size:[300,250]}},{bidder:"ix",params:{siteId:"182250",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428742",sizes:[15]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailMiddle",posName:"/rectanglerailmiddle",code:a.slotName+"/rectanglerailmiddle",sizes:[[300,600],[300,250],[160,600]],lazy:!1,prebidConfig:{posName:"rectanglerailmiddle",mobile:!1,mediaTypes:{banner:{sizes:[[300,600],[300,250],[160,600]]}},bids:[{bidder:"aol",params:{placement:"4122147",alias:"rectanglerailmiddle",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748638",section:a.adUnit}},{bidder:"openx",params:{unit:"538304558",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338094"}},{bidder:"ix",params:{siteId:"182251",size:[300,600]}},{bidder:"ix",params:{siteId:"182251",size:[300,250]}},{bidder:"ix",params:{siteId:"182251",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428744",sizes:[10]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailBottom",posName:"/rectanglerailbottom",code:a.slotName+"/rectanglerailbottom",sizes:[[160,600],[300,600],[300,250]],lazy:!1,prebidConfig:{posName:"rectanglerailbottom",mobile:!1,mediaTypes:{banner:{sizes:[[160,600],[300,600],[300,250]]}},bids:[{bidder:"aol",params:{placement:"4122149",alias:"rectanglerailbottom",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748674",section:a.adUnit}},{bidder:"openx",params:{unit:"538304559",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338102"}},{bidder:"ix",params:{siteId:"182252",size:[300,600]}},{bidder:"ix",params:{siteId:"182252",size:[300,250]}},{bidder:"ix",params:{siteId:"182252",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428746",sizes:[9]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerBottom",posName:"/bannerbottom",code:a.slotName+"/bannerbottom",sizes:[[728,90]],lazy:!0,prebidConfig:{posName:"bannerbottom",mobile:!1,mediaTypes:{banner:{sizes:[[728,90]]}},bids:[{bidder:"aol",params:{placement:"4122154",network:"10026.1",alias:"bannerbottom"}},{bidder:"appnexus",params:{placementId:"6748710",section:a.adUnit}},{bidder:"openx",params:{unit:"538304564",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338104"}},{bidder:"ix",params:{siteId:"182253",size:[728,90]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428748",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_728x90_hdx"}}]}},{divId:"ad-div-mobrectangle",posName:"/mobrectangle",code:a.slotName+"/mobrectangle",sizes:[[300,250],[320,50],[300,50],[320,100]],lazy:!1,prebidConfig:{posName:"mobrectangle",mobile:!0,mediaTypes:{banner:{sizes:[[300,250],[320,50],[300,50],[320,100]]}},bids:[{bidder:"aol",params:{placement:"4122161",network:"10026.1",alias:"mobrectangle"}},{bidder:"appnexus",params:{placementId:"6748779",section:a.adUnit}},{bidder:"openx",params:{unit:"538304565",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338107"}},{bidder:"ix",params:{siteId:"182254",size:[300,250]}},{bidder:"ix",params:{siteId:"182254",size:[320,50]}},{bidder:"ix",params:{siteId:"182254",size:[300,50]}},{bidder:"ix",params:{siteId:"182254",size:[320,100]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428734",sizes:[15]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1476769395737389"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]},amazonConfig:{}},{divId:"ad-div-mobRectangleInline",posName:"/mobrectangleinline",code:a.slotName+"/mobrectangleinline",sizes:[[300,250],[320,50],[300,50],[320,100]],lazy:!1,prebidConfig:{posName:"mobrectangleinline",mobile:!0,mediaTypes:{banner:{sizes:[[300,250],[320,50],[300,50],[320,100]]}},bids:[{bidder:"aol",params:{placement:"4122158",network:"10026.1",alias:"mobrectangleinline"}},{bidder:"appnexus",params:{placementId:"6748844",section:a.adUnit}},{bidder:"openx",params:{unit:"538304566",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338109"}},{bidder:"ix",params:{siteId:"182255",size:[300,250]}},{bidder:"ix",params:{siteId:"182255",size:[320,50]}},{bidder:"ix",params:{siteId:"182255",size:[300,50]}},{bidder:"ix",params:{siteId:"182255",size:[320,100]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428736",sizes:[15]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1476769632404032"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]}},{divId:"ad-div-mobadhesion",posName:"/mobadhesion",code:a.slotName+"/mobadhesion",sizes:[[320,50],[300,50]],lazy:!1,prebidConfig:{posName:"mobadhesion",mobile:!0,mediaTypes:{banner:{sizes:[[320,50],[300,50]]}},bids:[{bidder:"aol",params:{placement:"4122157",network:"10026.1",alias:"mobadhesion"}},{bidder:"appnexus",params:{placementId:"6748750",section:a.adUnit}},{bidder:"openx",params:{unit:"538304581",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338106"}},{bidder:"ix",params:{siteId:"182256",size:[320,50]}},{bidder:"ix",params:{siteId:"182256",size:[300,50]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428732",sizes:[43]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1750932548321071"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]},amazonConfig:{}}];void 0===a.allow_adx&&(a.allow_adx="true");var d=["true","false"];a.targetingParams={s1:a.s1||"",s2:a.s2||"",s3:a.s3||"",s4:a.s4||"",mkcpgn:a.mkcpgn||"organic",pid:a.pid||"",type:a.type||"",kw:a.kw||"",seq:1,url:HSW.utilities.trimUrl(location.href),hswpid:a.hswpid||"",srch_tag:a.srch_tag,rf:a.rf,hsw:a.hswtrkr,allow_adx:-1===d.indexOf(a.allow_adx)?"true":a.allow_adx,exp:GACtest||""};for(var e in a.targetingParams)null!==a.targetingParams[e]&&void 0!==a.targetingParams[e]||delete a.targetingParams[e];var f=pageMetricsData.template.toLowerCase();"quiz"!==f&&"photogallery"!==f||a.isMobile||$.each(c,function(a,b){void 0===b.bids||"/rectanglerailbottom"!==b.posName&&"/rectanglerailmiddle"!==b.posName||(c[a].prebidConfig.bids=c[a].prebidConfig.bids.filter(function(a){return"openx"!==a.bidder}))}),HSW.utilities.getViewportWidth()>1299&&$.each(c,function(a,b){"/bannerinline1"!==b.posName&&"/bannerinline2"!==b.posName||(c[a].sizes=[[728,90]],c[a].prebidConfig.bids=c[a].prebidConfig.bids.map(function(a){return"ix"===a.bidder&&(a.params.size=[728,90]),a}))}),"HomePage"===pageMetricsData.template&&HSW.utilities.getViewportWidth()>1139&&$.each(c,function(a,b){"/bannerinline1"!==b.posName&&"/bannerinline2"!==b.posName||(c[a].sizes=[[728,90]],c[a].prebidConfig.bids=c[a].prebidConfig.bids.map(function(a){return"ix"===a.bidder&&(a.params.size=[728,90]),a}))}),!0===a.no_afc&&"www"!=pageMetricsData.subdomain&&c.push({divId:"ad-div-rectangleInArticle",posName:"/rectangleinarticle",code:a.slotName+"/rectangleinarticle",sizes:[[300,250]],prebidConfig:{mobile:!1,bids:[]},amazonConfig:{}});var g=new Date;g.setTime(g.getTime()+18e5);var h=Cookies.get("mkcpgn"),i=HSW.utilities.getQueryVar("mkcpgn");a.mkcpgn=h||i,a.mkcpgn&&(void 0===h&&Cookies.set("mkcpgn",b(a.mkcpgn),{expires:g}),a.targetingParams.mkcpgn=a.mkcpgn);var j=Cookies.get("hswtrkr"),k=HSW.utilities.getQueryVar("hsw");a.hswtrkr=j||k,a.hswtrkr&&void 0===j&&Cookies.set("hswtrkr",b(k),{expires:g});var l=1;if("quiz"===f){var m="quiz-"+pageMetricsData.contentid,n=Cookies.getJSON(m);void 0!==n&&"number"==typeof n.questions&&(l=2*(n.questions+1)-1)}if("embed"===f){var m="embed-"+pageMetricsData.contentid,n=Cookies.getJSON(m);void 0!==n&&"number"==typeof n.adLoad&&(l=n.adLoad+1)}a.targetingParams.seq=l.toString();for(var o=[],p=[],q=c.length,r=0;r<q;r++)if(a.ads)for(var s=0,t=a.ads.length;s<t;s++)"HomePage"!==pageMetricsData.template&&"ad-div-bannerBottom"===c[r].divId||(c[r].loaded=!1,a.ads[s].toLowerCase()===c[r].divId.toLowerCase()&&HSW.utilities.isMobile()===c[r].prebidConfig.mobile&&(o.push(c[r]),p.push(c[r].divId)));else o.push(c[r]);return a.adUnits=o,a.ads=p,a} dfpSettings = prepareConfigForAC(dfpSettings); var leaderboardHeight= 0; const PREBID_TIMEOUT = 1500, APS_TIMEOUT = 1500, REFRESH_TIMER = GACtest === 'test15' ? 30000 : 60000, TIMED_REFRESH = (pageMetricsData.template !== 'Top10'), DEBUG_MODE = !(HSW.utilities.getQueryVar('pbjs_debug') === false), PREBID_URL = '//cdn-assets.hswstatic.com/lite/2218/js/vendor/prebid_1.40.0.js', seqVal = {}, adUnitTimers = {}; function initAdsCoordinator (fireNow) { var launchAC = async function () { var AC = s1.AdsCoordinator; omjs({event:'AdRequestStart', product:'hsw', payload:{environment: HSW.env, country: userData.country, userInEU: userData.userInEU}}); //Setup attaching extra key+value pairs AC.onEvent(AC.EVENTS.GPT_INIT, () => { Object.keys(dfpSettings.targetingParams).forEach(key => AC.setTargeting(key, dfpSettings.targetingParams[key].toString()) ); }); AC.onEvent(AC.EVENTS.GPT_SLOT_RENDER_ENDED, (e) => { var slotId = e.eventData.slot.getSlotElementId(), adHeight = e.eventData.size[1]; if (DEBUG_MODE) { console.log('### rendered ad divId = ', slotId); } //Disable any stickiness if ad returned is greater than 90px tall if (slotId === 'ad-div-bannerTop') { leaderboardHeight = adHeight; if (adHeight > 90) { $('#ad-wrap-bannerTop').removeClass('leaderboard-sticky'); var stickyElements = document.querySelectorAll('.leaderboard-sticky'); Stickyfill.remove(stickyElements); } } //Flag the ad units that have rendered at least once (and eligible for timed refreshes) dfpSettings.adUnits.map(adUnit => { if (adUnit.divId === slotId) { adUnit.loaded = true; } }); }); AC.onEvent(AC.EVENTS.GPT_IMPRESSION_VIEWABLE, (e) => { var slotId = e.eventData.slot.getSlotElementId(); if (DEBUG_MODE) { console.log('### slot with viewable impression = ', slotId); } }); if (TIMED_REFRESH && GACtest === 'test15') { AC.onEvent(AC.EVENTS.GPT_IMPRESSION_VIEWABLE, onViewable); } //Init AC with Prebid + Amazon await AC.init({ autoUpdateDom:true, isRefreshDisabledUntilViewable: TIMED_REFRESH, isRefreshQueueEnabled: TIMED_REFRESH, waitAfterViewableTimeout: REFRESH_TIMER, maxAdRequestFailTimeout: (REFRESH_TIMER * 10), lazyLoadConfig: { root: null, rootMargin: '100px', // trigger when 100px from rootMargin threshold: 0.5 }, bidFrameworkConfig: { prebid: { scriptSrc: PREBID_URL, prebidConfig: { bidderTimeout: PREBID_TIMEOUT, cookieSyncDelay: 100, debug: DEBUG_MODE, priceGranularity: { 'buckets' : [ { 'precision' : 2, 'min' : 0, 'max' : 20, 'increment' : 0.01 }, { 'precision' : 2, 'min' : 20, 'max' : 200, 'increment' : 1.00 } ] }, userSync: { iframeEnabled: true } } }, aps: { apsConfig: { bidTimeout: APS_TIMEOUT, isDebug: !(HSW.utilities.getQueryVar('amzn_debug_mode') === false), pubID: '3082' } } }, adManagerConfig:{ url: 'https://www.googletagservices.com/tag/js/gpt.js', gptConfig: { setForceSafeFrame: false } } }) await AC.addAdUnits(dfpSettings.adUnits) //Add slot-level targeting to include 'pos' dfpSettings.adUnits.forEach(adUnit => { AC.setSlotTargeting(adUnit.code, 'pos', adUnit.prebidConfig.posName); }); AC.enableAds() //Only fetch the ads that are not lazy loaded AC.refreshAds(dfpSettings.adUnits.map(adUnit => { if (!adUnit.lazy) { return adUnit.code; } })).then(acStore => { if (DEBUG_MODE) { setTimeout(debugAdsCoordinator, 4000); } if (TIMED_REFRESH && GACtest !== 'test15') { refreshAdTimer(); } }); }; if (fireNow) { launchAC(); } else { $(document).ready(function () { //Factor score from BDS when data is available if (window.bdsData) { if (window.bdsData.traffic_score < 50) { launchAC(); } else { omjs({event:'BotDetectedBlockAds', product:'hsw', payload:{environment: HSW.env, reason: window.bdsData.reason_code}}); } } //Just launch AC without BDS data else { omjs({event:'BotDetectionQueryDelayed', product:'hsw', payload:{environment: HSW.env, country: userData.country, userInEU: userData.userInEU}}); launchAC(); } }); } } function initLazyLoadAds () { $(document).ready(function () { dfpSettings.adUnits.map(adUnit => { if (!adUnit.lazy) { return; } inView('#' + adUnit.divId).once('enter', function () { s1.AdsCoordinator.refreshAds([adUnit.code]); }); }); }); } function createStickyLeaderboard () { //Nothing to enable on mobile, or if ad has already loaded and is too tall. if (HSW.utilities.isMobile() || leaderboardHeight > 90) { return; } //Make sticky $('#ad-wrap-bannerTop').addClass('leaderboard-sticky'); var stickyElements = document.querySelectorAll('.leaderboard-sticky'); Stickyfill.add(stickyElements); var stickyActive = true; //Unstick by pixel depth var unstickAtDepth = 900; $(document).scroll(function() { if (stickyActive) { var currDepth = $(document).scrollTop(); if (currDepth > unstickAtDepth) { $('#ad-wrap-bannerTop').removeClass('leaderboard-sticky'); Stickyfill.remove(stickyElements); stickyActive = false; } } }); } function refreshAdTimer () { if (!window.pageAdTimer) { window.pageAdTimer = setInterval(function() { dfpSettings.targetingParams.seq++; var loadedAds = dfpSettings.adUnits.map(adUnit => { if (adUnit.loaded) { return adUnit.code; } }); if (DEBUG_MODE) { console.log('### loadedAds eligible for TIMED REFRESH = ', loadedAds); } s1.AdsCoordinator.refreshAds(loadedAds, { seq : dfpSettings.targetingParams.seq.toString() }); }, REFRESH_TIMER); } } onViewable = event => { try { const code = event.eventData.slot.getAdUnitPath() || ''; const timerSeconds = REFRESH_TIMER/1000; seqVal[code] = seqVal[code] ? seqVal[code] + 1 : 2; //Assume we didn't log the first ad load if (DEBUG_MODE) { console.log(`### start ${timerSeconds}s timer to call lazyRefreshAds([${code}])`); } if (adUnitTimers[code]) { clearTimeout(adUnitTimers[code]); } //Sanity check (kill refreshes after page has been open for approx 30 min) if (seqVal[code] > 60) { return; } adUnitTimers[code] = setTimeout(() => { if (DEBUG_MODE) { console.log(`### end ${timerSeconds}s timer, now calling lazyRefreshAds([${code}]) with seq = ${seqVal[code]};`); } s1.AdsCoordinator.lazyRefreshAds({ codes: [code], targetingParams: { seq: seqVal[code] } }); }, REFRESH_TIMER); } catch (e) { console.log('onViewable error', e); } }; function debugAdsCoordinator () { //Get info about all bids and whether any won var responses = pbjs.getBidResponses(); var winners = pbjs.getAllWinningBids(); var output = []; Object.keys(responses).forEach(function(adUnitCode) { var response = responses[adUnitCode]; response.bids.forEach(function(bid) { output.push({ adunit: adUnitCode, adId: bid.adId, bidder: bid.bidder, time: bid.timeToRespond, cpm: bid.cpm, msg: bid.statusMessage, rendered: !!winners.find(function(winner) { return winner.adId==bid.adId; }) }); }); }); if (output.length) { console.log('INFO: PREBID_TIMEOUT = ', PREBID_TIMEOUT); console.log('INFO: Raw bid responses object = ', responses); console.log('INFO: Table showing all bid requests made and responses below:'); if (console.table) { console.table(output); } else { for (var j = 0; j < output.length; j++) { console.log(output[j]); } } } else { console.warn('NO prebid responses'); } //Get highest bid from Prebid bidders (whether they won or not) for each position var bids = pbjs.getHighestCpmBids(); var output = []; for (var i = 0; i < bids.length; i++) { var b = bids[i]; output.push({ 'adunit': b.adUnitCode, 'adId': b.adId, 'bidder': b.bidder, 'time': b.timeToRespond, 'cpm': b.cpm }); } if (output.length) { console.log('INFO: Table showing all highest bids per position below:'); if (console.table) { console.table(output); } else { for (var j = 0; j < output.length; j++) { console.log(output[j]); } } } else { console.warn('No prebid winners'); } } //Handle delayed loading since library loads async var acLib = document.querySelector('#aclib'), isWaitingForAcLib = false, hasInitializedAcLib = false; var waitForAcLib = function () { if (hasInitializedAcLib) { return false; } if (typeof s1 !== 'undefined' && typeof s1.AdsCoordinator !== 'undefined') { hasInitializedAcLib = true; initAdsCoordinator(); //Setup scroll detection to trigger refresh of lazy-load ad units initLazyLoadAds(); return true; } else if (!isWaitingForAcLib && acLib) { isWaitingForAcLib = true; acLib.addEventListener('load', waitForAcLib); } } //Make sure user is not in EU //EU users are handled by cmp_init if (!userData.userInEU) { waitForAcLib(); } </script> <link rel="stylesheet" href="//cdn-assets.hswstatic.com/lite/2218/css/editorial.min.css"><style> </style> <script type="text/javascript"> window._taboola = window._taboola || []; _taboola.push({ article:'auto' }); function initTaboolaWidget () { !function (e, f, u, i) { if (!document.getElementById(i)){ e.async = 1; e.src = u; e.id = i; f.parentNode.insertBefore(e, f); } }(document.createElement('script'), document.getElementsByTagName('script')[0], '//cdn.taboola.com/libtrc/howstuffworks-howstuffworks/loader.js', 'tb_loader_script'); if(window.performance && typeof window.performance.mark == 'function') {window.performance.mark('tbl_ic');} } </script> </head> <body class="hsw-page cid-944441 interior editorial-content editorial article-template page-0 news news-post"><svg xmlns="http://www.w3.org/2000/svg" style="display: none;" aria-hidden="true"><symbol id="arrow-down" viewBox="0 0 32 32"><g><path d="M14.496 5.975l-.001 14.287-6.366-6.367L6 16.021l10.003 10.004L26 16.029 23.871 13.9l-6.366 6.368V5.977z"/></g></symbol> <symbol id="arrow-left" viewBox="0 0 32 32"><g><path d="M26.025 14.496l-14.286-.001 6.366-6.366L15.979 6 5.975 16.003 15.971 26l2.129-2.129-6.367-6.366h14.29z"/></g></symbol> <symbol id="arrow-right" viewBox="0 0 32 32"><g><path d="M5.975 17.504l14.287.001-6.367 6.366L16.021 26l10.004-10.003L16.029 6l-2.128 2.129 6.367 6.366H5.977z"/></g></symbol> <symbol id="arrow-up" viewBox="0 0 32 32"><g><path d="M17.504 26.025l.001-14.287 6.366 6.367L26 15.979 15.997 5.975 6 15.971 8.129 18.1l6.366-6.368v14.291z"/></g></symbol> <symbol id="chevron-down" viewBox="0 0 32 32"><g><path d="M16.003 18.626l7.081-7.081L25 13.46l-8.997 8.998-9.003-9 1.917-1.916z"/> </g></symbol> <symbol id="chevron-left" viewBox="0 0 32 32"><g><path d="M14.19 16.005l7.869 7.868-2.129 2.129-9.996-9.997L19.937 6.002l2.127 2.129z"/></g></symbol> <symbol id="chevron-right" viewBox="0 0 32 32"><g><path d="M18.629 15.997l-7.083-7.081L13.462 7l8.997 8.997L13.457 25l-1.916-1.916z"/></g></symbol> <symbol id="chevron-up" viewBox="0 0 32 32"><g><path d="M15.997 13.374l-7.081 7.081L7 18.54l8.997-8.998 9.003 9-1.916 1.916z"/></g></symbol> <symbol id="clear" viewBox="0 0 32 32"><g><path d="M7.004 23.087l7.08-7.081-7.07-7.071L8.929 7.02l7.067 7.069L23.084 7l1.912 1.913-7.089 7.093 7.075 7.077-1.912 1.913-7.074-7.073L8.917 25z"/></g></symbol> <symbol id="hamburger" viewBox="0 0 32 32"><g><path d="M6.001 7.128L6 10.438l19.998-.005L26 7.124zM6.001 21.566L6 24.876l19.998-.006.002-3.308zM6.001 14.341L6 17.65l19.998-.004.002-3.309z"/></g></symbol> <symbol id="pause" viewBox="0 0 32 32"><g><path d="M18.432 7.5h4.547v17h-4.547zM9.022 7.5h4.545v17H9.022z"/> </g></symbol> <symbol id="play" viewBox="0 0 32 32"><g><path d="M10.968 23V9l12.762 7-12.762 7z"/></g></symbol> <symbol id="refresh" viewBox="0 0 32 32"><g><path d="M27.1 14.313V5.396L24.158 8.34c-2.33-2.325-5.033-3.503-8.11-3.503C9.902 4.837 4.901 9.847 4.899 16c.001 6.152 5.003 11.158 11.15 11.16 4.276 0 9.369-2.227 10.836-8.478l.028-.122h-3.23l-.022.068c-1.078 3.242-4.138 5.421-7.613 5.421a8 8 0 0 1-5.691-2.359A7.993 7.993 0 0 1 8 16.001c0-4.438 3.611-8.049 8.05-8.049 2.069 0 3.638.58 5.924 2.573l-3.792 3.789H27.1z"/></g></symbol> <symbol id="search" viewBox="0 0 32 32"><g> <path d="M27 24.57l-5.647-5.648a8.895 8.895 0 0 0 1.522-4.984C22.875 9.01 18.867 5 13.938 5 9.01 5 5 9.01 5 13.938c0 4.929 4.01 8.938 8.938 8.938a8.887 8.887 0 0 0 4.984-1.522L24.568 27 27 24.57zm-13.062-4.445a6.194 6.194 0 0 1-6.188-6.188 6.195 6.195 0 0 1 6.188-6.188 6.195 6.195 0 0 1 6.188 6.188 6.195 6.195 0 0 1-6.188 6.188z"/></g></symbol> <symbol id="stop" viewBox="0 0 32 32"><g><path d="M8 8h16v16H8z"/> </g></symbol> <symbol id="random" viewBox="0 0 20 20"><path d="M15.093 6.694h0.92v2.862l3.987-4.024-3.988-4.025v2.387h-0.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.080 4.049-5.386 4.049h-2.092v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.080-4.048 5.386-4.048zM5.41 8.458c0.158-0.203 0.316-0.412 0.477-0.623 0.39-0.514 0.804-1.055 1.252-1.596-1.322-1.234-2.915-2.144-5.046-2.144h-2.093v2.799h2.093c1.327 0 2.362 0.623 3.317 1.564zM16.012 13.294h-0.92c-1.407 0-2.487-0.701-3.491-1.738-0.1 0.131-0.201 0.264-0.303 0.397-0.441 0.58-0.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h0.92v2.398l3.989-4.025-3.988-4.025v2.851z"></path></symbol> <symbol id="home" viewBox="0 0 32 32"><title>home</title><path d="M32 19l-6-6v-9h-4v5l-6-6-16 16v1h4v10h10v-6h4v6h10v-10h4z"></path></symbol> <symbol id="linkedin" viewBox="0 0 32 32"><path d="M12 12h5.535v2.837h0.079c0.77-1.381 2.655-2.837 5.464-2.837 5.842 0 6.922 3.637 6.922 8.367v9.633h-5.769v-8.54c0-2.037-0.042-4.657-3.001-4.657-3.005 0-3.463 2.218-3.463 4.509v8.688h-5.767v-18z"></path><path d="M2 12h6v18h-6v-18z"></path><path d="M8 7c0 1.657-1.343 3-3 3s-3-1.343-3-3c0-1.657 1.343-3 3-3s3 1.343 3 3z"></path></symbol> <symbol id="rss" viewBox="0 0 32 32"><path d="M4.259 23.467c-2.35 0-4.259 1.917-4.259 4.252 0 2.349 1.909 4.244 4.259 4.244 2.358 0 4.265-1.895 4.265-4.244-0-2.336-1.907-4.252-4.265-4.252zM0.005 10.873v6.133c3.993 0 7.749 1.562 10.577 4.391 2.825 2.822 4.384 6.595 4.384 10.603h6.16c-0-11.651-9.478-21.127-21.121-21.127zM0.012 0v6.136c14.243 0 25.836 11.604 25.836 25.864h6.152c0-17.64-14.352-32-31.988-32z"></path></symbol> <symbol id="double-chevron-right" viewBox="0 0 24 24"><path d="M13.707 17.707l5-5c0.391-0.391 0.391-1.024 0-1.414l-5-5c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4.293 4.293-4.293 4.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0zM6.707 17.707l5-5c0.391-0.391 0.391-1.024 0-1.414l-5-5c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4.293 4.293-4.293 4.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path></symbol> <symbol id="double-chevron-left" viewBox="0 0 24 24"><title>chevrons-left</title><path d="M11.707 16.293l-4.293-4.293 4.293-4.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5 5c-0.391 0.391-0.391 1.024 0 1.414l5 5c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414zM18.707 16.293l-4.293-4.293 4.293-4.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5 5c-0.391 0.391-0.391 1.024 0 1.414l5 5c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"></path></symbol> <symbol id="envelope" viewBox="0 0 32 32"><title>email</title><path d="M29 4h-26c-1.65 0-3 1.35-3 3v20c0 1.65 1.35 3 3 3h26c1.65 0 3-1.35 3-3v-20c0-1.65-1.35-3-3-3zM12.461 17.199l-8.461 6.59v-15.676l8.461 9.086zM5.512 8h20.976l-10.488 7.875-10.488-7.875zM12.79 17.553l3.21 3.447 3.21-3.447 6.58 8.447h-19.579l6.58-8.447zM19.539 17.199l8.461-9.086v15.676l-8.461-6.59z"></path></symbol> <symbol id="spinner" viewBox="0 0 32 32"><title>spinner8</title><path d="M16 32c-4.274 0-8.292-1.664-11.314-4.686s-4.686-7.040-4.686-11.314c0-3.026 0.849-5.973 2.456-8.522 1.563-2.478 3.771-4.48 6.386-5.791l1.344 2.682c-2.126 1.065-3.922 2.693-5.192 4.708-1.305 2.069-1.994 4.462-1.994 6.922 0 7.168 5.832 13 13 13s13-5.832 13-13c0-2.459-0.69-4.853-1.994-6.922-1.271-2.015-3.066-3.643-5.192-4.708l1.344-2.682c2.615 1.31 4.824 3.313 6.386 5.791 1.607 2.549 2.456 5.495 2.456 8.522 0 4.274-1.664 8.292-4.686 11.314s-7.040 4.686-11.314 4.686z"></path></symbol> <symbol id="new-tab" viewBox="0 0 32 32"><path d="M6 2v24h24v-24h-24zM28 24h-20v-20h20v20zM4 28v-21l-2-2v25h25l-2-2h-21z"></path><path d="M11 8l5 5-6 6 3 3 6-6 5 5v-13z"></path></symbol> <symbol id="facebook" viewBox="0 0 32 32"><title>facebook</title><path d="M19 6h5v-6h-5c-3.86 0-7 3.14-7 7v3h-4v6h4v16h6v-16h5l1-6h-6v-3c0-0.542 0.458-1 1-1z"></path></symbol> <symbol id="facebook-square" viewBox="0 0 32 32"><title>facebook2</title><path d="M29 0h-26c-1.65 0-3 1.35-3 3v26c0 1.65 1.35 3 3 3h13v-14h-4v-4h4v-2c0-3.306 2.694-6 6-6h4v4h-4c-1.1 0-2 0.9-2 2v2h6l-1 4h-5v14h9c1.65 0 3-1.35 3-3v-26c0-1.65-1.35-3-3-3z"></path></symbol> <symbol id="instagram" viewBox="0 0 32 32"><title>instagram</title><path d="M16 2.881c4.275 0 4.781 0.019 6.462 0.094 1.563 0.069 2.406 0.331 2.969 0.55 0.744 0.288 1.281 0.638 1.837 1.194 0.563 0.563 0.906 1.094 1.2 1.838 0.219 0.563 0.481 1.412 0.55 2.969 0.075 1.688 0.094 2.194 0.094 6.463s-0.019 4.781-0.094 6.463c-0.069 1.563-0.331 2.406-0.55 2.969-0.288 0.744-0.637 1.281-1.194 1.837-0.563 0.563-1.094 0.906-1.837 1.2-0.563 0.219-1.413 0.481-2.969 0.55-1.688 0.075-2.194 0.094-6.463 0.094s-4.781-0.019-6.463-0.094c-1.563-0.069-2.406-0.331-2.969-0.55-0.744-0.288-1.281-0.637-1.838-1.194-0.563-0.563-0.906-1.094-1.2-1.837-0.219-0.563-0.481-1.413-0.55-2.969-0.075-1.688-0.094-2.194-0.094-6.463s0.019-4.781 0.094-6.463c0.069-1.563 0.331-2.406 0.55-2.969 0.288-0.744 0.638-1.281 1.194-1.838 0.563-0.563 1.094-0.906 1.838-1.2 0.563-0.219 1.412-0.481 2.969-0.55 1.681-0.075 2.188-0.094 6.463-0.094zM16 0c-4.344 0-4.887 0.019-6.594 0.094-1.7 0.075-2.869 0.35-3.881 0.744-1.056 0.412-1.95 0.956-2.837 1.85-0.894 0.888-1.438 1.781-1.85 2.831-0.394 1.019-0.669 2.181-0.744 3.881-0.075 1.713-0.094 2.256-0.094 6.6s0.019 4.887 0.094 6.594c0.075 1.7 0.35 2.869 0.744 3.881 0.413 1.056 0.956 1.95 1.85 2.837 0.887 0.887 1.781 1.438 2.831 1.844 1.019 0.394 2.181 0.669 3.881 0.744 1.706 0.075 2.25 0.094 6.594 0.094s4.888-0.019 6.594-0.094c1.7-0.075 2.869-0.35 3.881-0.744 1.050-0.406 1.944-0.956 2.831-1.844s1.438-1.781 1.844-2.831c0.394-1.019 0.669-2.181 0.744-3.881 0.075-1.706 0.094-2.25 0.094-6.594s-0.019-4.887-0.094-6.594c-0.075-1.7-0.35-2.869-0.744-3.881-0.394-1.063-0.938-1.956-1.831-2.844-0.887-0.887-1.781-1.438-2.831-1.844-1.019-0.394-2.181-0.669-3.881-0.744-1.712-0.081-2.256-0.1-6.6-0.1v0z"></path><path d="M16 7.781c-4.537 0-8.219 3.681-8.219 8.219s3.681 8.219 8.219 8.219 8.219-3.681 8.219-8.219c0-4.537-3.681-8.219-8.219-8.219zM16 21.331c-2.944 0-5.331-2.387-5.331-5.331s2.387-5.331 5.331-5.331c2.944 0 5.331 2.387 5.331 5.331s-2.387 5.331-5.331 5.331z"></path><path d="M26.462 7.456c0 1.060-0.859 1.919-1.919 1.919s-1.919-0.859-1.919-1.919c0-1.060 0.859-1.919 1.919-1.919s1.919 0.859 1.919 1.919z"></path></symbol> <symbol id="twitter" viewBox="0 0 32 32"><title>twitter</title><path d="M32 7.075c-1.175 0.525-2.444 0.875-3.769 1.031 1.356-0.813 2.394-2.1 2.887-3.631-1.269 0.75-2.675 1.3-4.169 1.594-1.2-1.275-2.906-2.069-4.794-2.069-3.625 0-6.563 2.938-6.563 6.563 0 0.512 0.056 1.012 0.169 1.494-5.456-0.275-10.294-2.888-13.531-6.862-0.563 0.969-0.887 2.1-0.887 3.3 0 2.275 1.156 4.287 2.919 5.463-1.075-0.031-2.087-0.331-2.975-0.819 0 0.025 0 0.056 0 0.081 0 3.181 2.263 5.838 5.269 6.437-0.55 0.15-1.131 0.231-1.731 0.231-0.425 0-0.831-0.044-1.237-0.119 0.838 2.606 3.263 4.506 6.131 4.563-2.25 1.762-5.075 2.813-8.156 2.813-0.531 0-1.050-0.031-1.569-0.094 2.913 1.869 6.362 2.95 10.069 2.95 12.075 0 18.681-10.006 18.681-18.681 0-0.287-0.006-0.569-0.019-0.85 1.281-0.919 2.394-2.075 3.275-3.394z"></path></symbol> <symbol id="youtube-play" viewBox="0 0 32 32"><title>youtube</title><path d="M31.681 9.6c0 0-0.313-2.206-1.275-3.175-1.219-1.275-2.581-1.281-3.206-1.356-4.475-0.325-11.194-0.325-11.194-0.325h-0.012c0 0-6.719 0-11.194 0.325-0.625 0.075-1.987 0.081-3.206 1.356-0.963 0.969-1.269 3.175-1.269 3.175s-0.319 2.588-0.319 5.181v2.425c0 2.587 0.319 5.181 0.319 5.181s0.313 2.206 1.269 3.175c1.219 1.275 2.819 1.231 3.531 1.369 2.563 0.244 10.881 0.319 10.881 0.319s6.725-0.012 11.2-0.331c0.625-0.075 1.988-0.081 3.206-1.356 0.962-0.969 1.275-3.175 1.275-3.175s0.319-2.587 0.319-5.181v-2.425c-0.006-2.588-0.325-5.181-0.325-5.181zM12.694 20.15v-8.994l8.644 4.513-8.644 4.481z"></path></symbol> </svg> <script type="text/javascript" src="https://s.flocdn.com/cmp/loader.js"></script> <script type="text/javascript"> //Make sure we have a valid reference to AFC/AFS container object adsbygoogle=window.adsbygoogle||[]; (function () { var cmpInitialized = false, forceCMP = (HSW.utilities.hashArgs['cmp'] === 'on'); /** * Wrapper for log output to silence messages when logging is turned off * * @param string m * @param mixed v * @return void */ function cmpLog (m, v) { if (forceCMP) { if (v) { console.log('CMP:' + m, v); } else { console.log('CMP:' + m); } } } /** * Wrapper for logging data to different services * * @param string e * @return void */ function cmpLogEvent (e) { if (typeof glogger !== 'undefined' && typeof gloggerApp !== 'undefined') { glogger.increment(gloggerApp + '.cmp', { 'country': userData.country, 'event' : e.replace(/-/g, "_") }); } } /** * Event handler for when user submits consent data via CMP dialogue * * @param obj result * @return void */ function cmpSubmit (result) { cmpLog("onSubmit", result); cmpLogEvent('submit-consent'); //Safe now to call Prebid/DFP, but must activate Consent Mgmt features cmpProcessConsent(true); } /** * Detected new EU user that must be shown the Consent Tool via CMP * * @param obj result * @return void */ function cmpShowTool (result) { cmpLog('showConsentTool; errorMsg = ', result.errorMsg); //Show consent tool for this user cmp('showConsentTool'); cmpLogEvent('show-consent-tool'); //User has saved consent cmp('addEventListener', 'onSubmit', cmpSubmit); //User has chaned their consent cmp('addEventListener', 'onConsentChanged', function() { //@todo }); } /** * Process state of user and their implicit/explicit level of consent * * @param bool activateConsentMgmt * @returns void */ function cmpProcessConsent(activateConsentMgmt) { //When Consent Management is not needed, allow everything (not EU user) if (!activateConsentMgmt) { return cmpFullResume('consent-not-required', false); } //User opted in to everything, so we kick everything off with full permissions var fullOptIn = (document.cookie.indexOf("gdpr_opt_in=1") >= 0); if (fullOptIn) { return cmpFullResume('full-consent-granted', false); } cmpActivateVendors(activateConsentMgmt); } /** * Load / trigger resuming everything on the page * * @param string r * @param bool activateConsentMgmt * @return void */ function cmpFullResume(r, activateConsentMgmt) { cmpLog('full resume'); //Log timing till this var cmpTimeToFullResume = performance.now() - hswTime0; gloggerQueue.push(function () { var countryLabel = ''; if (userData.country === 'US') { countryLabel = '_us'; } if (userData.country === 'GB') { countryLabel = '_uk'; } glogger.timing(gloggerApp + '.cmp_full_resume_time' + countryLabel, cmpTimeToFullResume); }); //Resume Prebid + DFP if (typeof initAdsCoordinator !== 'undefined'){ if (typeof s1 !== 'undefined' && typeof s1.AdsCoordinator != 'undefined') { initAdsCoordinator(true); } else { waitForAcLib(); } } //Load and resume AdSense if (pageMetricsData.template.toLowerCase() === 'search') { $.getScript("https://www.google.com/adsense/search/ads.js"); if (typeof pageOptions !== 'undefined') { _googCsa('ads', pageOptions, adblock1, adblock2); } } else { $.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'); adsbygoogle.pauseAdRequests = 0; } //Load and activate GTM + GA pageMetricsData.firePixels = true; deferLoadGTM(); //Load any custom fonts from Google if (typeof loadCustomFonts === 'function') { loadCustomFonts(); } //Load all Taboola products if (typeof initTaboolaWidget === 'function') { initTaboolaWidget(); } if (typeof loadBodyWidget === 'function') { loadBodyWidget(); } if (typeof loadRailWidget === 'function') { loadRailWidget(); } if (typeof loadTaboolaNewsroom === 'function') { loadTaboolaNewsroom(); } //Log activity cmpLogEvent(r); } /** * Determine which components on the page should be resumed and whether * they need special configuration based on user's level of consent. * * @param bool activateConsentMgmt * @returns void */ function cmpActivateVendors(activateConsentMgmt) { //@todo - we cannot yet determine how to legally load GTM/GA with partial consent //Handle partial consents where user may have rejected specific purposes/vendors __cmp('getVendorConsents', [42, 77, 164, 10, 32, 13], function (result) { cmpLog('getVendorConsents result = ', result); //See if user turned off Personalization //under publisher consent; in CMP, it is a top-level category/purpose if (result.purposeConsents[2] === false) { cmpLog('getVendorConsents personalization turned OFF'); //Turn off personalized-ads on main GPT (DFP) ad request pageMetricsData.nonPersonalized = true; if (typeof dfpSettings !== 'undefined') { dfpSettings.gptNonPersonalized = true; } //Turn off personalized-ads on AFC/AFS and resume loading adsbygoogle.requestNonPersonalizedAds = 1; } //Resume AFC/AFS load and Prebid/DFP requests if (pageMetricsData.template.toLowerCase() === 'search') { $.getScript("https://www.google.com/adsense/search/ads.js"); pageOptions.personalizedAds = false; _googCsa('ads', pageOptions, adblock1, adblock2); } else { $.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'); adsbygoogle.pauseAdRequests = 0; } if (result.purposeConsents[1] === false && result.purposeConsents[2] === false && result.purposeConsents[3] === false && result.purposeConsents[4] === false && result.purposeConsents[5] === false) { cmpLogEvent('no-consent-granted'); } else { cmpLogEvent('partial-consent-granted'); } //@todo - remove below when we have green-light to move to Prebid 1.x !!!!!!!!!!! //Resume loading ad request if (typeof HSW.ads === 'object') { //For now, pull out all bidder config on ad units while CMP is updated to //provide the necessary data to Prebid's Consent Management module $.each(dfpSettings.adUnits, function (k, v) { if ( typeof v.bids !== 'undefined' ) { dfpSettings.adUnits[k].bids = []; } }); HSW.ads.resume(activateConsentMgmt); } return; //Taboola products (widget/newsroom and GTM conversion pixel) if (result.vendorConsents[42] === true) { if (typeof initTaboolaWidget === 'function') { initTaboolaWidget(); } if (typeof loadBodyWidget === 'function') { loadBodyWidget(); } if (typeof loadRailWidget === 'function') { loadRailWidget(); } if (typeof loadTaboolaNewsroom === 'function') { loadTaboolaNewsroom(); } } //comScore ping if (result.vendorConsents[77] === true) { //@todo } //Outbrain conversion pixel if (result.vendorConsents[164] === true) { //@todo } //Index Exchange tracking pixel if (result.vendorConsents[10] === true) { //@todo } //AppNexus tracking pixel if (result.vendorConsents[32] === true) { //@todo } //Sovrn tracking pixel if (result.vendorConsents[13] === true) { //@todo } }); } //Expose this to other libraries within the HSW.utilities namespace HSW.utilities.cmpInit = function () { if (cmpInitialized) { return; } cmpInitialized = true; if (!userData.checkConsent) { cmpLog("No CMP needed; proceeding with pageload"); //Go ahead and call Prebid/DFP; no need to use Consent Mgmt return cmpProcessConsent(false); } var cmpConfig = { scriptSrc: 'https://s.flocdn.com/cmp/s1.cmp.js', gdprApplies: true, logging: forceCMP }; //Init S1 CMP cmp('init', cmpConfig, (result) => { cmpLogEvent('init'); cmpLog('init: result = ', result); //Consent required if (result.consentRequired) { if (result.errorMsg) { //Consent not yet acquired; launch tool cmpShowTool(result); } else { //Full consent acquired if (document.cookie.indexOf("gdpr_opt_in=1") >= 0) { cmpLog("init: all consent achieved", result); cmpProcessConsent(true); } //Partial consent acquired else { cmpLog("init: only some consent achieved", result); cmpProcessConsent(true); } } } //CMP says consent not required (unclear on when this would be active) else { cmpLog('init: checkConsent was true, but CMP returns consentRequired = false; result = ', result); //Go ahead and call Prebid/DFP; no need to use Consent Mgmt cmpProcessConsent(false); } }); } //If geo is known before we loaded this CMP library, let's go ahead and fire it up if (typeof userData.country !== 'undefined') { HSW.utilities.cmpInit(); } })(); </script> <nav id="offcanvas" class="navmenu navmenu-fixed-right navmenu-site offcanvas" data-track-gtm="Mobile Menu"> <div id="offcanvas-navigation" class="link-menu"> <span><a href="" class="exit-offcanvas">X</a></span> <ul> <li class="unit"><a class="navLink" href="//adventure.howstuffworks.com">Adventure</a></li> <li class="unit"><a class="navLink" href="//animals.howstuffworks.com/">Animals</a></li> <li class="unit"><a class="navLink" href="//auto.howstuffworks.com">Auto</a></li> <li class="unit"><a class="navLink" href="//people.howstuffworks.com/culture">Culture</a></li> <li class="unit"><a class="navLink" href="//entertainment.howstuffworks.com">Entertainment</a></li> <li class="unit"><a class="navLink" href="//health.howstuffworks.com">Health</a></li> <li class="unit"><a class="navLink" href="//home.howstuffworks.com">Home &amp; Garden</a></li> <li class="unit"><a class="navLink" href="//lifestyle.howstuffworks.com">Lifestyle</a></li> <li class="unit"><a class="navLink" href="//money.howstuffworks.com">Money</a></li> <li class="unit"><a class="navLink" href="//science.howstuffworks.com">Science</a></li> <li class="unit"><a class="navLink" href="//electronics.howstuffworks.com/tech">Tech</a></li> <li class="unit"><a class="navLink" href="//www.howstuffworks.com/videos">Video</a></li> <li class="unit"><a class="navLink" href="//www.stuffmedia.com">Podcasts</a></li> <li class="unit"><a class="navLink" href="https://play.howstuffworks.com">Quizzes</a></li> </ul> </div> </nav> <script> $(document).ready(function (e) { $( ".exit-offcanvas" ).click(function(e) { $('#offcanvas').offcanvas('hide'); e.preventDefault(); }); }); </script> <div class="ad-dock"> <div id="ad-wrap-mobadhesion"> <div id="ad-div-mobadhesion" class="ad-tag text-center hidden-sm hidden-md hidden-lg hidden-xl "> <script> if (typeof googletag !== 'undefined' && HSW.utilities.isMobile() === true) { googletag.cmd.push(function() { googletag.display('ad-div-mobadhesion'); }); } </script> </div> </div></div> <div id="wrap"> <header class="hsw" data-track-gtm="Header"> <div id="hsw-header"> <div class="header-wrapper"> <div class="container"> <div class="row"> <div class="expanded-logo"> <div class="hswLogo" data-track-gtm="Logo Graphic"> <a href="//www.howstuffworks.com/"> <svg viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="question-mark"> <polygon id="Rectangle-2" fill="#027DB8" points="0 0 100 0 100 100 0 100"></polygon> <path d="M49.889,74.9212148 C63.949,74.9212148 73.676,83.9940346 73.676,97.1197079 C73.676,98.1038578 73.614,99.062953 73.506,100 L73.506,100 L61.289,100 C61.508,99.1080515 61.638,98.1810264 61.638,97.2219312 C61.638,90.6545847 56.338,85.4432003 49.791,85.4432003 C43.336,85.4432003 38.043,90.7487905 38.043,97.2219312 C38.043,98.1780198 38.175,99.1050449 38.401,100 L38.401,100 L26.157,100 C26.056,99.0960252 26,98.1700023 26,97.2219312 C26,83.9940346 35.727,74.9212148 49.889,74.9212148 Z M52.8844,16 C63.9674,16 74.6514,22.0943132 74.6514,35.6509279 C74.6514,52.5468374 57.2054,54.307684 57.2054,66.0002267 L57.2054,68.0637345 L43.6744,68.0637345 L43.6744,65.0220899 C43.6744,49.3017485 60.5354,47.5348887 60.5354,35.7491425 C60.5354,30.4395435 56.7144,27.9911951 52.5004,27.9911951 C46.8144,27.9911951 44.0724,31.6211247 44.0724,37.1241462 L44.0724,38.3027208 L30.5414,38.3027208 C30.5414,24.4484559 39.1674,16 52.8844,16 Z" id="Combined-Shape" fill="#FEFEFE"></path> </g> </g> </svg> </a> </div> <div class="header-content"> <div class="row header-top"> <div class="col-sm-5 col-xs-9"> <div class="site-name-wrap" data-track-gtm="Site Name"> <a class="pull-left hidden-xs" href="//www.howstuffworks.com"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 40" enable-background="new 0 0 240 40"><g transform="translate(151.877 .338)"><defs><filter filterUnits="userSpaceOnUse" x="-31.5" y="1.5" width="11.8" height="14.3"><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter> </defs> <mask maskUnits="userSpaceOnUse" x="-31.5" y="1.5" width="11.8" height="14.3"> <path class="st1" d="M-31.5 1.5h11.8v14.3h-11.8z" fill-rule="evenodd" clip-rule="evenodd" filter="url(#a)"></path> </mask> <path d="M-28 15.8V15c0-4.3 4.5-4.8 4.5-8 0-1.5-1-2.1-2.2-2.1-1.5 0-2.3 1-2.3 2.5v.3h-3.6c0-3.8 2.3-6.1 6-6.1 3 0 5.8 1.7 5.8 5.4 0 4.6-4.7 5.1-4.7 8.3v.6H-28z" mask="url(#b)" fill-rule="evenodd" clip-rule="evenodd"></path> </g> <g transform="translate(0 10.95)"> <defs> <filter filterUnits="userSpaceOnUse" x="6.1" y="-.9" width="10.8" height="19.9"> <feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix> </filter> </defs> <mask maskUnits="userSpaceOnUse" x="6.1" y="-.9" width="10.8" height="19.9"> <path class="st1" d="M6.1-.9h10.7v19.8H6.1z" fill-rule="evenodd" clip-rule="evenodd" filter="url(#c)"></path> </mask> <path d="M6.1-.9h3.1V9c1-1.3 2-1.9 3.5-1.9 1.3 0 2.5.5 3.3 1.4.7.8.9 1.6.9 3.2v7.2h-3.1v-6.3c0-2-.6-2.8-2.1-2.8-1.6 0-2.4 1-2.4 3.2v5.9H6.1V-.9z" mask="url(#d)" fill-rule="evenodd" clip-rule="evenodd"></path> </g> <path class="st5" d="M34.8 18.4l2.9 6.6 3.1-6.9h1.3l3.1 7 3-6.7h3.5l-5.8 11.7h-1.5l-3-7-3 7H37l-5.7-11.7zm67.7 0l3 6.6 3-6.9h1.4l3 7 3-6.7h3.5l-5.8 11.7h-1.4l-3-7-3 7h-1.4L99 18.4zm31.3 0h3.1v1.7c.8-1.4 1.8-2.1 3.3-2.1.5 0 .8.1 1.3.3l-.4 3c-.6-.3-.9-.4-1.5-.4-1.8 0-2.7 1.1-2.7 3.4v5.5h-3.1V18.4zm11.9-8.4v12.6l4.2-4.2h4.2l-5.2 5 5.7 6.5h-4.3l-4.2-5-.4.4v4.6h-3.1V10zm17.3 9.2l-1.5 1.9c-.7-.5-1.2-.8-1.9-.8s-1.2.4-1.2 1 .3.8 1.8 1.3c2.6 1 3.4 1.8 3.4 3.6 0 2.4-1.9 4.1-4.7 4.1-1.6 0-3.2-.7-4.3-1.9l1.7-2c.9.9 1.7 1.4 2.6 1.4.8 0 1.4-.5 1.4-1.2s-.3-.9-1.7-1.5c-2.6-1-3.3-1.6-3.3-3.4 0-2.2 1.7-3.7 4-3.7 1.5 0 2.6.3 3.7 1.2m-141 5c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.3 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1" fill-rule="evenodd" clip-rule="evenodd"></path> <path class="st5" d="M22 24.2c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.3 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1m103.7 0c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.2 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1m-58.9-5l-1.5 1.9c-.7-.5-1.2-.8-1.9-.8s-1.2.4-1.2 1 .3.8 1.8 1.3c2.6 1 3.4 1.8 3.4 3.6 0 2.4-1.9 4.1-4.7 4.1-1.6 0-3.2-.7-4.3-1.9l1.7-2c.9.9 1.7 1.4 2.6 1.4.8 0 1.4-.5 1.4-1.2s-.3-.9-1.7-1.5c-2.6-1-3.3-1.6-3.3-3.4 0-2.2 1.7-3.7 4-3.7 1.4 0 2.6.3 3.7 1.2m6.1 2v8.7h-3.1v-8.7h-1.2v-2.8h1.2v-3.9h3.1v3.9h2.2v2.8zm7-2.8v6.5c0 1.7.8 2.6 2.3 2.6 1.5 0 2.3-.9 2.3-2.6v-6.5h3v7c0 3.1-2 4.8-5.4 4.8-3.5 0-5.4-1.7-5.4-4.8v-7h3.2zm13.9 2.8v8.7h-3.1v-8.7H83v-2.8h1.2v-3.7c0-2 .4-3 1.5-3.9.8-.7 1.8-1.1 2.9-1.1.6 0 .9.1 1.7.4V13c-.7-.4-1-.4-1.4-.4-1 0-1.4.7-1.4 2.6v3.2h2.9v2.8h-3.1zm8.1 0v8.7h-3.1v-8.7h-1.2v-2.8h1.2v-3.7c0-2 .4-3 1.5-3.9.8-.7 1.8-1.1 2.9-1.1.6 0 .9.1 1.7.4V13c-.7-.4-1-.4-1.4-.4-1 0-1.4.7-1.4 2.6v3.2h2.9v2.8h-3.1z" fill-rule="evenodd" clip-rule="evenodd"></path> </svg> </a> <a class="pull-left h3 hidden-sm hidden-md hidden-lg" href="https://entertainment.howstuffworks.com/">Entertainment</a> </div> </div> <div class="col-sm-7 headerModule hidden-xs"> <div class="pull-right"> <ul class="list-inline pull-left social"> <li><a data-track-gtm="Random Content Icon" rel="nofollow" class="random-icon" href="//www.howstuffworks.com/random" title="Explore Random HowStuffWorks Content"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#random"></use></svg> </a></li> <li><a data-track-gtm="Social Follow" class="fb-icon" href="https://www.facebook.com/HowStuffWorks" target="_blank" title="HowStuffWorks on Facebook"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#facebook"></use></svg> </a></a></li> <li><a data-track-gtm="Social Follow" class="twitter-icon" href="https://twitter.com/howstuffworks" target="_blank" title="HowStuffWorks on Twitter"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#twitter"></use></svg> </a></a></li> <li class="hidden-sm"><a data-track-gtm="Social Follow" class="instagram-icon" href="https://www.instagram.com/howstuffworks/" target="_blank" title="HowStuffWorks on Instagram"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#instagram"></use></svg> </a></a></li> <li class="hidden-sm"><a data-track-gtm="Social Follow" class="youtube-icon" href="https://www.youtube.com/user/HowStuffWorks?sub_confirmation=1" target="_blank" title="HowStuffWorks on YouTube"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#youtube-play"></use></svg> </a></a></li> </ul> <div class="searchSection"> <div class="searchBar"> <form class="searchForm" action="//www.howstuffworks.com/search.php"> <span class="headerInput"> <input class="headerInputBox" type="text" name="terms" placeholder="Search"> <button type="submit" class="headerInputButton"> <svg viewBox="0 0 32 32" class="ic iconSearch" aria-hidden="true"><use xlink:href="#search"></use></svg> </button> </span> </form> </div> </div> </div> </div> <div class="col-xs-3 hidden-sm hidden-md hidden-lg no-gutter"> <button type="button" class="navbar-toggle masthead-toggle" data-recalc="false" data-toggle="offcanvas" data-target="#offcanvas" data-canvas="body"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a id="btn-search-nav" class="btn-search"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#search"></use></svg> </a> </div> </div> <div class="row hidden-xs header-bottom"> <div class="col-sm-12 no-gutter"> <nav class="collapse navbar-collapse" data-track-gtm="Navbar"> <ul class="nav navbar-nav nav-channel"> <li class="dropdown channel" data-track-gtm="Channel Dropdown"> <svg viewBox="0 0 32 32" class="ic pull-right icon-2x" aria-hidden="true"><use xlink:href="#chevron-down"></use></svg> <a href="#" class="dropdown-toggle" id="vertical-dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Entertainment</a> <ul class="dropdown-menu" aria-labelledby="vertical-dropdown" itemscope itemtype="http://www.schema.org/SiteNavigationElement"> <li itemprop="name"><a itemprop="url" href="https://health.howstuffworks.com/">Health</a></li> <li itemprop="name"><a itemprop="url" href="https://science.howstuffworks.com/">Science</a></li> <li itemprop="name"><a itemprop="url" href="https://home.howstuffworks.com/">Home &amp; Garden</a></li> <li itemprop="name"><a itemprop="url" href="https://auto.howstuffworks.com/">Auto</a></li> <li itemprop="name"><a itemprop="url" href="https://electronics.howstuffworks.com/tech">Tech</a></li> <li itemprop="name"><a itemprop="url" href="https://people.howstuffworks.com/culture">Culture</a></li> <li itemprop="name"><a itemprop="url" href="https://money.howstuffworks.com/">Money</a></li> <li itemprop="name"><a itemprop="url" href="https://lifestyle.howstuffworks.com/">Lifestyle</a></li> <li itemprop="name"><a itemprop="url" href="https://entertainment.howstuffworks.com/">Entertainment</a></li> <li itemprop="name"><a itemprop="url" href="https://adventure.howstuffworks.com/">Adventure</a></li> <li itemprop="name"><a itemprop="url" href="https://animals.howstuffworks.com/">Animals</a></li> <li itemprop="name"><a itemprop="url" href="http://www.stuffmedia.com/">Podcasts</a></li> <li itemprop="name"><a itemprop="url" href="https://www.howstuffworks.com/videos">Video</a></li> <li itemprop="name"><a itemprop="url" href="https://play.howstuffworks.com/">Quizzes</a></li> </ul> </li> <li data-nlen="162.81" class="first-subcat"><a href="https://entertainment.howstuffworks.com/leisure-channel.htm" data-track-gtm="Subcat">Leisure Channel</a></li> <li data-nlen="242.334" class=""><a href="https://entertainment.howstuffworks.com/movies-film-channel.htm" data-track-gtm="Subcat">Movies</a></li> <li data-nlen="321.858" class=""><a href="https://entertainment.howstuffworks.com/sports-channel.htm" data-track-gtm="Subcat">Sports</a></li> <li data-nlen="382.874" class=""><a href="https://entertainment.howstuffworks.com/arts" data-track-gtm="Subcat">Arts</a></li> <li data-nlen="425.382" class=""><a href="https://entertainment.howstuffworks.com/tv.htm" data-track-gtm="Subcat">TV</a></li> <li data-nlen="495.652" class=" visible-md-block visible-lg-block"><a href="https://entertainment.howstuffworks.com/music-technology-channel.htm" data-track-gtm="Subcat">Music</a></li> <li data-nlen="556.668" class=" visible-md-block visible-lg-block"><a href="https://entertainment.howstuffworks.com/toys-channel.htm" data-track-gtm="Subcat">Toys</a></li> </ul> </nav> </div> </div> </div> </div> <div class="searchSectionMobile hidden"> <div class="searchBar"> <form class="searchFormMobile" action="//www.howstuffworks.com/search.php"> <span class="headerInput"> <button class="headerInputButton" type="submit"> <svg viewBox="0 0 32 32" class="ic icon-white" aria-hidden="true"><use xlink:href="#search"></use></svg> </button> <input class="headerInputBox" type="text" name="terms" placeholder="Search"> </span> </form> </div> </div> </div> </div> </div> <script type="text/javascript"> $("#btn-search-nav").bind("click", function() { var pageSlideDown = '#page' $(this).toggleClass('reveal'); $(".searchSectionMobile").toggleClass('hidden'); $(pageSlideDown).toggleClass('slide'); }); </script> </div> </header> <div id="page"> <div class="container" data-track-gtm="Page"> <div id="ad-wrap-bannerTop"> <div id="ad-div-bannerTop" class="ad-tag "> <script> if (typeof googletag !== 'undefined' && HSW.utilities.isMobile() === false) { googletag.cmd.push(function() { googletag.display('ad-div-bannerTop'); }); } </script> </div> <script>if (createStickyLeaderboard) { createStickyLeaderboard(); }</script> </div> <div class="breadcrumb hidden-xs " data-track-gtm="Breadcrumbs"> <ol itemscope itemtype="https://schema.org/BreadcrumbList" class="list-unstyled list-inline"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://www.howstuffworks.com/"> <span itemprop="name">HowStuffWorks</span> </a> <meta itemprop="position" content="1" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/"> <span itemprop="name">Entertainment</span> </a> <meta itemprop="position" content="2" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/arts"> <span itemprop="name">Arts</span> </a> <meta itemprop="position" content="3" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/arts/artwork"> <span itemprop="name">Artwork</span> </a> <meta itemprop="position" content="4" /> </li> </ol> </div> <div class="row "> <div class="col-xs-12 editorial-title"> <h1>Artist Stephen Wiltshire Draws Entire Cities From Memory</h1> </div> <script> //twitter asynch window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; js.async = true; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function(f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); </script> <script> $(document).ready(function() { $('.instagram-post').each(function () { searchText = $(this).text(); matches = searchText.match(/(?:(?:http|https):\/\/)?(?:www.)?(?:instagram.com|instagr.am)\/[p]\/([A-Za-z0-9-_]*)\//g); if ( matches != null && searchText === matches[0] ) { $.ajax({ context: this, url: "https://api.instagram.com/oembed/?maxwidth=600&url="+matches[0], dataType: 'json', success: function(data) {$(this).html(data.html); $(this).addClass('mb-2 margin-bottom2').show();} }); } }); }); </script> <div id="fb-root"></div> <div class="col-xs-12 col-sm-8 title-sub text-uppercase"> <div class="media"> <div class="media-body"><div class="pull-left"> <span class="content-author byline-segment">by <a data-track-gtm="Byline" href="https://www.howstuffworks.com/about-michelle-konstantinovsky.htm">Michelle Konstantinovsky</a></span> <span class="content-date byline-segment">Aug 20, 2019</span> </div> <div class="share-wrap pull-left "> <div id="share-bar-top" data-track-gtm="Share Links : Upper" class="share-lite"></div> </div> <script id="share-html-top" type="text/template"> <ul class="list-inline"> <li><a target="_blank" class="share-twitter" data-track-gtm="Twitter" href="<% twitterURL %>" title="Share on Twitter"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#twitter"></use></svg> </a></li> <li><a target="_blank" class="share-facebook" data-track-gtm="Facebook" href="<% facebookURL %>" title="Share on Facebook"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#facebook"></use></svg> </a></li> <li class="hidden-sm hidden-xs"><a target="_blank" class="share-linkedin" data-track-gtm="LinkedIn" href="<% linkedInURL %>" title="Share on LinkedIn"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#linkedin"></use></svg> </a></li> <li class="hidden-sm hidden-xs"><a class="share-email" data-track-gtm="Email" href="<% emailURL %>" title="Share in Email"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#envelope"></use></svg> </a></li> </ul> </script> <script id="share-email-top" type="text/template"> Hi, I thought you would like this: <% url %>?utm_source=email&utm_medium=share&utm_campaign=hsw_share <% title %> </script> <script> HSW.share.init('top', 'https://entertainment.howstuffworks.com/arts/artwork/stephen-wiltshire.htm', 'Artist\x20Stephen\x20Wiltshire\x20Draws\x20Entire\x20Cities\x20From\x20Memory', '', { 'siteName' : 'HowStuffWorks', 'twitterVia' : 'howstuffworks' }); </script> </div> </div> </div> <div class="col-xs-12"> <hr /> </div> </div> <div class="row" id="column-wrapper"> <div id="editorial-well" class="col-sm-9 editorial-well" data-track-gtm="Body"> <div id="editorial-main"> <!-- google_ad_section_start(name=content) --> <div class="editorial-header"> </div> <article class="editorial-body infinite-container"> <div class="infinite-item" id="page0" data-slide="0"> <div class="full-width"> <div class="fragment-media " > <div class="media-hero-wrap"> <figure class=" progressive-load"> <picture style="padding-bottom: 56.25730994152%; background-image: url(https://resize.hswstatic.com/w_20/gif/stephen-wiltshire.jpg);"> <img class="progressive-img-thumbnail" src="https://resize.hswstatic.com/w_20/gif/stephen-wiltshire.jpg" alt="Stephen&#x20;Wiltshire" /> <img class="progressive-img-large" data-src="https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg" srcset="https://resize.hswstatic.com/w_320/h_180/gif/stephen-wiltshire.jpg 320w, https://resize.hswstatic.com/w_420/h_236/gif/stephen-wiltshire.jpg 420w, https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg 907w" sizes="(max-width: 320px) 320px, (max-width: 420px) 420px, 907px" alt="Stephen&#x20;Wiltshire" border="0" /><noscript> "<img src="https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg" width="907" alt="Stephen&#x20;Wiltshire" border="0">" </noscript> </picture> </figure> </div>" string(81252) "<div class="w-100 text-center p-4 padding-top1">ads disabled</div>'); }); } </script><script> /*! hsw-lite-frontend 2019-10-09 */ function prepareConfigForAC(a){function b(a){return a.replace(/[^\w\-\.\+]/gi,"")}var c=[{divId:"ad-div-bannerMiddle1",posName:"/bannermiddle1",code:a.slotName+"/bannermiddle1",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannermiddle1",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"540172482",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4865783",alias:"bannermiddle1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13636641",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"574417"}},{bidder:"ix",params:{siteId:"233507",size:[728,90]}},{bidder:"ix",params:{siteId:"233507",size:[970,90]}},{bidder:"ix",params:{siteId:"233507",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1002544",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerMiddle2",posName:"/bannermiddle2",code:a.slotName+"/bannermiddle2",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannermiddle2",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"540172483",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4865782",alias:"bannermiddle2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13636642",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"574418"}},{bidder:"ix",params:{siteId:"233509",size:[728,90]}},{bidder:"ix",params:{siteId:"233509",size:[970,90]}},{bidder:"ix",params:{siteId:"233509",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1002546",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-mobInline1",posName:"/mobinline1",code:a.slotName+"/mobinline1",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"mobinline1",mobile:!0,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882966",alias:"mobinline1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13761816",section:a.adUnit}},{bidder:"openx",params:{unit:"540216368",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"577104"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1021370"}},{bidder:"ix",params:{siteId:"290058",size:[300,250]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1855400391207619"}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_m_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-mobInline2",posName:"/mobinline2",code:a.slotName+"/mobinline2",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"mobinline2",mobile:!0,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882965",alias:"mobinline2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13761823",section:a.adUnit}},{bidder:"openx",params:{unit:"540216436",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"577105"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1021372"}},{bidder:"ix",params:{siteId:"290059",size:[300,250]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1855401471207511"}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_m_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerInline1",posName:"/bannerinline1",code:a.slotName+"/bannerinline1",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"bannerinline1",mobile:!1,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882061",alias:"bannerinline1",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745312",section:a.adUnit}},{bidder:"openx",params:{unit:"540214023",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576926"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1020312"}},{bidder:"ix",params:{siteId:"290051",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerInline2",posName:"/bannerinline2",code:a.slotName+"/bannerinline2",sizes:[[300,250]],lazy:!0,prebidConfig:{posName:"bannerinline2",mobile:!1,mediaTypes:{banner:{sizes:[[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882063",alias:"bannerinline2",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745313",section:a.adUnit}},{bidder:"openx",params:{unit:"540214024",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576927"}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"1020314"}},{bidder:"ix",params:{siteId:"290053",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_midart_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailSticky",posName:"/rectanglerailsticky",code:a.slotName+"/rectanglerailsticky",sizes:[[160,600],[300,600],[300,250]],lazy:!1,prebidConfig:{posName:"rectanglerailsticky",mobile:!1,mediaTypes:{banner:{sizes:[[160,600],[300,600],[300,250]]}},bids:[{bidder:"aol",params:{placement:"4882062",alias:"rectanglerailsticky",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"13745314",section:a.adUnit}},{bidder:"openx",params:{unit:"540214025",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"576928"}},{bidder:"ix",params:{siteId:"290055",size:[160,600]}},{bidder:"ix",params:{siteId:"290055",size:[300,600]}},{bidder:"ix",params:{siteId:"290055",size:[300,250]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerTop",posName:"/bannertop",code:a.slotName+"/bannertop",sizes:[[728,90],[970,90],[970,250]],lazy:!1,prebidConfig:{posName:"bannertop",mobile:!1,mediaTypes:{banner:{sizes:[[728,90],[970,90],[970,250]]}},bids:[{bidder:"openx",params:{unit:"538304556",delDomain:"hsw-d.openx.net"}},{bidder:"aol",params:{placement:"4122151",alias:"bannertop",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748140",section:a.adUnit}},{bidder:"sovrn",params:{tagid:"338090"}},{bidder:"ix",params:{siteId:"182249",size:[728,90]}},{bidder:"ix",params:{siteId:"182249",size:[970,90]}},{bidder:"ix",params:{siteId:"182249",size:[970,250]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428740",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_leaderboard_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailTop",posName:"/rectanglerailtop",code:a.slotName+"/rectanglerailtop",sizes:[[300,600],[300,250],[160,600]],lazy:!1,prebidConfig:{posName:"rectanglerailtop",mobile:!1,mediaTypes:{banner:{sizes:[[300,600],[300,250],[160,600]]}},bids:[{bidder:"aol",params:{placement:"4122152",alias:"rectanglerailtop",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748582",section:a.adUnit}},{bidder:"openx",params:{unit:"538304557",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338092"}},{bidder:"ix",params:{siteId:"182250",size:[300,600]}},{bidder:"ix",params:{siteId:"182250",size:[300,250]}},{bidder:"ix",params:{siteId:"182250",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428742",sizes:[15]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailMiddle",posName:"/rectanglerailmiddle",code:a.slotName+"/rectanglerailmiddle",sizes:[[300,600],[300,250],[160,600]],lazy:!1,prebidConfig:{posName:"rectanglerailmiddle",mobile:!1,mediaTypes:{banner:{sizes:[[300,600],[300,250],[160,600]]}},bids:[{bidder:"aol",params:{placement:"4122147",alias:"rectanglerailmiddle",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748638",section:a.adUnit}},{bidder:"openx",params:{unit:"538304558",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338094"}},{bidder:"ix",params:{siteId:"182251",size:[300,600]}},{bidder:"ix",params:{siteId:"182251",size:[300,250]}},{bidder:"ix",params:{siteId:"182251",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428744",sizes:[10]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-rectangleRailBottom",posName:"/rectanglerailbottom",code:a.slotName+"/rectanglerailbottom",sizes:[[160,600],[300,600],[300,250]],lazy:!1,prebidConfig:{posName:"rectanglerailbottom",mobile:!1,mediaTypes:{banner:{sizes:[[160,600],[300,600],[300,250]]}},bids:[{bidder:"aol",params:{placement:"4122149",alias:"rectanglerailbottom",network:"10026.1"}},{bidder:"appnexus",params:{placementId:"6748674",section:a.adUnit}},{bidder:"openx",params:{unit:"538304559",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338102"}},{bidder:"ix",params:{siteId:"182252",size:[300,600]}},{bidder:"ix",params:{siteId:"182252",size:[300,250]}},{bidder:"ix",params:{siteId:"182252",size:[160,600]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428746",sizes:[9]}},{bidder:"triplelift",params:{inventoryCode:"hsw_article_d_rrail_rec_header"}}]},amazonConfig:{}},{divId:"ad-div-bannerBottom",posName:"/bannerbottom",code:a.slotName+"/bannerbottom",sizes:[[728,90]],lazy:!0,prebidConfig:{posName:"bannerbottom",mobile:!1,mediaTypes:{banner:{sizes:[[728,90]]}},bids:[{bidder:"aol",params:{placement:"4122154",network:"10026.1",alias:"bannerbottom"}},{bidder:"appnexus",params:{placementId:"6748710",section:a.adUnit}},{bidder:"openx",params:{unit:"538304564",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338104"}},{bidder:"ix",params:{siteId:"182253",size:[728,90]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"90676",zoneId:"428748",sizes:[2]}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_728x90_hdx"}}]}},{divId:"ad-div-mobrectangle",posName:"/mobrectangle",code:a.slotName+"/mobrectangle",sizes:[[300,250],[320,50],[300,50],[320,100]],lazy:!1,prebidConfig:{posName:"mobrectangle",mobile:!0,mediaTypes:{banner:{sizes:[[300,250],[320,50],[300,50],[320,100]]}},bids:[{bidder:"aol",params:{placement:"4122161",network:"10026.1",alias:"mobrectangle"}},{bidder:"appnexus",params:{placementId:"6748779",section:a.adUnit}},{bidder:"openx",params:{unit:"538304565",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338107"}},{bidder:"ix",params:{siteId:"182254",size:[300,250]}},{bidder:"ix",params:{siteId:"182254",size:[320,50]}},{bidder:"ix",params:{siteId:"182254",size:[300,50]}},{bidder:"ix",params:{siteId:"182254",size:[320,100]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428734",sizes:[15]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1476769395737389"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]},amazonConfig:{}},{divId:"ad-div-mobRectangleInline",posName:"/mobrectangleinline",code:a.slotName+"/mobrectangleinline",sizes:[[300,250],[320,50],[300,50],[320,100]],lazy:!1,prebidConfig:{posName:"mobrectangleinline",mobile:!0,mediaTypes:{banner:{sizes:[[300,250],[320,50],[300,50],[320,100]]}},bids:[{bidder:"aol",params:{placement:"4122158",network:"10026.1",alias:"mobrectangleinline"}},{bidder:"appnexus",params:{placementId:"6748844",section:a.adUnit}},{bidder:"openx",params:{unit:"538304566",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338109"}},{bidder:"ix",params:{siteId:"182255",size:[300,250]}},{bidder:"ix",params:{siteId:"182255",size:[320,50]}},{bidder:"ix",params:{siteId:"182255",size:[300,50]}},{bidder:"ix",params:{siteId:"182255",size:[320,100]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428736",sizes:[15]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1476769632404032"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]}},{divId:"ad-div-mobadhesion",posName:"/mobadhesion",code:a.slotName+"/mobadhesion",sizes:[[320,50],[300,50]],lazy:!1,prebidConfig:{posName:"mobadhesion",mobile:!0,mediaTypes:{banner:{sizes:[[320,50],[300,50]]}},bids:[{bidder:"aol",params:{placement:"4122157",network:"10026.1",alias:"mobadhesion"}},{bidder:"appnexus",params:{placementId:"6748750",section:a.adUnit}},{bidder:"openx",params:{unit:"538304581",delDomain:"hsw-d.openx.net"}},{bidder:"sovrn",params:{tagid:"338106"}},{bidder:"ix",params:{siteId:"182256",size:[320,50]}},{bidder:"ix",params:{siteId:"182256",size:[300,50]}},{bidder:"rubicon",params:{accountId:"15008",siteId:"91004",zoneId:"428732",sizes:[43]}},{bidder:"audienceNetwork",params:{placementId:"899104866837181_1750932548321071"}},{bidder:"triplelift",params:{inventoryCode:"howstuffworks_320x50_hdx"}}]},amazonConfig:{}}];void 0===a.allow_adx&&(a.allow_adx="true");var d=["true","false"];a.targetingParams={s1:a.s1||"",s2:a.s2||"",s3:a.s3||"",s4:a.s4||"",mkcpgn:a.mkcpgn||"organic",pid:a.pid||"",type:a.type||"",kw:a.kw||"",seq:1,url:HSW.utilities.trimUrl(location.href),hswpid:a.hswpid||"",srch_tag:a.srch_tag,rf:a.rf,hsw:a.hswtrkr,allow_adx:-1===d.indexOf(a.allow_adx)?"true":a.allow_adx,exp:GACtest||""};for(var e in a.targetingParams)null!==a.targetingParams[e]&&void 0!==a.targetingParams[e]||delete a.targetingParams[e];var f=pageMetricsData.template.toLowerCase();"quiz"!==f&&"photogallery"!==f||a.isMobile||$.each(c,function(a,b){void 0===b.bids||"/rectanglerailbottom"!==b.posName&&"/rectanglerailmiddle"!==b.posName||(c[a].prebidConfig.bids=c[a].prebidConfig.bids.filter(function(a){return"openx"!==a.bidder}))}),HSW.utilities.getViewportWidth()>1299&&$.each(c,function(a,b){"/bannerinline1"!==b.posName&&"/bannerinline2"!==b.posName||(c[a].sizes=[[728,90]],c[a].prebidConfig.bids=c[a].prebidConfig.bids.map(function(a){return"ix"===a.bidder&&(a.params.size=[728,90]),a}))}),"HomePage"===pageMetricsData.template&&HSW.utilities.getViewportWidth()>1139&&$.each(c,function(a,b){"/bannerinline1"!==b.posName&&"/bannerinline2"!==b.posName||(c[a].sizes=[[728,90]],c[a].prebidConfig.bids=c[a].prebidConfig.bids.map(function(a){return"ix"===a.bidder&&(a.params.size=[728,90]),a}))}),!0===a.no_afc&&"www"!=pageMetricsData.subdomain&&c.push({divId:"ad-div-rectangleInArticle",posName:"/rectangleinarticle",code:a.slotName+"/rectangleinarticle",sizes:[[300,250]],prebidConfig:{mobile:!1,bids:[]},amazonConfig:{}});var g=new Date;g.setTime(g.getTime()+18e5);var h=Cookies.get("mkcpgn"),i=HSW.utilities.getQueryVar("mkcpgn");a.mkcpgn=h||i,a.mkcpgn&&(void 0===h&&Cookies.set("mkcpgn",b(a.mkcpgn),{expires:g}),a.targetingParams.mkcpgn=a.mkcpgn);var j=Cookies.get("hswtrkr"),k=HSW.utilities.getQueryVar("hsw");a.hswtrkr=j||k,a.hswtrkr&&void 0===j&&Cookies.set("hswtrkr",b(k),{expires:g});var l=1;if("quiz"===f){var m="quiz-"+pageMetricsData.contentid,n=Cookies.getJSON(m);void 0!==n&&"number"==typeof n.questions&&(l=2*(n.questions+1)-1)}if("embed"===f){var m="embed-"+pageMetricsData.contentid,n=Cookies.getJSON(m);void 0!==n&&"number"==typeof n.adLoad&&(l=n.adLoad+1)}a.targetingParams.seq=l.toString();for(var o=[],p=[],q=c.length,r=0;r<q;r++)if(a.ads)for(var s=0,t=a.ads.length;s<t;s++)"HomePage"!==pageMetricsData.template&&"ad-div-bannerBottom"===c[r].divId||(c[r].loaded=!1,a.ads[s].toLowerCase()===c[r].divId.toLowerCase()&&HSW.utilities.isMobile()===c[r].prebidConfig.mobile&&(o.push(c[r]),p.push(c[r].divId)));else o.push(c[r]);return a.adUnits=o,a.ads=p,a} dfpSettings = prepareConfigForAC(dfpSettings); var leaderboardHeight= 0; const PREBID_TIMEOUT = 1500, APS_TIMEOUT = 1500, REFRESH_TIMER = GACtest === 'test15' ? 30000 : 60000, TIMED_REFRESH = (pageMetricsData.template !== 'Top10'), DEBUG_MODE = !(HSW.utilities.getQueryVar('pbjs_debug') === false), PREBID_URL = '//cdn-assets.hswstatic.com/lite/2218/js/vendor/prebid_1.40.0.js', seqVal = {}, adUnitTimers = {}; function initAdsCoordinator (fireNow) { var launchAC = async function () { var AC = s1.AdsCoordinator; omjs({event:'AdRequestStart', product:'hsw', payload:{environment: HSW.env, country: userData.country, userInEU: userData.userInEU}}); //Setup attaching extra key+value pairs AC.onEvent(AC.EVENTS.GPT_INIT, () => { Object.keys(dfpSettings.targetingParams).forEach(key => AC.setTargeting(key, dfpSettings.targetingParams[key].toString()) ); }); AC.onEvent(AC.EVENTS.GPT_SLOT_RENDER_ENDED, (e) => { var slotId = e.eventData.slot.getSlotElementId(), adHeight = e.eventData.size[1]; if (DEBUG_MODE) { console.log('### rendered ad divId = ', slotId); } //Disable any stickiness if ad returned is greater than 90px tall if (slotId === 'ad-div-bannerTop') { leaderboardHeight = adHeight; if (adHeight > 90) { $('#ad-wrap-bannerTop').removeClass('leaderboard-sticky'); var stickyElements = document.querySelectorAll('.leaderboard-sticky'); Stickyfill.remove(stickyElements); } } //Flag the ad units that have rendered at least once (and eligible for timed refreshes) dfpSettings.adUnits.map(adUnit => { if (adUnit.divId === slotId) { adUnit.loaded = true; } }); }); AC.onEvent(AC.EVENTS.GPT_IMPRESSION_VIEWABLE, (e) => { var slotId = e.eventData.slot.getSlotElementId(); if (DEBUG_MODE) { console.log('### slot with viewable impression = ', slotId); } }); if (TIMED_REFRESH && GACtest === 'test15') { AC.onEvent(AC.EVENTS.GPT_IMPRESSION_VIEWABLE, onViewable); } //Init AC with Prebid + Amazon await AC.init({ autoUpdateDom:true, isRefreshDisabledUntilViewable: TIMED_REFRESH, isRefreshQueueEnabled: TIMED_REFRESH, waitAfterViewableTimeout: REFRESH_TIMER, maxAdRequestFailTimeout: (REFRESH_TIMER * 10), lazyLoadConfig: { root: null, rootMargin: '100px', // trigger when 100px from rootMargin threshold: 0.5 }, bidFrameworkConfig: { prebid: { scriptSrc: PREBID_URL, prebidConfig: { bidderTimeout: PREBID_TIMEOUT, cookieSyncDelay: 100, debug: DEBUG_MODE, priceGranularity: { 'buckets' : [ { 'precision' : 2, 'min' : 0, 'max' : 20, 'increment' : 0.01 }, { 'precision' : 2, 'min' : 20, 'max' : 200, 'increment' : 1.00 } ] }, userSync: { iframeEnabled: true } } }, aps: { apsConfig: { bidTimeout: APS_TIMEOUT, isDebug: !(HSW.utilities.getQueryVar('amzn_debug_mode') === false), pubID: '3082' } } }, adManagerConfig:{ url: 'https://www.googletagservices.com/tag/js/gpt.js', gptConfig: { setForceSafeFrame: false } } }) await AC.addAdUnits(dfpSettings.adUnits) //Add slot-level targeting to include 'pos' dfpSettings.adUnits.forEach(adUnit => { AC.setSlotTargeting(adUnit.code, 'pos', adUnit.prebidConfig.posName); }); AC.enableAds() //Only fetch the ads that are not lazy loaded AC.refreshAds(dfpSettings.adUnits.map(adUnit => { if (!adUnit.lazy) { return adUnit.code; } })).then(acStore => { if (DEBUG_MODE) { setTimeout(debugAdsCoordinator, 4000); } if (TIMED_REFRESH && GACtest !== 'test15') { refreshAdTimer(); } }); }; if (fireNow) { launchAC(); } else { $(document).ready(function () { //Factor score from BDS when data is available if (window.bdsData) { if (window.bdsData.traffic_score < 50) { launchAC(); } else { omjs({event:'BotDetectedBlockAds', product:'hsw', payload:{environment: HSW.env, reason: window.bdsData.reason_code}}); } } //Just launch AC without BDS data else { omjs({event:'BotDetectionQueryDelayed', product:'hsw', payload:{environment: HSW.env, country: userData.country, userInEU: userData.userInEU}}); launchAC(); } }); } } function initLazyLoadAds () { $(document).ready(function () { dfpSettings.adUnits.map(adUnit => { if (!adUnit.lazy) { return; } inView('#' + adUnit.divId).once('enter', function () { s1.AdsCoordinator.refreshAds([adUnit.code]); }); }); }); } function createStickyLeaderboard () { //Nothing to enable on mobile, or if ad has already loaded and is too tall. if (HSW.utilities.isMobile() || leaderboardHeight > 90) { return; } //Make sticky $('#ad-wrap-bannerTop').addClass('leaderboard-sticky'); var stickyElements = document.querySelectorAll('.leaderboard-sticky'); Stickyfill.add(stickyElements); var stickyActive = true; //Unstick by pixel depth var unstickAtDepth = 900; $(document).scroll(function() { if (stickyActive) { var currDepth = $(document).scrollTop(); if (currDepth > unstickAtDepth) { $('#ad-wrap-bannerTop').removeClass('leaderboard-sticky'); Stickyfill.remove(stickyElements); stickyActive = false; } } }); } function refreshAdTimer () { if (!window.pageAdTimer) { window.pageAdTimer = setInterval(function() { dfpSettings.targetingParams.seq++; var loadedAds = dfpSettings.adUnits.map(adUnit => { if (adUnit.loaded) { return adUnit.code; } }); if (DEBUG_MODE) { console.log('### loadedAds eligible for TIMED REFRESH = ', loadedAds); } s1.AdsCoordinator.refreshAds(loadedAds, { seq : dfpSettings.targetingParams.seq.toString() }); }, REFRESH_TIMER); } } onViewable = event => { try { const code = event.eventData.slot.getAdUnitPath() || ''; const timerSeconds = REFRESH_TIMER/1000; seqVal[code] = seqVal[code] ? seqVal[code] + 1 : 2; //Assume we didn't log the first ad load if (DEBUG_MODE) { console.log(`### start ${timerSeconds}s timer to call lazyRefreshAds([${code}])`); } if (adUnitTimers[code]) { clearTimeout(adUnitTimers[code]); } //Sanity check (kill refreshes after page has been open for approx 30 min) if (seqVal[code] > 60) { return; } adUnitTimers[code] = setTimeout(() => { if (DEBUG_MODE) { console.log(`### end ${timerSeconds}s timer, now calling lazyRefreshAds([${code}]) with seq = ${seqVal[code]};`); } s1.AdsCoordinator.lazyRefreshAds({ codes: [code], targetingParams: { seq: seqVal[code] } }); }, REFRESH_TIMER); } catch (e) { console.log('onViewable error', e); } }; function debugAdsCoordinator () { //Get info about all bids and whether any won var responses = pbjs.getBidResponses(); var winners = pbjs.getAllWinningBids(); var output = []; Object.keys(responses).forEach(function(adUnitCode) { var response = responses[adUnitCode]; response.bids.forEach(function(bid) { output.push({ adunit: adUnitCode, adId: bid.adId, bidder: bid.bidder, time: bid.timeToRespond, cpm: bid.cpm, msg: bid.statusMessage, rendered: !!winners.find(function(winner) { return winner.adId==bid.adId; }) }); }); }); if (output.length) { console.log('INFO: PREBID_TIMEOUT = ', PREBID_TIMEOUT); console.log('INFO: Raw bid responses object = ', responses); console.log('INFO: Table showing all bid requests made and responses below:'); if (console.table) { console.table(output); } else { for (var j = 0; j < output.length; j++) { console.log(output[j]); } } } else { console.warn('NO prebid responses'); } //Get highest bid from Prebid bidders (whether they won or not) for each position var bids = pbjs.getHighestCpmBids(); var output = []; for (var i = 0; i < bids.length; i++) { var b = bids[i]; output.push({ 'adunit': b.adUnitCode, 'adId': b.adId, 'bidder': b.bidder, 'time': b.timeToRespond, 'cpm': b.cpm }); } if (output.length) { console.log('INFO: Table showing all highest bids per position below:'); if (console.table) { console.table(output); } else { for (var j = 0; j < output.length; j++) { console.log(output[j]); } } } else { console.warn('No prebid winners'); } } //Handle delayed loading since library loads async var acLib = document.querySelector('#aclib'), isWaitingForAcLib = false, hasInitializedAcLib = false; var waitForAcLib = function () { if (hasInitializedAcLib) { return false; } if (typeof s1 !== 'undefined' && typeof s1.AdsCoordinator !== 'undefined') { hasInitializedAcLib = true; initAdsCoordinator(); //Setup scroll detection to trigger refresh of lazy-load ad units initLazyLoadAds(); return true; } else if (!isWaitingForAcLib && acLib) { isWaitingForAcLib = true; acLib.addEventListener('load', waitForAcLib); } } //Make sure user is not in EU //EU users are handled by cmp_init if (!userData.userInEU) { waitForAcLib(); } </script> <link rel="stylesheet" href="//cdn-assets.hswstatic.com/lite/2218/css/editorial.min.css"><style> </style> <script type="text/javascript"> window._taboola = window._taboola || []; _taboola.push({ article:'auto' }); function initTaboolaWidget () { !function (e, f, u, i) { if (!document.getElementById(i)){ e.async = 1; e.src = u; e.id = i; f.parentNode.insertBefore(e, f); } }(document.createElement('script'), document.getElementsByTagName('script')[0], '//cdn.taboola.com/libtrc/howstuffworks-howstuffworks/loader.js', 'tb_loader_script'); if(window.performance && typeof window.performance.mark == 'function') {window.performance.mark('tbl_ic');} } </script> </head> <body class="hsw-page cid-944441 interior editorial-content editorial article-template page-0 news news-post"><svg xmlns="http://www.w3.org/2000/svg" style="display: none;" aria-hidden="true"><symbol id="arrow-down" viewBox="0 0 32 32"><g><path d="M14.496 5.975l-.001 14.287-6.366-6.367L6 16.021l10.003 10.004L26 16.029 23.871 13.9l-6.366 6.368V5.977z"/></g></symbol> <symbol id="arrow-left" viewBox="0 0 32 32"><g><path d="M26.025 14.496l-14.286-.001 6.366-6.366L15.979 6 5.975 16.003 15.971 26l2.129-2.129-6.367-6.366h14.29z"/></g></symbol> <symbol id="arrow-right" viewBox="0 0 32 32"><g><path d="M5.975 17.504l14.287.001-6.367 6.366L16.021 26l10.004-10.003L16.029 6l-2.128 2.129 6.367 6.366H5.977z"/></g></symbol> <symbol id="arrow-up" viewBox="0 0 32 32"><g><path d="M17.504 26.025l.001-14.287 6.366 6.367L26 15.979 15.997 5.975 6 15.971 8.129 18.1l6.366-6.368v14.291z"/></g></symbol> <symbol id="chevron-down" viewBox="0 0 32 32"><g><path d="M16.003 18.626l7.081-7.081L25 13.46l-8.997 8.998-9.003-9 1.917-1.916z"/> </g></symbol> <symbol id="chevron-left" viewBox="0 0 32 32"><g><path d="M14.19 16.005l7.869 7.868-2.129 2.129-9.996-9.997L19.937 6.002l2.127 2.129z"/></g></symbol> <symbol id="chevron-right" viewBox="0 0 32 32"><g><path d="M18.629 15.997l-7.083-7.081L13.462 7l8.997 8.997L13.457 25l-1.916-1.916z"/></g></symbol> <symbol id="chevron-up" viewBox="0 0 32 32"><g><path d="M15.997 13.374l-7.081 7.081L7 18.54l8.997-8.998 9.003 9-1.916 1.916z"/></g></symbol> <symbol id="clear" viewBox="0 0 32 32"><g><path d="M7.004 23.087l7.08-7.081-7.07-7.071L8.929 7.02l7.067 7.069L23.084 7l1.912 1.913-7.089 7.093 7.075 7.077-1.912 1.913-7.074-7.073L8.917 25z"/></g></symbol> <symbol id="hamburger" viewBox="0 0 32 32"><g><path d="M6.001 7.128L6 10.438l19.998-.005L26 7.124zM6.001 21.566L6 24.876l19.998-.006.002-3.308zM6.001 14.341L6 17.65l19.998-.004.002-3.309z"/></g></symbol> <symbol id="pause" viewBox="0 0 32 32"><g><path d="M18.432 7.5h4.547v17h-4.547zM9.022 7.5h4.545v17H9.022z"/> </g></symbol> <symbol id="play" viewBox="0 0 32 32"><g><path d="M10.968 23V9l12.762 7-12.762 7z"/></g></symbol> <symbol id="refresh" viewBox="0 0 32 32"><g><path d="M27.1 14.313V5.396L24.158 8.34c-2.33-2.325-5.033-3.503-8.11-3.503C9.902 4.837 4.901 9.847 4.899 16c.001 6.152 5.003 11.158 11.15 11.16 4.276 0 9.369-2.227 10.836-8.478l.028-.122h-3.23l-.022.068c-1.078 3.242-4.138 5.421-7.613 5.421a8 8 0 0 1-5.691-2.359A7.993 7.993 0 0 1 8 16.001c0-4.438 3.611-8.049 8.05-8.049 2.069 0 3.638.58 5.924 2.573l-3.792 3.789H27.1z"/></g></symbol> <symbol id="search" viewBox="0 0 32 32"><g> <path d="M27 24.57l-5.647-5.648a8.895 8.895 0 0 0 1.522-4.984C22.875 9.01 18.867 5 13.938 5 9.01 5 5 9.01 5 13.938c0 4.929 4.01 8.938 8.938 8.938a8.887 8.887 0 0 0 4.984-1.522L24.568 27 27 24.57zm-13.062-4.445a6.194 6.194 0 0 1-6.188-6.188 6.195 6.195 0 0 1 6.188-6.188 6.195 6.195 0 0 1 6.188 6.188 6.195 6.195 0 0 1-6.188 6.188z"/></g></symbol> <symbol id="stop" viewBox="0 0 32 32"><g><path d="M8 8h16v16H8z"/> </g></symbol> <symbol id="random" viewBox="0 0 20 20"><path d="M15.093 6.694h0.92v2.862l3.987-4.024-3.988-4.025v2.387h-0.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.080 4.049-5.386 4.049h-2.092v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.080-4.048 5.386-4.048zM5.41 8.458c0.158-0.203 0.316-0.412 0.477-0.623 0.39-0.514 0.804-1.055 1.252-1.596-1.322-1.234-2.915-2.144-5.046-2.144h-2.093v2.799h2.093c1.327 0 2.362 0.623 3.317 1.564zM16.012 13.294h-0.92c-1.407 0-2.487-0.701-3.491-1.738-0.1 0.131-0.201 0.264-0.303 0.397-0.441 0.58-0.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h0.92v2.398l3.989-4.025-3.988-4.025v2.851z"></path></symbol> <symbol id="home" viewBox="0 0 32 32"><title>home</title><path d="M32 19l-6-6v-9h-4v5l-6-6-16 16v1h4v10h10v-6h4v6h10v-10h4z"></path></symbol> <symbol id="linkedin" viewBox="0 0 32 32"><path d="M12 12h5.535v2.837h0.079c0.77-1.381 2.655-2.837 5.464-2.837 5.842 0 6.922 3.637 6.922 8.367v9.633h-5.769v-8.54c0-2.037-0.042-4.657-3.001-4.657-3.005 0-3.463 2.218-3.463 4.509v8.688h-5.767v-18z"></path><path d="M2 12h6v18h-6v-18z"></path><path d="M8 7c0 1.657-1.343 3-3 3s-3-1.343-3-3c0-1.657 1.343-3 3-3s3 1.343 3 3z"></path></symbol> <symbol id="rss" viewBox="0 0 32 32"><path d="M4.259 23.467c-2.35 0-4.259 1.917-4.259 4.252 0 2.349 1.909 4.244 4.259 4.244 2.358 0 4.265-1.895 4.265-4.244-0-2.336-1.907-4.252-4.265-4.252zM0.005 10.873v6.133c3.993 0 7.749 1.562 10.577 4.391 2.825 2.822 4.384 6.595 4.384 10.603h6.16c-0-11.651-9.478-21.127-21.121-21.127zM0.012 0v6.136c14.243 0 25.836 11.604 25.836 25.864h6.152c0-17.64-14.352-32-31.988-32z"></path></symbol> <symbol id="double-chevron-right" viewBox="0 0 24 24"><path d="M13.707 17.707l5-5c0.391-0.391 0.391-1.024 0-1.414l-5-5c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4.293 4.293-4.293 4.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0zM6.707 17.707l5-5c0.391-0.391 0.391-1.024 0-1.414l-5-5c-0.391-0.391-1.024-0.391-1.414 0s-0.391 1.024 0 1.414l4.293 4.293-4.293 4.293c-0.391 0.391-0.391 1.024 0 1.414s1.024 0.391 1.414 0z"></path></symbol> <symbol id="double-chevron-left" viewBox="0 0 24 24"><title>chevrons-left</title><path d="M11.707 16.293l-4.293-4.293 4.293-4.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5 5c-0.391 0.391-0.391 1.024 0 1.414l5 5c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414zM18.707 16.293l-4.293-4.293 4.293-4.293c0.391-0.391 0.391-1.024 0-1.414s-1.024-0.391-1.414 0l-5 5c-0.391 0.391-0.391 1.024 0 1.414l5 5c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414z"></path></symbol> <symbol id="envelope" viewBox="0 0 32 32"><title>email</title><path d="M29 4h-26c-1.65 0-3 1.35-3 3v20c0 1.65 1.35 3 3 3h26c1.65 0 3-1.35 3-3v-20c0-1.65-1.35-3-3-3zM12.461 17.199l-8.461 6.59v-15.676l8.461 9.086zM5.512 8h20.976l-10.488 7.875-10.488-7.875zM12.79 17.553l3.21 3.447 3.21-3.447 6.58 8.447h-19.579l6.58-8.447zM19.539 17.199l8.461-9.086v15.676l-8.461-6.59z"></path></symbol> <symbol id="spinner" viewBox="0 0 32 32"><title>spinner8</title><path d="M16 32c-4.274 0-8.292-1.664-11.314-4.686s-4.686-7.040-4.686-11.314c0-3.026 0.849-5.973 2.456-8.522 1.563-2.478 3.771-4.48 6.386-5.791l1.344 2.682c-2.126 1.065-3.922 2.693-5.192 4.708-1.305 2.069-1.994 4.462-1.994 6.922 0 7.168 5.832 13 13 13s13-5.832 13-13c0-2.459-0.69-4.853-1.994-6.922-1.271-2.015-3.066-3.643-5.192-4.708l1.344-2.682c2.615 1.31 4.824 3.313 6.386 5.791 1.607 2.549 2.456 5.495 2.456 8.522 0 4.274-1.664 8.292-4.686 11.314s-7.040 4.686-11.314 4.686z"></path></symbol> <symbol id="new-tab" viewBox="0 0 32 32"><path d="M6 2v24h24v-24h-24zM28 24h-20v-20h20v20zM4 28v-21l-2-2v25h25l-2-2h-21z"></path><path d="M11 8l5 5-6 6 3 3 6-6 5 5v-13z"></path></symbol> <symbol id="facebook" viewBox="0 0 32 32"><title>facebook</title><path d="M19 6h5v-6h-5c-3.86 0-7 3.14-7 7v3h-4v6h4v16h6v-16h5l1-6h-6v-3c0-0.542 0.458-1 1-1z"></path></symbol> <symbol id="facebook-square" viewBox="0 0 32 32"><title>facebook2</title><path d="M29 0h-26c-1.65 0-3 1.35-3 3v26c0 1.65 1.35 3 3 3h13v-14h-4v-4h4v-2c0-3.306 2.694-6 6-6h4v4h-4c-1.1 0-2 0.9-2 2v2h6l-1 4h-5v14h9c1.65 0 3-1.35 3-3v-26c0-1.65-1.35-3-3-3z"></path></symbol> <symbol id="instagram" viewBox="0 0 32 32"><title>instagram</title><path d="M16 2.881c4.275 0 4.781 0.019 6.462 0.094 1.563 0.069 2.406 0.331 2.969 0.55 0.744 0.288 1.281 0.638 1.837 1.194 0.563 0.563 0.906 1.094 1.2 1.838 0.219 0.563 0.481 1.412 0.55 2.969 0.075 1.688 0.094 2.194 0.094 6.463s-0.019 4.781-0.094 6.463c-0.069 1.563-0.331 2.406-0.55 2.969-0.288 0.744-0.637 1.281-1.194 1.837-0.563 0.563-1.094 0.906-1.837 1.2-0.563 0.219-1.413 0.481-2.969 0.55-1.688 0.075-2.194 0.094-6.463 0.094s-4.781-0.019-6.463-0.094c-1.563-0.069-2.406-0.331-2.969-0.55-0.744-0.288-1.281-0.637-1.838-1.194-0.563-0.563-0.906-1.094-1.2-1.837-0.219-0.563-0.481-1.413-0.55-2.969-0.075-1.688-0.094-2.194-0.094-6.463s0.019-4.781 0.094-6.463c0.069-1.563 0.331-2.406 0.55-2.969 0.288-0.744 0.638-1.281 1.194-1.838 0.563-0.563 1.094-0.906 1.838-1.2 0.563-0.219 1.412-0.481 2.969-0.55 1.681-0.075 2.188-0.094 6.463-0.094zM16 0c-4.344 0-4.887 0.019-6.594 0.094-1.7 0.075-2.869 0.35-3.881 0.744-1.056 0.412-1.95 0.956-2.837 1.85-0.894 0.888-1.438 1.781-1.85 2.831-0.394 1.019-0.669 2.181-0.744 3.881-0.075 1.713-0.094 2.256-0.094 6.6s0.019 4.887 0.094 6.594c0.075 1.7 0.35 2.869 0.744 3.881 0.413 1.056 0.956 1.95 1.85 2.837 0.887 0.887 1.781 1.438 2.831 1.844 1.019 0.394 2.181 0.669 3.881 0.744 1.706 0.075 2.25 0.094 6.594 0.094s4.888-0.019 6.594-0.094c1.7-0.075 2.869-0.35 3.881-0.744 1.050-0.406 1.944-0.956 2.831-1.844s1.438-1.781 1.844-2.831c0.394-1.019 0.669-2.181 0.744-3.881 0.075-1.706 0.094-2.25 0.094-6.594s-0.019-4.887-0.094-6.594c-0.075-1.7-0.35-2.869-0.744-3.881-0.394-1.063-0.938-1.956-1.831-2.844-0.887-0.887-1.781-1.438-2.831-1.844-1.019-0.394-2.181-0.669-3.881-0.744-1.712-0.081-2.256-0.1-6.6-0.1v0z"></path><path d="M16 7.781c-4.537 0-8.219 3.681-8.219 8.219s3.681 8.219 8.219 8.219 8.219-3.681 8.219-8.219c0-4.537-3.681-8.219-8.219-8.219zM16 21.331c-2.944 0-5.331-2.387-5.331-5.331s2.387-5.331 5.331-5.331c2.944 0 5.331 2.387 5.331 5.331s-2.387 5.331-5.331 5.331z"></path><path d="M26.462 7.456c0 1.060-0.859 1.919-1.919 1.919s-1.919-0.859-1.919-1.919c0-1.060 0.859-1.919 1.919-1.919s1.919 0.859 1.919 1.919z"></path></symbol> <symbol id="twitter" viewBox="0 0 32 32"><title>twitter</title><path d="M32 7.075c-1.175 0.525-2.444 0.875-3.769 1.031 1.356-0.813 2.394-2.1 2.887-3.631-1.269 0.75-2.675 1.3-4.169 1.594-1.2-1.275-2.906-2.069-4.794-2.069-3.625 0-6.563 2.938-6.563 6.563 0 0.512 0.056 1.012 0.169 1.494-5.456-0.275-10.294-2.888-13.531-6.862-0.563 0.969-0.887 2.1-0.887 3.3 0 2.275 1.156 4.287 2.919 5.463-1.075-0.031-2.087-0.331-2.975-0.819 0 0.025 0 0.056 0 0.081 0 3.181 2.263 5.838 5.269 6.437-0.55 0.15-1.131 0.231-1.731 0.231-0.425 0-0.831-0.044-1.237-0.119 0.838 2.606 3.263 4.506 6.131 4.563-2.25 1.762-5.075 2.813-8.156 2.813-0.531 0-1.050-0.031-1.569-0.094 2.913 1.869 6.362 2.95 10.069 2.95 12.075 0 18.681-10.006 18.681-18.681 0-0.287-0.006-0.569-0.019-0.85 1.281-0.919 2.394-2.075 3.275-3.394z"></path></symbol> <symbol id="youtube-play" viewBox="0 0 32 32"><title>youtube</title><path d="M31.681 9.6c0 0-0.313-2.206-1.275-3.175-1.219-1.275-2.581-1.281-3.206-1.356-4.475-0.325-11.194-0.325-11.194-0.325h-0.012c0 0-6.719 0-11.194 0.325-0.625 0.075-1.987 0.081-3.206 1.356-0.963 0.969-1.269 3.175-1.269 3.175s-0.319 2.588-0.319 5.181v2.425c0 2.587 0.319 5.181 0.319 5.181s0.313 2.206 1.269 3.175c1.219 1.275 2.819 1.231 3.531 1.369 2.563 0.244 10.881 0.319 10.881 0.319s6.725-0.012 11.2-0.331c0.625-0.075 1.988-0.081 3.206-1.356 0.962-0.969 1.275-3.175 1.275-3.175s0.319-2.587 0.319-5.181v-2.425c-0.006-2.588-0.325-5.181-0.325-5.181zM12.694 20.15v-8.994l8.644 4.513-8.644 4.481z"></path></symbol> </svg> <script type="text/javascript" src="https://s.flocdn.com/cmp/loader.js"></script> <script type="text/javascript"> //Make sure we have a valid reference to AFC/AFS container object adsbygoogle=window.adsbygoogle||[]; (function () { var cmpInitialized = false, forceCMP = (HSW.utilities.hashArgs['cmp'] === 'on'); /** * Wrapper for log output to silence messages when logging is turned off * * @param string m * @param mixed v * @return void */ function cmpLog (m, v) { if (forceCMP) { if (v) { console.log('CMP:' + m, v); } else { console.log('CMP:' + m); } } } /** * Wrapper for logging data to different services * * @param string e * @return void */ function cmpLogEvent (e) { if (typeof glogger !== 'undefined' && typeof gloggerApp !== 'undefined') { glogger.increment(gloggerApp + '.cmp', { 'country': userData.country, 'event' : e.replace(/-/g, "_") }); } } /** * Event handler for when user submits consent data via CMP dialogue * * @param obj result * @return void */ function cmpSubmit (result) { cmpLog("onSubmit", result); cmpLogEvent('submit-consent'); //Safe now to call Prebid/DFP, but must activate Consent Mgmt features cmpProcessConsent(true); } /** * Detected new EU user that must be shown the Consent Tool via CMP * * @param obj result * @return void */ function cmpShowTool (result) { cmpLog('showConsentTool; errorMsg = ', result.errorMsg); //Show consent tool for this user cmp('showConsentTool'); cmpLogEvent('show-consent-tool'); //User has saved consent cmp('addEventListener', 'onSubmit', cmpSubmit); //User has chaned their consent cmp('addEventListener', 'onConsentChanged', function() { //@todo }); } /** * Process state of user and their implicit/explicit level of consent * * @param bool activateConsentMgmt * @returns void */ function cmpProcessConsent(activateConsentMgmt) { //When Consent Management is not needed, allow everything (not EU user) if (!activateConsentMgmt) { return cmpFullResume('consent-not-required', false); } //User opted in to everything, so we kick everything off with full permissions var fullOptIn = (document.cookie.indexOf("gdpr_opt_in=1") >= 0); if (fullOptIn) { return cmpFullResume('full-consent-granted', false); } cmpActivateVendors(activateConsentMgmt); } /** * Load / trigger resuming everything on the page * * @param string r * @param bool activateConsentMgmt * @return void */ function cmpFullResume(r, activateConsentMgmt) { cmpLog('full resume'); //Log timing till this var cmpTimeToFullResume = performance.now() - hswTime0; gloggerQueue.push(function () { var countryLabel = ''; if (userData.country === 'US') { countryLabel = '_us'; } if (userData.country === 'GB') { countryLabel = '_uk'; } glogger.timing(gloggerApp + '.cmp_full_resume_time' + countryLabel, cmpTimeToFullResume); }); //Resume Prebid + DFP if (typeof initAdsCoordinator !== 'undefined'){ if (typeof s1 !== 'undefined' && typeof s1.AdsCoordinator != 'undefined') { initAdsCoordinator(true); } else { waitForAcLib(); } } //Load and resume AdSense if (pageMetricsData.template.toLowerCase() === 'search') { $.getScript("https://www.google.com/adsense/search/ads.js"); if (typeof pageOptions !== 'undefined') { _googCsa('ads', pageOptions, adblock1, adblock2); } } else { $.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'); adsbygoogle.pauseAdRequests = 0; } //Load and activate GTM + GA pageMetricsData.firePixels = true; deferLoadGTM(); //Load any custom fonts from Google if (typeof loadCustomFonts === 'function') { loadCustomFonts(); } //Load all Taboola products if (typeof initTaboolaWidget === 'function') { initTaboolaWidget(); } if (typeof loadBodyWidget === 'function') { loadBodyWidget(); } if (typeof loadRailWidget === 'function') { loadRailWidget(); } if (typeof loadTaboolaNewsroom === 'function') { loadTaboolaNewsroom(); } //Log activity cmpLogEvent(r); } /** * Determine which components on the page should be resumed and whether * they need special configuration based on user's level of consent. * * @param bool activateConsentMgmt * @returns void */ function cmpActivateVendors(activateConsentMgmt) { //@todo - we cannot yet determine how to legally load GTM/GA with partial consent //Handle partial consents where user may have rejected specific purposes/vendors __cmp('getVendorConsents', [42, 77, 164, 10, 32, 13], function (result) { cmpLog('getVendorConsents result = ', result); //See if user turned off Personalization //under publisher consent; in CMP, it is a top-level category/purpose if (result.purposeConsents[2] === false) { cmpLog('getVendorConsents personalization turned OFF'); //Turn off personalized-ads on main GPT (DFP) ad request pageMetricsData.nonPersonalized = true; if (typeof dfpSettings !== 'undefined') { dfpSettings.gptNonPersonalized = true; } //Turn off personalized-ads on AFC/AFS and resume loading adsbygoogle.requestNonPersonalizedAds = 1; } //Resume AFC/AFS load and Prebid/DFP requests if (pageMetricsData.template.toLowerCase() === 'search') { $.getScript("https://www.google.com/adsense/search/ads.js"); pageOptions.personalizedAds = false; _googCsa('ads', pageOptions, adblock1, adblock2); } else { $.getScript('//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'); adsbygoogle.pauseAdRequests = 0; } if (result.purposeConsents[1] === false && result.purposeConsents[2] === false && result.purposeConsents[3] === false && result.purposeConsents[4] === false && result.purposeConsents[5] === false) { cmpLogEvent('no-consent-granted'); } else { cmpLogEvent('partial-consent-granted'); } //@todo - remove below when we have green-light to move to Prebid 1.x !!!!!!!!!!! //Resume loading ad request if (typeof HSW.ads === 'object') { //For now, pull out all bidder config on ad units while CMP is updated to //provide the necessary data to Prebid's Consent Management module $.each(dfpSettings.adUnits, function (k, v) { if ( typeof v.bids !== 'undefined' ) { dfpSettings.adUnits[k].bids = []; } }); HSW.ads.resume(activateConsentMgmt); } return; //Taboola products (widget/newsroom and GTM conversion pixel) if (result.vendorConsents[42] === true) { if (typeof initTaboolaWidget === 'function') { initTaboolaWidget(); } if (typeof loadBodyWidget === 'function') { loadBodyWidget(); } if (typeof loadRailWidget === 'function') { loadRailWidget(); } if (typeof loadTaboolaNewsroom === 'function') { loadTaboolaNewsroom(); } } //comScore ping if (result.vendorConsents[77] === true) { //@todo } //Outbrain conversion pixel if (result.vendorConsents[164] === true) { //@todo } //Index Exchange tracking pixel if (result.vendorConsents[10] === true) { //@todo } //AppNexus tracking pixel if (result.vendorConsents[32] === true) { //@todo } //Sovrn tracking pixel if (result.vendorConsents[13] === true) { //@todo } }); } //Expose this to other libraries within the HSW.utilities namespace HSW.utilities.cmpInit = function () { if (cmpInitialized) { return; } cmpInitialized = true; if (!userData.checkConsent) { cmpLog("No CMP needed; proceeding with pageload"); //Go ahead and call Prebid/DFP; no need to use Consent Mgmt return cmpProcessConsent(false); } var cmpConfig = { scriptSrc: 'https://s.flocdn.com/cmp/s1.cmp.js', gdprApplies: true, logging: forceCMP }; //Init S1 CMP cmp('init', cmpConfig, (result) => { cmpLogEvent('init'); cmpLog('init: result = ', result); //Consent required if (result.consentRequired) { if (result.errorMsg) { //Consent not yet acquired; launch tool cmpShowTool(result); } else { //Full consent acquired if (document.cookie.indexOf("gdpr_opt_in=1") >= 0) { cmpLog("init: all consent achieved", result); cmpProcessConsent(true); } //Partial consent acquired else { cmpLog("init: only some consent achieved", result); cmpProcessConsent(true); } } } //CMP says consent not required (unclear on when this would be active) else { cmpLog('init: checkConsent was true, but CMP returns consentRequired = false; result = ', result); //Go ahead and call Prebid/DFP; no need to use Consent Mgmt cmpProcessConsent(false); } }); } //If geo is known before we loaded this CMP library, let's go ahead and fire it up if (typeof userData.country !== 'undefined') { HSW.utilities.cmpInit(); } })(); </script> <nav id="offcanvas" class="navmenu navmenu-fixed-right navmenu-site offcanvas" data-track-gtm="Mobile Menu"> <div id="offcanvas-navigation" class="link-menu"> <span><a href="" class="exit-offcanvas">X</a></span> <ul> <li class="unit"><a class="navLink" href="//adventure.howstuffworks.com">Adventure</a></li> <li class="unit"><a class="navLink" href="//animals.howstuffworks.com/">Animals</a></li> <li class="unit"><a class="navLink" href="//auto.howstuffworks.com">Auto</a></li> <li class="unit"><a class="navLink" href="//people.howstuffworks.com/culture">Culture</a></li> <li class="unit"><a class="navLink" href="//entertainment.howstuffworks.com">Entertainment</a></li> <li class="unit"><a class="navLink" href="//health.howstuffworks.com">Health</a></li> <li class="unit"><a class="navLink" href="//home.howstuffworks.com">Home &amp; Garden</a></li> <li class="unit"><a class="navLink" href="//lifestyle.howstuffworks.com">Lifestyle</a></li> <li class="unit"><a class="navLink" href="//money.howstuffworks.com">Money</a></li> <li class="unit"><a class="navLink" href="//science.howstuffworks.com">Science</a></li> <li class="unit"><a class="navLink" href="//electronics.howstuffworks.com/tech">Tech</a></li> <li class="unit"><a class="navLink" href="//www.howstuffworks.com/videos">Video</a></li> <li class="unit"><a class="navLink" href="//www.stuffmedia.com">Podcasts</a></li> <li class="unit"><a class="navLink" href="https://play.howstuffworks.com">Quizzes</a></li> </ul> </div> </nav> <script> $(document).ready(function (e) { $( ".exit-offcanvas" ).click(function(e) { $('#offcanvas').offcanvas('hide'); e.preventDefault(); }); }); </script> <div class="ad-dock"> <div id="ad-wrap-mobadhesion"> <div id="ad-div-mobadhesion" class="ad-tag text-center hidden-sm hidden-md hidden-lg hidden-xl "> <script> if (typeof googletag !== 'undefined' && HSW.utilities.isMobile() === true) { googletag.cmd.push(function() { googletag.display('ad-div-mobadhesion'); }); } </script> </div> </div></div> <div id="wrap"> <header class="hsw" data-track-gtm="Header"> <div id="hsw-header"> <div class="header-wrapper"> <div class="container"> <div class="row"> <div class="expanded-logo"> <div class="hswLogo" data-track-gtm="Logo Graphic"> <a href="//www.howstuffworks.com/"> <svg viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="question-mark"> <polygon id="Rectangle-2" fill="#027DB8" points="0 0 100 0 100 100 0 100"></polygon> <path d="M49.889,74.9212148 C63.949,74.9212148 73.676,83.9940346 73.676,97.1197079 C73.676,98.1038578 73.614,99.062953 73.506,100 L73.506,100 L61.289,100 C61.508,99.1080515 61.638,98.1810264 61.638,97.2219312 C61.638,90.6545847 56.338,85.4432003 49.791,85.4432003 C43.336,85.4432003 38.043,90.7487905 38.043,97.2219312 C38.043,98.1780198 38.175,99.1050449 38.401,100 L38.401,100 L26.157,100 C26.056,99.0960252 26,98.1700023 26,97.2219312 C26,83.9940346 35.727,74.9212148 49.889,74.9212148 Z M52.8844,16 C63.9674,16 74.6514,22.0943132 74.6514,35.6509279 C74.6514,52.5468374 57.2054,54.307684 57.2054,66.0002267 L57.2054,68.0637345 L43.6744,68.0637345 L43.6744,65.0220899 C43.6744,49.3017485 60.5354,47.5348887 60.5354,35.7491425 C60.5354,30.4395435 56.7144,27.9911951 52.5004,27.9911951 C46.8144,27.9911951 44.0724,31.6211247 44.0724,37.1241462 L44.0724,38.3027208 L30.5414,38.3027208 C30.5414,24.4484559 39.1674,16 52.8844,16 Z" id="Combined-Shape" fill="#FEFEFE"></path> </g> </g> </svg> </a> </div> <div class="header-content"> <div class="row header-top"> <div class="col-sm-5 col-xs-9"> <div class="site-name-wrap" data-track-gtm="Site Name"> <a class="pull-left hidden-xs" href="//www.howstuffworks.com"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 40" enable-background="new 0 0 240 40"><g transform="translate(151.877 .338)"><defs><filter filterUnits="userSpaceOnUse" x="-31.5" y="1.5" width="11.8" height="14.3"><feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix></filter> </defs> <mask maskUnits="userSpaceOnUse" x="-31.5" y="1.5" width="11.8" height="14.3"> <path class="st1" d="M-31.5 1.5h11.8v14.3h-11.8z" fill-rule="evenodd" clip-rule="evenodd" filter="url(#a)"></path> </mask> <path d="M-28 15.8V15c0-4.3 4.5-4.8 4.5-8 0-1.5-1-2.1-2.2-2.1-1.5 0-2.3 1-2.3 2.5v.3h-3.6c0-3.8 2.3-6.1 6-6.1 3 0 5.8 1.7 5.8 5.4 0 4.6-4.7 5.1-4.7 8.3v.6H-28z" mask="url(#b)" fill-rule="evenodd" clip-rule="evenodd"></path> </g> <g transform="translate(0 10.95)"> <defs> <filter filterUnits="userSpaceOnUse" x="6.1" y="-.9" width="10.8" height="19.9"> <feColorMatrix values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"></feColorMatrix> </filter> </defs> <mask maskUnits="userSpaceOnUse" x="6.1" y="-.9" width="10.8" height="19.9"> <path class="st1" d="M6.1-.9h10.7v19.8H6.1z" fill-rule="evenodd" clip-rule="evenodd" filter="url(#c)"></path> </mask> <path d="M6.1-.9h3.1V9c1-1.3 2-1.9 3.5-1.9 1.3 0 2.5.5 3.3 1.4.7.8.9 1.6.9 3.2v7.2h-3.1v-6.3c0-2-.6-2.8-2.1-2.8-1.6 0-2.4 1-2.4 3.2v5.9H6.1V-.9z" mask="url(#d)" fill-rule="evenodd" clip-rule="evenodd"></path> </g> <path class="st5" d="M34.8 18.4l2.9 6.6 3.1-6.9h1.3l3.1 7 3-6.7h3.5l-5.8 11.7h-1.5l-3-7-3 7H37l-5.7-11.7zm67.7 0l3 6.6 3-6.9h1.4l3 7 3-6.7h3.5l-5.8 11.7h-1.4l-3-7-3 7h-1.4L99 18.4zm31.3 0h3.1v1.7c.8-1.4 1.8-2.1 3.3-2.1.5 0 .8.1 1.3.3l-.4 3c-.6-.3-.9-.4-1.5-.4-1.8 0-2.7 1.1-2.7 3.4v5.5h-3.1V18.4zm11.9-8.4v12.6l4.2-4.2h4.2l-5.2 5 5.7 6.5h-4.3l-4.2-5-.4.4v4.6h-3.1V10zm17.3 9.2l-1.5 1.9c-.7-.5-1.2-.8-1.9-.8s-1.2.4-1.2 1 .3.8 1.8 1.3c2.6 1 3.4 1.8 3.4 3.6 0 2.4-1.9 4.1-4.7 4.1-1.6 0-3.2-.7-4.3-1.9l1.7-2c.9.9 1.7 1.4 2.6 1.4.8 0 1.4-.5 1.4-1.2s-.3-.9-1.7-1.5c-2.6-1-3.3-1.6-3.3-3.4 0-2.2 1.7-3.7 4-3.7 1.5 0 2.6.3 3.7 1.2m-141 5c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.3 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1" fill-rule="evenodd" clip-rule="evenodd"></path> <path class="st5" d="M22 24.2c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.3 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1m103.7 0c0 1.7 1.4 3.2 3.1 3.2 1.8 0 3.2-1.4 3.2-3.2 0-1.8-1.4-3.2-3.2-3.2-1.7-.1-3.1 1.4-3.1 3.2m-3.2 0c0-3.6 2.6-6.1 6.4-6.1 3.8 0 6.4 2.5 6.4 6.1 0 3.6-2.6 6.1-6.4 6.1-3.8-.1-6.4-2.5-6.4-6.1m-58.9-5l-1.5 1.9c-.7-.5-1.2-.8-1.9-.8s-1.2.4-1.2 1 .3.8 1.8 1.3c2.6 1 3.4 1.8 3.4 3.6 0 2.4-1.9 4.1-4.7 4.1-1.6 0-3.2-.7-4.3-1.9l1.7-2c.9.9 1.7 1.4 2.6 1.4.8 0 1.4-.5 1.4-1.2s-.3-.9-1.7-1.5c-2.6-1-3.3-1.6-3.3-3.4 0-2.2 1.7-3.7 4-3.7 1.4 0 2.6.3 3.7 1.2m6.1 2v8.7h-3.1v-8.7h-1.2v-2.8h1.2v-3.9h3.1v3.9h2.2v2.8zm7-2.8v6.5c0 1.7.8 2.6 2.3 2.6 1.5 0 2.3-.9 2.3-2.6v-6.5h3v7c0 3.1-2 4.8-5.4 4.8-3.5 0-5.4-1.7-5.4-4.8v-7h3.2zm13.9 2.8v8.7h-3.1v-8.7H83v-2.8h1.2v-3.7c0-2 .4-3 1.5-3.9.8-.7 1.8-1.1 2.9-1.1.6 0 .9.1 1.7.4V13c-.7-.4-1-.4-1.4-.4-1 0-1.4.7-1.4 2.6v3.2h2.9v2.8h-3.1zm8.1 0v8.7h-3.1v-8.7h-1.2v-2.8h1.2v-3.7c0-2 .4-3 1.5-3.9.8-.7 1.8-1.1 2.9-1.1.6 0 .9.1 1.7.4V13c-.7-.4-1-.4-1.4-.4-1 0-1.4.7-1.4 2.6v3.2h2.9v2.8h-3.1z" fill-rule="evenodd" clip-rule="evenodd"></path> </svg> </a> <a class="pull-left h3 hidden-sm hidden-md hidden-lg" href="https://entertainment.howstuffworks.com/">Entertainment</a> </div> </div> <div class="col-sm-7 headerModule hidden-xs"> <div class="pull-right"> <ul class="list-inline pull-left social"> <li><a data-track-gtm="Random Content Icon" rel="nofollow" class="random-icon" href="//www.howstuffworks.com/random" title="Explore Random HowStuffWorks Content"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#random"></use></svg> </a></li> <li><a data-track-gtm="Social Follow" class="fb-icon" href="https://www.facebook.com/HowStuffWorks" target="_blank" title="HowStuffWorks on Facebook"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#facebook"></use></svg> </a></a></li> <li><a data-track-gtm="Social Follow" class="twitter-icon" href="https://twitter.com/howstuffworks" target="_blank" title="HowStuffWorks on Twitter"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#twitter"></use></svg> </a></a></li> <li class="hidden-sm"><a data-track-gtm="Social Follow" class="instagram-icon" href="https://www.instagram.com/howstuffworks/" target="_blank" title="HowStuffWorks on Instagram"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#instagram"></use></svg> </a></a></li> <li class="hidden-sm"><a data-track-gtm="Social Follow" class="youtube-icon" href="https://www.youtube.com/user/HowStuffWorks?sub_confirmation=1" target="_blank" title="HowStuffWorks on YouTube"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#youtube-play"></use></svg> </a></a></li> </ul> <div class="searchSection"> <div class="searchBar"> <form class="searchForm" action="//www.howstuffworks.com/search.php"> <span class="headerInput"> <input class="headerInputBox" type="text" name="terms" placeholder="Search"> <button type="submit" class="headerInputButton"> <svg viewBox="0 0 32 32" class="ic iconSearch" aria-hidden="true"><use xlink:href="#search"></use></svg> </button> </span> </form> </div> </div> </div> </div> <div class="col-xs-3 hidden-sm hidden-md hidden-lg no-gutter"> <button type="button" class="navbar-toggle masthead-toggle" data-recalc="false" data-toggle="offcanvas" data-target="#offcanvas" data-canvas="body"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a id="btn-search-nav" class="btn-search"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#search"></use></svg> </a> </div> </div> <div class="row hidden-xs header-bottom"> <div class="col-sm-12 no-gutter"> <nav class="collapse navbar-collapse" data-track-gtm="Navbar"> <ul class="nav navbar-nav nav-channel"> <li class="dropdown channel" data-track-gtm="Channel Dropdown"> <svg viewBox="0 0 32 32" class="ic pull-right icon-2x" aria-hidden="true"><use xlink:href="#chevron-down"></use></svg> <a href="#" class="dropdown-toggle" id="vertical-dropdown" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Entertainment</a> <ul class="dropdown-menu" aria-labelledby="vertical-dropdown" itemscope itemtype="http://www.schema.org/SiteNavigationElement"> <li itemprop="name"><a itemprop="url" href="https://health.howstuffworks.com/">Health</a></li> <li itemprop="name"><a itemprop="url" href="https://science.howstuffworks.com/">Science</a></li> <li itemprop="name"><a itemprop="url" href="https://home.howstuffworks.com/">Home &amp; Garden</a></li> <li itemprop="name"><a itemprop="url" href="https://auto.howstuffworks.com/">Auto</a></li> <li itemprop="name"><a itemprop="url" href="https://electronics.howstuffworks.com/tech">Tech</a></li> <li itemprop="name"><a itemprop="url" href="https://people.howstuffworks.com/culture">Culture</a></li> <li itemprop="name"><a itemprop="url" href="https://money.howstuffworks.com/">Money</a></li> <li itemprop="name"><a itemprop="url" href="https://lifestyle.howstuffworks.com/">Lifestyle</a></li> <li itemprop="name"><a itemprop="url" href="https://entertainment.howstuffworks.com/">Entertainment</a></li> <li itemprop="name"><a itemprop="url" href="https://adventure.howstuffworks.com/">Adventure</a></li> <li itemprop="name"><a itemprop="url" href="https://animals.howstuffworks.com/">Animals</a></li> <li itemprop="name"><a itemprop="url" href="http://www.stuffmedia.com/">Podcasts</a></li> <li itemprop="name"><a itemprop="url" href="https://www.howstuffworks.com/videos">Video</a></li> <li itemprop="name"><a itemprop="url" href="https://play.howstuffworks.com/">Quizzes</a></li> </ul> </li> <li data-nlen="162.81" class="first-subcat"><a href="https://entertainment.howstuffworks.com/leisure-channel.htm" data-track-gtm="Subcat">Leisure Channel</a></li> <li data-nlen="242.334" class=""><a href="https://entertainment.howstuffworks.com/movies-film-channel.htm" data-track-gtm="Subcat">Movies</a></li> <li data-nlen="321.858" class=""><a href="https://entertainment.howstuffworks.com/sports-channel.htm" data-track-gtm="Subcat">Sports</a></li> <li data-nlen="382.874" class=""><a href="https://entertainment.howstuffworks.com/arts" data-track-gtm="Subcat">Arts</a></li> <li data-nlen="425.382" class=""><a href="https://entertainment.howstuffworks.com/tv.htm" data-track-gtm="Subcat">TV</a></li> <li data-nlen="495.652" class=" visible-md-block visible-lg-block"><a href="https://entertainment.howstuffworks.com/music-technology-channel.htm" data-track-gtm="Subcat">Music</a></li> <li data-nlen="556.668" class=" visible-md-block visible-lg-block"><a href="https://entertainment.howstuffworks.com/toys-channel.htm" data-track-gtm="Subcat">Toys</a></li> </ul> </nav> </div> </div> </div> </div> <div class="searchSectionMobile hidden"> <div class="searchBar"> <form class="searchFormMobile" action="//www.howstuffworks.com/search.php"> <span class="headerInput"> <button class="headerInputButton" type="submit"> <svg viewBox="0 0 32 32" class="ic icon-white" aria-hidden="true"><use xlink:href="#search"></use></svg> </button> <input class="headerInputBox" type="text" name="terms" placeholder="Search"> </span> </form> </div> </div> </div> </div> </div> <script type="text/javascript"> $("#btn-search-nav").bind("click", function() { var pageSlideDown = '#page' $(this).toggleClass('reveal'); $(".searchSectionMobile").toggleClass('hidden'); $(pageSlideDown).toggleClass('slide'); }); </script> </div> </header> <div id="page"> <div class="container" data-track-gtm="Page"> <div id="ad-wrap-bannerTop"> <div id="ad-div-bannerTop" class="ad-tag "> <script> if (typeof googletag !== 'undefined' && HSW.utilities.isMobile() === false) { googletag.cmd.push(function() { googletag.display('ad-div-bannerTop'); }); } </script> </div> <script>if (createStickyLeaderboard) { createStickyLeaderboard(); }</script> </div> <div class="breadcrumb hidden-xs " data-track-gtm="Breadcrumbs"> <ol itemscope itemtype="https://schema.org/BreadcrumbList" class="list-unstyled list-inline"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://www.howstuffworks.com/"> <span itemprop="name">HowStuffWorks</span> </a> <meta itemprop="position" content="1" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/"> <span itemprop="name">Entertainment</span> </a> <meta itemprop="position" content="2" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/arts"> <span itemprop="name">Arts</span> </a> <meta itemprop="position" content="3" /> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a itemprop="item" href="https://entertainment.howstuffworks.com/arts/artwork"> <span itemprop="name">Artwork</span> </a> <meta itemprop="position" content="4" /> </li> </ol> </div> <div class="row "> <div class="col-xs-12 editorial-title"> <h1>Artist Stephen Wiltshire Draws Entire Cities From Memory</h1> </div> <script> //twitter asynch window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; js.async = true; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function(f) { t._e.push(f); }; return t; }(document, "script", "twitter-wjs")); </script> <script> $(document).ready(function() { $('.instagram-post').each(function () { searchText = $(this).text(); matches = searchText.match(/(?:(?:http|https):\/\/)?(?:www.)?(?:instagram.com|instagr.am)\/[p]\/([A-Za-z0-9-_]*)\//g); if ( matches != null && searchText === matches[0] ) { $.ajax({ context: this, url: "https://api.instagram.com/oembed/?maxwidth=600&url="+matches[0], dataType: 'json', success: function(data) {$(this).html(data.html); $(this).addClass('mb-2 margin-bottom2').show();} }); } }); }); </script> <div id="fb-root"></div> <div class="col-xs-12 col-sm-8 title-sub text-uppercase"> <div class="media"> <div class="media-body"><div class="pull-left"> <span class="content-author byline-segment">by <a data-track-gtm="Byline" href="https://www.howstuffworks.com/about-michelle-konstantinovsky.htm">Michelle Konstantinovsky</a></span> <span class="content-date byline-segment">Aug 20, 2019</span> </div> <div class="share-wrap pull-left "> <div id="share-bar-top" data-track-gtm="Share Links : Upper" class="share-lite"></div> </div> <script id="share-html-top" type="text/template"> <ul class="list-inline"> <li><a target="_blank" class="share-twitter" data-track-gtm="Twitter" href="<% twitterURL %>" title="Share on Twitter"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#twitter"></use></svg> </a></li> <li><a target="_blank" class="share-facebook" data-track-gtm="Facebook" href="<% facebookURL %>" title="Share on Facebook"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#facebook"></use></svg> </a></li> <li class="hidden-sm hidden-xs"><a target="_blank" class="share-linkedin" data-track-gtm="LinkedIn" href="<% linkedInURL %>" title="Share on LinkedIn"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#linkedin"></use></svg> </a></li> <li class="hidden-sm hidden-xs"><a class="share-email" data-track-gtm="Email" href="<% emailURL %>" title="Share in Email"> <svg viewBox="0 0 32 32" class="ic " aria-hidden="true"><use xlink:href="#envelope"></use></svg> </a></li> </ul> </script> <script id="share-email-top" type="text/template"> Hi, I thought you would like this: <% url %>?utm_source=email&utm_medium=share&utm_campaign=hsw_share <% title %> </script> <script> HSW.share.init('top', 'https://entertainment.howstuffworks.com/arts/artwork/stephen-wiltshire.htm', 'Artist\x20Stephen\x20Wiltshire\x20Draws\x20Entire\x20Cities\x20From\x20Memory', '', { 'siteName' : 'HowStuffWorks', 'twitterVia' : 'howstuffworks' }); </script> </div> </div> </div> <div class="col-xs-12"> <hr /> </div> </div> <div class="row" id="column-wrapper"> <div id="editorial-well" class="col-sm-9 editorial-well" data-track-gtm="Body"> <div id="editorial-main"> <!-- google_ad_section_start(name=content) --> <div class="editorial-header"> </div> <article class="editorial-body infinite-container"> <div class="infinite-item" id="page0" data-slide="0"> <div class="full-width"> <div class="fragment-media " > <div class="media-hero-wrap"> <figure class=" progressive-load"> <picture style="padding-bottom: 56.25730994152%; background-image: url(https://resize.hswstatic.com/w_20/gif/stephen-wiltshire.jpg);"> <img class="progressive-img-thumbnail" src="https://resize.hswstatic.com/w_20/gif/stephen-wiltshire.jpg" alt="Stephen&#x20;Wiltshire" /> <img class="progressive-img-large" data-src="https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg" srcset="https://resize.hswstatic.com/w_320/h_180/gif/stephen-wiltshire.jpg 320w, https://resize.hswstatic.com/w_420/h_236/gif/stephen-wiltshire.jpg 420w, https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg 907w" sizes="(max-width: 320px) 320px, (max-width: 420px) 420px, 907px" alt="Stephen&#x20;Wiltshire" border="0" /><noscript> "<img src="https://resize.hswstatic.com/w_907/gif/stephen-wiltshire.jpg" width="907" alt="Stephen&#x20;Wiltshire" border="0">" </noscript> </picture> </figure> </div>"