logo
Already a member? Login here

Movie Blog´s archives ↓

April 2021: New Release Movies

JavaScript seems to be disabled in your browser.
For the best experience on our site, be sure to turn on Javascript in your browser.

IMDb: Upcoming Releases for United States

List of Bollywood films of 2021

The highest-grossing Bollywood films released in 2021, by worldwide box office gross revenue, are as follows.

New Marvel movie releases: What’s coming out in 2021 and …

The Marvel Cinematic Universe did not end with Avengers: Endgame, but it did take a big break.

Marvel’s grand plans extend far into the future, and the novel coronavirus pandemic has forced Disney to shift its plans. While some release dates are locked, loaded, and ready to go, others are but whispers in the wind, and others have shifted significantly due to global disasters. Notably, the current phase of the MCU will be the first to integrate its television properties fully into greater scheme of things — or rather, the first to cross over into Disney Plus’ exclusive TV shows. And for the first time, Marvel will release a feature film on Disney Plus simultaneously with its release in theaters.

With a new gamut of release dates — and some new titles and first looks — the MCU machine keeps on churning. From a long, long, long-awaited Black Widow solo film to Kamala Khan’s first MCU appearance on Disney Plus, here’s every planned future Marvel Cinematic Universe movie and Disney Plus show.


Loki: June 9

Everyone’s favorite MCU bad boy is back in a Disney Plus original. But it won’t be the reformed Loki who tragically perished in the first moments of Avengers: Infinity War. Instead, it’s the version of Loki from the alternate 2012, who escaped with the tesseract, and has come under the thumb of the Time Variance Authority, the extra-dimensional timeline-protecting bureaucracy.

Tom Hiddleston returns to the role, where it looks like he’ll be visiting different eras of real history, Marvel movie history, and Marvel comics history.

Black Widow: July 9

Natasha Romanoff returns one more time with a stand-alone film. Black Widow takes place between the events of Captain America: Civil War and Avengers: Infinity War, and finds Natasha tying up loose ends in Budapest. There, she encounters Yelena Belova (Florence Pugh), another recruit from the Black Widow program and a sister-figure, and Red Guardian (David Harbour), basically the Russian equivalent of Captain America. Rachel Weisz co-stars as Melina, another spy in the Black Widow program. The movie was recently removed from Disney’s release schedule due to coronavirus concerns, given a new fall release date, causing a shuffling of releases all down Marvel’s movie line, and then delayed again until 2021, causing another game of musical chairs. Disney recently bumped it for (hopefully) a final time to a simultaneous theatrical and Disney Plus release.

Shang-Chi and the Legend of the Ten Rings: Sept. 3

Marvel’s first Asian-American lead will be played by Simu Liu, who basically tweeted this role into existence. And they say Twitter is bad! Opposite Shang-Chi will be the Mandarin (like, the actual Marvel Mandarin and not the Iron Man 3 fake-out), played by legendary Chinese actor Tony Leung. The film will be written by Chinese-American screenwriter Dave Callaham (The Expendables), and directed by Asian-American filmmaker Destin Daniel Cretton (The Glass Castle).

Eternals: Nov. 5

Angelina Jolie leads the star-studded cast of Eternals as Thena, a warrior recruited by Eternal Ikaris (Richard Madden). The cosmic adventure also stars Kumail Nanjiani; Lauren Ridloff as Makkari; Brian Tyree Henry as Phastos; Salma Hayek as Ajak, the leader of the Eternals; Lia McHugh as Flanx Bright; Gemma Chan as Sersi; and Don Lee as Gilgamesh. Kit Harington joins as human character Dane Whitman, since every mystical bunch of godlike aliens needs a human pal — but Dane Whitman is also the name of the Marvel superhero known as the Black Knight.

Spider-Man: No Way Home: Dec. 17

Photo: Jay Maidment/Sony Pictures

Now that nice boy Tom Holland saved Spider-Man’s status in the MCU, a third Spider-Man movie is on its way. There is no title, but we can probably guess that it will be some play on the word “home.” Spider-Man: Homeland? Spider-Man: Home Is Where the Heart Is? The film is likely to deal with the repercussions of J. Jonah Jameson revealing Peter Parker’s identity to the world — but it’s also widely expected to go hopping through dimensions, with several actors from Sony’s previous Spider-Man franchises set to reprise their roles, including Alfred Molina as Doctor Octopus, and Jamie Foxx as Electro.

Hawkeye: Late 2021

Photo: Alberto E. Rodriguez/Getty Images for Disney

The Matt Fraction and David Aja-inspired series about Clint Barton and his successor Kate Bishop is currently in production and slated for “late 2021.” Hailee Steinfeld (Bumblebee) will play Kate, with Florence Pugh reprising her role as Black Widow’s Yelena Belova. The series lineup also includes Fra Fee as the villainous mafia assassin Kazimierz Kazimierczak, and Alaqua Cox as the deaf superhero Echo.

Ms. Marvel: Late 2021

Image: Marvel Studios

Kamala Khan’s Disney Plus show has seemingly been fast tracked — and star Iman Vellani will join the cast of Captain Marvel 2.


Doctor Strange in the Multiverse of Madness: Mar. 25

Image: Marvel Studios

At San Diego Comic-Con 2019, Kevin Feige announced that the events of WandaVision would directly tie into the Doctor Strange sequel, Doctor Strange in the Multiverse of Madness. Details on this movie are scant, though Feige did say, “Just because Quentin Beck makes up lies about the multiverse, doesn’t mean it isn’t real.” WandaVision’s Elizabeth Olsen will join Benedict Cumberbatch, and newcomer Xochitl Gomez will play the dimension-hopping superteen America Chavez.

Thor: Love and Thunder: May 6

Image: Marvel Studios

Taika Waititi returns to direct Thor 4. This time, Jane Foster takes up the mantle of the God of Thunder, with Natalie Portman returning to the MCU for the first time since Thor: Dark World. Tessa Thompson’s Valkyrie is also set to play a big role. Chris Hemsworth — the superior Marvel Chris — will return as Thor.

Black Panther: Wakanda Forever: July 8

Image: Marvel

Director Ryan Coogler first announced the date of the Black Panther follow-up at D23 2019, well before star Chadwick Boseman’s tragic passing. Disney has confirmed that it has no intentions to recast the role of T’Challa. Instead the sequel will focus on the expanded cast of characters introduced in the first film, involving at least Letitia Wright, Danai Gurira, and Martin Freeman as as Shuri, Okoye, and Everett K. Ross, respectively.

The Marvels: Nov. 11

Image: Marvel

The sequel to 2019’s Captain Marvel will be called The Marvels, since the Captain Marvel power family continues to grow. With Kamala Khan and Monica Rambeau — the superhero known as Photon, who was introduced in WandaVision — it’ll practically be an all-female team movie.

The Guardians of the Galaxy Holiday Special: Late 2022

Disney/Marvel Studios

Move over, The Star Wars Holiday Special — there’s a new galaxy in town. And it’ll be filmed on the set of Guardians of the Galaxy Vol. 3 exclusively for Disney Plus.

Undated in 2022: Moon Knight

Image: Marvel Comics

Moon Knight, yes, Moon Knight, is getting a six-episode Disney Plus series starring Oscar Isaac.

Undated in 2022: She-Hulk

Image: Marvel Studios

Bruce Banner’s cousin Jennifer Walters is set to get her own Disney Plus series. Will it be a procedural law show? A sci-fi romp? Both? Either way, Tatiana Maslany (Orphan Black) will star as the big, green lawyer, with Mark Ruffalo reprising his role as Bruce Banner/the Hulk, and even Tim Roth as the Abomination. Remember him? From The Incredible Hulk? From 2008?


Ant-Man The Wasp: Quantumania: Feb. 17

Image: Marvel Studios

Scott Lang’s wacky adventures will continue sometime in the future, with a battle against the time traveling villain Kang the Conqueror, played by Lovecraft Country’s Jonathan Majors. But he’ll have some help, in the form of his now (thanks to the Snap) all grown up daughter Cassie Lang, played by Big Little Lies’ Kathryn Newton.

Guardians of the Galaxy Vol. 3: May 5

Image: Marvel

James Gunn will return to write and direct a third Guardians movie — but only after he’s done with DC’s The Suicide Squad, which will arrive in theaters and on HBO Max in 2021. The end of Endgame saw Thor buddy up with the Guardians, who were in pursuit of alternate timeline Gamora. Will Vol. 3 continue that? Or will the events of Thor: Love and Thunder rewrite Thor’s role?


The Fantastic Four

Image: Marvel Studios

The fourth time is hopefully the charm for Marvel’s First Family, who have long suffered from lackluster cinematic adaptations. Marvel has announced that an MCU Fantastic Four movie is on the way from director Jon Watts (Spider-Man: Homecoming).

Blade

Jason Aaron, Ed McGuinness, Cory Smith/Marvel Comics

At the very end of Marvel’s SDCC 2019 presentation, Kevin Feige revealed that Mahershala Ali would take on the role of Blade. This movie will be a reboot of the past Blade films, and will also come way after Phase 4.

Secret Invasion

Image: Marvel Studios

A rumored Disney Plus series starring Samuel L. Jackson is now confirmed to be a show based on Marvel Comics’ Secret Invasion event, starring Nick fury and the Skrull agent Talos as they deal with a, well, secret Skrull invasion on earth.

Ironheart

Image: Marvel Studios

Marvel is developing a Disney Plus series for the teenage hero Ironheart, with Dominique Thorne as Riri Williams, a young Black girl from inner city Chicago who reverse engineers Tony Stark’s armor to become the protector of her neighborhood.

Armor Wars

Image: Marvel Studios

For the darker side of what happens when Iron Man tech falls into the wrong hands, Don Cheadle will return as War Machine in a Disney Plus series based on Marvel Comics’ Armor Wars.

I Am Groot

Image: Marvel Studios

I Am Groot will be a series of Disney Plus shorts featuring new characters from around the Marvel Universe.

Top New Movie Releases in June: ‘Fast and Furious,’ ‘In …

Good

Subscriber

since

Free subscriber-exclusive audiobook!

“No Rules Rules: Netflix and the Culture of Reinvention”

Get it now on Libro.fm using the button below.

Redeem your free audiobook


Premium Articles


Upgrade Membership


Newsletter Preferences


My Subscription


FAQs


Log out

New on HBO Max June 2021: Movies, TV, Original Series

To see which series, movies, documentaries, comedies, and cartoons are leaving soon, open the Browse menu, and choose Last Chance.

Also, when you view details about a show or movie, look for an Available until date.

For more info, see our Shows and Movies QA.

June streaming 2021: Top new TV and movie releases

Updated 11:56 AM ET, Mon May 31, 2021

Best Movies On-Demand: Full List of What to Rent in 2021

encodeURIComponent(e).replace(/[!'()*]/g,e=`%${e.charCodeAt(0).toString(16).toUpperCase()}`));
}, {}];
window.modules[“1188”] = [function(require,module,exports){“use strict”;module.exports=((e,t)={if(“string”!=typeof e||”string”!=typeof t)throw new TypeError(“Expected the arguments to be of type `string`”);if(“”===t)return[e];const r=e.indexOf(t);return-1===r?[e]:[e.slice(0,r),e.slice(r+t.length)]});
}, {}];
window.modules[“1189”] = [function(require,module,exports){“use strict”;function hasOwnProperty(r,e){return Object.prototype.hasOwnProperty.call(r,e)}module.exports=function(r,e,t,n){e=e||””,t=t||”=”;var o={};if(“string”!=typeof r||0===r.length)return o;var a=/+/g;r=r.split(e);var s=1e3;n”number”==typeof n.maxKeys(s=n.maxKeys);var p=r.length;s0ps(p=s);for(var y=0;y

=0?(u=f.substr(0,v),c=f.substr(v+1)):(u=f,c=””),i=decodeURIComponent(u),l=decodeURIComponent(c),hasOwnProperty(o,i)?isArray(o[i])?o[i].push(l):o[i]=[o[i],l]:o[i]=l}return o};var isArray=Array.isArray||function(r){return”[object Array]”===Object.prototype.toString.call(r)};
}, {}];
window.modules[“1190”] = [function(require,module,exports){“use strict”;var stringifyPrimitive=function(r){switch(typeof r){case”string”:return r;case”boolean”:return r?”true”:”false”;case”number”:return isFinite(r)?r:””;default:return””}};module.exports=function(r,e,t,n){return e=e||””,t=t||”=”,null===r(r=void 0),”object”==typeof r?map(objectKeys(r),function(n){var i=encodeURIComponent(stringifyPrimitive(n))+t;return isArray(r[n])?map(r[n],function(r){return i+encodeURIComponent(stringifyPrimitive(r))}).join(e):i+encodeURIComponent(stringifyPrimitive(r[n]))}).join(e):n?encodeURIComponent(stringifyPrimitive(n))+t+encodeURIComponent(stringifyPrimitive(r)):””};var isArray=Array.isArray||function(r){return”[object Array]”===Object.prototype.toString.call(r)};function map(r,e){if(r.map)return r.map(e);for(var t=[],n=0;n0a[a.length-1])(6===i[0]||2===i[0])){o=0;continue}if(3===i[0](!a||i[1]a[0]i[1]“:”akbar-men”,”∑”:”majmou”,”¤”:”omla”},az:{},ca:{“∆”:”delta”,”∞”:”infinit”,”♥”:”amor”,””:”i”,”|”:”o”,””:”mes que”,”∑”:”suma dels”,”¤”:”moneda”},cz:{“∆”:”delta”,”∞”:”nekonecno”,”♥”:”laska”,””:”a”,”|”:”nebo”,””:”vice jako”,”∑”:”soucet”,”¤”:”mena”},de:{“∆”:”delta”,”∞”:”unendlich”,”♥”:”Liebe”,””:”und”,”|”:”oder”,””:”groesser als”,”∑”:”Summe von”,”¤”:”Waehrung”},dv:{“∆”:”delta”,”∞”:”kolunulaa”,”♥”:”loabi”,””:”aai”,”|”:”noonee”,””:”ah vure bodu”,”∑”:”jumula”,”¤”:”faisaa”},en:{“∆”:”delta”,”∞”:”infinity”,”♥”:”love”,””:”and”,”|”:”or”,””:”greater than”,”∑”:”sum”,”¤”:”currency”},es:{“∆”:”delta”,”∞”:”infinito”,”♥”:”amor”,””:”y”,”|”:”u”,””:”mas que”,”∑”:”suma de los”,”¤”:”moneda”},fr:{“∆”:”delta”,”∞”:”infiniment”,”♥”:”Amour”,””:”et”,”|”:”ou”,””:”superieure a”,”∑”:”somme des”,”¤”:”monnaie”},gr:{},hu:{“∆”:”delta”,”∞”:”vegtelen”,”♥”:”szerelem”,””:”es”,”|”:”vagy”,””:”nagyobb mint”,”∑”:”szumma”,”¤”:”penznem”},it:{“∆”:”delta”,”∞”:”infinito”,”♥”:”amore”,””:”e”,”|”:”o”,””:”maggiore di”,”∑”:”somma”,”¤”:”moneta”},lt:{},lv:{“∆”:”delta”,”∞”:”bezgaliba”,”♥”:”milestiba”,””:”un”,”|”:”vai”,””:”lielaks neka”,”∑”:”summa”,”¤”:”valuta”},my:{“∆”:”kwahkhyaet”,”∞”:”asaonasme”,”♥”:”akhyait”,””:”nhin”,”|”:”tho”,””:”kyithaw”,”∑”:”paungld”,”¤”:”ngwekye”},mk:{},nl:{“∆”:”delta”,”∞”:”oneindig”,”♥”:”liefde”,””:”en”,”|”:”of”,””:”groter dan”,”∑”:”som”,”¤”:”valuta”},pl:{“∆”:”delta”,”∞”:”nieskonczonosc”,”♥”:”milosc”,””:”i”,”|”:”lub”,””:”wieksze niz”,”∑”:”suma”,”¤”:”waluta”},pt:{“∆”:”delta”,”∞”:”infinito”,”♥”:”amor”,””:”e”,”|”:”ou”,””:”maior que”,”∑”:”soma”,”¤”:”moeda”},ro:{“∆”:”delta”,”∞”:”infinit”,”♥”:”dragoste”,””:”si”,”|”:”sau”,””:”mai mare ca”,”∑”:”suma”,”¤”:”valuta”},ru:{“∆”:”delta”,”∞”:”beskonechno”,”♥”:”lubov”,””:”i”,”|”:”ili”,””:”bolshe”,”∑”:”summa”,”¤”:”valjuta”},sk:{“∆”:”delta”,”∞”:”nekonecno”,”♥”:”laska”,””:”a”,”|”:”alebo”,””:”viac ako”,”∑”:”sucet”,”¤”:”mena”},sr:{},tr:{“∆”:”delta”,”∞”:”sonsuzluk”,”♥”:”ask”,””:”ve”,”|”:”veya”,””:”buyuktur”,”∑”:”toplam”,”¤”:”para birimi”},uk:{“∆”:”delta”,”∞”:”bezkinechnist”,”♥”:”lubov”,””:”i”,”|”:”abo”,””:”bilshe”,”∑”:”suma”,”¤”:”valjuta”},vn:{“∆”:”delta”,”∞”:”vo cuc”,”♥”:”yeu”,””:”va”,”|”:”hoac”,””:”lon hon”,”∑”:”tong”,”¤”:”tien te”}};if(“string”!=typeof e)return””;if(“string”==typeof a(A=a),m=I.en,c=C.en,”object”==typeof a)for(g in n=a.maintainCase||!1,O=a.custom”object”==typeof a.custom?a.custom:O,u=+a.truncate1a.truncate||!1,l=a.uric||!1,s=a.uricNoSlash||!1,r=a.mark||!1,S=!1!==a.symbols!1!==a.lang,A=a.separator||A,l(p+=b.join(“”)),s(p+=z.join(“”)),r(p+=[“.”,”!”,”~”,”*”,”‘”,”(“,”)”].join(“”)),m=a.langI[a.lang]S?I[a.lang]:S?I.en:{},c=a.langC[a.lang]?C[a.lang]:!1===a.lang||!0===a.lang?{}:C.en,a.titleCase”number”==typeof a.titleCase.lengthArray.prototype.toString.call(a.titleCase)?(a.titleCase.forEach(function(e){O[e+””]=e+””}),t=!0):t=!!a.titleCase,a.custom”number”==typeof a.custom.lengthArray.prototype.toString.call(a.custom)a.custom.forEach(function(e){O[e+””]=e+””}),Object.keys(O).forEach(function(a){var n;n=a.length1?new RegExp(“\b”+o(a)+”\b”,”gi”):new RegExp(o(a),”gi”),e=e.replace(n,O[a])}),O)p+=g;for(p=o(p+=A),f=!1,y=!1,d=0,k=(e=e.replace(/(^s+|s+$)/g,””)).length;d=0?(j+=g,g=””):!0===y?(g=U[j]+v[g],j=””):g=fv[g].match(/[A-Za-z0-9]/)?” “+v[g]:v[g],f=!1,y=!1):g in U?(j+=g,g=””,d===k-1(g=U[j]),y=!0):!m[g]||l-1!==b.join(“”).indexOf(g)||s-1!==z.join(“”).indexOf(g)?(!0===y?(g=U[j]+g,j=””,y=!1):f(/[A-Za-z0-9]/.test(g)||E.substr(-1).match(/A-Za-z0-9]/))(g=” “+g),f=!1):(g=f||E.substr(-1).match(/[A-Za-z0-9]/)?A+m[g]:m[g],g+=void 0!==e[d+1]e[d+1].match(/[A-Za-z0-9]/)?A:””,f=!0),E+=g.replace(new RegExp(“[^\w\s”+p+”_-]”,”g”),A);return t(E=E.replace(/(w)(S*)/g,function(e,a,n){var t=a.toUpperCase()+(null!==n?n:””);return Object.keys(O).indexOf(t.toLowerCase())u(h=E.charAt(u)===A,E=E.slice(0,u),h||(E=E.slice(0,E.lastIndexOf(A)))),n||t||(E=E.toLowerCase()),E},t=function(e){return function(a){return n(a,e)}},o=function(e){return e.replace(/[-\^$*+?.()|[]{}/]/g,”\$”)},i=function(e,a){for(var n in a)if(a[n]===e)return!0};if(“undefined”!=typeof modulemodule.exports)module.exports=n,module.exports.createSlug=t;else if(“undefined”!=typeof definedefine.amd)define([],function(){return n});else try{if(e.getSlug||e.createSlug)throw”speakingurl: globals exists /(getSlug|createSlug)/”;e.getSlug=n,e.createSlug=t}catch(e){}}(this);
}, {}];
window.modules[“1220″] = [function(require,module,exports){var namespace=”expire_mixin”;function expirePlugin(){var e=this.createStore(this.storage,null,this._namespacePrefix+namespace);return{set:function(t,n,a,r){this.hasNamespace(namespace)||e.set(n,r);return t()},get:function(e,n){this.hasNamespace(namespace)||t.call(this,n);return e()},remove:function(t,n){this.hasNamespace(namespace)||e.remove(n);return t()},getExpiration:function(t,n){return e.get(n)},removeExpiredKeys:function(e){var n=[];this.each(function(e,t){n.push(t)});for(var a=0;a=0;r–){var l=localStorage().key(r);e(read(l),l)}}function remove(e){return localStorage().removeItem(e)}function clearAll(){return localStorage().clear()}module.exports={name:”localStorage”,read:read,write:write,each:each,remove:remove,clearAll:clearAll};
}, {“1222”:1222}];
window.modules[“1224″] = [function(require,module,exports){module.exports={name:”memoryStorage”,read:read,write:write,each:each,remove:remove,clearAll:clearAll};var memoryStorage={};function read(e){return memoryStorage[e]}function write(e,r){memoryStorage[e]=r}function each(e){for(var r in memoryStorage)memoryStorage.hasOwnProperty(r)e(memoryStorage[r],r)}function remove(e){delete memoryStorage[e]}function clearAll(e){memoryStorage={}}
}, {}];
window.modules[“1245″] = [function(require,module,exports){!function(e){var t=function(e){return new y(e)};t.version=”0.6.8″,”undefined”!=typeof modulemodule.exports?module.exports=t:”function”==typeof definedefine.amd?define(function(){return t}):e.typogr=t;var n=function(e,t){return new RegExp(e,t)},s=/]*/i,r=t.amp=function(e){var t=/(s| )()(s| )/g;if(e||”string”==typeof e)return e.replace(/()?([^)?/g,function(e,n,r,a){return a=a||””,(n=n||””).match(s)?n+r+a:n+(r=r.replace(t,’$1$3′))+a})},a=t.ord=function(e){if(e||”string”==typeof e){var t,n=f(e),r=[],a=!1,p=/(d+)(st|nd|rd|th)/g;return n.forEach(function(e){“tag”===e.type?(r.push(e.txt),t=s.exec(e.txt),a=!(!t||void 0!==t[1])):a?r.push(e.txt):r.push(e.txt.replace(p,’$1$2‘))}),r.join(“”)}},p=t.initQuotes=function(e){var t=n(“(?:(?:]*|^)\s*(?:]*\s*)*)(?:(“|“|“)|(‘|‘|‘))”,”i”);if(e||”string”==typeof e)return e.replace(t,function(e,t,n){var s=t?”dquo”:”quo”,r=treturn[e.slice(0,e.lastIndexOf(r)),’‘,r,”“].join(“”)})},c=t.widont=function(e){var t=”(?:]*?)*?[^\s]+(?:(?:a|em|span|strong|i|b)[^]*?)*?”,s=n(“(\s+”+t+”\s+”+t+”)(?:\s+)([^\s]+(?:\s*(?:a|em|span|strong|i|b)[^]*?\s*\.*)*?(?:\s*?(?:p|h[1-6]|li|dt|dd)|$))”,”gi”);return e.replace(s,’$1 $2′)},i=t.caps=function(e){var t,r=f(e),a=[],p=!1,c=n(“((\b[A-Z\d]*[A-Z]\d*[A-Z][A-Z\d’]*\b)|(\b[A-Z]+\.\s?(?:[A-Z]+\.\s?)+)(?:\s|\b|$))”,”g”);return r.forEach(function(e){“tag”===e.type?(a.push(e.txt),t=s.exec(e.txt),p=!(!t||void 0!==t[1])):p?a.push(e.txt):a.push(e.txt.replace(c,function(e,t,n,s){var r,a;return n?’%s‘.replace(“%s”,n):(” “===s.slice(-1)?(r=s.slice(0,-1),a=” “):(r=s,a=””),’%s1%s2′.replace(“%s1”,r).replace(“%s2”,a))}))}),a.join(“”)};t.typogrify=function(e){var t=e;return e.jquerye.html(t=e.html()),t=r(t),t=c(t),t=u(t),t=i(t),t=p(t),t=a(t)};var l,o,u=t.smartypants=function(e){var t,n,r=f(e),a=[],p=[],c=””,i=””,l=!1,o=””;return r.forEach(function(e){if(“tag”===e.type)a.push(e.txt),null!==(i=s.exec(e.txt))(c=i[2].toLowerCase(),i[1]?(p.length0c===p[p.length-1]p.pop(),0===p.length(l=!1)):(p.push(c),l=!0));else{if(n=(n=e.txt).replace(/(rock )’n'( roll)/gi,”$1’n’$2″),t=n.slice(-1),!l)switch(n=g(n),n=h(n),n=d(n),n=x(n)){case”‘”:n=/S/.test(o)?”’”:”‘”;break;case'”‘:n=/S/.test(o)?”””:”“”;break;default:n=m(n)}o=t,a.push(n)}}),a.join(“”)},f=t.tokenize=function(e){for(var t,n=[],s=0,r=/([^]*)/gi;null!==(t=r.exec(e));){var a=t[1],p=t[2];an.push({type:”text”,txt:a}),n.push({type:”tag”,txt:p}),s=r.lastIndex}return r.lastIndex)/g,”$1–”)},d=t.smartEllipses=function(e){return e.replace(/…/g,”…”).replace(/. . ./g,”…”)},x=t.smartBackticks=function(e){return e.replace(/“/g,”“”).replace(/”/g,”””)},m=t.smartQuotes=function(e){var t=”(?=%s\B)”.replace(“%s”,”[!”#\$\%\'()*+,-.\/:;?\@\[\\]\^_`{|}~]”),s=”[^\ \t\r\n\[\{\(\-]”,r=n(“(\s| |–[mn]dash;|–|—|ȁ[34];)'(?=\w)”,”g”),a=n(“(“+s+”)'(?!\s | s\b | \d)”,”g”),p=n(“(“+s+”)'(?!\s | s\b)”,”g”),c=n(‘(\s| |–[mn]dash;|–|—|ȁ[34];)”(?=\w)’,”g”),i=n(‘”(?=\s)’,”g”),l=n(“(“+s+’)”‘,”g”);return e.replace(n(“^’%s”.replace(“%s”,t),”g”),”’”).replace(n(‘^”%s’.replace(“%s”,t),”g”),”””).replace(/”‘(?=w)/g,”“‘”).replace(/'”(?=w)/g,”‘“”).replace(/b'(?=d{2}s)/g,”’”).replace(r,”$1‘”).replace(a,”$1’”).replace(p,”$1’$2″).replace(“‘”,”’”).replace(c,”$1“”).replace(i,”””).replace(l,”$1””).replace(‘”‘,”“”)},y=function(e){this._wrapped=e},v=function(e,n){y.prototype[e]=function(){return e=n.call(t,this._wrapped),this._chain?t(e).chain():e;var e}};for(l in t)t.hasOwnProperty(l)((o=t[l])o.constructoro.callo.apply)v(l,t[l]);y.prototype.chain=function(){return this._chain=!0,this},y.prototype.value=function(){return this._wrapped}}(this);
}, {}];
window.modules[“1341”] = [function(require,module,exports){“use strict”;const universalAgora=require(1343),universalRest=require(20),universalQuery=require(1342),_get=require(10);function searchByQueryWithRawResults(e,r){const t=`//${r.site.host}${80!==r.site.port?`:${r.site.port}`:””}${r.site.path}/_agora/_search`;return universalRest.post(t,e,!0)}function getProducts(e,r,t){return searchByQueryWithRawResults(universalAgora.buildProductsQuery(e),r).then(e={const r=universalQuery.formatSearchResult(e);return{total:e.hits.total,products:t?universalAgora.filterByLocale(r):r}})}function getMerchantsList(e){return searchByQueryWithRawResults(universalAgora.buildMerchantsAggregation(1e6,_get(e,”site.agoraLocale”)),e).then(universalQuery.formatAggregationResults({aggregationName:”merchants”,field:”key”,subfield:”name”}))}module.exports.getProduct=universalAgora.getProduct,module.exports.getProducts=getProducts,module.exports.getMerchantsList=getMerchantsList,module.exports.searchByQueryWithRawResults=searchByQueryWithRawResults,module.exports.buildMerchantsByUrlQuery=universalAgora.buildMerchantsByUrlQuery;
}, {“10″:10,”20″:20,”1342″:1342,”1343”:1343}];
window.modules[“1342”] = [function(require,module,exports){“use strict”;const _map=require(74),_get=require(10),_isArray=require(173),_set=require(131),_isObject=require(110),_cloneDeep=require(92),_uniq=require(115);function formatSearchResult(e){return _map(e.hits.hits,”_source”)}function newQuery(e){if(!e)throw new Error(“An `index` is required to construct a query”);return{index:e,type:”_doc”,body:{query:{}}}}function addShould(e,o){var t=_get(e,”body.query.bool.should”,void 0),r=_isArray(o);return t?r?_set(e,”body.query.bool.should”,t.concat(o)):(t.push(o),_set(e,”body.query.bool.should”,t)):_set(e,”body.query.bool.should”,r?o:[o]),e}function addMust(e,o){var t=_get(e,”body.query.bool.must”,void 0),r=_isArray(o);return t?r?_set(e,”body.query.bool.must”,t.concat(o)):(t.push(o),_set(e,”body.query.bool.must”,t)):_set(e,”body.query.bool.must”,r?o:[o]),e}function addMustNot(e,o){var t=_get(e,”body.query.bool.must_not”,void 0),r=_isArray(o);return t?r?_set(e,”body.query.bool.must_not”,t.concat(o)):(t.push(o),_set(e,”body.query.bool.must_not”,t)):_set(e,”body.query.bool.must_not”,r?o:[o]),e}function addFilter(e,o){var t=_get(e,”body.query.bool.filter”,void 0);if(!_isObject(o))throw new Error(“Filter query required to be an object”);return t?_isArray(t)?(t.push(o),_set(e,”body.query.bool.filter”,t)):_set(e,”body.query.bool.filter”,[_cloneDeep(t),o]):_set(e,”body.query.bool.filter”,o),e}function addMinimumShould(e,o){if(“number”!=typeof o)throw new Error(“A number is required as the second argument”);return _set(e,”body.query.bool.minimum_should_match”,o),e}function addSort(e,o){var t=_get(e,”body.sort”);return _isArray(t)||_set(e,”body.sort”,t=[]),t.push(o),e}function addSize(e,o){if(!o0!==o)return e;if(o=parseInt(o),isNaN(o))throw new Error(`Second argument must be a number: ${o}`);return _set(e,”body.size”,o)}function addFrom(e,o){if(!o0!==o)return e;if(o=parseInt(o),isNaN(o))throw new Error(`Second argument must be a number: ${o}`);return _set(e,”body.from”,o)}function onlyWithTheseFields(e,o){if(!_isArray(o))throw new Error(“Second argument is required to be an Array”);return _set(e,”body._source.include”,_uniq(o)),e}function onlyWithinThisSite(e,o){return o.subsiteSlug?addFilter(e,{term:{subsite:o.subsiteSlug}}):(addFilter(e,{term:{site:o.slug}}),addMustNot(e,{exists:{field:”subsite”}})),e}function onlyWithinThisDomain(e,o){return addFilter(e,{prefix:{canonicalUrl:`http://${o.host}`}}),e}function withinThisSiteAndCrossposts(e,o){var t={term:{}},r={bool:{should:[],minimum_should_match:1}};return t.term[“crosspost.”+(o.subsiteSlug||o.slug)]=!0,r.bool.should.push(t),o.subsiteSlug?r.bool.should.push({term:{subsite:o.subsiteSlug}}):(r.bool.should.push({term:{site:o.slug}}),addMustNot(e,{exists:{field:”subsite”}})),addFilter(e,r),e}function withinThisDomainOrCrossposts(e,o){return addShould(e,{term:{[`crosspost.${o.subsiteSlug||o.slug}`]:!0}}),addShould(e,{prefix:{canonicalUrl:`http://${o.host}`}}),addMinimumShould(e,1),e}function moreLikeThis(e,o,t){let r={fields:[“tags”],like:{_index:e.index,_type:”_doc”,_id:o},include:!1,min_term_freq:1,max_query_terms:12,min_doc_freq:1};return{more_like_this:Object.assign(r,t)}}function addAggregation(e={},o){const{body:t={}}=e;return o?(t.aggs?_set(e,”body.aggs”,Object.assign(t.aggs,o)):_set(e,”body.aggs”,o),e):e}function formatAggregationResults({aggregationName:e=””,field:o=””,subfield:t=””,skipEmpty:r=!0}){return function(s={}){let u=_get(s,`aggregations.${e}${t?”.”+t+”.”:”.”}buckets`,[]);return r(u=u.filter(e=0!==_get(e,”doc_count”,0))),u.map(e=e[o]||””)}}function addGeo(e,o){if(!_isArray(o))throw new Error(“Second argument is required to be an Array”);if(2!==o.length)throw new Error(“Array must be length 2”);if(o.some(isNaN))throw new Error(“Array must only contain numbers”);return _set(e,”body.query.geo_shape.location.shape.type”,”point”),_set(e,”body.query.geo_shape.location.shape.coordinates”,o),e}function combineFunctionScoreQueries(e,o){let t=_cloneDeep(_get(e,”body.query”,{})),r=_cloneDeep(_get(o,”body.query”,{})),s=_get(e,”body.sort”);return _set(e,”body.query”,{}),_set(e,”body.query.function_score.functions”,[]),e.body.query.function_score.functions.push({filter:t,weight:20}),e.body.query.function_score.functions.push({filter:r,weight:10}),e.body.query.function_score.score_mode=”max”,e.body.query.function_score.min_score=10,_isArray(s)||_set(e,”body.sort”,s=[]),s.unshift({_score:”desc”}),e}function addNestedObjQuery(e,o,t){if(!e)throw new Error(“There is no base query to perform the addNestedObjQuery operation”);if(!o)throw new Error(“There is no nested object path to perform the nested query against”);if(!t)throw new Error(“There is no nested query path to perform the nested query against”);return _set(e,”nested”,{path:o,query:t}),e}function addMatchAll(e){return _set(e,”body.query”,{match_all:{}}),e}function addMultiMatch(e,o){const t=_get(e,”body.query.bool.must”,void 0),{fields:r,type:s,string:u}=o,i={multi_match:{query:u,fields:r,type:s}};return t?(t.push(i),_set(e,”body.query.bool.must”,t)):_set(e,”body.query.bool.must”,[i]),e}module.exports=newQuery,module.exports.addGeo=addGeo,module.exports.addAggregation=addAggregation,module.exports.addShould=addShould,module.exports.addFilter=addFilter,module.exports.addMust=addMust,module.exports.addMustNot=addMustNot,module.exports.addMinimumShould=addMinimumShould,module.exports.addSort=addSort,module.exports.addSize=addSize,module.exports.addFrom=addFrom,module.exports.onlyWithTheseFields=onlyWithTheseFields,module.exports.onlyWithinThisSite=onlyWithinThisSite,module.exports.onlyWithinThisDomain=onlyWithinThisDomain,module.exports.withinThisSiteAndCrossposts=withinThisSiteAndCrossposts,module.exports.withinThisDomainOrCrossposts=withinThisDomainOrCrossposts,module.exports.formatAggregationResults=formatAggregationResults,module.exports.formatSearchResult=formatSearchResult,module.exports.moreLikeThis=moreLikeThis,module.exports.combineFunctionScoreQueries=combineFunctionScoreQueries,module.exports.addNestedObjQuery=addNestedObjQuery,module.exports.addMatchAll=addMatchAll,module.exports.addMultiMatch=addMultiMatch;
}, {“10″:10,”74″:74,”92″:92,”110″:110,”115″:115,”131″:131,”173”:173}];
window.modules[“1343”] = [function(require,module,exports){(function (process,__filename){(function (){
“use strict”;const _forEach=require(64),_get=require(10),_filter=require(157),_map=require(74),_isEmpty=require(111),urlParse=require(75),log=require(8).setup({file:__filename}),queryService=require(1342),universalRest=require(20),AGORA_HOST=window.process.env.AGORA_HOST,AGORA_ELASTIC_PREFIX=window.process.env.AGORA_ELASTIC_PREFIX,AGORA_ENDPOINT=AGORA_HOST?`${AGORA_HOST}/api/v1`:null,requestHeader={“Content-Type”:”application/json”},PRODUCTS_INDEX=”agora-products”,AFFILIATES_INDEX=”affiliates”,RETAILERS_INDEX=”retailers”,FILTER_KEY={merchants:”name”,affiliates:”affiliate”},URL_RE=/^https?://.*$/;function getProducts(e,t){const{limit:r=100,start:a=0,search:s=””,sortDate:i=”desc”}=e,n=`${AGORA_ENDPOINT}/products?limit=${r}start=${a}search=${encodeURIComponent(s)}sortDate=${i}`;return fetch(n).then(handleResponse).then(e=t?filterByLocale(e,t):e).then(e=({total:e.length,products:e})).catch(handleError(n))}function getProduct(e,t){const r=`${AGORA_ENDPOINT}/products/${e}`;if(!AGORA_ENDPOINT)throw new Error(“No Agora endpoint has been set”);if(“string”!=typeof e)throw new Error(“request must provide a product id”);return fetch(r).then(handleResponse).then(e=t?filterByLocale(e,t):e).catch(handleError(r))}function postProduct(e){const t=`${AGORA_ENDPOINT}/products`,r={method:”POST”,headers:requestHeader,body:JSON.stringify(e)};return fetch(t,r).then(handleResponse).catch(handleError(t))}function putProduct(e,t){const r=`${AGORA_ENDPOINT}/products/${e}`,a={method:”PUT”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function patchProduct(e,t){const r=`${AGORA_ENDPOINT}/products/${e}`,a={method:”PATCH”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function deleteProduct(e){const t=`${AGORA_ENDPOINT}/products/${e}`;return fetch(t,{method:”DELETE”,headers:requestHeader}).then(handleResponse).catch(handleError(t))}function getMerchantList(e){const{limit:t=100,fields:r=””}=e;return Promise.resolve([{name:”Amazon”}]).catch(handleError(“”))}function getMerchant(e){const t=`${AGORA_ENDPOINT}/merchants/${e}`;if(“string”!=typeof e)throw new Error(“request must provide a merchant id”);return fetch(t).then(handleResponse).catch(handleError(t))}function patchMerchant(e,t){const r=`${AGORA_ENDPOINT}/merchants/${e}`,a={method:”PATCH”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function postMerchant(e){const t=`${AGORA_ENDPOINT}/merchants`,r={method:”POST”,headers:requestHeader,body:JSON.stringify(e)};return fetch(t,r).then(handleResponse).catch(handleError(t))}function putMerchant(e,t){const r=`${AGORA_ENDPOINT}/merchants/${e}`,a={method:”PUT”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function deleteMerchant(e){const t=`${AGORA_ENDPOINT}/merchants/${e}`;return fetch(t,{method:”DELETE”,headers:requestHeader}).then(handleResponse).catch(handleError(t))}function migrateMerchants(e){const t=`${AGORA_ENDPOINT}/merchants/migrate-affiliate`,r={method:”POST”,headers:requestHeader,body:JSON.stringify(e)};return fetch(t,r).then(handleResponse).catch(handleError(t))}function getRetailers(e){const{limit:t=100,start:r=0}=e,a=`${AGORA_ENDPOINT}/retailers?limit=${t}start=${r}`;return fetch(a).then(handleResponse).then(e=({total:e.length,retailers:e})).catch(handleError(a))}function getRetailer(e){const t=`${AGORA_ENDPOINT}/retailers/${e}`;return fetch(t).then(handleResponse).catch(handleError(t))}function postRetailer(e){const t=`${AGORA_ENDPOINT}/retailers`,r={method:”POST”,headers:requestHeader,body:JSON.stringify(e)};return fetch(t,r).then(handleResponse).catch(handleError(t))}function putRetailer(e,t){const r=`${AGORA_ENDPOINT}/retailers/${e}`,a={method:”PUT”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function deleteRetailer(e){const t=`${AGORA_ENDPOINT}/retailers/${e}`;return fetch(t,{method:”DELETE”,headers:requestHeader}).then(handleResponse).catch(handleError(t))}function getAffiliates(e){const{limit:t=100,start:r=0}=e,a=`${AGORA_ENDPOINT}/affiliates?limit=${t}start=${r}`;return fetch(a).then(handleResponse).then(e=({total:e.length,affiliates:e})).catch(handleError(a))}function getAffiliateRetailers(e){const t=`${AGORA_ENDPOINT}/retailers/${e}/affiliates`;return fetch(t).then(handleResponse).catch(handleError(t))}function getAffiliateRetailer(e,t){const r=`${AGORA_ENDPOINT}/retailers/${e}/affiliates/${t}`;return fetch(r).then(handleResponse).catch(handleError(r))}function postAffiliateRetailer(e,t){const r=`${AGORA_ENDPOINT}/retailers/${e}/affiliates`,a={method:”POST”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function putAffiliateRetailer(e,t,r){const a=`${AGORA_ENDPOINT}/retailers/${e}/affiliates/${t}`,s={method:”PUT”,headers:requestHeader,body:JSON.stringify(r)};return fetch(a,s).then(handleResponse).catch(handleError(a))}function deleteAffiliateRetailer(e,t){const r=`${AGORA_ENDPOINT}/retailers/${e}/affiliates/${t}`;return fetch(r,{method:”DELETE”,headers:requestHeader}).catch(handleError(r))}function postLocale(e){const t=`${AGORA_ENDPOINT}/locales/`,r={method:”POST”,headers:requestHeader,body:JSON.stringify(e)};return fetch(t,r).then(handleResponse).catch(handleError(t))}function patchLocale(e,t){const r=`${AGORA_ENDPOINT}/locales/${e}`,a={method:”PATCH”,headers:requestHeader,body:JSON.stringify(t)};return fetch(r,a).then(handleResponse).catch(handleError(r))}function handleResponse(e){try{return e.json().then(t={if(e.status=400){const e=_get(t,”message.details[0].message”);throw new Error(e)}return t})}catch(e){throw new Error(e.message)}}function handleError(e){return t={throw log(“warn”,`Failed request to ${e}`,t),new Error(`request to ${e} failed`)}}function buildProductsQuery({search:e=””,limit:t=100,start:r=0,sortDate:a=””,filters:s,locale:i}){const n=queryService(PRODUCTS_INDEX),c=sObject.keys(s).length?Object.keys(s).filter(e=Array.isArray(s[e])s[e].length):[],o={},l={};if(prependElasticPrefix(n),e||c.length||i||queryService.addMatchAll(n),i(queryService.addMust(o,{match:{“locales.locale”:i}}),queryService.addMust(l,{match:{“merchants.locale”:i}})),e)if(isURL(e))queryService.addMust(n,[queryService.addNestedObjQuery({},”merchants”,{match:{“merchants.buyUrl”:e}})]);else{const t={};queryService.addShould(t,[{match:{“locales.productId”:e}},{match:{“locales.name”:{query:e,boost:2}}}]),queryService.addMinimumShould(t,1),queryService.addMust(o,_get(t,”body.query”))}if(c.length){const e={};c.forEach(t={const r=s[t],a=FILTER_KEY[t],i={};a(i[`merchants.${a}`]=r,queryService.addMust(e,{terms:i}))}),queryService.addMust(l,_get(e,”body.query”))}return _isEmpty(o)||queryService.addMust(n,[queryService.addNestedObjQuery({},”locales”,_get(o,”body.query”))]),_isEmpty(l)||queryService.addMust(n,[queryService.addNestedObjQuery({},”merchants”,_get(l,”body.query”))]),queryService.addSize(n,t),r=0queryService.addFrom(n,r),”desc”===a||”asc”===a?queryService.addSort(n,{updatedAt:{order:a}}):equeryService.addSort(n,{_score:{order:”desc”}}),n}function prependElasticPrefix(e){return e.index=AGORA_ELASTIC_PREFIX?`${AGORA_ELASTIC_PREFIX}_${e.index}`:e.index,e}function buildMerchantsAggregation(e=1e6,t){const r=queryService(PRODUCTS_INDEX);return prependElasticPrefix(r),queryService.addMust(r,{match:{active:!0}}),tqueryService.addMust(r,queryService.addNestedObjQuery({},”merchants”,_get(queryService.addMust({},{match:{“merchants.locale”:t}}),”body.query”))),queryService.addAggregation(r,{merchants:{nested:{path:”merchants”},aggs:{name:{terms:{field:”merchants.name”,size:e}}}}}),queryService.addSize(r,0),r}function isURL(e){return URL_RE.test(e)}function filterByLocale(e,t,r={locales:”US”}){const a=Array.isArray(e);if(_isEmpty(e))return a?[]:{};const s=[“locales”,”merchants”],i=a?e:[e],n=Object.keys(r),c=_map(i,e={const a=Object.assign({},e);return _forEach(s,s={if(Object.keys(a).includes(s)){const i=t?_filter(e[s],[“locale”,t]):e[s];a[s]=i,!i.lengthn.includes(s)(a[s]=(_filter(e[s],[“locale”,r[s]])||[]).map(e=(e.id=null,e.locale=t,e)))}}),a.name=_get(a,”locales[0].name”,””),a});return ac.length?c:_get(c,”[0]”,{})}function searchByQueryWithRawResults(e,t){const r=`//${t.site.host}${80!==t.site.port?`:${t.site.port}`:””}${t.site.path}/_agora/_search`;return universalRest.post(r,e,!0)}function buildMerchantsByUrlQuery(e){const t=queryService(PRODUCTS_INDEX);return prependElasticPrefix(t),queryService.addNestedObjQuery(t.body.query,”merchants”,{match:{“merchants.buyUrl”:e}}),t}function getAffiliatesByLocale(e,t){const r=queryService(AFFILIATES_INDEX);return prependElasticPrefix(r),queryService.addMust(r,{match:{locale:e}}),queryService.addSize(r,1e3),queryService.addSort(r,{name:”asc”}),searchByQueryWithRawResults(r,t).then(e=_get(e,”hits.hits”,[]).map(e=_get(e,”_source”,{})))}function buildRetailersQuery({search:e=””,limit:t=50,start:r=0,direction:a=”asc”,locale:s=”US”}){const i=queryService(RETAILERS_INDEX);return prependElasticPrefix(i),queryService.addMust(i,{match:{locale:s}}),e?queryService.addMultiMatch(i,{fields:[“name”,”domains^2″],string:e,type:”phrase_prefix”}):(queryService.addSort(i,{“name.keyword”:a}),queryService.addSize(i,t),r=0queryService.addFrom(i,r)),i}function getRetailersList(e,t){return searchByQueryWithRawResults(buildRetailersQuery(e),t).then(e=({total:_get(e,”hits.total”,0),retailers:_get(e,”hits.hits”,[]).map(e=_get(e,”_source”,{}))}))}function getRetailersByAffiliateId(e,t,r){const a=queryService(RETAILERS_INDEX);return e?(prependElasticPrefix(a),queryService.addMust(a,{match:{locale:r}}),queryService.addMust(a,[queryService.addNestedObjQuery({},”affiliateRetailers”,{match:{“affiliateRetailers.affiliateId”:e}})]),queryService.addSize(a,1e4),queryService.addSort(a,{“name.keyword”:”asc”}),searchByQueryWithRawResults(a,t).then(e=_get(e,”hits.hits”,[]).map(e=_get(e,”_source”,{})))):Promise.reject()}function getMerchantsList(e){return searchByQueryWithRawResults(buildMerchantsAggregation(1e6,_get(e,”site.agoraLocale”)),e).then(queryService.formatAggregationResults({aggregationName:”merchants”,field:”key”,subfield:”name”}))}function queryRetailersByUrl(e,t,r){const a=urlParse(e).host.split(“www.”).join(“”),s=queryService(RETAILERS_INDEX);return queryService.addMust(s,{match:{locale:r}}),queryService.addMust(s,{match:{domains:a}}),prependElasticPrefix(s),queryService.addSize(s,10),searchByQueryWithRawResults(s,t).then(e=_get(e,”hits.hits”,[]).map(e=_get(e,”_source”,{})))}function queryRetailersByName(e,t,r){const a=queryService(RETAILERS_INDEX);return queryService.addMust(a,{match:{locale:r}}),queryService.addMust(a,{match:{“name.keyword”:e}}),prependElasticPrefix(a),queryService.addSize(a,10),searchByQueryWithRawResults(a,t).then(e=_get(e,”hits.hits”,[]).map(e=_get(e,”_source”,{})))}require(231),module.exports={buildProductsQuery:buildProductsQuery,buildMerchantsAggregation:buildMerchantsAggregation,getProducts:getProducts,getProduct:getProduct,postProduct:postProduct,putProduct:putProduct,patchProduct:patchProduct,deleteProduct:deleteProduct,getMerchantList:getMerchantList,getMerchant:getMerchant,postMerchant:postMerchant,patchMerchant:patchMerchant,putMerchant:putMerchant,deleteMerchant:deleteMerchant,migrateMerchants:migrateMerchants,getRetailers:getRetailers,getRetailersList:getRetailersList,getRetailer:getRetailer,postRetailer:postRetailer,putRetailer:putRetailer,deleteRetailer:deleteRetailer,getRetailersByAffiliateId:getRetailersByAffiliateId,getAffiliates:getAffiliates,getAffiliateRetailers:getAffiliateRetailers,getAffiliateRetailer:getAffiliateRetailer,postAffiliateRetailer:postAffiliateRetailer,putAffiliateRetailer:putAffiliateRetailer,deleteAffiliateRetailer:deleteAffiliateRetailer,isURL:isURL,filterByLocale:filterByLocale,patchLocale:patchLocale,postLocale:postLocale,buildMerchantsByUrlQuery:buildMerchantsByUrlQuery,getAffiliatesByLocale:getAffiliatesByLocale,searchByQueryWithRawResults:searchByQueryWithRawResults,getMerchantsList:getMerchantsList,queryRetailersByUrl:queryRetailersByUrl,queryRetailersByName:queryRetailersByName};

}).call(this)}).call(this,require(26),”/services/universal/agora.js”)}, {“8″:8,”10″:10,”20″:20,”26″:26,”64″:64,”74″:74,”75″:75,”111″:111,”157″:157,”231″:231,”1342”:1342}];
window.modules[“1344”] = [function(require,module,exports){“use strict”;const _map=require(74),_mapValues=require(226),_reduce=require(114),_assign=require(161),_get=require(10),_pickBy=require(162),_find=require(67),affiliateFields=[“siteShortKey”,”pageUri”,”productId”,”utmMedium”,”utmSource”,”sessionCount”,”format”,”utmCampaign”,”referrer”,”deviceAbbreviation”,”zone”],affiliateSettings={amazon:{domains:[“amazon.com”,”amazon.co.uk”],subtagKey:”ascsubtag”,maxLength:99,delimiter:”standard”,encode:!1},narrativ:{domains:[“shop-links.co/”],subtagKey:”u1″,maxLength:99,delimiter:”standard”,encode:!0},rakuten:{domains:[“click.linksynergy.com/deeplink”,”linksynergy.walmart.com/deeplink”],subtagKey:”u1″,maxLength:72,delimiter:”standard”,encode:!1},shareasale:{domains:[“shareasale.com”],subtagKey:”afftrack”,maxLength:99,delimiter:”standard”,encode:!1},skimlinks:{domains:[“go.redirectingat.com”],subtagKey:”xcust”,maxLength:50,delimiter:”alt”,encode:!1},impact:{domains:[],subtagKey:”subId2″,maxLength:99,delimiter:”standard”,encode:!1},avantlink:{domains:[“avantlink.com”],subtagKey:”ctc”,maxLength:64,delimiter:”alt”,encode:!1},cj:{domains:[“tkqlhce.com”,”jdoqocy.com”,”dpbolvw.net”,”anrdoezrs.net”,”kqzyfj.com”],subtagKey:”sid”,maxLength:64,delimiter:”alt”,encode:!1,joinBy:”/”,assignBy:”/”,positioned:!0,position:”after”,positionKey:”type/dlg/”},partnerize:{domains:[“prf.hn”],subtagKey:”pubref”,maxLength:100,delimiter:”alt”,encode:!1,joinBy:”/”,assignBy:”:”,positioned:!0,position:”before”,positionKey:”destination”},pepperjam:{domains:[“gopjn.com”,”pntrac.com”,”pjtra.com”,”pjatr.com”,”pntrs.com”,”pntra.com”],subtagKey:”sid”,maxLength:100,delimiter:”alt”,encode:!1},awin:{domains:[“awin1.com”],subtagKey:”pref1″,maxLength:100,delimiter:”alt”,encode:!1,positioned:!0,position:”before”,positionKey:”ued”}},subtagDictionary={siteShortKey:””,pageUri:”p”,productId:”i”,zone:”z”,deviceAbbreviation:”d”,utmSource:”s”,utmMedium:”m”,utmCampaign:”c”,sessionCount:”u”,referrer:”r”,format:”t”},delimiters={standard:[“[“,”]”],alt:[“__”,”_”]};function parseValueFromSubtag(e,t,i){const a=t[0]+e+t[1],s=i.split(a)[1]||””;return s?s.split(t[0])[0]:null}function parseSubtag(e,t=delimiters.standard){return _pickBy(_mapValues(subtagDictionary,i=parseValueFromSubtag(i,t,e)))}function generateSubtag(e,t,i=delimiters.standard,a=!1){const s=(e=t=`${e[0]}${t}${e[1]}`)(i);let n=_reduce(affiliateFields,(t,i)={const a=s(subtagDictionary[i]),n=e[i];return t+(n?a+n:””)},””);return a(n=encodeURIComponent(n)),n}function applySubtagMaxlength(e,t){var i=t-3*(e.split(“,”).length-1+e.split(“|”).length-1);return e.substr(0,i)}function getSubtagData({getters:e,fields:t=[],visitState:i,locals:a,productLink:s}){let n={};return t.forEach(t={n[t]=e[t]e[t]({visitState:i,locals:a,productLink:s})}),n}function parseQuery(e=””){return e.split(“”).reduce((e,t)={const i=t.split(“=”)[0],a=t.split(“=”)[1];return void 0!==a(e[i]=a),e},{})}function processSubtagPosition({url:e,positionKey:t,subtagKey:i,position:a=”after”,subtagString:s,joinBy:n,assignBy:o}={}){const[r,l]=e.split(t),u=`${i}${o}${s}`,g=[];if(“after”===a){if(!l)return e;const[a,s=””]=l.split(`${i}${o}`),d=s.split(n).slice(1).join(n);g.push(`${r}${t}`,u),ag.push(a),dg.push(d)}if(“before”===a){const[e,a=””]=r.split(`${i}${o}`),s=a.split(n).slice(1).join(n);g.push(e),sg.push(s),g.push(u,`${t}${l}`)}return g.reduce((e,t)={return e.slice(-1)===n(e=e.slice(0,-1)),e.length?[e,t].join(n):t},””)}function processSubtag({getters:e,affiliate:t,url:i,visitState:a={},locals:s}){const n=affiliateFields,o=_get(affiliateSettings[t],”subtagKey”),r=_get(affiliateSettings[t],”maxLength”),l=_get(affiliateSettings[t],”encode”),u=_get(affiliateSettings[t],”delimiter”),g=_get(affiliateSettings[t],”positioned”,!1),d=_get(affiliateSettings[t],”position”),c=_get(affiliateSettings[t],”positionKey”),p=_get(affiliateSettings[t],”assignBy”,”=”),m=_get(affiliateSettings[t],”joinBy”,””),f=delimiters[u];let b,y,S=i.indexOf(“?”)=0?i.split(“?”).pop():””,h=parseQuery(S),_=getSubtagData({getters:e,fields:n,visitState:a,locals:s,productLink:i});return o(y=h[o]||””,y=applySubtagMaxlength(b=generateSubtag(_=_assign(parseSubtag(y,f),_pickBy(_)),t,f,l),r),h[o]=y,S=_map(h,(e,t)=`${t}=${e}`).join(“”),i=g?processSubtagPosition({url:i,positionKey:c,subtagKey:o,position:d,subtagString:y,joinBy:m,assignBy:p}):i.split(“?”)[0]+`?${S}`),i}function getAffiliate(e){const t=Object.keys(affiliateSettings);return _find(t,t=_find(affiliateSettings[t].domains,t=e.includes(t.toLowerCase())))||””}function createSubtagProcessor(e){return({url:t,visitState:i,locals:a,affiliate:s})=(s=getAffiliate(t)||s)?processSubtag({getters:e,url:t,affiliate:s,visitState:i,locals:a}):””}module.exports.generateSubtag=generateSubtag,module.exports.getAffiliate=getAffiliate,module.exports.createSubtagProcessor=createSubtagProcessor,module.exports.processSubtag=processSubtag;
}, {“10″:10,”67″:67,”74″:74,”114″:114,”161″:161,”162″:162,”226”:226}];
window.modules[“article-nav.client”] = [function(require,module,exports){“use strict”;const dom=require(4),_throttle=require(61),$visibility=require(5),$popup=require(76),$gtm=require(3),{reportSocial:reportSocial}=require(77),auth0=require(7);module.exports=(t={let e=dom.find(“.page-header”),i=dom.find(“.article-content”),r=dom.find(t,”.deepscroll-headline”),o=dom.find(t,”.deepscroll-rubric”),s=dom.find(t,”.deepscroll-rubric-sponsored”),l=dom.find(“.article .article-header .rubric”),n=dom.find(“#deepscroll_center_divider”),a=dom.find(“.clay-paragraph”),d=dom.find(t,”.logo”),c=dom.find(t,”.dyn-cut-logo”),p=dom.find(t,”.article-nav-top”),u=dom.find(t,”.article-nav-deepscroll”),m=dom.find(‘link[rel=”canonical”]’),f=mm.getAttribute(“href”),g=dom.find(‘meta[property=”og:image”]’)?dom.find(‘meta[property=”og:image”]’).getAttribute(“content”):””,h=dom.find(‘meta[property=”og:title”]’)?dom.find(‘meta[property=”og:title”]’).getAttribute(“content”):””,y=dom.find(t,”.share-link.facebook”),w=dom.find(t,”.share-link.twitter”),v=dom.find(t,”.share-link.pinterest”),b=t.classList.contains(“header-simple”),x=window.getComputedStyle(d,null).getPropertyValue(“–targetFlexBasis”),L=window.getComputedStyle(d,null).getPropertyValue(“–verticalStart”)||0,C=window.getComputedStyle(d,null).getPropertyValue(“–verticalEnd”)||0,$=!1,_=55;function k(){_=parseInt(window.getComputedStyle(d,null).getPropertyValue(“–stickyTop”))||_,C=$visibility.getViewportWidth()=1180?window.getComputedStyle(d,null).getPropertyValue(“–verticalEndDesktop”)||C:window.getComputedStyle(d,null).getPropertyValue(“–verticalEnd”)||C}function S(){$=!1,P()}function P(){let{top:r}=t.getBoundingClientRect(),o=window.getComputedStyle(d,null).getPropertyValue(“–baseFlexBasis”),s=o-x,l=(_-e.getBoundingClientRect().top)/_,n=Math.max(0,Math.min(1,l)),m=L-C-2,f=Math.round(L-(m*n+2)),g=Math.ceil(o-s*n);if(lt?e.classList.add(“header-after-scroll”):e.classList.remove(“header-after-scroll”),p.style.transform=`translateY(${C}px)`,u.style.transform=`translateY(${C}px)`,void(d.style.flexBasis=x+”px”)}window.scrollYr?t.classList.add(“after-scroll”):t.classList.remove(“after-scroll”),window.scrollYr?e.classList.add(“header-after-scroll”):e.classList.remove(“header-after-scroll”),p.style.transform=`translateY(${f}px)`,u.style.transform=`translateY(${f}px)`,d.style.flexBasis=g+”px”,c(c.style.flexBasis=g+”px”),$visibility.getViewportWidth()=1180ifunction(){const t=a?$visibility.getPageOffset(a).top-70:0,e=$visibility.getPageOffset(i).top,r=Math.max(e,t);return Math.max(window.scrollY,document.body.scrollTop)=r}()?t.classList.add(“deep-scroll”):t.classList.remove(“deep-scroll”)}function V(t){var e=t.currentTarget,i=e.getAttribute(“href”),r=e.getAttribute(“data-handle”),o=$popup.getPopupClass(e.classList),s=$visibility.isBelowPrimaryContent(e)?”bottom”:”top”;$gtm.reportNow({event:”social-share-widget”,clickLocation:s,socialNetwork:o}),reportSocial(o),$visibility.getViewportWidth()=768o(t.preventDefault(),$popup.popWindow(o,r,i))}!function(){const e=_throttle(P,30);if(k(),dom.findAll(t,”.share-link”).forEach(t=t.addEventListener(“click”,V)),y(y.href=”http://www.facebook.com/sharer/sharer.php?u=”+f+”?utm_source=fbutm_medium=s3utm_campaign=sharebutton-t”),w(w.href=”https://twitter.com/share?text=”+encodeURIComponent(h)+”url=”+f+”?utm_source=twutm_medium=s3utm_campaign=sharebutton-tvia=”+w.getAttribute(“data-handle”)),v(v.href=”http://pinterest.com/pin/create/button/?url=”+f+”?utm_source=pinutm_medium=s3utm_campaign=sharebutton-tdescription=”+encodeURIComponent(h)+”media=”+g),b)return;auth0.on(“init”,()={auth0.isSubscriber()t.classList.add(“subscribed”)}),window.addEventListener(“scroll”,e),window.addEventListener(“resize”,S),window.addEventListener(“resize”,k),l?l.classList.contains(“rubric-sponsor-story”)s?(o.classList.remove(“visible”),s.classList.add(“visible”),s.textContent=l.text||l.textContent):(o.textContent=l.text||l.textContent,o.href=l.href||”#”):(n.style.display=”none”,o.style.display=”none”);S(),r.textContent=h}()});
}, {“3″:3,”4″:4,”5″:5,”7″:7,”61″:61,”76″:76,”77”:77}];
window.modules[“nav-search-button.client”] = [function(require,module,exports){“use strict”;const dom=require(4),$gtm=require(3),{reportSearch:reportSearch}=require(77),openClass=”open”,closeClass=”closed”;module.exports=(e={const s=e,t=dom.find(e,”.nav-search-button-trigger”),n=dom.find(e,”.nav-search-form”),o=dom.find(e,”.search-input”);function i(){const e=dom.find(“body”);s.classList.toggle(closeClass),s.classList.toggle(openClass),e.classList.toggle(“disabled”),e.classList.toggle(“search-active”)}function c(){i(),s.classList.contains(openClass)o.focus()}function a(e){!s.contains(e.target)s.classList.contains(openClass)i()}function r(e){27===e.keyCodes.classList.contains(openClass)i()}function d(e){e.preventDefault(),$gtm.reportCustomEvent({category:”search”,label:”on=”+window.location.href,action:o.value}),reportSearch((o.value||””).split(” “),()=n.submit())}!function(e,s,t){ss.addEventListener(“click”,c);tt.addEventListener(“submit”,d);e.addEventListener(“click”,a),document.addEventListener(“keydown”,r),e.addEventListener(“touchend”,a),n.addEventListener(“submit”,d)}(dom.find(“body”),t,dom.find(e,”.nav-search-form submit”))});
}, {“3″:3,”4″:4,”77”:77}];
window.modules[“nav-dropdown-button.client”] = [function(require,module,exports){“use strict”;const dom=require(4),visibility=require(5),{reportSearch:reportSearch}=require(77);function getNextSiblings(e){const t=[];let i=e;for(;i=i.nextElementSibling;)t.push(i);return t}function getMainChildren(e,t){let i=[],n=e.firstChild;for(;n=n.nextElementSibling;)n.contains(t)?n.isSameNode(t)||(i=i.concat(getMainChildren(n,t))):i.push(n);return i}function isMobile(){return visibility.getViewportWidth(){let t;const i=e.querySelector(“.nav-dropdown-button-trigger”),n=dom.find(“body”),o=dom.find(“.top”),l=dom.find(“.confetti-list”),s=dom.find(“.nav-dropdown-button_nymag-homepage”),r=dom.find(“header.page-header”)||o,c=dom.find(‘[data-editable=”main”]’),a=dom.closest(e,”.page-header”),d=a?a.querySelectorAll(“.confetti-image.blue”):””,g=a?a.querySelectorAll(“.confetti-image.green”):””,u=a?a.querySelectorAll(“.confetti-image.orange”):””,f=a?a.querySelectorAll(“.confetti-image.orange2″):””,m=a?a.querySelectorAll(“.confetti-image.pink”):””,p=a?a.querySelectorAll(“.confetti-image.purple”):””,h=a?a.querySelectorAll(“.confetti-image.yellow”):””,y=e.querySelectorAll(“.dropdown-nav-search-form”);function b(e){let t=e.currentTarget,i=t.querySelector(“.nav-search-input”),n=i?i.value.split(” “):[];e.preventDefault(),reportSearch(n,()=t.submit())}i.addEventListener(“click”,()={initializeHeight(e),v()});for(let e=0,t=y.length;e(function(e){e.classList.remove(“c-right”,”c-rightdown”,”c-left”,”c-leftdown”)})(e))},500)}()):(i.setAttribute(“aria-expanded”,”true”),t=window.scrollY),e.classList.toggle(“closed”),e.classList.toggle(“open”),n.classList.toggle(“disabled”),ae.isSameNode(s)?function(){if(o.contains(e)){const e=getMainChildren(o,s);S(e),w(o)}if(c.contains(e)){const e=getMainChildren(c,s);o.classList.toggle(“hidden-component”),w(c),S(e)}e.classList.toggle(“open-mobile”)}():a!yr(w(r),function(){const i=e.classList.contains(“open”)?0:t;window.scrollTo({top:i})}())}function w(e){S(getNextSiblings(e))}function S(e){e.forEach(e={e.classList.toggle(“hidden-component”)})}n.addEventListener(“click”,t={!e.contains(t.target)e.classList.contains(“open”)v()}),document.addEventListener(“keydown”,t={27===t.keyCodee.classList.contains(“open”)v()})});
}, {“4″:4,”5″:5,”77”:77}];
window.modules[“follow.client”] = [function(require,module,exports){“use strict”;const _find=require(67),$popup=require(76);DS.controller(“follow”,[function(){function e(e){this.el=e,this.handle=e.getAttribute(“data-handle”)}return e.prototype={events:{click:”openFollow”},openFollow:function(e){var t,n,a=$popup.position,o=$popup.params,l={},r={w:780,h:500},s=new a(r.w,r.h),c=this.el.classList;l.handle=this.handle,r.left=s.left,r.top=s.top,n=_find([{className:”facebook”,url:”https://facebook.com/{handle}”,network:”Facebook”},{className:”pinterest”,url:”http://www.pinterest.com/{handle}”,network:”Pinterest”},{className:”instagram”,url:”https://www.instagram.com/{handle}”,network:”Instagram”},{className:”rss”,url:”http://feeds.feedburner.com/{handle}”,network:”RSS”},{className:”twitter”,url:”https://twitter.com/intent/follow?screen_name={handle}tw_p=followbuttonvariant=2.0″,network:”Twitter”},{className:”snapchat”,url:”https://www.snapchat.com/discover/{handle}”,network:”Snapchat”}],function(e){return c.contains(e.className)}),l.url=n.url.replace(“{handle}”,l.handle),l.network=n.network,l.name=”Follow “+l.handle+” on “+l.network,t=new o(l,r),window.open(t.address,t.name,t.features),e.preventDefault()}},e}]);
}, {“67″:67,”76”:76}];
window.modules[“comments-link.client”] = [function(require,module,exports){“use strict”;const dom=require(4),_get=require(10),_isFinite=require(133),ajax=require(132);DS.controller(“comments-link”,[function(){var t,e=”http://”+document.documentElement.getAttribute(“data-uri”)+”.html”;function n(n){var o;(this.el=n,this.coral_talk_root=n.getAttribute(“data-coral-talk”),this.commentsCount=dom.find(n,”.comments-link-count”),this.commentsText=dom.find(n,”.comments-link-text”),this.isNavVariation=n.classList.contains(“comments-link_article-nav”),this.cutoffCnt=n.getAttribute(“data-cutoffCnt”)||1e3,t=`${this.coral_talk_root}/api/v1/graph/ql`,this.shouldRenderCommentStream())(o=this.onCommentCountFetched.bind(this),ajax.sendReceiveJson({method:”GET”,url:t+’?query={asset(url:”‘+e+'”){totalCommentCount}}’,dataType:”json”},function(t,e){var n=_get(e,”data.asset.totalCommentCount”,0);return t?o(t):_isFinite(n)?void o(null,n):o(“Unexpected Coral-Talk response”)}))}return n.prototype.onCommentCountFetched=function(t,e){if(t)return console.warn(t);e0(this.isNavVariatione1?”s”:””),this.el.classList.remove(“no-comments”))},n.prototype.shouldRenderCommentStream=function(){return-1!==e.indexOf(“@published”)},n}]);
}, {“4″:4,”10″:10,”132″:132,”133”:133}];
window.modules[“head-gtm.client”] = [function(require,module,exports){“use strict”;const{getCLS:getCLS,getFID:getFID,getLCP:getLCP}=require(165),isProduction=require(9)();function reportWebVitals(e){isProduction||console.log(“reportWebVitals: %O”,e);const t=”string”==typeof e.name?e.name.toUpperCase():e.name;window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:”analyticsEvent”,event_action:t,event_category:”Web Vitals”,event_label:e.id,event_value:e.delta,eventAction:t,eventCategory:”Web Vitals”,eventLabel:e.id,eventNonInt:!0,eventValue:e.delta,nonInteraction:!0,transport:”beacon”})}getCLS(e={e.delta=Math.round(1e3*e.delta),reportWebVitals(e)}),getFID(e={e.delta=Math.round(e.delta),reportWebVitals(e)}),getLCP(e={e.delta=Math.round(e.delta),reportWebVitals(e)});
}, {“9″:9,”165”:165}];
window.modules[“concert-ads.client”] = [function(require,module,exports){“use strict”;const customMappings={“crime-assault”:”Power”,”career money productivity”:”Power”,”feminism-politics-identity”:”Power”,”culture-media”:”Culture”,celebrity:”Culture”,living:”Style”,fashion:”Style”,shopping:”Style”,weddings:”Style”,beauty:”Style”,animals:”Self”,”learning creativity”:”Self”,”relationships-friends family”:”Self”,”mental health personality social behavior”:”Self”,”learning creativity”:”Self”,”health-wellness”:”Self”,parenting:”Self”,”relationships-sex dating marriage”:”Self”},striptags=require(78);function installConcertAds(){const e=new URLSearchParams(window.location.search).get(“concert_config_url”),t=e||window.concertConfigUrl;window._nymPermutive||console.warn(“ConcertAds initializing without Permutive”),window.concertAds=createConcertAds(),window.concertAds.loadRemoteConfig(t).then(function(){window.concertAds.install()})}function createConcertAds(){const e=getAuthStatus();let t=getData(“title”),n=window.location.href,i=getData(“section”),o=””,a=getData(“type”),r=getData(“vertical”);t(t=striptags(htmlDecode(t)).split(” “)),n=n.slice(n.lastIndexOf(“/”)+1);const l={kw:getKeywords(),network:r,page_type:a,entry_group:i,keywords:t,pn:n};return”Homepage”===a?o=”homepage”:”Section Page”===a(o=(o=window.location.pathname).replace(///g,””)),i-1===i.indexOf(” “)(o=i),customMappings[i](o=customMappings[i]),window.location.hostname.match(/.aws./i)(l.clay_sandbox_env=r),new window.ConcertAds({cmd:[],slots:[],dfpVariables:l,slugPath:”/”+o.replace(/—|–/g,”-“),loggedIn:”unauthenticated”!==e,paywallActive:getPaywallStatus(e)})}function getKeywords(){try{const e=window._nymPermutive.article.keywords;return ee.length0e.some(Boolean)?e:(document.querySelector(‘meta[name=”keywords”]’)||document.querySelector(‘meta[property=”article:tag”]’)).getAttribute(“content”).split(“,”).map(function(e){return e.trim()})}catch(e){return}}function getData(e){if(window._nymPermutive){if(e in window._nymPermutive)return window._nymPermutive[e];if(window._nymPermutive.articlee in window._nymPermutive.article)return window._nymPermutive.article[e];if(window._nymPermutive.usere in window._nymPermutive.user)return window._nymPermutive.user[e]}}function htmlDecode(e){var t=document.createElement(“div”);return t.innerHTML=e,0===t.childNodes.length?””:t.childNodes[0].nodeValue}function getAuthStatus(){const e=JSON.parse(localStorage.getItem(“auth0:profile”)),t=e?e[“http://nymag.com/app_metadata”]:null;return t?t.has_subscription?”entitled”:”unentitled”:”unauthenticated”}function getPaywallStatus(e){const t=getData(“totalCount”)return Boolean(t=3″entitled”!==e)}window.ConcertAds?installConcertAds():window.addEventListener(“concertAdsReady”,installConcertAds);
}, {“78”:78}];
window.modules[“latest-news.client”] = [function(require,module,exports){“use strict”;const dom=require(4),lazyLoad=require(119);function lazyLoadImage(a){const o=dom.find(a,”img[data-src]”),d=dom.findAll(a,”source[data-srcset]”),e=dom.closest(a,”.result”);if(oe){new lazyLoad.LazyLoader(e,o,d).init()}}function handleLazyLoad(a){(dom.findAll(a,”.result”)||[]).forEach(lazyLoadImage)}module.exports=(a={handleLazyLoad(a)});
}, {“4″:4,”119”:119}];
window.modules[“coral-talk.client”] = [function(require,module,exports){“use strict”;const dom=require(4),store=require(139),visibility=require(5),auth0=require(7),TALK_AUTH=”talk:auth_token”;let coralEmbed,hasEmbedScriptLoaded=!1,hasCoralTalkRendered=!1;function renderComments(e){if(hasEmbedScriptLoaded!hasCoralTalkRendered){const t={talk:`${e.CORAL_TALK_HOST}`,auth_token:getAuthToken(),asset_url:e.TALK_ASSET_URL};hasCoralTalkRendered=!0,coralEmbed=window.Coral.Talk.render(e.commentStreamContainer,t)}}function getAuthToken(e){var t=ee[“http://nymag.com/coral_talk”]||auth0.getTalkJwt(),i=store.get(TALK_AUTH);return t?it==i?i:(store.set(TALK_AUTH,t),t):(istore.remove(TALK_AUTH),null)}function coralLogin(){coralEmbed.login(getAuthToken())}function embedScript(e,t){let i=document.createElement(“script”);i.type=”text/javascript”,i.async=!0,i.src=e,i.addEventListener(“load”,()={hasEmbedScriptLoaded=!0,renderComments(t)}),document.getElementsByTagName(“head”)[0].appendChild(i)}function initVerificationMessage(){auth0.isAuthenticated()auth0.refresh();let e=document.querySelector(“.coral-talk-container”);auth0.isAuthenticated()!auth0.isEmailVerified()(e.insertAdjacentHTML(“beforebegin”,’n ‘),document.querySelector(“.activation-link”).addEventListener(“click”,sendVerificationEmail))}function sendVerificationEmail(){let e=document.querySelector(“.coral-talk-verify-address”);return fetch(`https://${window.location.host}/_user/verification-email?user_id=${auth0.getUserID()}`,{method:”GET”,headers:{“Content-Type”:”application/json”}}).then(e=e).then(t={t200==t.status?e.innerHTML=”Verification email was sent successfully”:e.innerHTML=`${t.statusText}`}).catch(e=console.log(e))}function attemptScriptEmbedding(e,t){initVerificationMessage(),hasEmbedScriptLoaded?renderComments(t):embedScript(t.EMBED_URL,t)}function addVisibilityListener(e,t){new visibility.Visible(e,{preloadThreshold:750}).on(“preload”,()=attemptScriptEmbedding(e,t))}function removeSignInButton(e){ee.parentNodedom.removeElement(e)}function init(e){const t=e.getAttribute(“data-coral-talk-host”),i=`${t}/static/embed.js`,n=`http://${document.documentElement.getAttribute(“data-uri”)}.html`,a=”true”===e.getAttribute(“data-maintenance”),o=-1!==n.indexOf(“@published”),r=e.querySelector(“.coral-talk-container”),s=e.querySelector(“.coral-talk-btn-signin”),c={CORAL_TALK_HOST:t,EMBED_URL:i,commentStreamContainer:r,signInButton:s,TALK_ASSET_URL:n};!ao(auth0.on(“init”,()={addVisibilityListener(e,c),s.addEventListener(“click”,()=auth0.showLogin()),auth0.isAuthenticated()removeSignInButton(s)}),auth0.on(“login”,t={removeSignInButton(s),getAuthToken(t),visibility.isElementInViewport(e)attemptScriptEmbedding(c),hasCoralTalkRenderedcoralLogin()}),auth0.on(“logout”,()={store.remove(TALK_AUTH)}))}module.exports=init;
}, {“4″:4,”5″:5,”7″:7,”139”:139}];
window.modules[“choreographer.client”] = [function(require,module,exports){“use strict”;const cookie=require(65),_get=require(10),_omit=require(97),{insertSpeedBumpComponents:insertSpeedBumpComponents}=require(101),{insertNewsletterSpeedBumpComponents:insertNewsletterSpeedBumpComponents}=require(102),{generateGrowl:generateGrowl}=require(100),gtm=require(3),{getLocalStorage:getLocalStorage,setLocalStorage:setLocalStorage}=require(47),{reportPaywall:reportPaywall}=require(77),moment=require(52),{getClientHistory:getClientHistory,updateClientHistoryWithPageData:updateClientHistoryWithPageData}=require(103),auth0=require(7),{Scenario:Scenario}=require(98),cidReadyEvent=”nymcid-set”,cidKey=”nymcid”,isProduction=require(9)(),logger=require(96).Logger(()=getLocalStorage(“show_choreographer_logs”)),{Verdon:Verdon}=require(99),TEST_COHORT_FLAG=”optimizeCohort”;function displayDebug(e=””){if(“entitlement”!==e.split(“#”).pop())return;const t=_get(window,”dataLayer[0].userDetails”,{}),o=_get(window,”dataLayer[0].pageDetails.featureTypes”,””),n=o.includes(“magazine”)?”magazine”:””,r=o.includes(“feature”)?”featured”:””,i=”Value of Article: “+(n||r||”article”),a=_get(JSON.parse(localStorage.getItem(“auth0:profile”)),”http://nymag.com/app_metadata”),l=”Authentication Status: “+(a?”authenticated”:”unauthenticated”),s=”Entitlement Status: “+(!!aa.has_subscription?”entitled”:”unentitled”),c=Object.keys(_omit(t,”newYorkMediaUserID”)).map(e=`${e}: ${t[e]}`),d=document.body,g=document.createElement(“div”),u=document.createElement(“ul”);[i,l,s,…c].map(e={const t=document.createElement(“li”);return t.classList.add(“debug-item”),t.appendChild(document.createTextNode(e)),t}).forEach(e={u.appendChild(e)}),u.classList.add(“data-bullets”),g.classList.add(“debug-choreographer”),g.classList.add(“display-debug-data”),g.appendChild(u),d.appendChild(g)}function initializeChoreographer(e){const t=e.getAttribute(“data-site-slug”),o=pageShouldCountAsView(t),n=auth0.isSubscriber();return t?getClientId(cidKey,8e3).then(e=(logger.h1(“Choreographer initialized”),logger.log(`clientId: ${e}`),logger.log(`page counts as a view: ${o}`),window.nymViewsResponse||(o?updateClientHistoryWithPageData(e,t):getClientHistory(e)))).then(r={if(logger.group(),logger.h2(“Client history”),logger.table(r),logger.groupEnd(),isNCR())return;const{scenarios:i,touts:a,testCohort:l=””}=readJSONFromScript(e.querySelector(“script”));if(!(l===(document.body.dataset[TEST_COHORT_FLAG]||””)))return;const s=i.map(e=Scenario(Object.assign({},e,{history:r,siteSlug:t,isSubscriber:n}))).filter(e=(logger.group(),logger.h2(“Evaluating scenarios”),logger.log(e),logger.groupEnd(),e.shouldShow)).reduce((e,{action:t,min:o,count:n})={const r=a.find(({value:e})=e===t);return r?(e[r.type]=r,e[r.type].viewCount=n-o,e):e},{});logger.group(),logger.h2(“Active Touts”),logger.log(s),logger.groupEnd(),executeTouts(e,o,s,r)}).catch(console.error):console.error(“siteSlug not found.”)}function documentIncludesComponent(e){return document.querySelector(`[data-uri*=”/${e}/”]`)}function pageShouldCountAsView(e){const t=”strategist”===e,o=[“product”,”product-grid”].find(e=documentIncludesComponent(e));return t||!o}function executeTouts(e,t,o={},n){const{global:r}=n,i={featureArticleCount:r.Feature||0,magazineArticleCount:r.Magazine||0,standardArticleCount:r.Article||0,totalArticleCount:r.total||0},a=window.concertAds,l=window.ConcertAds;if(o[“speed-bump”](_get(a,”adsBlocked”,!0)?insertSpeedBumpComponents(findTemplate(e,”speed-bump”),o[“speed-bump”],i):a.lifecycle.listenAndPlayback(l.events.slotsInserted,()={insertSpeedBumpComponents(findTemplate(e,”speed-bump”),o[“speed-bump”],i)})),o[“newsletter-speed-bump”](_get(a,”adsBlocked”,!0)?insertNewsletterSpeedBumpComponents(findTemplate(e,”newsletter-speed-bump”),o[“newsletter-speed-bump”],i):a.lifecycle.listenAndPlayback(l.events.slotsInserted,()={insertNewsletterSpeedBumpComponents(findTemplate(e,”newsletter-speed-bump”),o[“newsletter-speed-bump”],i)})),o[“branded-growl”]brandedTakeoverTime(o[“branded-growl”])t)return logger.log(“should show branded growl”),void growlManager(findTemplate(e,”branded-growl”),{baseTrackingData:i,body:o[“branded-growl”].brandedGrowlBody,contentClass:”branded-content”,cta:o[“branded-growl”].brandedGrowlCTA,imageUrl:o[“branded-growl”].imageUrl,link:o[“branded-growl”].brandedGrowlLink,name:o[“branded-growl”].name,scrollDepth:o[“branded-growl”].brandedGrowlScrollDepth,title:o[“branded-growl”].brandedGrowlTitle,toutType:”branded growl”},”#branded-growl”);if(to[“content-cliff”])contentCliff(findTemplate(e,”content-cliff”),o[“content-cliff”],o[“content-cliff”].viewsLeft,n);else{if(to[“cliff-takeover”])return/coronavirus news|pivot|paywall exclude/i.test(window._nymGtmPage.tags)?void(isProductionlogger.log(“Content cliff no-op due to excluded tag match: “,window._nymGtmPage.tags)):void cliffTakeover(findTemplate(e,”paywall-reader-interface”),i,o[“cliff-takeover”]);if(o[“growl-newletter”]||!o[“promo-growl”])if(o[“baby-growl”])babyGrowl(findTemplate(e,”paywall-reader-interface”),i,o[“baby-growl”]);else{if(!o[“warning-growl-2”])return o[“warning-growl”]shouldWarn()?(setContentCliffWarningDisplayed(),logger.log(“should show warning”),void growlManager(findTemplate(e,”warning-growl”),{contentClass:”warning-content”,title:o[“warning-growl”].warningGrowlTitle,name:o[“warning-growl”].name,scrollDepth:o[“warning-growl”].warningGrowlScrollDepth,cta:o[“warning-growl”].warningGrowlCTA,body:o[“warning-growl”].warningGrowlBody,link:o[“warning-growl”].warningGrowlLink,baseTrackingData:i,toutType:”warning growl”},”#warning-growl”)):void 0;warningGrowl(findTemplate(e,”paywall-reader-interface”),i,o[“warning-growl-2″])}else growlManager(findTemplate(e,”growl-message”),{contentClass:”promo-content”,title:void 0,name:o[“promo-growl”].name,scrollDepth:o[“promo-growl”].promoGrowlScrollDepth,cta:o[“promo-growl”].promoGrowlCTA,body:o[“promo-growl”].promoGrowlMessage,link:o[“promo-growl”].promoGrowlLink,baseTrackingData:i,toutType:”promo growl”},”#growl-message”)}}function shouldWarn(){return!contentCliffWarningDisplayed()}function getContentCliffWarningDisplayedKey(){const e=new Date,t=e.getMonth();return`content-cliff-warning-displayed-${e.getFullYear()}-${t}`}function contentCliffWarningDisplayed(){const e=getContentCliffWarningDisplayedKey();return”true”===getLocalStorage(e)}function setContentCliffWarningDisplayed(){const e=getContentCliffWarningDisplayedKey();return setLocalStorage(e,”true”)}function growlManager(e,{contentClass:t,scrollDepth:o,name:n,title:r,body:i,cta:a,link:l,baseTrackingData:s,toutType:c,imageUrl:d=null},g=””){const u=function(){const e=`n n n n n ${d?”:””}n n ${d?“:””}n ${a}n n n n `;return document.createRange().createContextualFragment(e)}(),p={creative:i,id:c,name:n,position:”growl”};u.querySelector(“a”).addEventListener(“click”,()=promotionReport(“Click”,s,p)),generateGrowl(e,g,{content:u,scrollDepth:o,onShow:()=promotionReport(“View”,s,p)})}function contentCliff(e,t,o,n){const{first_visit:r,global:i}=n,a={totalArticleCount:i.total||0,standardArticleCount:i.Article||0,featureArticleCount:i.Feature||0,magazineArticleCount:i.Magazine||0},{contentCliffBody:l}=t,s=document.importNode(e,!0).querySelector(“.content-cliff”),c=document.querySelector(“.article-content .clay-paragraph”),d={creative:l,id:”content cliff”,name:”Content Cliff”,position:”in-article”};s(c.insertAdjacentHTML(“afterend”,s.outerHTML),require(“content-cliff.client”)(document.querySelector(“.content-cliff”),{contentCliffOptions:t,viewsLeft:o,firstVisit:Number(r),onShow:()=promotionReport(“View”,a,d),onClickCliff:()=promotionReport(“Click”,a,d)}))}function verdonFosseToutSetter(e,t,o,n,r){const i=new Verdon({container:”.paywall-reader-interface”,url:”https://fosse.nymag.com/fosse/v1.6.1/index.html”}),a=e.type,l={email:auth0.getEmail(),isAuthenticated:auth0.isAuthenticated(),isSubscriber:auth0.isSubscriber()};n.classList.add(a),i.once(“frame:ready”,()={i.sendMessage(“tout:show”,{readerState:l,toutType:a,toutData:e}),ri.sendMessage(“frame:height”)}),i.on(“tout:visible”,()={promotionReport(“View”,t,o)}),i.on(“tout:sign-in”,()={auth0.showLogin(window.location.href)}),i.on(“tout:log-out”,()={auth0.logout()}),i.on(“tout:dismiss”,()={n.classList.add(“dismiss”),i.sendMessage(“tout:hide”,{toutType:a,toutData:e})}),i.on(“tout:subscribe”,()={e.ctaLink=replaceQueryParams(e.ctaLink),promotionReport(“Click”,t,o),window.open(e.ctaLink,”_blank”)}),i.on(“frame:height”,e={n.style.height=`${e.payload.currentHeight+10}px`}),i.on(“tout:view-account”,()={window.location.href=”https://subs.nymag.com/account”})}function promotionReport(e,t,o){const{creative:n,id:r,name:i,position:a}=o;t.event=`eec.promotion${e}`,t.ecommerce={promoView:{promotions:[{creative:n.trim(),id:r,name:i,position:a}]}},gtm.reportNow(t),reportPaywall({creative:n.trim(),eventType:e,id:r,name:i,position:a})}function babyGrowl(e,t,o){const n=document.importNode(e,!0).querySelector(“.paywall-reader-interface”),r={creative:o.babygrowlDescription,id:”baby growl”,name:”baby growl”,position:”growl”};document.body.appendChild(n),o.ctaLink=o.babygrowlCtaLink,o.ctaText=o.babygrowlMessage,o.headline=o.babygrowlDescription,verdonFosseToutSetter(o,t,r,n)}function cliffTakeover(e,t,o){const{cliffTakeoverCTA:n,cliffTakeoverCtaLink:r,cliffTakeoverDescription:i,cliffTakeoverImage:a,cliffTakeoverPromo:l,cliffTakeoverStatus:s,type:c}=o,d=document.importNode(e,!0).querySelector(“.paywall-reader-interface”),g=document.querySelectorAll(“.clay-paragraph”),u={creative:l,id:”content cliff”,name:”Content Cliff”,position:”growl”},p={cta:n,ctaLink:r,description:i,image:a,promo:l,status:s,type:c};document.body.appendChild(d),g.forEach((e,t)={0!==te.remove()}),verdonFosseToutSetter(p,t,u,d,!0),document.querySelector(“html”).style.overflowY=”hidden”,document.body.style.position=”fixed”}function warningGrowl(e,t,o){const{type:n,warningGrowl2CTA:r,warningGrowl2CtaLink:i,warningGrowl2Description:a,warningGrowl2Image:l,warningGrowl2Promo:s,warningGrowl2Status:c}=o,d=document.importNode(e,!0).querySelector(“.paywall-reader-interface”),g={creative:s,id:”warning growl”,name:”Warning Growl”,position:”growl”},u={cta:r,ctaLink:i,description:a,image:l,promo:s,status:c,type:n};document.body.appendChild(d),verdonFosseToutSetter(u,t,g,d,!0)}function getClientId(e=””,t=8e3){let o=cookie.get(e);return o?Promise.resolve(o):new Promise((o,n)={const r=setTimeout(()={n(`could not find key: ${e} on cookie after ${t}ms`)},t);window.addEventListener(cidReadyEvent,()={clearTimeout(r),o(cookie.get(e))})})}function readJSONFromScript(e){try{return JSON.parse(e.innerHTML)}catch(e){return{touts:[],scenarios:[]}}}function findTemplate(e,t=””){const o=ee.querySelector(`[data-template-id=”${t}”]`);return oo.content}function isNCR(){return/[?]source=ncr/.test(location.search)}function brandedTakeoverTime(e){const{startTime:t,endTime:o,startDate:n,endDate:r}=e,i=n.concat(” “,t),a=r.concat(” “,o),l=moment(i),s=moment(a);return moment().isBetween(l,s)}function optimizeDebugger(){return new Promise(e={const t=window.location.search||””;if(t){const o=new URLSearchParams(t),n=o.get(“optimize-attribute-name”)||””,r=o.get(“optimize-attribute-value”)||””,i=o.get(“optimize-delay”)||0,a=o.get(“optimize-cookie”)||!1;setTimeout(()={a(document.cookie=randomNymcid()),document.body.setAttribute(`data-${n}`,r),e()},i)}else e()})}function randomNymcid(){return`nymcid=${(()=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e=(e^16*crypto.getRandomValues(new Uint8Array(1))[0]e/4).toString(16)[0]))()}`}function replaceQueryParams(e){const t=window.location.search||””;if(t){const o=new URLSearchParams(t);if(e.includes(“?”)){const t=e.split(“?”),n=new URLSearchParams(t[1]);for(let e of o.entries())n.set(e[0],e[1]);e=`${t[0]}?${n.toString()}`}else e=`${e}?${o.toString()}`}return e}module.exports=(e=new Promise(e={auth0.on(“init”,()={e()})}).then(()=optimizeDebugger()).then(()={displayDebug(window.location.href),initializeChoreographer(e)}));
}, {“3″:3,”7″:7,”9″:9,”10″:10,”47″:47,”52″:52,”65″:65,”77″:77,”96″:96,”97″:97,”98″:98,”99″:99,”100″:100,”101″:101,”102″:102,”103″:103,”content-cliff.client”:”content-cliff.client”}];
window.modules[“growl.client”] = [function(require,module,exports){“use strict”;require(163);const _some=require(86),dom=require(4),localStorageKeyRoot=”slideout-“,{getLocalStorage:getLocalStorage,setLocalStorage:setLocalStorage}=require(47);module.exports=((e,t)={const{content:o,onShow:s,scrollDepth:r=50,dismissable:i=!1}=t,n=Number(r||e.getAttribute(“data-display-at-page-scroll-percentage”)),a=dom.find(e,”.modal”),l=”slideout-“+(t.id||e.getAttribute(“id”)),c=getLocalStorage(l);function d(){a.classList.add(“hidden”)}function g(){setLocalStorage(l,!0),d()}ic?e.remove():(oe.querySelector(“[data-content]”).appendChild(o),nfunction(e=50){const t=new IntersectionObserver(e={_some(e,”isIntersecting”)(a.style.top=”inherit”,a.classList.remove(“hidden”,”initial”),”function”==typeof ss(),t.unobserve(a))});a.style.top=`${document.querySelector(“body”).scrollHeight/(100/e)}px`,t.observe(a)}(n),e.querySelector(“.dismiss-modal”).addEventListener(“click”,()=i?g():d()),e.addEventListener(“growl:hide”,d),e.addEventListener(“growl:dismiss”,g))});
}, {“4″:4,”47″:47,”86″:86,”163”:163}];
window.modules[“speed-bump.client”] = [function(require,module,exports){“use strict”;const gtm=require(3),visibility=require(5);module.exports=((e,i)={if(!i||!e)return;const{name:o,speedbumpDescription:r,speedbumpMessage:t,speedbumpLink:n,baseTrackingData:s}=i,c=new visibility.Visible(e,{shownThreshold:.5});e.querySelector(“.description”).innerHTML=r,e.querySelector(“.promo-link”).innerHTML=t,e.querySelector(“.promo-link”).href=n,e.classList.remove(“collapsed”),c.on(“shown”,function(){if(visibility.isElementNotHidden(e)){let e=s;e.event=”eec.promotionView”,e.ecommerce={promoView:{promotions:[{name:o,creative:r,id:”speed bump”,position:”in-article”}]}},gtm.reportNow(e),c.destroy()}}),e.querySelector(“.promo-link”).addEventListener(“click”,function(){let e=s;e.event=”eec.promotionClick”,e.ecommerce={promoClick:{promotions:[{name:o,creative:r,id:”speed bump”,position:”in-article”}]}},gtm.reportNow(e)})});
}, {“3″:3,”5”:5}];
window.modules[“newsletter-speed-bump.client”] = [function(require,module,exports){“use strict”;const{loadRecaptcha:loadRecaptcha}=require(130),_isEmpty=require(111),_set=require(131),_kebabCase=require(104),gtm=require(3),auth0=require(7),visibility=require(5),COMPONENT_NAME=”newsletter-speed-bump”,EMAIL_VALID_REGEX=/^(?:(?:[^()[]\.,;:s@”]+(?:.[^()[]\.,;:s@”]+)*)|(“.+”))@(?:(?:[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(?:(?:[a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/,LOCAL_STORAGE_KEY_NAME=”newsletterSpeedBumpSignUpStatus_”,MAX_EMAIL_LENGTH=50;function setClass(e,t){e.classList.add(t)}function getRequestUrl(e){return e.getAttribute(“action”)}function getPageType(e){const t=e?e.getAttribute(“content”):””;return _kebabCase(t)}function getPayloadObject(e,t,r,s){const n={};return _set(n,`vars.source_${t}`,`${COMPONENT_NAME}_${s}`),n.email=r,n.lists={},n.lists[t]=!0,n.recaptcha=e,n.signuppage=`${document.location.href}_${t}`,n[`source_${t}`]=”newsleter_speedbump”,n}module.exports=((e,t)={if(!t||!e)return;if(“success”===window.localStorage.getItem(`${LOCAL_STORAGE_KEY_NAME}${t.newsletterSpeedBumpNewsletterId}`))return void e.remove();const{baseTrackingData:r,name:s,newsletterSpeedBumpCtaCopy:n,newsletterSpeedBumpDescription:i,newsletterSpeedBumpHeadline:a,newsletterSpeedBumpNewsletterId:o,newsletterSpeedBumpThankYouMessage:c,RECAPTCHA_PUBLIC_KEY:l}=t,u=auth0.getEmail(),d=e.querySelector(“.description”),p=e.querySelector(“.input.email”),m=e.querySelector(“.error-message”),h=e.querySelector(“.form”),E=e.querySelector(“.form-container”),y=e.querySelector(“.form-recaptcha-container”),g=e.querySelector(“.headline”),v=e.querySelector(“.container”),S=e.querySelector(“.input.newsletterId”),_=e.querySelector(“.recaptcha-wrapper”),L=e.querySelector(“.input.submit”),w=e.querySelector(“.text-container”),q=new visibility.Visible(e,{shownThreshold:.5});u(p.removeAttribute(“required”),e.classList.add(“signed-in”)),d.innerHTML=i,g.innerHTML=a,S.value=o,L.value=n,q.on(“shown”,function(){if(visibility.isElementNotHidden(e)){const e=r;e.event=”eec.promotionView”,e.ecommerce={promoView:{promotions:[{creative:`${a} | ${i}`,id:”newsletter speed bump”,name:s,position:”in-article”}]}},gtm.reportNow(e),q.destroy()}}),p.addEventListener(“focus”,()={_.classList.remove(“hidden”)}),h.addEventListener(“submit”,t={t.preventDefault();const s=new XMLHttpRequest,n=u||e.querySelector(“.input.email”).value,i=getPageType(document.querySelector(‘meta[name=”type”]’));u||!(n.length=50)EMAIL_VALID_REGEX.test(n)?loadRecaptcha(l,”newsletterSubmit”,!0).then(a={s.open(“POST”,getRequestUrl(h),!0),s.setRequestHeader(“Content-Type”,”application/json;charset=UTF-8″),s.addEventListener(“load”,s={const a=s.currentTarget||s.target;if(a.status=200a.statussetClass(e,”success”)),[d,E,m,_].forEach(e=setClass(e,”hidden”)),g.innerHTML=c.replace(“{{email}}”,n),m.innerHTML=””;const s=JSON.parse(a.response),l=_isEmpty(s.sailthruIds)?””:Object.values(s.sailthruIds)[0],u=r;u.event=”eec.purchase”,u.ecommerce={purchase:{actionField:{id:l,revenue:”0.00″},products:[{category:”newsletter signup”,name:S.value,quantity:1,variant:`${COMPONENT_NAME} – ${i}`}]}},gtm.reportNow(u),setTimeout(()={e.classList.add(“hidden”)},5e3),t.preventDefault()}else m.innerHTML=”*An error has occurred. Please try again.”}),s.addEventListener(“error”,()={m.classList.remove(“hidden”),m.innerHTML=”*An error has occurred. Please try again.”}),s.send(JSON.stringify(getPayloadObject(a,o,n,i))),t.preventDefault()}):m.innerHTML=”*Please enter a valid email”})});
}, {“3″:3,”5″:5,”7″:7,”104″:104,”111″:111,”130″:130,”131”:131}];
window.modules[“content-cliff.client”] = [function(require,module,exports){“use strict”;const auth0=require(7),isProduction=require(9)(),logger=require(96).Logger(()=!isProduction);module.exports=((t,e)={if(!e)return;logger.group(),logger.h2(“Content Cliff”);const{contentCliffOptions:o,firstVisit:n,onShow:r,onClickCliff:i}=e,c=300,l=Number(document.querySelector(“[data-components-count]”).getAttribute(“data-components-count”)),u=3,s=[“taboola”],a=”#content-cliff”,f=t,d=function(){let t=0;return document.querySelectorAll(“[data-word-count]”).forEach(function(e){t+=Number(e.getAttribute(“data-word-count”)||0,10)||0}),t}(),g=function(t,e){function o(t){return Math.round(t.getTime()/1e3/60)}const n=o(t),r=o(e);return n-r}(new Date,new Date(n)){},show:()={r(),function(){(p=function(t=””){return document.querySelectorAll(`${t} ~ *`)}(a)).forEach(t=t.remove()),function(){const{contentCliffStatus:e,contentCliffPromo:n,contentCliffCTA:r,contentCliffURL:c}=o,l=t.querySelector(“[data-content-cliff-status]”),u=t.querySelector(“[data-content-cliff-promo]”),s=t.querySelector(“[data-content-cliff-cta]”);ss.setAttribute(“href”,c),ss.insertAdjacentHTML(“afterbegin”,r),ll.insertAdjacentHTML(“afterbegin”,e),uu.insertAdjacentHTML(“afterbegin”,n),ss.addEventListener(“click”,i)}(),f.classList.remove(“collapsed”),e=s,e.forEach(t={const e=document.querySelector(`[data-uri*=”/${t}/”]`);ee.remove()}),m.addEventListener(“click”,()=auth0.showLogin());var e}()}}[function(){if(dl)return logger.log(`article word count ${d} was too short for the cliff`),logger.log(`article components count is smaller than ${u} and not eligible for the cliff`),”noop”;if(gisProduction)return”noop”;glogger.log(`First session check was ${g}! Showing the cliff anyway: isProduction = ${isProduction}`);if(/coronavirus news|pivot|paywall exclude/i.test(window._nymGtmPage.tags))return isProductionlogger.log(“Content cliff no-op due to excluded tag match: “,window._nymGtmPage.tags),”noop”;return”show”}()],m=t.querySelector(“.content-cliff-login”);let p=[];return logger.log(`should noop in production due to 30-minute first-session window: ${g}`),logger.groupEnd(),auth0.on(“login”,()={f.classList.add(“collapsed”),(p=Array.prototype.slice.call(p,0).reverse()).forEach(t=f.insertAdjacentElement(“afterend”,t)),p=[]}),”function”==typeof h?h():void 0});
}, {“7″:7,”9″:9,”96”:96}];
window.modules[“ad.client”] = [function(require,module,exports){“use strict”;const _forEach=require(64),_max=require(66),_find=require(67),_includes=require(68),$visibility=require(5),dom=require(4),MAX_MOBILE_RE=/[[0-9]{1,3}-(768|600)/,MAX_TABLET_RE=/[0-9]{3}-(1024|1180)/,DESKTOP_RE=/(1024|1180)-plus/,AD_NAME_SELECTOR='[data-name^=”/4088/”], [data-name^=”/172968584/”]’;var flaggedComponentsOnPage=function(){var e,t=document.querySelector(“.article-content”),n=[];return t_forEach([‘.article-sidebar[data-width=”large”]’],function(a){e=t.querySelectorAll(a),_forEach(e,function(e){n.push(e)})}),n}();function getElementsVerticalOverlap(e,t){var n=e.getBoundingClientRect(),a=t.getBoundingClientRect();return!(n.topa.bottom||n.right
a.right)?a.bottom-n.top:0}function getElementsOverlapAmount(e,t){var n,a=[];return _forEach(t,function(t){n=getElementsVerticalOverlap(e,t),a.push(n)}),_max(a)}function getNYMagAdChannel(e){var t=””;switch(e){case”company information”:t=”company”;break;case”new york guides things to do”:t=”to-do”;break;case”other”:t=e;break;case”sponsored guides”:t=”s-guides”;break;case”urbanist”:t=”urbanist”;break;default:t=””}return t}function appendSectionToDfpAds(){var e,t,n,a=document.querySelector(“meta[property=’og:site_name’]”),o=document.querySelector(“article[data-content-channel]”),i=document.querySelectorAll(AD_NAME_SELECTOR);a(e=a.content),o(t=o.getAttribute(“data-content-channel”).toLowerCase()),t”New York Magazine”===e(n=getNYMagAdChannel(t)),nappendToAdd(i,n)}function appendPageTypeToDfpAds(){let e=document.querySelector(“.body div”)||{},t=document.querySelector(“body”)||{},n=ee.classList,a=nn.length?[…n]:[],o=_find(a,e=e.includes(“feature”)),i=document.querySelectorAll(AD_NAME_SELECTOR);n(o?appendPageNumberPositionToDfpAds(i,”Feature”):n.contains(“lede-gallery-content”)?appendPageNumberPositionToDfpAds(i,”Image_Gallery”):t.classList.contains(“one-column-layout”)?appendPageNumberPositionToDfpAds(i,”One_Column_Article”):n.contains(“article-content”)appendPageNumberPositionToDfpAds(i,”Standard_Article”))}function appendPageNumberPositionToDfpAds(e,t){const n=[“528×379″,”1100×200″,”1×1”];let a=e||[],o=dom.find(“.ad-splash”),i=dom.find(“section.wrapper”),r=dom.find(“.secondary”),d=dom.find(“.bottom”),s=dom.find(“.primary”),c={IA:{xsMobile:{normal:1,grid:1},mobile:{normal:1,grid:1},tablet:{normal:1,grid:1},desktop:{normal:1,grid:1}},BA:{xsMobile:{normal:1,grid:1},mobile:{normal:1,grid:1},tablet:{normal:1,grid:1},desktop:{normal:1,grid:1}}};a.forEach(e={let a,l=””,u=e.dataset.sizes,m=e.classList.value,p=_find(n,e=u.includes(e)),g=e.parentElement.classList.contains(“image-gallery-mobile-grid-ad”);if(u!p||e.setAttribute(“data-name”,e.getAttribute(“data-name”)+”/”+t),iu!p){let n,u;if(oo.contains(e)?l=”LB”:ii.contains(e)?l=”IA”:(rr.contains(e)||dd.contains(e)||ss.contains(e))(l=”BA”),c[l]){if(!(u=checkForAdViewport(m)))return;g?(n=c[l][u].grid,c[l][u].grid++):(n=c[l][u].normal,c[l][u].normal++),a=n{e.setAttribute(“data-name”,e.getAttribute(“data-name”)+”/”+t)})}function injectGoogleScripts(){var e=document.createElement(“script”),t=document.createElement(“script”),n=document.createDocumentFragment();e.src=”//www.googletagservices.com/tag/js/gpt.js”,e.async=”async”,t.src=”//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”,t.async=”async”,n.appendChild(e),n.appendChild(t),document.getElementsByTagName(“body”)[0].appendChild(n)}appendSectionToDfpAds(),appendPageTypeToDfpAds(),injectGoogleScripts(),DS.controller(“ad”,[“adService”,function(e){return function(t){var n,a,o,i=t.getAttribute(“data-offload”),r=new $visibility.Visible(t,{preloadThreshold:i?window.innerHeight/4:200}),d=!1;function s(){window.innerWidth=1180t.parentElement.classList.contains(“ad-repeat”)flaggedComponentsOnPage.length(a=getElementsOverlapAmount(t,flaggedComponentsOnPage),o=parseInt(t.parentElement.getAttribute(“data-gap”),10),t.style.marginTop=o+30+a+”px”)}function c(){s(),e.refresh(n)}function l(){e.remove(n),d||(d=!0,r.on(“shown”,c))}document.querySelector(‘script[data-name=”concert-ads”]’)||(n=e.create(t),r.preload$visibility.isElementNotHidden(t)?(e.addToPageLoadQueue(n),ir.on(“hidden”,l)):(r.on(“preload”,function(){!n.slot$visibility.isElementNotHidden(t)(s(),e.load(n))}),ir.on(“hidden”,l)),this.adData=n)}}]);
}, {“4″:4,”5″:5,”64″:64,”66″:66,”67″:67,”68”:68}];
window.modules[“sticky-list.client”] = [function(require,module,exports){“use strict”;const dom=require(4),$gtm=require(3),_get=require(10),stickyContainer=require(“sticky-container.client”);DS.controller(“sticky-list”,[“$window”,function(t){var e=require(241),i=40;function s(s){let n,a=function(t){let s=t[0],n=0,a=e.height(this.contentArea),h=this.contentArea.offsetHeight;if(this.containersthis.containers.length){if(s.target.offsetHeight){let t=this.breakouts.findIndex(t=(function(t,e){return t!==document.bodyt.contains(e)})(t,s.target.parentElement));if(t-1this.breakouts[t]){let e=this.breakouts[t].offsetHeight+i;this.containers[t].style.marginBottom=`${e}px`}}if(h!==this.currentHeigh){const t=e.rect(this.rightRail,this.contentArea);this.currentHeight=h,this.rightRail.style.height=a-t.top-r(this.rightRail)+”px”,this.breakouts.forEach((s,a)={let r=e.rect(s,this.contentArea),h=e.intersection(r,t);if(h){let e,s=h.top-t.top-n;n+=s+h.height+i,this.containers[a].style.height=`${s}px`,this.containers[a].style.minHeight=`${s}px`,e=this.breakouts[a].offsetHeight+i,this.containers[a].style.marginBottom=`${e}px`}})}}}.bind(this);t.innerWidth{let n=_get(e,”dataset.name”,””),a=n.slice(-1)||”1″,r=[“Image_Gallery”,”Standard_Article”,”Feature”,”One_Column_Article”].find(t=n.includes(t))||””;this.rightRail.parentElement.classList.contains(“tertiary”)r(e.dataset.name=parseInt(i,10)+se===t)return i.slice(s+1).reduce((t,e)=t+(e.offsetHeight||0),0)||0}return s.prototype={setPins:function(){const t=e.rect(this.rightRail,this.contentArea),i=e.height(this.contentArea),s=i-t.top-r(this.rightRail);let n,h,o,l;if(this.populatePinsList(),s1t.classList.add(“multi-children”),l=0;l{const t=Array.from(e.children);let o,a,i=0;for(;i{handleLazyLoad(a)});
}, {“4″:4,”119”:119}];
window.modules[“article.client”] = [function(require,module,exports){“use strict”;const $visibility=require(5),$gtm=require(3),ImageZoom=require(80),$sentry=require(81);DS.controller(“article”,[function(){var e=40;function t(t){const i=document.querySelector(“.wrapper .tertiary”),n=t.querySelector(“.lede-image-wrapper.full-bleed”),r=t.querySelector(“.attribution.full-bleed”),o=t.querySelector(“.article-header”),l=o?o.querySelector(“img”):null,c=function(){let t=o.getBoundingClientRect().height;n(t=n.getBoundingClientRect().height+25,r(t+=r.getBoundingClientRect().height)),i.style.paddingTop=t+e+”px”};io(window.innerWidtht(e)),document.addEventListener(“closeBanner”,function(){i(e)}),$sentry.initializeIDListeners()}}]);
}, {“3″:3,”5″:5,”80″:80,”81”:81}];
window.modules[“tags.client”] = [function(require,module,exports){“use strict”;const _forEach=require(64);DS.controller(“tags”,[function(){function e(e){this.el=e}return e.prototype={events:{“a.more click”:”showAll”},showAll:function(e){var t=e.target,o=this.el.querySelectorAll(“li.hidden”);_forEach(o,function(e){e.classList.remove(“hidden”)}),t.parentNode.removeChild(t),e.preventDefault()}},e}]);
}, {“64”:64}];
window.modules[“video.client”] = [function(require,module,exports){“use strict”;const $visibility=require(5),thirdParty=require(118);function replaceRight(i,e,n){var t=i.lastIndexOf(e);return-1===t?i:i.substring(0,t)+n+i.substring(t+e.length)}DS.controller(“video”,[function(){var i=.05,e=document.querySelectorAll(“.video-component”).length=3;function n(i){var e=i.innerHTML;e=replaceRight(e=e.replace(“x3c!–“,””),”–x3e”,””),i.innerHTML=e}return thirdParty.includeScript(“https://www.youtube.com/iframe_api”),function(t){e?function(e){var t=new $visibility.Visible(e,{shownThreshold:i});t.on(“shown”,n.bind(this,e)),t.on(“hidden”,function(i){i.style.height=i.clientHeight+”px”,i.innerHTML=”x3c!–“+i.innerHTML+”–x3e”}.bind(this,e))}(t):n(t)}}]);
}, {“5″:5,”118”:118}];
window.modules[“memo-pixel.client”] = [function(require,module,exports){“use strict”;(()={var e=document.createElement(“script”);e.async=!0,e.type=”text/javascript”,e.src=document.location.protocol+”//d16xpr36wrmcmk.cloudfront.net/js/memo.js”,(document.getElementsByTagName(“head”)[0]||document.getElementsByTagName(“body”)[0]).appendChild(e)})(),module.exports=(()={});
}, {}];
window.modules[“affiliate-links.client”] = [function(require,module,exports){“use strict”;const dom=require(4),_includes=require(68),_startsWith=require(72),globalClick=require(71),visit=require(70),productSubtags=require(73);var excludedHostnames,skimlinksBaseUrl,skimlinksId,visitState,productUrl,ignoreDataAttribute=”data-affiliate-links-ignore”,article=window.document.querySelector(“article”),isSponsored=article”Sponsor Story”===article.getAttribute(“data-type”);function setExcludedHostnames(t){excludedHostnames=(t.getAttribute(“data-excluded-hostnames”)||””).toLowerCase().split(“,”)}function isSkimLink(t){return!!(skimlinksId=t.getAttribute(“data-skimlinks”))}function isExcluded(t){return _includes(excludedHostnames,t)||_startsWith(t,”www.”)_includes(excludedHostnames,t.slice(4))||isSponsored}function isUrlProtocol(t){return 0!==t.indexOf(“mailto:”)0!==t.indexOf(“javascript:”)}function getTargetHostname(t){return(t.hostname||t.host||t.href||””).toLowerCase()}function convertSkimlinkUrl(t){return(skimlinksBaseUrl=skimlinksBaseUrl||skimlinksId?”//go.redirectingat.com/?xs=1id=”+skimlinksId+”sref=”+encodeURIComponent(window.location.href)+”url=”:void 0)skimlinksBaseUrl+encodeURIComponent(t)}function hasIgnoreAttribute(t){return”true”===t.getAttribute(ignoreDataAttribute)}function convertSkimlink(t){var e,i,r,s=dom.closest(t.target,”a”),n=ss.href;nn.length!t.defaultPrevented(i=getTargetHostname(s),!isUrlProtocol(n)||isExcluded(i)||hasIgnoreAttribute(s)||productSubtags.getAffiliate(n)||(e=convertSkimlinkUrl(n))(productUrl=n,r=ss.getAttribute(“data-track-id”),s.href=productSubtags.ensureSubtag({url:e,productId:r,visitState:visitState,anchorEl:s})))}function revertSkimLink(t){var e=dom.closest(t.target,”a”),i=ee.href||””;i.includes(skimlinksBaseUrl)ii.lengthproductUrl(e.href=productUrl)}module.exports=(t={const e=isSkimLink(t);visit.onceReady(function(t){visitState=t}),e(setExcludedHostnames(t),globalClick.addHandler(convertSkimlink,revertSkimLink))});
}, {“4″:4,”68″:68,”70″:70,”71″:71,”72″:72,”73”:73}];
window.modules[“gtm.client”] = [function(require,module,exports){“use strict”;const $gtm=require(3);DS.controller(“gtm”,[function(){return function(t){$gtm.init(t.getAttribute(“data-container-id”),t.getAttribute(“data-site-slug”))}}]);
}, {“3”:3}];
window.modules[“global-nav.client”] = [function(require,module,exports){“use strict”;const dom=require(4),auth0=require(7),signInButton=dom.find(“.user-signin”),signOutButton=dom.find(“.user-signout”),globalNav=dom.find(‘[class^=”global-nav”]’),body=dom.find(“body”),dropdownItems=dom.findAll(“.dropdown-wrap”),gtm=require(3),pageUri=require(159).getPageUri();function closeDropdowns(e){let n=globalNav.querySelectorAll(“.dropdown.open”);dropdownItems.forEach(function(t){let o=t.querySelector(“.dropdown”);!n||t.contains(e.target)27!==e.keyCode||o.classList.remove(“open”)})}function gtmSendReport(e,n,t){let o={eventCategory:”ecommerce”,eventAction:”componentClick”,brand:e,dimension23:”global-nav”,list:pageUri,pageZone:”header”,variant:”nav-link”};”global-nav-link”===t(o.eventLabel=n.href),gtm.reportNow(o)}function init(e){auth0.on(“init”,()={signInButton.addEventListener(“click”,function(e){e.preventDefault(),auth0.showLogin()}),signOutButton.addEventListener(“click”,function(e){e.preventDefault(),auth0.logout(),gtmSendReport(“Sign Out”,e.target,”user-info-link”)}),auth0.isAuthenticated()e.classList.add(“signed-in”),auth0.isSubscriber()e.classList.add(“subscribed”),e.querySelectorAll(“.user-link”).forEach(e={e.classList.add(“active”)})}),auth0.on(“login”,()={e.classList.add(“signed-in”),auth0.isSubscriber()e.classList.add(“subscribed”)}),auth0.on(“logout”,()={e.classList.remove(“signed-in”),e.classList.remove(“subscribed”)})}dropdownItems.forEach(function(e){e.addEventListener(“click”,function(){e.querySelector(“.dropdown”).classList.toggle(“open”)})}),body.addEventListener(“click”,closeDropdowns),document.addEventListener(“keydown”,closeDropdowns),globalNav.addEventListener(“click”,function(e){let n=e.target;n.classList.contains(“global-nav-track”)gtmSendReport(n.text,n,”global-nav-link”)}),module.exports=init;
}, {“3″:3,”4″:4,”7″:7,”159”:159}];
window.modules[“aaa-module-mounting.legacy”] = [function(require,module,exports){“use strict”;const eventify=require(187),_pickBy=require(162),_each=require(322),fingerprintjs2=require(321),DS=require(320);function registerGlobals(){window.DS=DS,window.Eventify=eventify,window.Fingerprint2=fingerprintjs2,DS.value(“Eventify”,eventify),DS.value(“Fingerprint2”,fingerprintjs2),DS.value(“$document”,window.document),DS.value(“$window”,window)}function mountDollarSliceComponents(){DS.service(“components”,[“$document”,”$module”,function(e,n){var r=_pickBy(n.definitions,e=e.providerStrategy===n.providers.controller),o=Object.keys(r);function t(e){return r={try{n.get(e,r)}catch(e){logMountError(r,e)}}}_each(o,n={var r=e.querySelectorAll(‘[data-uri*=”/_components/’+n+’/”]’),o=e.querySelectorAll(‘[data-uri$=”/_components/’+n+'”]’);_each(r,t(n)),_each(o,t(n))}),this.components=o}]),DS.get(“components”)}function logMountError(e,n){const r=e.outerHTML.slice(0,e.outerHTML.indexOf(e.innerHTML));console.error(“Error attaching controller to “+r,n)}registerGlobals(),document.addEventListener(“DOMContentLoaded”,()={mountDollarSliceComponents()});
}, {“162″:162,”187″:187,”320″:320,”321″:321,”322”:322}];
window.modules[“ads.legacy”] = [function(require,module,exports){“use strict”;const _map=require(74),_forEach=require(64),_isString=require(206),_intersectionWith=require(323),_isEqual=require(212),_each=require(322),_debounce=require(122),_sortBy=require(145),page=require(159),visit=require(70);DS.service(“adService”,[“Eventify”,”$cid”,”$document”,”$window”,function(e,t,a,i){var o,n,s,r,d,c,l,u,g,p,m={},h=this,f=[],b=visit.getQueryParamsObject([“utm_campaign”]),w=document.querySelector(‘script[data-type=”ad-a9″]’);document.querySelector(‘script[data-name=”concert-ads”]’)||(i.NYM={},i.NYM.analytics={},i.NYM.analytics.adStartTime=i.performance.now(),i.googletag=i.googletag||{},i.googletag.cmd=i.googletag.cmd||[],c=i.googletag,w(i.googletag.cmd=i.googletag.cmd||[],i.googletag.cmd.push(function(){i.googletag.pubads().disableInitialLoad()}),l=i.setInterval(function(){void 0!==window.apstagvoid 0!==window.apstag.timeout(i.clearInterval(l),window.apstag.cleared=!0,l=null)},10),setTimeout(function(){l(i.clearInterval(l),i.googletag.pubads().refresh(),window.apstag||console.log(“MESSAGE: Timeout for A9 load exceeded, aborting”))},500)),u=document.createElement(“script”),g=document.createDocumentFragment(),p=document.getElementsByTagName(“head”)[0],u.src=”https://z.moatads.com/voxprebidheader841653991752/moatheader.js”,g.appendChild(u),p.insertBefore(g,p.firstChild),o=function(e){var t,a,o=e.data,n=[];return o.loaded?e:(o.loaded=!0,t=null,(t=o.sizes?c.defineSlot(o.name,o.sizes,o.id).addService(c.pubads()):c.defineOutOfPageSlot(o.name,o.id).addService(c.pubads())).setTargeting(“adid”,o.id),b.hasOwnProperty(“utm_campaign”)t.setTargeting(“utmcamp”,b.utm_campaign),a=h.getAdCount(o.label),t.setTargeting(“label”,o.label+”_”+o.site+”-“+a),c.display(o.id),c.pubads().addEventListener(“slotOnload”,function(){i.NYM.analytics.firstAdLoadTime||(i.NYM.analytics.firstAdLoadTime=i.performance.now(),i.NYM.analytics.firstAdLoadLabel=e.data.label)}),(n=v(o))?window.apstagwindow.apstag.clearedwindow.apstag.fetchBids({slots:[n],timeout:window.apstag.timeout},function(){c.cmd.push(function(){window.apstag.setDisplayBids(),c.pubads().refresh([t],{changeCorrelator:!1})})}):c.pubads().refresh([t],{changeCorrelator:!1}),e.slot=t,e)},n=function(e){var a,i,o,n=t(),s=e.getAttribute(“data-name”),r=e.getAttribute(“data-sizes”),d=e.getAttribute(“data-label”),c=e.getAttribute(“data-site”);n=e.id,rr.length?(r=r.split(“,”),a=[],_map(r,function(e){e=e.split(“x”),i=parseInt(e[0]),o=parseInt(e[1]),a.push([i,o])})):(e.classList.add(“oop”),a=!1),this.data={id:n,name:s,sizes:a,loaded:!1,label:d,site:c},m[n]=this},r=function(e){c.cmd.push(function(){var t=o(e);m[e.data.id]=t})},s=function(e){var t=[];e.slot?(t=v(e))window.apstagwindow.apstag.clearedwindow.apstag.fetchBids({slots:[t],timeout:window.apstag.timeout},function(){c.cmd.push(function(){window.apstag.setDisplayBids(),c.pubads().refresh([e.slot],{changeCorrelator:!1})})}):er(e)},c.cmd.push(function(){var e,t,o,n=page.getMeta(“article:tag”),s=page.getMeta(“author”),r=i.location.href,d=(e=a.head.querySelector(“.head-gtm”),t=a.body.querySelector(“.gtm”),e”top”===e.getAttribute(“data-gtm”)?”gtmtop”:t”bottom”===t.getAttribute(“data-gtm”)?”gtmbottom”:””);o=[],_forEach([n,s,d],function(e){_forEach(e.split(“,”),function(e){(e=e.trim().toLowerCase().replace(/s/g,”-“).replace(/’|’/g,””)).lengtho.push(e)})}),c.pubads().setTargeting(“kw”,o),c.pubads().setTargeting(“entry_group”,o),r=r.slice(r.lastIndexOf(“/”)+1),c.pubads().setTargeting(“pn”,r),c.companionAds().setRefreshUnfilledSlots(!0),c.pubads().enableAsyncRendering(),c.enableServices()}),this.load=r,this.create=function(e){return new n(e)},this.refresh=function(e){var t;_isString(e)?(t=this.getById(e),s(t)):s(e)},this.remove=function(e){var t=e.data.id;a.getElementById(t).innerHTML=””},this.getAdCount=function(e){var t,a=0,i=Object.keys(m);return _each(i,function(i){(t=m[i]).data.loadedt.data.label===ea++}),a},this.getById=function(e){return m[e]},d=_debounce(function(){var e={TopLeaderboard:1,RightColTopMPU:2,outOfPage:99,”homepageTakeover/TopLeaderboard”:1},t=_sortBy(f,function(t){return e[t.data.label]||10});_forEach(t,function(e){return e.data.sizes?r(e):i.setTimeout(function(){r(e)},2e3)}),f=[]},10),this.addToPageLoadQueue=function(e){f.push(e),d()});function v(e){var t,a=e.sizes;return a=_intersectionWith(a,[[970,250],[970,90],[728,90],[300,600],[300,250],[320,100],[320,50]],_isEqual),e.sizese.sizes.length(t={slotID:e.id,sizes:a,slotName:e.label}),t}}]);
}, {“64″:64,”70″:70,”74″:74,”122″:122,”145″:145,”159″:159,”206″:206,”212″:212,”322″:322,”323”:323}];
window.modules[“cid.legacy”] = [function(require,module,exports){“use strict”;DS.service(“$cid”,function(){var r=Math.floor(100*Math.random());return function(){return”cid-“+ ++r}});
}, {}];
window.modules[“facebook.legacy”] = [function(require,module,exports){“use strict”;DS.service(“facebook”,[function(){this.fb=function(i){window.FBwindow.FB[i].apply(this,Array.prototype.slice.call(arguments,1))}}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==”function”require;if(!ua)return a(o,!0);if(i)return i(o,!0);var f=new Error(“Cannot find module ‘”+o+”‘”);throw f.code=”MODULE_NOT_FOUND”,f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==”function”require;for(var o=0;o typeof key === ‘string’ key.match(/.legacy$/)).forEach(key = window.require(key));
}

function tryToMount(fn, el, name) {
try {
fn(el); // init the controller
} catch (e) {
const elementTag = el.outerHTML.slice(0, el.outerHTML.indexOf(el.innerHTML));
console.error(`Error initializing controller for “${name}” on “${elementTag}”`, e);
}
}
/**
* mount client.js component controllers
*/

function mountComponentModules() {
Object.keys(window.modules).filter(key = typeof key === ‘string’ key.match(/.client$/)).forEach(key = {
let controllerFn = window.require(key);

if (typeof controllerFn === ‘function’) {
const name = key.replace(‘.client’, ”),
instancesSelector = `[data-uri*=”_components/${name}/”]`,
defaultSelector = `[data-uri$=”_components${name}”]`,
instances = document.querySelectorAll(instancesSelector),
defaults = document.querySelectorAll(defaultSelector);

for (let el of instances) {
tryToMount(controllerFn, el, name);
}

for (let el of defaults) {
tryToMount(controllerFn, el, name);
}
}
});
} // Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the “ value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js

window.process = window.process || {};
window.process.env = window.process.env || {};

if (!window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = ”;
} // note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first

mountLegacyServices();
mountComponentModules();
// ]]

June 2021 movies: 12 exciting new films in theaters and on …

Movies are back in full force this summer, and June feels like the month the floodgates break. There’s action comedies! Experimental documentaries! Sexy European romantic tragedies! Horror flicks! In the Heights is coming out and so is Zola. Plus a new Pixar movie and an animated film about a chainsaw-wielding George Washington leading a team to fight Benedict Arnold. Get ready, friends.

Here are a dozen of June’s most interesting films to look for in theaters or on streaming platforms.

All Light Everywhere

Release date: June 4

We undeniably live in a surveillance society. Cameras are ubiquitous, from body cameras on cops to drone-enabled cameras that capture views from above to the phone cameras we hold in our hands every day. But what do cameras miss? Do they really give us a more objective view of reality? Those are the questions Theo Anthony (Rat Film) tackles in All Light, Everywhere, a sprawling essay film about “blind spots” in the technologies we trust (or don’t trust) to keep us safe and the illusions they too often depend upon. Watching All Light, Everywhere is informative, but more importantly, it’s an experience — and a sobering one.

How to watch it: All Light, Everywhere will premiere in theaters.

The Conjuring: The Devil Made Me Do It

Release date: June 4

The latest installment in the Conjuring universe (and a direct sequel to 2016’s The Conjuring 2) returns to paranormal investigative couple Ed and Lorraine Warren (Patrick Wilson and Vera Farmiga). The Warrens were real people, and just like other movies from the series, this one draws on their files for its source material. Some of the story in The Conjuring: The Devil Made Me Do It is expected — a little boy exhibits weird behavior, and the Warrens are convinced it’s a case of possession. But the film also covers the first court case in US history in which a murder suspect used demonic possession as a defense. If the previous Conjuring films are any indication, The Devil Made Me Do It will be taut and spooky.

How to watch it: The Conjuring: The Devil Made Me Do It will premiere in theaters and stream on HBO Max.

Undine

Release date: June 4

Christian Petzold, one of Europe’s greatest living filmmakers (Transit; Barbara), returns with Undine, which transports an ancient mythological creature into the present day. In European mythology, an “undine” is a water nymph who falls in love with a man, but will die if he is unfaithful to her. In Undine, a (modern-day) historian who studies the urban development of Berlin falls in love with a man, but he betrays her — and she must kill him and return to the water. It’s stylish, passionate, and full of enchantment.

How to watch it: Undine will premiere in theaters.

In the Heights

Release date: June 11

In the Heights is poised to be the smash hit of the summer — and that would probably be true even if it wasn’t perfectly timed to welcome moviegoers back to theaters after a long pandemic year. Lin-Manuel Miranda’s (pre-Hamilton) musical was a hit on Broadway, and now it’s been translated to the big screen by Crazy Rich Asians director Jon M. Chu. Starring a bevy of talent — Anthony Ramos, Corey Hawkins, Leslie Grace, Melissa Barrera, Olga Merediz, Daphne Rubin-Vega, Gregory Diaz IV, Stephanie Beatriz, Dascha Polanco, Jimmy Smits, Marc Anthony, and Miranda himself — it’s a joyful, music-filled story about a community pulling together and their dreams of a better life.

How to watch it: In the Heights will open in theaters and on HBO Max.

Hitman’s Wife’s Bodyguard

Release date: June 16

As you may have deduced from the title, Hitman’s Wife’s Bodyguard is a sequel to the 2017 comedy The Hitman’s Bodyguard, in which Michael Bryce (Ryan Reynolds) must protect hitman Darius Kincaid (Samuel L. Jackson) from a bunch of pretty bad dudes. Everyone’s back for the new film, including Darius’s wife Sonia (Salma Hayek), who drags Bryce — who’s been on a sabbatical, at his company’s insistence — back into the fray. Will it be kind of stupid? Probably. But Jackson, Reynolds, and Hayek all have proven comedy chops, so it’s also likely to be the platonic ideal of a mindless summer Blockbuster.

How to watch it: Hitman’s Wife’s Bodyguard will open in theaters.

Luca

Release date: June 18

Pixar’s latest is set in the Italian Riviera, a place I’d give my eyeteeth to vacation in right about now. The film is a coming-of-age story about a kid named Luca, who’s about to have the best summer of his life in Italy. He meets another boy and they become fast friends. But Luca has a secret: He’s actually a sea monster. What? I don’t know, but it sounds fun to me.

How to watch it: Luca will premiere on Disney+.

Rita Moreno: Just a Girl Who Decided to Go For It

Release date: June 18

Living legend Rita Moreno is one of the most highly decorated actors in American entertainment, and her success spans decades: Her first major award was the Best Supporting Actress Oscar for West Side Story in 1961. (She’s also one of the few actors to ever accomplish the elusive EGOT — Emmy, Grammy, Oscar, Tony.) But more importantly, she’s an absolute icon, a woman who blazed trails for Latinas — Moreno is from Puerto Rico — with determination, commitment, and skill. In this documentary, she tells her story, from the good times to the hard times, and it is absolutely delightful.

How to watch it: Rita Moreno: Just a Girl Who Decided to Go For It will premiere in theaters.

Summer of 85

Release date: June 18

French director François Ozon makes entertaining, passionate melodramas, and Summer of 85 is no exception. The drama — which premiered at the virtual Toronto International Film Festival last fall — is about a 16-year-old named Alexis (Félix Lefebvre), who is spending his summer at a seaside resort in Normandy. He meets David (Benjamin Voisin), and they fall into a relationship that quickly becomes a romance. But tragedy is always lurking around the edges. Summer of 85 is a coming-of-age story, and if you’re up for some sexy French summer fun and emotional implosions, this is it.

How to watch it: Summer of 85 will premiere in theaters.

F9

Release date: June 25

You don’t go see a Fast Furious movie for the plot; you go for the cars and the camaraderie, and that’s what F9 promises to serve up as well. Directed and co-written (with Daniel Casey) by Justin Lin, who also made Fast Furious 6, F9 has been delayed several times due to the pandemic. But now it’s here, with a stacked cast: Vin Diesel, Michelle Rodriguez, Tyrese Gibson, Chris “Ludacris” Bridges, John Cena, Jordana Brewster, Nathalie Emmanuel, Sung Kang, Helen Mirren, and Charlize Theron. Presumably, there will also be really cool stunts.

How to watch it: F9 will open in theaters.

False Positive

Release date: June 25

Broad City’s Ilana Glazer co-wrote False Positive with director John Lee, and it’s a spin on Rosemary’s Baby. Glazer plays Lucy, who has been trying to get pregnant with her partner Adrian (Justin Theroux), with little success. Then they find a fertility doctor they love, Dr. Hindle (Pierce Brosnan), and hopes run high. But when Lucy becomes pregnant, she starts to suspect something is afoot with Dr. Hindle and sets out to investigate. A spooky horror film about pregnancy? Sounds great to me.

How to watch it: False Positive will premiere on Hulu.

Zola

Release date: June 30

I am reasonably confident that Zola (which premiered at Sundance in 2020) is the first movie based on a Twitter thread, and it is a humdinger. In 2015, dancer A’Ziah King — who goes by Zola — told the story, in 148 tweets, of a strange but true trip to Florida with a girl named Stefani; the trip went terribly, terribly wrong when King discovered Stefani’s “roommate” was actually her pimp. King later admitted that some parts of her account were exaggerated, but Zola director Janicza Bravo is less interested in facts than she is in crafting an entertaining tale and exploring how our perceptions of the characters are affected by who’s telling the story. It’s wild, raunchy, and very funny, with a cast that includes Riley Keough, Colman Domingo, Nicholas Braun (a.k.a. Succession’s Cousin Greg), and a marvelous Taylour Paige, plus a screenplay co-written by Bravo and Slave Play writer Jeremy O. Harris.

How to watch it: Zola will open in theaters.

America: The Motion Picture

Killer Mike as “Blacksmith,” Olivia Munn as “Thomas Edison,” Jason Mantzoukas as “Samuel Adams,” Channing Tatum as “George Washington,” Bobby Moynihan as “Paul Revere,” and Raoul Max Trujillo as “Geronimo” in a still from America: The Motion Picture.
Netflix

Release date: Wednesday, June 30

This movie sounds very wild, which is probably the idea. It’s kind of a revisionist history of America, helmed by Archer executive producer Matt Thompson; George Washington (voiced by Channing Tatum, who’s also one of the film’s producers) leads a team to take on Benedict Arnold and King James, and Washington, uh, wields a chainsaw? Phil Lord and Christopher Miller of Lego Movie fame are among the film’s producers, and the voice cast is full of top-flight talent, probably because everyone’s been stuck in lockdown for a year. In addition to Tatum, listen for Simon Pegg, Judy Greer, Bobby Moynihan, Amber Nash, Killer Mike, Andy Samberg, Jason Mantzoukas, Olivia Munn (who, I need to point out, is playing Thomas Edison), Raoul Max Trujillo, Will Forte, and more. The film is slated to come out just before the July Fourth weekend, so I guess it’s time to celebrate.

How to watch it: America: The Motion Picture will premiere on Netflix.


Will you support Vox’s explanatory journalism?

Millions turn to Vox to understand what’s happening in the news. Our mission has never been more vital than it is in this moment: to empower through understanding. Financial contributions from our readers are a critical part of supporting our resource-intensive work and help us keep our journalism free for all. Please consider making a contribution to Vox today from as little as $3.

New movies coming out in 2021: Netflix, Marvel and more …




© Provided by CNET
Theaters are on the road to reopening with big films like F9. Netflix

It’s been over a year since the coronavirus pandemic closed movie theaters and threw Blockbuster release dates into turmoil, but theaters are starting to cautiously re-open in the US and elsewhere. A Quiet Place Part II is out now, while James Bond adventure No Time to Die, Fast and Furious sequel F9 and Marvel’s Black Widow are just some of the postponed films coming soon. It’s been tough to keep up to date with all the changes, but don’t worry: these are the latest movie release dates for 2021 and beyond.




© Jay Maidment/Marvel Studios

Paul Rudd en ‘Ghostbusters: Afterlife’ (2020)


If you can’t make it to the movies, big titles like Without Remorse, Mortal Kombat, Godzilla vs Kong and the Justice League Snyder Cut are streaming now. Black Widow, Dune, The Suicide Squad and The Matrix 4 are among the Blockbusters set to premiere on streaming services like Disney Plus or HBO Max at the same time they hit theaters. 

Here’s this year’s revised box office calendar to show when (or if) 2021’s big movies arrive in movie theaters (and/or online). These dates are still in flux but we’ll keep you updated with the latest changes as new dates are announced.

© Provided by CNET

A Quiet Place Part II (May 28, 2021)

John Krasinski directs Emily Blunt and Cillian Murphy in A Quiet Place 2, a post-apocalyptic tale of a world in which noise equals death. The near-silent sequel was postponed barely a week before its release. Seeing the chilling first movie in a packed theater was an important part of the experience, partly because of the tension of trying to eat your snacks very, very quietly.

Original release date: March 2020

Cruella (May 28, 2021)

Emma Stone stars as a young Cruella De Vil in Disney’s latest live-action prequel, this time putting a new spin on animated classic 101 Dalmatians. It streamed on Disney Plus the same day it opened in theaters. 

The Conjuring: The Devil Made Me Do It (June 4, 2021)

The third film to star Patrick Wilson and Vera Farmiga as real-life ghosthunters Ed and Lorraine Warren, based on the chilling true story of a murder trial in which the defendant claimed demonic possession.

Original release date: September 2020

Samaritan (June 4, 2021)

Sylvester Stallone is an aging superhero in this dark take on superheroics.

Infinite (June 10, 2021)

Action man Mark Wahlberg headlines the eternal story of a man who learns that his hallucinations are actually visions from past lives. It’s streaming on paramount Plus.

Original release date: August 2020

The Hitman’s Wife’s Bodyguard (June 16, 2021)

Salma Hayek joins Ryan Reynolds and Samuel L Jackson as they reteam for this bullet-riddled action comedy sequel.

Original release date: August 2020

In the Heights (June 18, 2021)

This adaptation of Lin-Manuel Miranda and Quiara Alegría Hudes’ Tony-winning musical is helmed by Crazy Rich Asians director Jon M. Chu, and stars Anthony Ramos from the Broadway cast of Hamilton.

Original release date: June 2020

Luca (June 18, 2021) 

Pixar animated adventure featuring aquatic creatures finding their feet on the Italian Riviera. It releases exclusively on Disney Plus. 

F9 (June 25, 2021)

Starring Vin Diesel, John Cena and Charlize Theron, the ninth Fast and Furious film was one of the first to reschedule, taking the bold step of moving nearly a year to April 2021 — a date previously earmarked for the next film in the Fast Saga. There’s no word yet on when that 10th and final film will be released.

Original release date: May 2020

Zola (June 30, 2021)

A riotous story told through a series of viral tweets inspired this tale of a wild weekend in Florida. 




© Provided by CNET
Riley Keough and Taylour Paige in Zola. A24

The Tomorrow War (July 2, 2021)

Chris Pratt headlines this original sci-fi action film about a time-traveling warrior, which streams on Amazon Prime Video instead of opening in theaters as planned.

Original release date: Dec. 25, 2020

Minions: The Rise of Gru (July 2, 2021)

Animated sequel/spinoff Minions: The Rise of Gru was set to be released in the US in July 2020.

Original release date: July 3, 2020

Black Widow (July 9, 2021)




© Provided by CNET
Black Widow marks a belated return for the MCU.

Scarlett Johansson headlines Marvel’s Black Widow delving into the Russian super-assassin’s origins. Originally scheduled for May 2020, it’s been been pushed back in a reshuffle of the entire Marvel Cinematic Universe  schedule. That pushed back sequels for Captain Marvel , Thor  and Doctor Strange over the next couple of years. Black Widow arrives in theaters and on Disney Plus the same day. 

Original release date: May 1, 2020

Space Jam 2: A New Legacy (July 16, 2021)

It’s true: there’s a long-awaited sequel to the basketball-themed 1996 cartoon/live-action Space Jam. Basketball star LeBron James, writer Ryan Coogler and Bugs Bunny lead the Looney Tunes cartoon characters onto the court when the film streams on HBO Max. 

Cinderella (July 16, 2021)

Sony is not having a fairy tale year, delaying this live-action musical.

Original release date: February 2021 

Snake Eyes: GI Joe Origins (July 23, 2021)

Henry Golding and Samara Weaving toy with the idea of headlining Snake Eyes, a ninja-focused spinoff from the GI Joe series of toys and movies.

Original release date: October 2020

Old (July 23, 2021)

M. Night Shyamalan writes and directs a new supernatural chiller based on French graphic novel Sandcastle about a group of people who discover a dead body on a beach.

Original release date: Feb. 26, 2021

Jungle Cruise (July 30, 2021)

Emily Blunt and Dwayne Johnson take a cruise in the jungle, although Disney has pushed their departure date back a whole year. The film will stream on Disney Plus on July 30, the same day it cruises into theaters.

Original release date: July 2020

The Green Knight (July 30, 2021)

Dev Patel is mythic knight Sir Gawain, King Arthur’s headstrong nephew, in this medieval fantasy epic from A24.

Original release date: May 2020

The Suicide Squad (Aug. 6, 2021)




© Provided by CNET
Harley Quinn takes aim at Suicide Squad 2. Warner Bros. Pictures

Supervillains steal the spotlight in James Gunn’s anarchic DC comics sequel starring Margot Robbie, Idris Elba, and John Cena. It’s streaming on HBO Max this summer.

Free Guy (Aug. 13, 2021)

This video game-themed action-comedy starring Ryan Reynolds was slated for 2020 but will now open this summer.

Original release date: July 3, 2020

Don’t Breathe 2 (Aug. 13, 2021)

This horror sequel sees the return of The Blind Man.

Bios (Aug. 13, 2021)

Tom Hanks is the last man on Earth, hanging out with his faithful robot in this post-apocalyptic drama.

Original release date: October 2020

PAW Patrol: The Movie (Aug. 20, 2021)

Parents get it.

Candyman (Aug. 27, 2021)

This horror remake directed by Nia DaCosta and written by Jordan Peele has been moved a few times, but the hook-handed slasher looks like it’s filled with chills.

Original release date: June 12, 2020

The Beatles: Get Back (Aug. 27, 2021)

Peter Jackson charts the making of the Beatles’ 1970 album Let It Be in a documentary set to be released by Disney. 

Original release date: September 2020

Shang-Chi and the Ten Rings (Sept. 3, 2021)

Marvel’s martial arts action movie starring Simu Liu as mystical fighter Shang-Chi has been kicked back a few months by Disney.

Original release date: February 2021

Venom: Let There Be Carnage (Sep. 24, 2021)

The sequel to the 2018 supervillain caper stars Tom Hardy and Woody Harrelson as Marvel bad guys Venom and Carnage. Andy Serkis directs. 

Original release date: October 2020  

The Many Saints of Newark (Sept. 24, 2021)




© Provided by CNET
Michael Gandolfini (left) plays a young Tony Soprano in The Many Saints of Newark. Bobby Bank/GC Images

The Many Saints of Newark is a ’60s-set prequel to classic TV series The Sopranos, in which Michael Gandolfini takes on the role of Tony Soprano made famous by his father, James Gandolfini. The original series ushered in the era of prestige TV and enshrined HBO’s reputation, so it’s appropriate the new film will stream on HBO Max.

Original release date: Sept. 25, 2020

No Time to Die (Oct. 8, 2021)




© Provided by CNET
Bond is back, eventually. Universal

Daniel Craig’s final outing as 007, directed by Cary Fukunaga and co-written by Phoebe Waller-Bridge, was the first major movie to delay release back in March 2020. Craig’s final turn as superspy James Bond will now open more than a year later than originally expected.

Original release date: April 2020

Halloween Kills (Oct. 15, 2021)

This slasher sequel is in the awkward situation that the release date is sort of in the title. You can’t really bump a movie named “Halloween” to February, can you? So Universal pushed it back a whole year to 2021 — which has a knock-on effect for planned threequel, Halloween Ends, now expected in October 2022.

Original release date: Oct. 16, 2020

Dune (Oct. 21, 2021)




© Provided by CNET
Chiabella James

As other Blockbusters fell away, it felt like Denis Villeneuve’s star-studded new adaptation of the classic Dune sci-fi novels would be the only hope for 2020. But we have to wait to spice things up with Timothée Chalamet, Oscar Isaac, Zendaya, Charlotte Rampling, Dave Bautista, Jason Momoa, Javier Bardem, Josh Brolin, Rebecca Ferguson and Stellan Skarsgård. It’ll also stream on HBO Max. 

Original release date: Dec. 18, 2020

The French Dispatch (Oct. 22, 2021)

Wes Anderson returns with more idiosyncratic art-housery in The French Dispatch, starring Timothée Chalamet, Bill Murray, Saoirse Ronan, Tilda Swinton and Frances McDormand. At first, Disney bumped this Fox Searchlight film to October 2020, but then in July took it off the schedule. It will premiere at this ear’s Cannes film festival before sauntering into theaters in October.

Original release date: July 2020

Last Night in Soho (Oct. 22, 2021)

Edgar Wright‘s new film is a ’60s-set horror flick featuring Queen’s Gambit star Anya Taylor-Joy and former Doctor Who Matt Smith.

Original release date: Sept. 25, 2020

Antlers (Oct. 29, 2021)

When Disney postponed Mulan and New Mutants, it also shelved small-town horror chiller Antlers, produced by Guillermo del Toro.

Original release date: April 17, 2020

Eternals (Nov. 5, 2021)

Marvel’s otherworldly ensemble was intended to open in November 2020, but was bumped a year to make way for Black Widow, et al., to come first.

Original release date: Nov. 6, 2020 

Ghostbusters: Afterlife (Nov. 11, 2021)




© Provided by CNET
Paul Rudd breathes new (after) life into the Ghostbusters series. Sony Pictures

Jason Reitman‘s small town-set Ghostbusters resurrection stars Paul Rudd. I ain’t afraid of no postponement!

Original release date: July 10, 2020

Top Gun: Maverick (Nov. 19, 2021)

Tom Cruise feels the need for speed. We’ve waited over 30 years for a sequel to the original 1986 Top Gun, so what’s a few more months?

Original release date: June 2020

King Richard (Nov. 19, 2021)

How do you tell the story of perhaps the greatest ever women athletes? Make it about their dad! Will Smith plays the father of real-life tennis legends Venus and Serena Williams in this HBO Max film.

Original release date: November 2020 

Encanto (Nov. 24, 2021)

Disney’s magical musical from Hamilton creator Lin-Manuel Miranda will cast a spell on Thanksgiving.

Resident Evil: Welcome to Raccoon City (Nov. 24, 2021)

A new movie version of the chilling survival horror game (nothing to do with the enormously successful but not very faithful previous Resident Evil movies movies. Or the rumored Netflix series). 

Original release date: September 2021  

West Side Story (Dec. 10, 2021)

Steven Spielberg‘s remake of the legendary musical was originally supposed to fill Disney’s traditional big-money holiday movie slot in 2020, plugging the fallow year between the last Star Wars trilogy ending in 2019 and the Avatar sequels kicking in. Now everything’s been pushed back a year, West Side Story will be Disney family Blockbuster for the holidays in 2021. 

Original release date: Dec. 18, 2020




© Provided by CNET


Spider-Man: No Way Home (Dec. 17, 2021)

Rumors say this sequel to Homecoming and Far From Home will see former Spider-men Tobey Maguire and Andrew Garfield join current incumbent Tom Holland for a multiverse-based web-slinging adventure.

Original release date: July 2020

The Matrix 4 (Dec. 22, 2021)

Keanu Reeves returns to the Matrix in a new cyberpunk action thriller from one of the creators behind the original trilogy, Lana Wachowski. The film will stream on HBO Max too.

Original release date: May 2020

The King’s Man (Dec. 22, 2021)

Ralph Fiennes suits up for The King’s Man, a World War I-era prequel to the sharp-dressed Kingsman series.

Original release date: Sept. 18, 2020

Unknown release dates

Tomb Raider 2 (unspecified)




© Provided by CNET
When will Alicia Vikander get back to raiding tombs? Ilze Kitshoff

There was much excitement when it was announced that Kill List and Rebecca director Ben Wheatley would helm a new adventure for video game superstar Lara Croft. Originally scheduled for March 2021, the sequel starring Alicia Vikander was then taken off the calendar by MGM.

Original release date: March 2021

2022 release dates

The 355 (Jan. 14, 2022)

Jessica Chastain leads a classy cast of spies in action thriller The 355. Oscar winners Lupita Nyong’o and Penelope Cruz join forces with international stars Diane Kruger and Fan Bingbing for a thriller that’s been delayed a year.

Original release date: January 2021

The Man from Toronto (Jan. 14, 2022)

Kevin Hart and Woody Harrelson team up to kill someone when they’re thrown together in an Airbnb.

Original release date: September 2020

Morbius (Jan. 28, 2022)

Sony’s Spider-Man spinoff features Jared Leto as Marvel vampire Morbius.

Original release date: July 31, 2020

Death on the Nile (Feb. 11, 2022)

Kenneth Branagh once again fires up his moustache and little grey cells as Agatha Christie’s detective Hercule Poirot in a follow-up to 2017’s Murder on the Orient Express. 

Original release date: December 2020

Uncharted (Feb. 18, 2022)

When 2020’s films began to be reshuffled, Uncharted was the first 2021 film to be moved. Fans are hyped for Sony’s video game adaptation stars Tom Holland, although the release date has jumped around more than Nathan Drake exploring a temple. 

Original release date: December 2020

Rumble (Feb. 18, 2022)

WWE’s movie studio tag teams with paramount for this animated movie in which giant monsters are superstar athletes in professional wrestling.

The Batman (March 4, 2022)

Robert Pattinson dons the batsuit for this delayed DC adventure. It’s a Warner Bros film but there are currently no plans to stream it on HBO Max — only 2021 films will be released online.

Original release date: June 25, 2021

Doctor Strange in the Multiverse of Madness (March 25, 2022)

Fans of Doctor Strange, played by Benedict Cumberbatch, will have to wait until 2022 before entering the Multiverse of Madness thanks to Marvel’s reshuffles.

Original release date: May 2021

John Wick: Chapter 4 (May 27, 2022)

Keanu’s other all-action franchise also returns for a fourth outing.

Mission: Impossible 7 (May 27, 2022)  




© Provided by CNET
Tom Cruise is a social distance superspy. Chiabella James

Tom Cruise was infamously strict about coronavirus precautions while filming his latest spy thriller.

Original release date: July 6, 2020 

Elvis (June 2, 2022)

Baz Luhrmann‘s Elvis tribute became an early high-profile casualty of the pandemic when Tom Hanks, who appears in the film as Col. Tom Parker, contracted the coronavirus. He and his wife, Rita Wilson, have now recovered, and the film will be delayed only a month.

Original release date: Oct. 1, 2021

Jurassic World: Dominion (June 10, 2022)




© Provided by CNET
Jeff Goldblum, Sam Neill and Laura Dern in the original Jurassic Park. Universal Pictures

Original Jurassic Park stars Laura Dern, Sam Neill and Jeff Goldblum join Bryce Dallas Howard and Chris Pratt in this sixth dino-Blockbuster.

Original release date: June 11, 2021

Lightyear (June 17, 2022)

Chris Evans take Toy Story’s pompous plaything to infinity and beyond.

Fantastic Beasts 3 (July 15, 2022)

Johnny Depp magically disappears from the Harry Potter prequel series, replaced as the villain by Mads Mikkelsen. 

Original release date: November 2021

Indiana Jones 5 (July 29, 2022)

Spider-Man: Into the Spider-Verse 2 (Oct. 7, 2022)

Halloween Ends (Oct. 14, 2022)

The Flash (Nov. 4, 2022)

Captain Marvel 2 (Nov. 11, 2022)

Aquaman 2 (Dec. 16, 2022)

Avatar and Star Wars (December 2022 onward)

Christmas 2021 was supposed to see the long-awaited arrival of James Cameron’s Avatar sequel, which would be followed by a new Star Wars trilogy the following year. The two franchises would then alternate each holiday season until Avatar 5 in 2027. But as the coronavirus shoved more and more Blockbusters into 2021, Disney decided in late July to shift all seven movies back a year. So Avatar 2 will arrive in 2022, Avatar 3 in 2024, Avatar 4 in 2026 and Avatar 5 in 2028. Three Star Wars movies then fill in the odd-numbered years.

Original release date: Christmas 2021 to 2027

Mission: Impossible 8 (July, 2023)

Untitled Star Trek movie (June 2023)

© Provided by CNET

2021 movies already released and streaming now

Locked Down (Released Jan. 14, 2021)

Anne Hathaway and Chiwetel Ejiofor are a troubled couple who take advantage of the COVID-19 pandemic to pull off a jewelry heist in an empty store. How topical! It’s streaming on HBO Max.

Outside the Wire (Released Jan. 15, 2021)

Marvel star Anthony Mackie is an android with attitude in Netflix’s near-future action thriller. 

Coming 2 America (Released March 5, 2021) 

Eddie Murphy already waited more than 30 years to come back to America for this long-awaited sequel to his ’80s classic, so we didn’t mind a delay of a few months. Amazon Prime Video acquired Coming 2 America in November, a month before it was set to be released in theaters, and it’s streaming now. 

Original release date: Dec. 18, 2020

Chaos Walking (Released March 5, 2021)

Tom Holland and Daisy Ridley cause chaos on a planet where all the women have died and thoughts are visible. Even before the pandemic this delightfully weird-sounding film was delayed by reshoots.

Raya and the Last Dragon (Released March 12, 2021)

Awkwafina lends her voice to this fire-breathing animated adventure streaming now on Disney Plus.

Original release date: November 2020

Zack Snyder’s Justice League (Released March 18, 2021)

Arguably one of the most-delayed films on the list, this reworked and significantly longer version of 2017’s Justice League re-teams Wonder Woman, Batman and Superman in the hands of the film’s original director Zack Snyder. All four hours of the Snyder Cut stream on HBO Max after a long-running online campaign.

The Unbearable Weight of Massive Talent (Released March 19, 2021)

Nicolas Cage plays himself in suitably over-the-top style in this bonkers comedy. 

Godzilla vs. Kong (Already out, March 31, 2021)

The monster-mashing sequel had already moved its release date before the pandemic even happened. Warner Bros. has named it as one of the films that will stream on HBO Max on the same day it’s released in theaters.  

Original release date: Nov. 20, 2020

Mortal Kombat (April 23, 2021)

The legendary fighting game comes to HBO Max.

Original release date: March 2021

The Mitchells vs. The Machines (April 30, 2021)

Abbi Jacobson and Maya Rudolph’s wacky family take on a robot uprising led by Olivia Colman makes for a heartwarming and anarchic Netflix animated adventure from the producers of Cloudy With a Chance of Meatballs and Spider-Man: Into the Spider-Verse.  

Without Remorse  (April 30, 2021)

Michael B. Jordan stars in this adaptation of a Tom Clancy espionage novel, which is remorselessly shuffled to Amazon Prime Video.

Original release date: Sept. 18, 2020

Wrath of Man (May 7, 2021)

Jason Statham kicks ass in a security van under siege. Guy Ritchie directs. 

The Woman in the Window (May 14, 2021)

Amy Adams plays an agoraphobic child psychologist who witnesses a horrific crime through the window of her New York apartment. Based on the bestseller by Tracy Letts, this Netflix film also stars Gary Oldman, Anthony Mackie, Wyatt Russell, Brian Tyree Henry, Jennifer Jason Leigh and Julianne Moore.

Army of the Dead (May 21, 2021)

Zack Snyder brings the zombie genre back to life with an all-action undead heist film on Netflix.

Spiral (May 21, 2021)




© Provided by CNET
Chris Rock re-invents the Saw franchise with horror movie Spiral. Brooke Palmer/Lionsgate

A rebirth of the Saw franchise starring Chris Rock and Samuel L. Jackson, originally slated for May 2020.

Original release date: May 15, 2020

Page 60 of 287:« First« 57 58 59 60 61 62 63 »Last »