SEO analyzer

SEO analysis of the web page

FINAL RESULT

This page shows an overview of the key metrics of your website.

Use the step-by-step list below to systematically improve your rankings on search engines to get more customers.

Follow the advice and solutions created especially for you and bring every parameter to bring to perfection.

vulture.com

http://vulture.com

Vulture - Entertainment News - TV, Movies, Music, Books, Theater, Art

Daily coverage of TV, movies, music, books, theater, art and the entertainment industry.

Last update 4 seconds ago

SEO

Title Vulture - Entertainment News - TV, Movies, Music, Books, Theater, Art
Titles are critical to giving users a quick insight into the content of a result and why it’s relevant to their query. It's often the primary piece of information used to decide which result to click on, so it's important to use high-quality titles on your web pages.

Here are a few tips for managing your titles:
  • Make sure every page on your site has a title specified in the <title> tag. If you’ve got a large site and are concerned you may have forgotten a title somewhere, you may also check the HTML suggestions page in Search Console lists missing or potentially problematic <title> tags on your site.
  • Page titles should be descriptive and concise. Avoid vague descriptors like "Home" for your home page, or "Profile" for a specific person's profile. Also avoid unnecessarily long or verbose titles, which are likely to get truncated when they show up in the search results.
  • Avoid keyword stuffing. It's sometimes helpful to have a few descriptive terms in the title, but there’s no reason to have the same words or phrases appear multiple times. A title like "Foobar, foo bar, foobars, foo bars" doesn't help the user, and this kind of keyword stuffing can make your results look spammy to Google and to users.
  • Avoid repeated or boilerplate titles. It’s important to have distinct, descriptive titles for each page on your site. Titling every page on a commerce site "Cheap products for sale", for example, makes it impossible for users to distinguish one page differs another. Long titles that vary by only a single piece of information ("boilerplate" titles) are also bad; for example, a standardized title like "<band name> - See videos, lyrics, posters, albums, reviews and concerts" contains a lot of uninformative text. One solution is to dynamically update the title to better reflect the actual content of the page: for example, include the words "video", "lyrics", etc., only if that particular page contains video or lyrics. Another option is to just use " " as a concise title and use the meta description (see below) to describe your site's content.
  • Brand your titles, but concisely. The title of your site’s home page is a reasonable place to include some additional information about your site—for instance, "ExampleSocialSite, a place for people to meet and mingle." But displaying that text in the title of every single page on your site hurts readability and will look particularly repetitive if several pages from your site are returned for the same query. In this case, consider including just your site name at the beginning or end of each page title, separated from the rest of the title with a delimiter such as a hyphen, colon, or pipe, like this:

    <title>ExampleSocialSite: Sign up for a new account.</title>

  • Be careful about disallowing search engines from crawling your pages. Using the robots.txt protocol on your site can stop Google from crawling your pages, but it may not always prevent them from being indexed. For example, Google may index your page if we discover it by following a link from someone else's site. To display it in search results, Google will need to display a title of some kind and because we won't have access to any of your page content, we will rely on off-page content such as anchor text from other sites. (To truly block a URL from being indexed, you can use meta tags.)
Title length 69 signs (Recomended: 35-65 signs)
Description Daily coverage of TV, movies, music, books, theater, art and the entertainment industry.
The description attribute within the <meta> tag is a good way to provide a concise, human-readable summary of each page’s content. Google will sometimes use the meta description of a page in search results snippets, if we think it gives users a more accurate description than would be possible purely from the on-page content. Accurate meta descriptions can help improve your clickthrough; here are some guidelines for properly using the meta description.
  • Make sure that every page on your site has a meta description. The HTML suggestions page in Search Console lists pages where Google has detected missing or problematic meta descriptions.
  • Differentiate the descriptions for different pages. Identical or similar descriptions on every page of a site aren't helpful when individual pages appear in the web results. In these cases we're less likely to display the boilerplate text. Wherever possible, create descriptions that accurately describe the specific page. Use site-level descriptions on the main home page or other aggregation pages, and use page-level descriptions everywhere else. If you don't have time to create a description for every single page, try to prioritize your content: At the very least, create a description for the critical URLs like your home page and popular pages.
  • Include clearly tagged facts in the description. The meta description doesn't just have to be in sentence format; it's also a great place to include structured data about the page. For example, news or blog postings can list the author, date of publication, or byline information. This can give potential visitors very relevant information that might not be displayed in the snippet otherwise. Similarly, product pages might have the key bits of information—price, age, manufacturer—scattered throughout a page. A good meta description can bring all this data together.
  • Programmatically generate descriptions. For some sites, like news media sources, generating an accurate and unique description for each page is easy: since each article is hand-written, it takes minimal effort to also add a one-sentence description. For larger database-driven sites, like product aggregators, hand-written descriptions can be impossible. In the latter case, however, programmatic generation of the descriptions can be appropriate and are encouraged. Good descriptions are human-readable and diverse, as we talked about in the first point above. The page-specific data we mentioned in the second point is a good candidate for programmatic generation. Keep in mind that meta descriptions comprised of long strings of keywords don't give users a clear idea of the page's content, and are less likely to be displayed in place of a regular snippet.
  • Use quality descriptions. Finally, make sure your descriptions are truly descriptive. Because the meta descriptions aren't displayed in the pages the user sees, it's easy to let this content slide. But high-quality descriptions can be displayed in Google's search results, and can go a long way to improving the quality and quantity of your search traffic.
Description length 88 signs (Recomended: 70-320 signs)
Keywords none
H1
Count of H1 tags Count of H1 tags: 1
H1 length 8 signs (Recomended: 5-70 signs)
H1 equals Title H1 is not equals Title
Count all tags
H2: 23 H3: 0 H4: 0 H5: 0 H6: 0
Content length signs 192661 (Recomended length: more than 500 signs)
Content to code ratio Content to code ratio: 17% (Recomended ratio: more than 10%)

Domain information

Alexa rank 2067
Domain register date 2004-07-31 18:34:44.000000
Registry expire date 2021-07-31 18:34:44.000000
Info

IP information

IP 151.101.65.209
Country Canada
IP city Montreal
ISP Fastly
Organization Fastly
Blacklist none

Indexation

<noindex> (Yandex directive) Content in noindex tags not found
URL length 22 symbols.(Recomended url length limitation: 115 symbols)
Protocol redirect HTTP to HTTPS redirect not working
HTTPS (Hypertext Transfer Protocol Secure) is an internet communication protocol that protects the integrity and confidentiality of data between the user's computer and the site. Users expect a secure and private online experience when using a website. Google encourages you to adopt HTTPS in order to protect your users' connection to your website, regardless of the content on the site.

Data sent using HTTPS is secured via Transport Layer Security protocol (TLS), which provides three key layers of protection:
  • Encryption—encrypting the exchanged data to keep it secure from eavesdroppers. That means that while the user is browsing a website, nobody can "listen" to their conversations, track their activities across multiple pages, or steal their information.
  • Data integrity—data cannot be modified or corrupted during transfer, intentionally or otherwise, without being detected.
  • Authentication—proves that your users communicate with the intended website. It protects against man-in-the-middle attacks and builds user trust, which translates into other business benefits.


If you migrate your site from HTTP to HTTPS, Google treats this as a site move with a URL change. This can temporarily affect some of your traffic numbers.
Add the HTTPS property to Search Console; Search Console treats HTTP and HTTPS separately; data for these properties is not shared in Search Console. So if you have pages in both protocols, you must have a separate Search Console property for each one.
404 Page 404 - Correct response
Robots.txt ok
A robots.txt file is a file at the root of your site that indicates those parts of your site you don’t want accessed by search engine crawlers. The file uses the Robots Exclusion Standard, which is a protocol with a small set of commands that can be used to indicate access to your site by section and by specific kinds of web crawlers (such as mobile crawlers vs desktop crawlers).

The simplest robots.txt file uses two key words, User-agent and Disallow. User-agents are search engine robots (or web crawler software); most user-agents are listed in the Web Robots Database. Disallow is a command for the user-agent that tells it not to access a particular URL. On the other hand, to give Google access to a particular URL that is a child directory in a disallowed parent directory, then you can use a third key word, Allow.

Google uses several user-agents, such as Googlebot for Google Search and Googlebot-Image for Google Image Search. Most Google user-agents follow the rules you set up for Googlebot, but you can override this option and make specific rules for only certain Google user-agents as well.

The syntax for using the keywords is as follows:

User-agent: [the name of the robot the following rule applies to]

Disallow: [the URL path you want to block] Allow: [the URL path in of a subdirectory, within a blocked parent directory, that you want to unblock]

These two lines are together considered a single entry in the file, where the Disallow rule only applies to the user-agent(s) specified above it. You can include as many entries as you want, and multiple Disallow lines can apply to multiple user-agents, all in one entry. You can set the User-agent command to apply to all web crawlers by listing an asterisk (*) as in the example below:

User-agent: *

You must apply the following saving conventions so that Googlebot and other web crawlers can find and identify your robots.txt file:
  • You must save your robots.txt code as a text file,
  • You must place the file in the highest-level directory of your site (or the root of your domain), and
  • The robots.txt file must be named robots.txt

As an example, a robots.txt file saved at the root of example.com, at the URL address http://www.example.com/robots.txt, can be discovered by web crawlers, but a robots.txt file at http://www.example.com/not_root/robots.txt cannot be found by any web crawler.
SiteMap.xml ok
A sitemap is a file where you can list the web pages of your site to tell Google and other search engines about the organization of your site content. Search engine web crawlers like Googlebot read this file to more intelligently crawl your site.

Also, your sitemap can provide valuable metadata associated with the pages you list in that sitemap: Metadata is information about a webpage, such as when the page was last updated, how often the page is changed, and the importance of the page relative to other URLs in the site.

You can use a sitemap to provide Google with metadata about specific types of content on your pages, including video and image content. For example, you can give Google the information about video and image content:

A sitemap video entry can specify the video running time, category, and age appropriateness rating.
A sitemap image entry can include the image subject matter, type, and license.

Build and submit a sitemap:
  • Decide which pages on your site should be crawled by Google, and determine the canonical version of each page.
  • Decide which sitemap format you want to use. You can create your sitemap manually or choose from a number of third-party tools to generate your sitemap for you.
  • Test your sitemap using the Search Console Sitemaps testing tool.
  • Make your sitemap available to Google by adding it to your robots.txt file and submitting it to Search Console.

Images

Images without description
title alt url
none Subscribe to New York Magazine https://images.nymag.com/current_issue.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/07-grammys-snubs-surprises.w380.h253.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/05/05-airplane-movies-2.w95.h95.jpg
none none https://pixel.nymag.com/imgs/fashion/daily/2018/12/09/cardi-b/GettyImages-1069634376.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/10/16/9-Brightburn.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/02/26/temp/cool-stranger-things-2.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/magazine/07-to-do-new-releases.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/11/29/29-roma.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/magazine/07-to-do-nyc.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/05/05-ariana-grande.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-kevin.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-brooklyn.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-thrones.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-trump.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-snl.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/08/08-che.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/08/08-elf-ona-shelf.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/08/08-snl-big-boy.w103.h103.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/07-toppy-awards.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/08/08-michelle-yeoh.w103.h103.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/03/03-marin-hinkle-chatroom-silo.w200.h300.png
none Dirty John Recap: Love and Scare-age https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/recaps/dirty-john.w190.h127.jpg
none Escape at Dannemora Recap: Tillie and the Wall https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/recaps/escape-at-dannemora.w190.h127.jpg
none The Real Housewives of Orange County Recap: The Long Twerk Begins https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/recaps/07-real-housewives--of-orange-county.w190.h127.jpg
none Counterpart Recap: Perfect Strangers
none My Brilliant Friend Recap: The Marriage Plot https://pixel.nymag.com/imgs/daily/vulture/2018/12/07/recaps/my-brilliant-friend.w190.h127.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/05/bof2018/05-bof18-videogames.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/04/04-oscars-host.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/03/film-reviews/vox-lux.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/06/06-spider-man-into-the-spider-verse.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/REALROCKETTESTHUMG.w420.h236.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/05/05-ChristianBale.w180.h100.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/04/04-big-mouth.w180.h100.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/11/28/28-scrubs.w180.h100.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/11/23/23-melo.w180.h100.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/03/film-reviews/tyrel.w365.h243.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/02/26/temp/cool-stranger-things-2.w365.h243.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/11/29/29-roma.w365.h243.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/12/09/9-trump.w365.h243.png
none none https://pixel.nymag.com/imgs/daily/vulture/2018/09/06/06-jokes-regret-3.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/09/05/mac-miller/04-mac-miller-2.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/06/07/magazine/netflix/feed-lede.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/06/07/magazine/satc/group-2.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/04/23/jcole/23-j-cole-feature.w400.h400.jpg
none none https://pixel.nymag.com/imgs/daily/vulture/2018/04/05/05-jeresy-shore-oral-history.w400.h400.jpg
The alt attribute is used to describe the contents of an image file.

It provides Google with useful information about the subject matter of the image. Google uses this information to help determine the best image to return for a user's query. Many people-for example, users with visual impairments, or people using screen readers or who have low-bandwidth connections-may not be able to see images on web pages. Descriptive alt text provides these users with important information.

Not so good:
<img src="puppy.jpg" alt=""/>

Better:
<img src="puppy.jpg" alt="puppy"/>

Best:
<img src="puppy.jpg" alt="Dalmatian puppy playing fetch">

To be avoided:
<img src="puppy.jpg" alt="puppy dog baby dog pup pups puppies doggies pups litter puppies dog retriever labrador wolfhound setter pointer puppy jack russell terrier puppies dog food cheap dogfood puppy food"/>

Filling alt attributes with keywords ("keyword stuffing") results in a negative user experience, and may cause your site to be perceived as spam. Instead, focus on creating useful, information-rich content that uses keywords appropriately and in context.

Links

External Links

Qty Anchors URL
1 Intelligencer http://nymag.com/intelligencer
2 The Cut The Cut https://www.thecut.com
2 Vulture Vulture https://www.vulture.com
1 Grub Street http://www.grubstreet.com
1 http://nymag.com
3 Subscribe Subscribe to the Magazine http://nymag.com/maglinks/nym-home-01
1 Strategist http://nymag.com/strategist
3 The Magazine Current Issue Contents New York Magazine http://nymag.com/maglinks/global-04
1 Give a Gift Subscription http://nymag.com/maglinks/global-02
1 Buy Back Issues http://nymag.com/maglinks/global-03
1 Profile https://subs.nymag.com/account/
2 Newsletters Newsletters http://nymag.com/newsletters/
1 Vulture Insiders https://nymag.az1.qualtrics.com/jfe/form/SV_6WLk9ozVE86HhR3?S=VHPB
1 Vulture Festival http://vulturefestival.com/
1 NYMag.com http://nymag.com/
1 Intelligencer http://nymag.com/intelligencer/
1 The Strategist http://nymag.com/strategist/
1 Grub Street http://www.grubstreet.com/
2 //www.vulture.com
1 Kevin Hart //www.vulture.com/news/kevin-hart
1 Vulture’s Best of 2018 //www.vulture.com/news/best-of-2018/
1 Grammys //www.vulture.com/news/grammys
1 Golden Globes //www.vulture.com/news/golden-globes/
1 Spidey: Into the Spider-Verse //www.vulture.com/news/spider-man:-into-the-spider-verse/
1 100 Scares That Shaped Horror //www.vulture.com/news/100-scares/
1 2019 Grammy Nominations: The Snubs and Surprises //www.vulture.com/2018/12/2019-grammy-nominations-the-snubs-and-surprises.html
2 A Guide to December’s Best In-flight Movies, Sorted by Airline A Guide to December’s Best In-flight Movies, Sorted by Airline //www.vulture.com/2018/12/best-plane-flight-movies-airlines-2018.html
1 Mariah Carey’s Christmas Album Is the Only Thing That Will Never Suck //www.vulture.com/2018/12/mariah-careys-christmas-album-will-never-suck.html
1 The 10 Best Comics of 2018 //www.vulture.com/2018/12/best-comics-2018.html
2 Cardi B is Rapping About Her Divorce Now Cardi B is Rapping About Her Divorce Now //www.vulture.com/2018/12/cardi-b-is-rapping-about-her-divorce-now.html
1 Brightburn Trailer: Wait, What If Superman Was Basically Damien From The Omen? //www.vulture.com/2018/12/brightburn-trailer-wait-what-if-superman-was-an-evil-kid.html
2 Stranger Things Teases Season 3 Titles, If You Want to Start Making Assumptions Stranger Things Teases Season 3 Titles, If You Want to Start Making Assumptions By Halle Kiefer //www.vulture.com/2018/12/start-your-wild-guessing-stranger-things-3-teases-titles.html
2 10 Notable New Releases Over the Next Two Weeks 10 Notable New Releases Over the Next Two Weeks //www.vulture.com/article/best-new-tv-movies-books-music.html
2 Roma, Regina King, Steven Yeun Win at 2018 L.A. Film Critics Association Awards Roma, Regina King, Steven Yeun Win at 2018 L.A. Film Critics Association Awards By Halle Kiefer //www.vulture.com/2018/12/roma-regina-king-steven-yeun-win-l-a-film-critics-awards.html
2 15 Things to Do in New York City Over the Next Two Weeks 15 Things to Do in New York City Over the Next Two Weeks //www.vulture.com/article/things-to-do-nyc-today-this-weekend.html
2 Terms Terms http://nymag.com/newyork/terms/
1 Privacy Notice http://nymag.com/newyork/privacy/
2 Ariana Grande’s 2019 Resolution Is to Love Herself Ariana Grande’s 2019 Resolution Is to Love Herself //www.vulture.com/2018/12/ariana-grandes-2019-resolution-is-to-love-herself.html
2 Michael Che Isn’t Pleased With the Kevin Hart Oscars Brouhaha Michael Che Isn’t Pleased With the Kevin Hart Oscars Brouhaha //www.vulture.com/2018/12/snl-michael-che-defends-kevin-hart-after-oscars-controversy.html
2 Brooklyn Nine-Nine Season 6 Trailer: Jake Does Die Hard, Noice Brooklyn Nine-Nine Season 6 Trailer: Jake Does Die Hard, Noice //www.vulture.com/2018/12/watch-andy-samberg-in-the-new-brooklyn-nine-nine-trailer.html
2 SNL’s Khal Drago Is a Dothraki Jerry Springer Who Lives for the Drama SNL’s Khal Drago Is a Dothraki Jerry Springer Who Lives for the Drama //www.vulture.com/2018/12/snl-game-of-thrones-khal-drogo-hosts-talk-shows-now.html
3 Ask SNL and We Shall Receive: What If the Trumps Were Black? Ask SNL and We Shall Receive: What If the Trumps Were Black? Ask SNL and We Shall Receive: What If the Trumps Were Black? By Devon Ivie //www.vulture.com/2018/12/snl-imagines-donald-trump-and-melania-trump-as-black.html
2 SNL Continues Its ‘Let’s Endearingly Emasculate Eric Trump’ Comedy Journey SNL Continues Its ‘Let’s Endearingly Emasculate Eric Trump’ Comedy Journey //www.vulture.com/2018/12/snl-continues-its-quest-to-emasculate-eric-trump.html
1 Michael Che’s Ode to Bidets Shows Just How Far SNL Has Come //www.vulture.com/2018/12/saturday-night-live-michael-ches-ode-to-bidets.html
1 SNL Probes the Dark Underbelly of Elf on the Shelf //www.vulture.com/2018/12/jason-momoa-is-a-shell-shocked-elf-on-a-shelf-on-snl.html
1 On SNL, Homemaking Gets a Manly Makeover //www.vulture.com/2018/12/jason-momoa-gives-homemaking-a-manly-makeover-on-snl.html
2 Zach Broussard Announces the Top 1,000 Comedians of 2018 Zach Broussard Announces the Top 1,000 Comedians of 2018 //www.vulture.com/2018/12/top-1000-comedians-2018-zach-broussard-toppy-awards-livestream.html
1 You’re Damn Right Michelle Yeoh Is Wearing That Ring to the Golden Globes //www.vulture.com/2018/12/michelle-yeoh-will-wear-eleanors-ring-to-golden-globes.html
1 New on Netflix: December 2018 //www.vulture.com/article/new-on-netflix-movies-shows-originals.html
1 How Did The Ranch’s Season Premiere Deal With Danny Masterson? //www.vulture.com/2018/12/did-netflixs-the-ranch-premiere-kill-off-danny-masterson.html
3 The Real Housewives of Orange County Reunion Recap: The Long Twerk Begins The Long Twerk Begins //www.vulture.com/2018/12/rhoc-reunion-recap-season-13-episode-21.html
1 Outlander Recap: Guess Who’s Coming to Dinner //www.vulture.com/2018/12/outlander-recap-season-4-episode-6.html
1 Marin Hinkle Had to Learn French for Mrs. Maisel’s Trip to Paris //www.vulture.com/2018/12/mrs-maisel-season-2-marin-hinkle.html
2 TV Recaps More Recaps a:hover .recaps-more-link-svg-arrow-path, a:focus .recaps-more-link-svg-arrow-path { fill: #111; } a:hover .recaps-more-link-svg-text-path, a:focus .recaps-more-link-svg-text-path { fill: #fff; } //www.vulture.com/tv-recaps/
2 Love and Scare-age //www.vulture.com/2018/12/dirty-john-recap-season-1-episode-3-remember-it-was-me.html
1 Dirty John //www.vulture.com/tv/dirty-john
2 Tillie and the Wall //www.vulture.com/2018/12/escape-at-dannemora-recap-season-1-episode-4.html
1 Escape at Dannemora //www.vulture.com/tv/escape-at-dannemora
1 The Real Housewives of Orange County //www.vulture.com/tv/the-real-housewives-of-orange-county
2 Perfect Strangers //www.vulture.com/2018/12/counterpart-recap-season-2-episode-1.html
1 Counterpart //www.vulture.com/tv/counterpart
2 The Marriage Plot //www.vulture.com/2018/12/my-brilliant-friend-recap-season-1-episode-7.html
1 My Brilliant Friend //www.vulture.com/tv/my-brilliant-friend
1 The 30 Best Superhero Movies Since Blade //www.vulture.com/article/best-superhero-movies.html
1 The 40 Best Christmas Movies of All Time //www.vulture.com/article/best-christmas-movies.html
1 A 2018 DVD Gift Guide for Movie Lovers //www.vulture.com/2018/12/best-new-dvds-gift-guide.html
1 The 10 Best Video Games of 2018 //www.vulture.com/article/best-video-games-2018.html
1 Okay, Now Who Should Host the Oscars This Year? //www.vulture.com/2018/12/oscars-2019-who-should-host.html
1 Vox Lux Is a Fascinating Failure //www.vulture.com/2018/12/vox-lux-review.html
1 Spider-Man: Into the Spider-Verse Is Infectiously Fun //www.vulture.com/2018/12/spider-man-into-the-spider-verse-review.html
1 I Tried to Become a Radio City Rockette in One Day //www.vulture.com/2018/12/i-tried-to-become-a-radio-city-rockette-in-one-day.html
1 Video: Watch Christian Bale’s Weight Change Drastically Over 12 Roles //www.vulture.com/2018/12/watch-christian-bales-weight-change-over-12-roles.html
1 Video: Nick Kroll, Nick Kroll, and Nick Kroll(!?) Perform Various Big Mouth Scenes //www.vulture.com/2018/12/nick-kroll-voices-characters-big-mouth.html
1 Video: Scrubs Cast Reunion //www.vulture.com/2018/11/watch-the-scrubs-cast-reunite-at-vulture-festival.html
1 Video: Watch A Beyoncé Collaborator Use L.A.’s Streets to Make a Beat //www.vulture.com/2018/11/watch-a-beyonc-collaborator-make-a-beat-from-l-a-s-streets.html
1 Tyrel Is a Subtle — Then Brutally Effective — Portrait of Racial Alienation By Emily Yoshida //www.vulture.com/2018/12/tyrel-review.html
1 Opera Review: The Unseen Great War, in William Kentridge’s The Head and the Load By Justin Davidson //www.vulture.com/2018/12/unseen-ww-i-in-william-kentridges-the-head-and-the-load.html
1 Theater Review: Can a Cooled-Down Network Bring the Heat? By Sara Holdren //www.vulture.com/2018/12/theater-can-a-cooled-down-network-work-on-broadway.html
1 Theater Review: How Over-the-Top Should The Cher Show Be? By Sara Holdren //www.vulture.com/2018/12/theater-review-how-over-the-top-should-the-cher-show-be.html
1 Reese Witherspoon Is Taking You to Where the Crawdads Sing //www.vulture.com/2018/12/reese-witherspoon-is-taking-you-to-where-the-crawdads-sing.html
1 Disney+ Receives the Divine Inspiration to Bring You Sister Act 3 //www.vulture.com/2018/12/disney-divinely-intervenes-to-bring-you-sister-act-3.html
1 Reasons Why We Must Be Cast As Extras in the Cats Movie //www.vulture.com/2018/12/mitra-jouhari-and-patti-harrison-want-to-be-extras-in-cats.html
1 Saturday Night Live Recap: Jason Momoa Strips for Scrooge //www.vulture.com/2018/12/snl-recap-season-44-episode-8-jason-momoa.html
1 Damn It, Reporters, You Spoiled Cardi B’s Grammy News for Her //www.vulture.com/2018/12/grammys-2018-watch-cardi-b-learn-her-nomination-in-court.html
1 Did Michelle Obama Really Sell 2 Million Books in 15 Days? An Investigation. //www.vulture.com/2018/12/investigating-michelle-obamas-record-book-sales.html
1 Notes on the Grungy Years: Two Novelists Talk About 1970s New York //www.vulture.com/2018/12/tom-barbash-and-john-freeman-gill-on-1970s-new-york-novels.html
1 In Fiction, It Was the Year of the Woman By Hillary Kelly //www.vulture.com/2018/12/women-wrote-the-best-most-inventive-fiction-of-2018.html
1 How Kim Kardashian Helped Kathy Griffin Stay Sane Through Her Trump Photo Ordeal //www.vulture.com/2018/12/kim-kardashian-helped-kathy-griffin-through-trump-photo.html
1 Theaster Gates and His Band Played an Art Basel Gig at Prada’s VIP Club //www.vulture.com/2018/12/the-black-monks-of-mississippi-play-the-prada-club-in-miami.html
1 Will Blockchain Tech Commodify or Democratize the Art World? //www.vulture.com/2018/12/a-blockchain-conference-during-art-basel-miami-beach.html
1 This Week in True-Crime Podcasts: Broken Harts, Cold, and More //www.vulture.com/2018/12/best-new-true-crime-podcasts-dec-6.html
1 This Week in Comedy Podcasts: Rhea Butcher on The Soft Spot //www.vulture.com/2018/12/this-week-in-comedy-podcasts-rhea-butcher-on-the-soft-spot.html
1 Boy, That Escalated Gradually: Anchorman’s Ron Burgundy Is Getting a Podcast //www.vulture.com/2018/12/anchormans-ron-burgundy-gets-his-very-own-podcast.html
1 Comedians Share the Jokes They Most Regret //www.vulture.com/2018/09/the-joke-i-most-regret.html
1 The Perfectionist //www.vulture.com/2018/09/mac-miller-profile.html
1 Inside Netflix’s TV-Swallowing, Market-Dominating Binge Factory //www.vulture.com/2018/06/how-netflix-swallowed-tv-industry.html
1 The Writers of Sex and the City Imagine Story Lines for a 2018 Season //www.vulture.com/2018/06/sex-and-the-city-2018-season.html
1 J. Cole Just Wants to Be Himself //www.vulture.com/2018/04/j-cole-profile.html
1 Jersey Shore: An Oral History //www.vulture.com/2018/04/jersey-shore-mtv-oral-history.html
1 About Us http://www.vulture.com/article/about-us.html
1 Contact http://nymag.com/contactus/
1 Media Kit http://mediakit.nymag.com/
1 Careers http://nymag.com/careers/
1 Press http://nymag.com/press/
2 Trademark View all trademarks http://nymag.com/newyork/aboutus/trademarks/
1 Privacy http://nymag.com/newyork/privacy.html
1 Ad Choices http://nymag.com/newyork/privacy.html#ad-choices

Internal Links

Qty Anchors URL
2 a?a:s+16383));return 1===n?(e=t[r-1],i+=D[e>>2],i+=D[e>10],i+=D[e>>4&63],i+=D[e0&&(t=t.retry(this._timesToRetryFailedRequests)),e.noHeaders)return t;var r=this.headers;t=t.set("Content-Type","application/json");for(var n=Object.keys(this.headers),i=0;i=65&&e=48&&e=48&&e=65&&e1){if("number"==typeof(o=t({path:"/"},n.defaults,o)).expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*o.expires),o.expires=a}o.expires=o.expires?o.expires.toUTCString():"";try{s=JSON.stringify(i),/^[\{\[]/.test(s)&&(i=s)}catch(t){}i=r.write?r.write(i,e):encodeURIComponent(String(i)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),e=(e=(e=encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var p="";for(var u in o)o[u]&&(p+="; "+u,!0!==o[u]&&(p+="="+o[u]));return document.cookie=e+"="+i+p}e||(s={});for(var c=document.cookie?document.cookie.split("; "):[],h=/(%[0-9A-Z]{2})+/g,l=0;l0&&t.warning("Following parameters are not allowed on the `/authorize` endpoint: ["+r.join(",")+"]"),e},yt=r(function(t,e){var r;t.exports=r=r||function(t,e){var r=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),n={},i=n.lib={},o=i.Base={extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},s=i.WordArray=o.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||p).stringify(this)},concat:function(t){var e=this.words,r=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o>>2]>>>24-o%4*8&255;e[n+o>>>2]|=s>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295>16)&n)>16)&n)&n;return i/=4294967296,(i+=.5)*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>2]|=(255&t.charCodeAt(n))>>7)^(f>>18)^f>>>3,m=u[d-2],g=(m>>17)^(m>>19)^m>>>10;u[d]=y+u[d-7]+g+u[d-16]}var v=n&i^n&o^i&o,b=(n>>2)^(n>>13)^(n>>22),w=l+((a>>6)^(a>>11)^(a>>25))+(a&c^~a&h)+p[d]+u[d];l=h,h=c,c=a,a=s+w|0,s=o,o=i,i=n,n=w+(b+v)|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+c|0,r[6]=r[6]+h|0,r[7]=r[7]+l|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128>>9>>9>>2]>>>24-o%4*8&255)>>2]>>>24-(o+1)%4*8&255)>>2]>>>24-(o+2)%4*8&255,a=0;a>>6*(3-a)&63));var p=n.charAt(64);if(p)for(;i.length%4;)i.push(p);return i.join("")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=(a|p)>15;--o>=0;){var p=32767&this[t],u=this[t++]>>15,c=a*p+u*s;i=((p=s*p+((32767&c)>>30)+(c>>>15)+a*u+(i>>>30),r[n++]=1073741823&p}return i},e=30):i&&"Netscape"!=navigator.appName?(r.prototype.am=function(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},e=26):(r.prototype.am=function(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var p=16383&this[t],u=this[t++]>>14,c=a*p+u*s;i=((p=s*p+((16383&c)>28)+(c>>14)+a*u,r[n++]=268435455&p}return i},e=28),r.prototype.DB=e,r.prototype.DM=(1>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function d(t){this.m=t}function f(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function w(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function _(){}function T(t){return t}function O(t){this.r2=n(),this.q3=n(),r.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}d.prototype.convert=function(t){return t.s=0?t.mod(this.m):t},d.prototype.revert=function(t){return t},d.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},d.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},d.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},f.prototype.convert=function(t){var e=n();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s0&&this.m.subTo(e,e),e},f.prototype.revert=function(t){var e=n();return t.copyTo(e),this.reduce(e),e},f.prototype.reduce=function(t){for(;t.t>15)*this.mpl&this.um)=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},f.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},f.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},r.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},r.prototype.fromInt=function(t){this.t=1,this.s=t0?this[0]=t:t=0;){var a=8==n?255&t[i]:c(t,i);athis.DB?(this[this.t-1]|=(a&(1>this.DB-s):this[this.t-1]|=a=this.DB&&(s-=this.DB))}8==n&&0!=(128&t[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(10&&this[this.t-1]==t;)--this.t},r.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},r.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},r.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n0&&(e[r++]=n),e.t=r,e.clamp()},r.prototype.multiplyTo=function(t,e){var n=this.abs(),i=t.abs(),o=n.t;for(e.t=o+i.t;--o>=0;)e[o]=0;for(o=0;o=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},r.prototype.divRemTo=function(t,e,i){var o=t.abs();if(!(o.t0?(o.lShiftTo(c,a),s.lShiftTo(c,i)):(o.copyTo(a),s.copyTo(i));var h=a.t,d=a[h-1];if(0!=d){var f=d*(11?a[h-2]>>this.F2:0),y=this.FV/f,m=(1=0&&(i[i.t++]=1,i.subTo(w,i)),r.ONE.dlShiftTo(h,w),w.subTo(a,a);a.t=0;){var _=i[--v]==d?this.DM:Math.floor(i[v]*y+(i[v-1]+g)*m);if((i[v]+=a.am(0,_,i,b,0,h))0&&i.rShiftTo(c,i),p0?this.DV-e:-e},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(t,e){if(t>4294967295||t=0;)if(e.sqrTo(i,o),(t&10)e.mulTo(o,s,i);else{var p=i;i=o,o=p}return e.revert(i)},r.prototype.toString=function(t){if(this.s0)for(a>a)>0&&(i=!0,o=u(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a0&&(i=!0),i&&(o+=u(r));return i?o:"0"},r.prototype.negate=function(){var t=n();return r.ZERO.subTo(this,t),t},r.prototype.abs=function(){return this.s=0;)if(0!=(e=this[r]-t[r]))return e;return 0},r.prototype.bitLength=function(){return this.t0&&t.subTo(e,e),e},r.prototype.modPowInt=function(t,e){var r;return r=t2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)=0;)t.subTo(this.m,t)},O.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},O.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var k,C,A,D=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],S=(1>8&255,C[A++]^=t>>16&255,C[A++]^=t>>24&255,A>=M&&(A-=M)}if(r.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},r.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),i=h(r),o=n(),s=n(),a="";for(this.divRemTo(i,o,s);o.signum()>0;)a=(r+s.intValue()).toString(t).substr(1)+a,o.divRemTo(i,o,s);return s.intValue().toString(t)+a},r.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var n=this.chunkSize(e),i=Math.pow(e,n),o=!1,s=0,a=0,p=0;p=n&&(this.dMultiply(i),this.dAddOffset(a,0),s=0,a=0))}s>0&&(this.dMultiply(Math.pow(e,s)),this.dAddOffset(a,0)),o&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(t,e,n){if("number"==typeof e)if(tt&&this.subTo(r.ONE.shiftLeft(t-1),this);else{var i=new Array,o=7&t;i.length=1+(t>>3),e.nextBytes(i),o>0?i[0]&=(1>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n0?e[r++]=n:n=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},r.prototype.multiplyLowerTo=function(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},r.prototype.millerRabin=function(t){var e=this.subtract(r.ONE),i=e.getLowestSetBit();if(i>1)>D.length&&(t=D.length);for(var s=n(),a=0;a>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]>16},r.prototype.signum=function(){return this.s0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s=0;)n>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n0||r!=this.s)&&(e[i++]=r);return e},r.prototype.equals=function(t){return 0==this.compareTo(t)},r.prototype.min=function(t){return this.compareTo(t)0?this:t},r.prototype.and=function(t){var e=n();return this.bitwiseTo(t,y,e),e},r.prototype.or=function(t){var e=n();return this.bitwiseTo(t,m,e),e},r.prototype.xor=function(t){var e=n();return this.bitwiseTo(t,g,e),e},r.prototype.andNot=function(t){var e=n();return this.bitwiseTo(t,v,e),e},r.prototype.not=function(){for(var t=n(),e=0;e=this.t?0!=this.s:0!=(this[e]&11){var y=n();for(i.sqrTo(a[1],y);p=0;){for(o>=u?m=t[v]>>o-u&c:(m=(t[v]&(10&&(m|=t[v-1]>>this.DB+o-u)),p=r;0==(1&m);)m>>=1,--p;if((o-=p)1;)i.sqrTo(s,w),i.sqrTo(w,s),p-=2;p>0?i.sqrTo(s,w):(g=s,s=w,w=g),i.mulTo(w,a[m],s)}for(;v>=0&&0==(t[v]&1=0?(n.subTo(i,n),e&&o.subTo(a,o),s.subTo(p,s)):(i.subTo(n,i),e&&a.subTo(o,a),p.subTo(s,p))}return 0!=i.compareTo(r.ONE)?r.ZERO:p.compareTo(t)>=0?p.subtract(t):p.signum()0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},r.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]>>8,C[A++]=255&E;A=0,x()}function I(){if(null==k){for(x(),(k=new U).init(C),A=0;A0&&e.length>0))throw new Error("Invalid key data");this.n=new bt(t,16),this.e=parseInt(e,16)}Tt.prototype.verify=function(t,e){e=e.replace(/[^0-9a-f]|[\s\n]]/gi,"");var r=new bt(e,16);if(r.bitLength()>this.n.bitLength())throw new Error("Signature does not match with the key modulus.");var n=function(t){for(var e in wt){var r=wt[e],n=r.length;if(t.substring(0,n)===r)return{alg:e,hash:t.substring(n)}}return[]}(r.modPowInt(this.e,this.n).toString(16).replace(/^1f+00/,""));if(0===n.length)return!1;if(!_t.hasOwnProperty(n.alg))throw new Error("Hashing algorithm is not supported.");var i=_t[n.alg](t).toString();return n.hash===i};var Ot=Tt;function kt(t){var e=t.length%4;return 0===e?t:t+new Array(4-e+1).join("=")}function Ct(t){for(var e="",r=0;r60)throw new Rt.ConfigurationError("The leeway should be positive and lower than a minute.");if(-1===Bt.indexOf(this.expectedAlg))throw new Rt.ConfigurationError("Algorithm "+this.expectedAlg+" is not supported. (Expected algs: ["+Bt.join(",")+"])")}Pt.prototype.verify=function(t,e,r){var n=this.decode(t);if(n instanceof Error)return r(n,!1);var i=n.encoded.header+"."+n.encoded.payload,o=St.decodeToHEX(n.encoded.signature),s=n.header.alg,a=n.header.kid,p=n.payload.aud,u=n.payload.iss,c=n.payload.exp,h=n.payload.nbf,l=n.payload.nonce||null;if(this.issuer!==u)return r(new Rt.TokenValidationError("Issuer "+u+" is not valid."),!1);if(this.audience!==p)return r(new Rt.TokenValidationError("Audience "+p+" is not valid."),!1);if(this.expectedAlg!==s)return r(new Rt.TokenValidationError("Algorithm "+s+" is not supported. (Expected algs: ["+Bt.join(",")+"])"),!1);if(l!==e)return r(new Rt.TokenValidationError("Nonce does not match."),!1);var d=this.verifyExpAndNbf(c,h);return d?r(d,!1):this.getRsaVerifier(u,a,function(t,e){return t?r(t):e.verify(i,o)?r(null,n.payload):r(new Rt.TokenValidationError("Invalid signature."))})},Pt.prototype.verifyExpAndNbf=function(t,e){var r=new Date,n=new Date(0),i=new Date(0);return this.__disableExpirationCheck?null:(n.setUTCSeconds(t+this.leeway),r>n?new Rt.TokenValidationError("Expired token."):void 0===e?null:(i.setUTCSeconds(e-this.leeway),rn?new Rt.TokenValidationError("Expired token."):(i.setUTCSeconds(e-this.leeway),r-1&&null!==new RegExp("rv:([0-9]{2,2}[.0-9]{0,})").exec(e)&&(t=parseFloat(RegExp.$1)),t>=8}();return"undefined"!=typeof window&&window.JSON&&window.JSON.stringify&&window.JSON.parse&&window.postMessage?{open:function(o,s){if(!s)throw"missing required callback argument";var a,p;o.url||(a="missing required 'url' parameter"),o.relay_url||(a="missing required 'relay_url' parameter"),a&&setTimeout(function(){s(a)},0),o.window_name||(o.window_name=null),o.window_features&&!function(){try{var t=navigator.userAgent;return-1!=t.indexOf("Fennec/")||-1!=t.indexOf("Firefox/")&&-1!=t.indexOf("Android")}catch(t){}return!1}()||(o.window_features=void 0);var u,c=o.origin||n(o.url);if(c!==n(o.relay_url))return setTimeout(function(){s("invalid arguments: origin of url and relay_url must match")},0);i&&((p=document.createElement("iframe")).setAttribute("src",o.relay_url),p.style.display="none",p.setAttribute("name","__winchan_relay_frame"),document.body.appendChild(p),u=p.contentWindow);var h=o.popup||window.open(o.url,o.window_name,o.window_features);o.popup&&(h.location.href=o.url),u||(u=h);var l=setInterval(function(){h&&h.closed&&(f(),s&&(s("User closed the popup window"),s=null))},500),d=JSON.stringify({a:"request",d:o.params});function f(){if(p&&document.body.removeChild(p),p=void 0,l&&(l=clearInterval(l)),r(window,"message",y),r(window,"unload",f),h)try{h.close()}catch(e){u.postMessage(t,c)}h=u=void 0}function y(t){if(t.origin===c){try{var e=JSON.parse(t.data)}catch(t){if(s)return s(t);throw t}"ready"===e.a?u.postMessage(d,c):"error"===e.a?(f(),s&&(s(e.d),s=null)):"response"===e.a&&(f(),s&&(s(null,e.d),s=null))}}return e(window,"unload",f),e(window,"message",y),{close:f,focus:function(){if(h)try{h.focus()}catch(t){}}}},onOpen:function(n){var o="*",s=i?function(){window.location;for(var t=window.opener.frames,e=t.length-1;e>=0;e--)try{if(t[e].location.protocol===window.location.protocol&&t[e].location.host===window.location.host&&"__winchan_relay_frame"===t[e].name)return t[e]}catch(t){}}():window.opener;if(!s)throw"can't find relay frame";function a(t){t=JSON.stringify(t),i?s.doPost(t,o):s.postMessage(t,o)}function p(e){if(e.data===t)try{window.close()}catch(t){}}e(i?s:window,"message",function t(e){var i;try{i=JSON.parse(e.data)}catch(t){}i&&"request"===i.a&&(r(window,"message",t),o=e.origin,n&&setTimeout(function(){n(o,i.d,function(t){n=void 0,a({a:"response",d:t})})},0))}),e(i?s:window,"message",p);try{a({a:"ready"})}catch(t){e(s,"load",function(t){a({a:"ready"})})}var u=function(){try{r(i?s:window,"message",p)}catch(t){}n&&a({a:"error",d:"client closed window"}),n=void 0;try{window.close()}catch(t){}};return e(window,"unload",u),{detach:function(){r(window,"unload",u)}}}}:{open:function(t,e,r,n){setTimeout(function(){n("unsupported browser")},0)},onOpen:function(t){setTimeout(function(){t("unsupported browser")},0)}}}();t.exports&&(t.exports=e)}),Kt=function(t){/^https?:\/\//.test(t)||(t=window.location.href);var e=/^(https?:\/\/[-_a-zA-Z.0-9:]+)/.exec(t);return e?e[1]:t};function Gt(){this._current_popup=null}function Qt(t,e){this.baseOptions=e,this.baseOptions.popupOrigin=e.popupOrigin,this.client=t.client,this.webAuth=t,this.transactionManager=new Wt(this.baseOptions),this.crossOriginAuthentication=new Jt(t,this.baseOptions),this.warn=new it({disableWarnings:!!e._disableDeprecationWarnings})}function Yt(t){this.authenticationUrl=t.authenticationUrl,this.timeout=t.timeout||6e4,this.handler=null,this.postMessageDataType=t.postMessageDataType||!1,this.postMessageOrigin=t.postMessageOrigin||tt.getWindow().location.origin||tt.getWindow().location.protocol+"//"+tt.getWindow().location.hostname+(tt.getWindow().location.port?":"+tt.getWindow().location.port:"")}function te(t){this.baseOptions=t,this.request=new N(t),this.transactionManager=new Wt(this.baseOptions)}function ee(t,e){this.baseOptions=e,this.client=t,this.request=new N(this.baseOptions),this.warn=new it({disableWarnings:!!e._disableDeprecationWarnings})}function re(t){J.check(t,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},popupOrigin:{optional:!0,type:"string",message:"popupOrigin is not valid"},leeway:{optional:!0,type:"number",message:"leeway is not valid"},plugins:{optional:!0,type:"array",message:"plugins is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"},_timesToRetryFailedRequests:{optional:!0,type:"number",message:"_timesToRetryFailedRequests option is not valid"}}),t.overrides&&J.check(t.overrides,{type:"object",message:"overrides option is not valid"},{__tenant:{optional:!0,type:"string",message:"__tenant option is required"},__token_issuer:{optional:!0,type:"string",message:"__token_issuer option is required"},__jwks_uri:{optional:!0,type:"string",message:"__jwks_uri is required"}}),this.baseOptions=t,this.baseOptions.plugins=new Ht(this,this.baseOptions.plugins||[]),this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions._timesToRetryFailedRequests=t._timesToRetryFailedRequests?parseInt(t._timesToRetryFailedRequests,0):0,this.baseOptions.tenant=this.baseOptions.overrides&&this.baseOptions.overrides.__tenant||this.baseOptions.domain.split(".")[0],this.baseOptions.token_issuer=this.baseOptions.overrides&&this.baseOptions.overrides.__token_issuer||"https://"+this.baseOptions.domain+"/",this.baseOptions.jwksURI=this.baseOptions.overrides&&this.baseOptions.overrides.__jwks_uri,this.transactionManager=new Wt(this.baseOptions),this.client=new oe(this.baseOptions),this.redirect=new Xt(this,this.baseOptions),this.popup=new Qt(this,this.baseOptions),this.crossOriginAuthentication=new Jt(this,this.baseOptions),this.webMessageHandler=new Ft(this),this._universalLogin=new ee(this,this.baseOptions),this.ssodataStorage=new at(this.baseOptions)}function ne(t,e){this.baseOptions=e,this.request=t}function ie(t,e){this.baseOptions=e,this.request=t}function oe(t,e){2===arguments.length?this.auth0=t:e=t,J.check(e,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},clientID:{type:"string",message:"clientID option is required"},responseType:{optional:!0,type:"string",message:"responseType is not valid"},responseMode:{optional:!0,type:"string",message:"responseMode is not valid"},redirectUri:{optional:!0,type:"string",message:"redirectUri is not valid"},scope:{optional:!0,type:"string",message:"scope is not valid"},audience:{optional:!0,type:"string",message:"audience is not valid"},_disableDeprecationWarnings:{optional:!0,type:"boolean",message:"_disableDeprecationWarnings option is not valid"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=e,this.baseOptions._sendTelemetry=!1!==this.baseOptions._sendTelemetry||this.baseOptions._sendTelemetry,this.baseOptions.rootUrl="https://"+this.baseOptions.domain,this.request=new N(this.baseOptions),this.passwordless=new ne(this.request,this.baseOptions),this.dbConnection=new ie(this.request,this.baseOptions),this.warn=new it({disableWarnings:!!e._disableDeprecationWarnings}),this.ssodataStorage=new at(this.baseOptions)}function se(t){J.check(t,{type:"object",message:"options parameter is not valid"},{domain:{type:"string",message:"domain option is required"},token:{type:"string",message:"token option is required"},_sendTelemetry:{optional:!0,type:"boolean",message:"_sendTelemetry option is not valid"},_telemetryInfo:{optional:!0,type:"object",message:"_telemetryInfo option is not valid"}}),this.baseOptions=t,this.baseOptions.headers={Authorization:"Bearer "+this.baseOptions.token},this.request=new N(this.baseOptions),this.baseOptions.rootUrl=n("https://"+this.baseOptions.domain,"api","v2")}Gt.prototype.calculatePosition=function(t){var e=t.width||500,r=t.height||600,n=tt.getWindow(),i=void 0!==n.screenX?n.screenX:n.screenLeft,o=void 0!==n.screenY?n.screenY:n.screenTop;return{width:e,height:r,left:i+((void 0!==n.outerWidth?n.outerWidth:n.document.body.clientWidth)-e)/2,top:o+((void 0!==n.outerHeight?n.outerHeight:n.document.body.clientHeight)-r)/2}},Gt.prototype.preload=function(t){var e=this,r=tt.getWindow(),n=this.calculatePosition(t.popupOptions||{}),i=Q.merge(n).with(t.popupOptions),o=t.url||"about:blank",s=m(i,{encode:!1,delimiter:","});return this._current_popup&&!this._current_popup.closed?this._current_popup:(this._current_popup=r.open(o,"auth0_signup_popup",s),this._current_popup.kill=function(){this.close(),e._current_popup=null},this._current_popup)},Gt.prototype.load=function(t,e,r,n){var i=this,o=this.calculatePosition(r.popupOptions||{}),s=Q.merge(o).with(r.popupOptions),a=Q.merge({url:t,relay_url:e,window_features:m(s,{delimiter:",",encode:!1}),popup:this._current_popup}).with(r),p=Zt.open(a,function(t,e){return i._current_popup=null,n(t,e)});return p.focus(),p},Qt.prototype.buildPopupHandler=function(){var t=this.baseOptions.plugins.get("popup.getPopupHandler");return t?t.getPopupHandler():new Gt},Qt.prototype.preload=function(t){t=t||{};var e=this.buildPopupHandler();return e.preload(t),e},Qt.prototype.getPopupHandler=function(t,e){return t.popupHandler?t.popupHandler:e?this.preload(t):this.buildPopupHandler()},Qt.prototype.callback=function(t){var e=this,r=tt.getWindow(),n=(t=t||{}).popupOrigin||this.baseOptions.popupOrigin||tt.getOrigin();r.opener?Zt.onOpen(function(r,i,o){if(r!==n)return o({error:"origin_mismatch",error_description:"The popup's origin ("+r+") should match the `popupOrigin` parameter ("+n+")."});e.webAuth.parseHash(t||{},function(t,e){return o(t||e)})}):r.doPost=function(t){r.parent&&r.parent.postMessage(t,n)}},Qt.prototype.authorize=function(t,e){var r,i,o={},s=this.baseOptions.plugins.get("popup.authorize"),a=Q.merge(this.baseOptions,["clientID","scope","domain","audience","tenant","responseType","redirectUri","_csrf","state","_intstate","nonce"]).with(Q.blacklist(t,["popupHandler"]));return J.check(a,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),i=n(this.baseOptions.rootUrl,"relay.html"),t.owp?a.owp=!0:(o.origin=Kt(a.redirectUri),i=a.redirectUri),t.popupOptions&&(o.popupOptions=Q.pick(t.popupOptions,["width","height"])),s&&(a=s.processParams(a)),(a=this.transactionManager.process(a)).scope=a.scope||"openid profile email",delete a.domain,r=this.client.buildAuthorizeUrl(a),this.getPopupHandler(t).load(r,i,o,ct(e))},Qt.prototype.loginWithCredentials=function(t,e){t.realm=t.realm||t.connection,t.popup=!0,t=Q.merge(this.baseOptions,["redirectUri","responseType","state","nonce"]).with(Q.blacklist(t,["popupHandler","connection"])),t=this.transactionManager.process(t),this.crossOriginAuthentication.login(t,e)},Qt.prototype.passwordlessVerify=function(t,e){var r=this;return this.client.passwordless.verify(Q.blacklist(t,["popupHandler"]),function(n){if(n)return e(n);t.username=t.phoneNumber||t.email,t.password=t.verificationCode,delete t.email,delete t.phoneNumber,delete t.verificationCode,delete t.type,r.client.loginWithResourceOwner(t,e)})},Qt.prototype.signupAndLogin=function(t,e){var r=this,n=this.getPopupHandler(t,!0);return t.popupHandler=n,this.client.dbConnection.signup(Q.blacklist(t,["popupHandler"]),function(i){if(i)return n._current_popup&&n._current_popup.kill(),e(i);r.loginWithCredentials(t,e)})},Yt.create=function(t){return new Yt(t)},Yt.prototype.login=function(t,e){this.handler=new zt({auth0:this.auth0,url:this.authenticationUrl,eventListenerType:t?"message":"load",callback:this.getCallbackHandler(e,t),timeout:this.timeout,eventValidator:this.getEventValidator(),timeoutCallback:function(){e(null,"#error=timeout&error_description=Timeout+during+authentication+renew.")},usePostMessage:t||!1}),this.handler.init()},Yt.prototype.getEventValidator=function(){var t=this;return{isValid:function(e){switch(e.event.type){case"message":return e.event.origin===t.postMessageOrigin&&e.event.source===t.handler.iframe.contentWindow&&(!1===t.postMessageDataType||e.event.data.type&&e.event.data.type===t.postMessageDataType);case"load":if("about:"===e.sourceObject.contentWindow.location.protocol)return!1;default:return!0}}}},Yt.prototype.getCallbackHandler=function(t,e){return function(r){var n;n=e?"object"==typeof r.event.data&&r.event.data.hash?r.event.data.hash:r.event.data:r.sourceObject.contentWindow.location.hash,t(null,n)}},te.prototype.login=function(t,e){var r,i;return r=n(this.baseOptions.rootUrl,"usernamepassword","login"),t.username=t.username||t.email,t=Q.blacklist(t,["email"]),i=Q.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience"]).with(t),i=this.transactionManager.process(i),i=Q.toSnakeCase(i,["auth0Client"]),this.request.post(r).send(i).end(ct(e))},te.prototype.callback=function(t){var e,r=tt.getDocument();(e=r.createElement("div")).innerHTML=t,r.body.appendChild(e).children[0].submit()},ee.prototype.login=function(t,e){if(tt.getWindow().location.host!==this.baseOptions.domain)throw new Error("This method is meant to be used only inside the Universal Login Page.");var r,n=Q.merge(this.baseOptions,["clientID","redirectUri","tenant","responseType","responseMode","scope","audience","_csrf","state","_intstate","nonce"]).with(t);return J.check(n,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(r=new te(this.baseOptions)).login(n,function(t,n){return t?e(t):r.callback(n)})},ee.prototype.signupAndLogin=function(t,e){var r=this;return r.client.client.dbConnection.signup(t,function(n){return n?e(n):r.login(t,e)})},ee.prototype.getSSOData=function(t,e){var r,i="";return"function"==typeof t&&(e=t,t=!1),J.check(t,{type:"boolean",message:"withActiveDirectories parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),t&&(i="?"+m({ldaps:1,client_id:this.baseOptions.clientID})),r=n(this.baseOptions.rootUrl,"user","ssodata",i),this.request.get(r,{noHeaders:!0}).withCredentials().end(ct(e))},re.prototype.parseHash=function(t,e){var r,n;e||"function"!=typeof t?t=t||{}:(e=t,t={});var o=tt.getWindow(),s=void 0===t.hash?o.location.hash:t.hash;if((r=function(t,e){var r=e||{};if(null!==r.decoder&&void 0!==r.decoder&&"function"!=typeof r.decoder)throw new TypeError("Decoder has to be a function.");if(r.delimiter="string"==typeof r.delimiter||i.isRegExp(r.delimiter)?r.delimiter:d.delimiter,r.depth="number"==typeof r.depth?r.depth:d.depth,r.arrayLimit="number"==typeof r.arrayLimit?r.arrayLimit:d.arrayLimit,r.parseArrays=!1!==r.parseArrays,r.decoder="function"==typeof r.decoder?r.decoder:d.decoder,r.allowDots="boolean"==typeof r.allowDots?r.allowDots:d.allowDots,r.plainObjects="boolean"==typeof r.plainObjects?r.plainObjects:d.plainObjects,r.allowPrototypes="boolean"==typeof r.allowPrototypes?r.allowPrototypes:d.allowPrototypes,r.parameterLimit="number"==typeof r.parameterLimit?r.parameterLimit:d.parameterLimit,r.strictNullHandling="boolean"==typeof r.strictNullHandling?r.strictNullHandling:d.strictNullHandling,""===t||null==t)return r.plainObjects?Object.create(null):{};for(var n="string"==typeof t?function(t,e){for(var r={},n=t.split(e.delimiter,e.parameterLimit===1/0?void 0:e.parameterLimit),i=0;i0&&-1!==a.indexOf("token")&&!r.hasOwnProperty("access_token")?e(ut.buildResponse("invalid_hash","response_type contains `token`, but the parsed hash does not contain an `access_token` property")):a.length>0&&-1!==a.indexOf("id_token")&&!r.hasOwnProperty("id_token")?e(ut.buildResponse("invalid_hash","response_type contains `id_token`, but the parsed hash does not contain an `id_token` property")):this.validateAuthenticationResponse(t,r,e)},re.prototype.validateAuthenticationResponse=function(t,e,r){var n=this;t.__enableIdPInitiatedLogin=t.__enableIdPInitiatedLogin||t.__enableImpersonation;var i=e.state,o=this.transactionManager.getStoredTransaction(i),s=t.state||o&&o.state||null,a=s===i;if((i||s||!t.__enableIdPInitiatedLogin)&&!a)return r({error:"invalid_token",errorDescription:"`state` does not match."});var p=t.nonce||o&&o.nonce||null,u=t.state||o&&o.appState||null,c=function(t,i){return t?r(t):(o&&o.lastUsedConnection&&(i&&(s=i.sub),n.ssodataStorage.set(o.lastUsedConnection,s)),r(null,function(t,e,r){return{accessToken:t.access_token||null,idToken:t.id_token||null,idTokenPayload:r||null,appState:e||null,refreshToken:t.refresh_token||null,state:t.state||null,expiresIn:t.expires_in?parseInt(t.expires_in,10):null,tokenType:t.token_type||null,scope:t.scope||null}}(e,u,i)));var s};return e.id_token?this.validateToken(e.id_token,p,function(t,r){return t?"invalid_token"!==t.error?c(t):"HS256"!==(new Lt).decode(e.id_token).header.alg?c(t):e.access_token?n.client.userInfo(e.access_token,function(t,e){return t?c(t):c(null,e)}):c({error:"invalid_token",description:"The id_token cannot be validated because it was signed with the HS256 algorithm and public clients (like a browser) can’t store secrets. Please read the associated doc for possible ways to fix this. Read more: https://auth0.com/docs/errors/libraries/auth0-js/invalid-token#parsing-an-hs256-signed-id-token-without-an-access-token"}):e.access_token&&r.at_hash?(new Lt).validateAccessToken(e.access_token,"RS256",r.at_hash,function(t){return t?c(ut.invalidToken(t.message)):c(null,r)}):c(null,r)}):c(null,null)},re.prototype.validateToken=function(t,e,r){new Lt({issuer:this.baseOptions.token_issuer,jwksURI:this.baseOptions.jwksURI,audience:this.baseOptions.clientID,leeway:this.baseOptions.leeway||0,__disableExpirationCheck:this.baseOptions.__disableExpirationCheck}).verify(t,e,function(t,e){if(t)return r(ut.invalidToken(t.message));r(null,e)})},re.prototype.renewAuth=function(t,e){var r=!!t.usePostMessage,n=t.postMessageDataType||!1,i=t.postMessageOrigin||tt.getWindow().origin,o=t.timeout,s=this,a=Q.merge(this.baseOptions,["clientID","redirectUri","responseType","scope","audience","_csrf","state","_intstate","nonce"]).with(t);a.responseType=a.responseType||"token",a.responseMode=a.responseMode||"fragment",a=this.transactionManager.process(a),J.check(a,{type:"object",message:"options parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),a.prompt="none",a=Q.blacklist(a,["usePostMessage","tenant","postMessageDataType","postMessageOrigin"]),Yt.create({authenticationUrl:this.client.buildAuthorizeUrl(a),postMessageDataType:n,postMessageOrigin:i,timeout:o}).login(r,function(t,r){if("object"==typeof r)return e(t,r);s.parseHash({hash:r},e)})},re.prototype.checkSession=function(t,e){var r=Q.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t);return"code"===r.responseType?e({error:"error",error_description:"responseType can't be `code`"}):(t.nonce||(r=this.transactionManager.process(r)),r.redirectUri?(J.check(r,{type:"object",message:"options parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=Q.blacklist(r,["usePostMessage","tenant","postMessageDataType"]),void this.webMessageHandler.run(r,e)):e({error:"error",error_description:"redirectUri can't be empty"}))},re.prototype.changePassword=function(t,e){return this.client.dbConnection.changePassword(t,e)},re.prototype.passwordlessStart=function(t,e){var r=Q.merge(this.baseOptions,["responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t.authParams);return t.authParams=this.transactionManager.process(r),this.client.passwordless.start(t,e)},re.prototype.signup=function(t,e){return this.client.dbConnection.signup(t,e)},re.prototype.authorize=function(t){var e=Q.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t);J.check(e,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),(e=this.transactionManager.process(e)).scope=e.scope||"openid profile email",tt.redirect(this.client.buildAuthorizeUrl(e))},re.prototype.signupAndAuthorize=function(t,e){var r=this;return this.client.dbConnection.signup(Q.blacklist(t,["popupHandler"]),function(n){if(n)return e(n);t.realm=t.connection,t.username||(t.username=t.email),r.client.login(t,e)})},re.prototype.login=function(t,e){var r=Q.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t);r=this.transactionManager.process(r),tt.getWindow().location.host===this.baseOptions.domain?(r.connection=r.realm,delete r.realm,this._universalLogin.login(r,e)):this.crossOriginAuthentication.login(r,e)},re.prototype.passwordlessLogin=function(t,e){var r=Q.merge(this.baseOptions,["clientID","responseType","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t);if(r=this.transactionManager.process(r),tt.getWindow().location.host===this.baseOptions.domain)this.passwordlessVerify(r,e);else{var n=Q.extend({credentialType:"http://auth0.com/oauth/grant-type/passwordless/otp",realm:r.connection,username:r.email||r.phoneNumber,otp:r.verificationCode},Q.blacklist(r,["connection","email","phoneNumber","verificationCode"]));this.crossOriginAuthentication.login(n,e)}},re.prototype.crossOriginAuthenticationCallback=function(){this.crossOriginVerification()},re.prototype.crossOriginVerification=function(){this.crossOriginAuthentication.callback()},re.prototype.logout=function(t){tt.redirect(this.client.buildLogoutUrl(t))},re.prototype.passwordlessVerify=function(t,e){var r=this,n=Q.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","nonce"]).with(t);return J.check(n,{type:"object",message:"options parameter is not valid"},{responseType:{type:"string",message:"responseType option is required"}}),n=this.transactionManager.process(n),this.client.passwordless.verify(n,function(t){return t?e(t):tt.redirect(r.client.passwordless.buildVerifyUrl(n))})},ne.prototype.buildVerifyUrl=function(t){var e,r;return J.check(t,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(t){return!t.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(t){return!t.phoneNumber}}}),e=Q.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience","_csrf","state","_intstate","protocol","nonce"]).with(t),this.baseOptions._sendTelemetry&&(e.auth0Client=this.request.getTelemetryData()),e=Q.toSnakeCase(e,["auth0Client"]),r=m(e),n(this.baseOptions.rootUrl,"passwordless","verify_redirect","?"+r)},ne.prototype.start=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},send:{type:"string",message:"send option is required",values:["link","code"],value_message:"send is not valid ([link, code])"},phoneNumber:{optional:!0,type:"string",message:"phoneNumber option is required",condition:function(t){return"code"===t.send||!t.email}},email:{optional:!0,type:"string",message:"email option is required",condition:function(t){return"link"===t.send||!t.phoneNumber}},authParams:{optional:!0,type:"object",message:"authParams option is required"}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"passwordless","start"),(i=Q.merge(this.baseOptions,["clientID","responseType","redirectUri","scope"]).with(t)).scope&&(i.authParams=i.authParams||{},i.authParams.scope=i.scope),i.redirectUri&&(i.authParams=i.authParams||{},i.authParams.redirect_uri=i.redirectUri),i.responseType&&(i.authParams=i.authParams||{},i.authParams.response_type=i.responseType),delete i.redirectUri,delete i.responseType,delete i.scope,i=Q.toSnakeCase(i,["auth0Client","authParams"]),this.request.post(r).send(i).end(ct(e))},ne.prototype.verify=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},verificationCode:{type:"string",message:"verificationCode option is required"},phoneNumber:{optional:!1,type:"string",message:"phoneNumber option is required",condition:function(t){return!t.email}},email:{optional:!1,type:"string",message:"email option is required",condition:function(t){return!t.phoneNumber}}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),i=Q.pick(t,["connection","verificationCode","phoneNumber","email","auth0Client"]),i=Q.toSnakeCase(i,["auth0Client"]),r=n(this.baseOptions.rootUrl,"passwordless","verify"),this.request.post(r).send(i).end(ct(e))},ie.prototype.signup=function(t,e){var r,i,o;return J.check(t,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"},password:{type:"string",message:"password option is required"}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"dbconnections","signup"),o=(i=Q.merge(this.baseOptions,["clientID"]).with(t)).user_metadata||i.userMetadata,i=Q.blacklist(i,["scope","userMetadata","user_metadata"]),i=Q.toSnakeCase(i,["auth0Client"]),o&&(i.user_metadata=o),this.request.post(r).send(i).end(ct(e))},ie.prototype.changePassword=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"},{connection:{type:"string",message:"connection option is required"},email:{type:"string",message:"email option is required"}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"dbconnections","change_password"),i=Q.merge(this.baseOptions,["clientID"]).with(t,["email","connection"]),i=Q.toSnakeCase(i,["auth0Client"]),this.request.post(r).send(i).end(ct(e))},oe.prototype.buildAuthorizeUrl=function(t){var e,r;return J.check(t,{type:"object",message:"options parameter is not valid"}),e=Q.merge(this.baseOptions,["clientID","responseType","responseMode","redirectUri","scope","audience"]).with(t),J.check(e,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},redirectUri:{optional:!0,type:"string",message:"redirectUri option is required"},responseType:{type:"string",message:"responseType option is required"},nonce:{type:"string",message:"nonce option is required",condition:function(t){return-1===t.responseType.indexOf("code")&&-1!==t.responseType.indexOf("id_token")}},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),this.baseOptions._sendTelemetry&&(e.auth0Client=this.request.getTelemetryData()),e.connection_scope&&J.isArray(e.connection_scope)&&(e.connection_scope=e.connection_scope.join(",")),e=Q.blacklist(e,["username","popupOptions","domain","tenant","timeout"]),e=Q.toSnakeCase(e,["auth0Client"]),e=ft(this.warn,e),r=m(e),n(this.baseOptions.rootUrl,"authorize","?"+r)},oe.prototype.buildLogoutUrl=function(t){var e,r;return J.check(t,{optional:!0,type:"object",message:"options parameter is not valid"}),e=Q.merge(this.baseOptions,["clientID"]).with(t||{}),this.baseOptions._sendTelemetry&&(e.auth0Client=this.request.getTelemetryData()),e=Q.toSnakeCase(e,["auth0Client","returnTo"]),r=m(Q.blacklist(e,["federated"])),t&&void 0!==t.federated&&!1!==t.federated&&"false"!==t.federated&&(r+="&federated"),n(this.baseOptions.rootUrl,"v2","logout","?"+r)},oe.prototype.loginWithDefaultDirectory=function(t,e){return J.check(t,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),t.grantType="password",this.oauthToken(t,e)},oe.prototype.login=function(t,e){return J.check(t,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},realm:{type:"string",message:"realm option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),t.grantType="http://auth0.com/oauth/grant-type/password-realm",this.oauthToken(t,e)},oe.prototype.oauthToken=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"oauth","token"),i=Q.merge(this.baseOptions,["clientID","scope","audience"]).with(t),J.check(i,{type:"object",message:"options parameter is not valid"},{clientID:{type:"string",message:"clientID option is required"},grantType:{type:"string",message:"grantType option is required"},scope:{optional:!0,type:"string",message:"scope option is required"},audience:{optional:!0,type:"string",message:"audience option is required"}}),i=Q.toSnakeCase(i,["auth0Client"]),i=dt(this.warn,i),this.request.post(r).send(i).end(ct(e))},oe.prototype.loginWithResourceOwner=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"},{username:{type:"string",message:"username option is required"},password:{type:"string",message:"password option is required"},connection:{type:"string",message:"connection option is required"},scope:{optional:!0,type:"string",message:"scope option is required"}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"oauth","ro"),i=Q.merge(this.baseOptions,["clientID","scope"]).with(t,["username","password","scope","connection","device"]),(i=Q.toSnakeCase(i,["auth0Client"])).grant_type=i.grant_type||"password",this.request.post(r).send(i).end(ct(e))},oe.prototype.getSSOData=function(t,e){if(this.auth0||(this.auth0=new re(this.baseOptions)),tt.getWindow().location.host===this.baseOptions.domain)return this.auth0._universalLogin.getSSOData(t,e);"function"==typeof t&&(e=t),J.check(e,{type:"function",message:"cb parameter is not valid"});var r=this.baseOptions.clientID,n=this.ssodataStorage.get()||{};this.auth0.checkSession({responseType:"token id_token",scope:"openid profile email",connection:n.lastUsedConnection,timeout:5e3},function(t,i){return t?"login_required"===t.error?e(null,{sso:!1}):("consent_required"===t.error&&(t.error_description="Consent required. When using `getSSOData`, the user has to be authenticated with the following scope: `openid profile email`."),e(t,{sso:!1})):n.lastUsedSub&&n.lastUsedSub!==i.idTokenPayload.sub?e(t,{sso:!1}):e(null,{lastUsedConnection:{name:n.lastUsedConnection},lastUsedUserID:i.idTokenPayload.sub,lastUsedUsername:i.idTokenPayload.email||i.idTokenPayload.name,lastUsedClientID:r,sessionClients:[r],sso:!0})})},oe.prototype.userInfo=function(t,e){var r;return J.check(t,{type:"string",message:"accessToken parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"userinfo"),this.request.get(r).set("Authorization","Bearer "+t).end(ct(e,{ignoreCasing:!0}))},oe.prototype.delegation=function(t,e){var r,i;return J.check(t,{type:"object",message:"options parameter is not valid"},{grant_type:{type:"string",message:"grant_type option is required"}}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"delegation"),i=Q.merge(this.baseOptions,["clientID"]).with(t),i=Q.toSnakeCase(i,["auth0Client"]),this.request.post(r).send(i).end(ct(e))},oe.prototype.getUserCountry=function(t){var e;return J.check(t,{type:"function",message:"cb parameter is not valid"}),e=n(this.baseOptions.rootUrl,"user","geoloc","country"),this.request.get(e).end(ct(t))},se.prototype.getUser=function(t,e){var r;return J.check(t,{type:"string",message:"userId parameter is not valid"}),J.check(e,{type:"function",message:"cb parameter is not valid"}),r=n(this.baseOptions.rootUrl,"users",t),this.request.get(r).end(ct(e,{ignoreCasing:!0}))},se.prototype.patchUserMetadata=function(t,e,r){var i;return J.check(t,{type:"string",message:"userId parameter is not valid"}),J.check(e,{type:"object",message:"userMetadata parameter is not valid"}),J.check(r,{type:"function",message:"cb parameter is not valid"}),i=n(this.baseOptions.rootUrl,"users",t),this.request.patch(i).send({user_metadata:e}).end(ct(r,{ignoreCasing:!0}))},se.prototype.linkUser=function(t,e,r){var i;return J.check(t,{type:"string",message:"userId parameter is not valid"}),J.check(e,{type:"string",message:"secondaryUserToken parameter is not valid"}),J.check(r,{type:"function",message:"cb parameter is not valid"}),i=n(this.baseOptions.rootUrl,"users",t,"identities"),this.request.post(i).send({link_with:e}).end(ct(r,{ignoreCasing:!0}))};var ae={Authentication:oe,Management:se,WebAuth:re,version:P};t.Authentication=oe,t.Management=se,t.WebAuth=re,t.version=P,t.default=ae,Object.defineProperty(t,"__esModule",{value:!0})}); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})}, {}]; window.modules["324"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const t=/\/_components\/.+?\/instances\/([^\[email protected]]+)/.exec(e);return t&&t[1]}; }, {"350":350}]; window.modules["325"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const r=/\/_pages\/([^\.\/]+)/.exec(e);return r&&r[1]}; }, {"350":350}]; window.modules["326"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const t=/\/_layouts\/.+?\/instances\/([^\.\/@]+)/.exec(e);return t&&t[1]}; }, {"350":350}]; window.modules["327"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const r=/\/_lists\/(.*)/.exec(e);return r&&r[1]}; }, {"350":350}]; window.modules["328"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const r=/\/_pages\/[email protected](.+)/.exec(e);return r&&r[1]}; }, {"350":350}]; window.modules["329"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const t=/_layouts\/(.+?)[\/\.]/.exec(e)||/_layouts\/(.*)/.exec(e);return t&&t[1]}; }, {"350":350}]; window.modules["330"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const t=/_components\/(.+?)[\/\.]/.exec(e)||/_components\/(.*)/.exec(e);return t&&t[1]}; }, {"350":350}]; window.modules["331"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(r){return isUriStringCheck.strCheck(r),!!r.match(/\/_components\/[A-Za-z0-9\-]+$/)}; }, {"350":350}]; window.modules["332"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){isUriStringCheck.strCheck(e);const r=/\/_components\/[email protected](.+)/.exec(e);return r&&r[1]}; }, {"350":350}]; window.modules["333"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),e.toLowerCase().indexOf("/_layouts/")>-1}; }, {"350":350}]; window.modules["334"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(s){return isUriStringCheck.strCheck(s),s.split(/\/_(pages|components|lists|uris|schedule|users|layouts)/)[0]}; }, {"350":350}]; window.modules["335"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),e.toLowerCase().indexOf("/_pages/")>-1}; }, {"350":350}]; window.modules["336"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(r){return isUriStringCheck.strCheck(r),!!r.match(/\/_layouts\/[A-Za-z0-9\-]+$/)}; }, {"350":350}]; window.modules["337"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),-1!==e.indexOf("@published")}; }, {"350":350}]; window.modules["338"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),e.toLowerCase().indexOf("/_components/")>-1}; }, {"350":350}]; window.modules["339"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(r){return isUriStringCheck.strCheck(r),r.toLowerCase().indexOf("/_uris/")>-1}; }, {"350":350}]; window.modules["340"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),e.toLowerCase().indexOf("/_lists/")>-1}; }, {"350":350}]; window.modules["341"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e,r,t=!1){var n,s,{slug:c,host:i,path:o,prefix:h}=r;return isUriStringCheck.strCheck(e),h||(h=o&&o.length>1?`${i}${o}`:i),n=`${t?'"_ref":':""}"${c}/_components/`,s=new RegExp(`${t?'"_ref":':""}"${h}/_components/`,"g"),e.replace(s,n)}; }, {"350":350}]; window.modules["342"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e){return isUriStringCheck.strCheck(e),e.toLowerCase().indexOf("/_users/")>-1}; }, {"350":350}]; window.modules["343"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e,r){var{host:t,path:i,slug:s,prefix:c}=r,n=-1!==e.indexOf("/_");return c||(c=i&&i.length>1?`${t}${i}`:t),isUriStringCheck.strCheck(e),e.replace(`${c}${n?"/":""}`,`${s}${n?"/":""}`)}; }, {"350":350}]; window.modules["344"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e,r){var{slug:t,prefix:i,host:s,path:c}=r,n=-1!==e.indexOf("/_");return i||(i=c&&c.length>1?`${s}${c}`:s),isUriStringCheck.strCheck(e),e.replace(`${t}${n?"/":""}`,`${i}${n?"/":""}`)}; }, {"350":350}]; window.modules["345"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(e,r=!1){return function(t){var n,s,{slug:c,host:i,path:o,prefix:u}=e;return isUriStringCheck.strCheck(t),u||(u=o&&o.length>1?`${i}${o}`:i),n=`${r?'"_ref":':""}"${u}/_components/`,s=new RegExp(`${r?'"_ref":':""}"${c}/_components/`,"g"),t.replace(s,n)}}; }, {"350":350}]; window.modules["346"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350);module.exports=function(r,t){return isUriStringCheck.strCheck(r),t?r.split("@")[0]+"@"+t:r.split("@")[0]}; }, {"350":350}]; window.modules["347"] = [function(require,module,exports){"use strict";const getComponentName=require(330),{strCheck:strCheck}=require(350);module.exports=((e,t)=>{if(strCheck(t),"object"!=typeof e)throw new Error(`Page argument must be an object, not ${typeof e}`);return Object.values(e).filter(Array.isArray).reduce((e,t)=>e.concat(t),[]).find(e=>getComponentName(e)===t)}); }, {"330":330,"350":350}]; window.modules["348"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350),isPage=require(335);module.exports=function(e){return isUriStringCheck.strCheck(e),isPage(e)&&!!e.match(/\/meta$/i)}; }, {"335":335,"350":350}]; window.modules["349"] = [function(require,module,exports){"use strict";const isUriStringCheck=require(350),isLayout=require(333),getLayoutInstance=require(326);module.exports=function(t){return isUriStringCheck.strCheck(t),isLayout(t)&&!!getLayoutInstance(t)&&!!t.match(/\/meta$/i)}; }, {"326":326,"333":333,"350":350}]; window.modules["350"] = [function(require,module,exports){"use strict";function strCheck(t){if("string"==typeof t)return!0;throw new Error("Argument must be a string, not "+typeof t)}module.exports.strCheck=strCheck; }, {}]; window.modules["364"] = [function(require,module,exports){!function(e){function t(e,r){var o;r=r||{},this._id=t._generateUUID(),this._promise=r.promise||Promise,this._frameId=r.frameId||"CrossStorageClient-"+this._id,this._origin=t._getOrigin(e),this._requests={},this._connected=!1,this._closed=!1,this._count=0,this._timeout=r.timeout||5e3,this._listener=null,this._installListener(),r.frameId&&(o=document.getElementById(r.frameId)),o&&this._poll(),o=o||this._createFrame(e),this._hub=o.contentWindow}t.frameStyle={display:"none",position:"absolute",top:"-999px",left:"-999px"},t._getOrigin=function(e){var t;return(t=document.createElement("a")).href=e,t.host||(t=window.location),((t.protocol&&":"!==t.protocol?t.protocol:window.location.protocol)+"//"+t.host).replace(/:80$|:443$/,"")},t._generateUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})},t.prototype.onConnect=function(){var e=this;return this._connected?this._promise.resolve():this._closed?this._promise.reject(new Error("CrossStorageClient has closed")):(this._requests.connect||(this._requests.connect=[]),new this._promise(function(t,r){var o=setTimeout(function(){r(new Error("CrossStorageClient could not connect"))},e._timeout);e._requests.connect.push(function(e){if(clearTimeout(o),e)return r(e);t()})}))},t.prototype.set=function(e,t){return this._request("set",{key:e,value:t})},t.prototype.get=function(e){var t=Array.prototype.slice.call(arguments);return this._request("get",{keys:t})},t.prototype.del=function(){var e=Array.prototype.slice.call(arguments);return this._request("del",{keys:e})},t.prototype.clear=function(){return this._request("clear")},t.prototype.getKeys=function(){return this._request("getKeys")},t.prototype.close=function(){var e=document.getElementById(this._frameId);e&&e.parentNode.removeChild(e),window.removeEventListener?window.removeEventListener("message",this._listener,!1):window.detachEvent("onmessage",this._listener),this._connected=!1,this._closed=!0},t.prototype._installListener=function(){var e=this;this._listener=function(t){var r,o,n;if(!e._closed&&t.data&&"string"==typeof t.data&&("null"===t.origin?"file://":t.origin)===e._origin)if("cross-storage:unavailable"!==t.data){if(-1!==t.data.indexOf("cross-storage:")&&!e._connected){if(e._connected=!0,!e._requests.connect)return;for(r=0;r1?r:r[0]},_del:function(e){for(var t=0;t-1}module.exports=listCacheHas; }, {"706":706}]; window.modules["656"] = [function(require,module,exports){var assocIndexOf=require(706);function listCacheSet(s,e){var t=this.__data__,a=assocIndexOf(t,s);return a-1&&e%1==0&&e0&&r(u)?e>1?baseFlatten(u,e-1,r,t,l):arrayPush(l,u):t||(l[l.length]=u)}return l}module.exports=baseFlatten; }, {"694":694,"741":741}]; window.modules["741"] = [function(require,module,exports){var Symbol=require(677),isArguments=require(688),isArray=require(123),spreadableSymbol=Symbol?Symbol.isConcatSpreadable:void 0;function isFlattenable(e){return isArray(e)||isArguments(e)||!!(spreadableSymbol&&e&&e[spreadableSymbol])}module.exports=isFlattenable; }, {"123":123,"677":677,"688":688}]; window.modules["742"] = [function(require,module,exports){var createBaseFor=require(743),baseFor=createBaseFor();module.exports=baseFor; }, {"743":743}]; window.modules["743"] = [function(require,module,exports){function createBaseFor(e){return function(r,t,a){for(var n=-1,o=Object(r),c=a(r),u=c.length;u--;){var f=c[e?u:++n];if(!1===t(o[f],f,o))break}return r}}module.exports=createBaseFor; }, {}]; window.modules["745"] = [function(require,module,exports){var castPath=require(746),toKey=require(747);function baseGet(e,t){for(var a=0,r=(t=castPath(t,e)).length;null!=e&&at}module.exports=baseGt; }, {}]; window.modules["754"] = [function(require,module,exports){function baseHasIn(n,e){return null!=n&&e in Object(n)}module.exports=baseHasIn; }, {}]; window.modules["755"] = [function(require,module,exports){function baseIsNaN(e){return e!=e}module.exports=baseIsNaN; }, {}]; window.modules["756"] = [function(require,module,exports){function strictIndexOf(r,t,e){for(var n=e-1,f=r.length;++nn))return!1;var f=u.get(e);if(f&&u.get(r))return f==r;var o=-1,_=!0,s=a&COMPARE_UNORDERED_FLAG?new SetCache:void 0;for(u.set(e,r),u.set(r,e);++o-1&&e%1==0&&e=o?p:p*("desc"==i[n]?-1:1)}return e.index-r.index}module.exports=compareMultiple; }, {"839":839}]; window.modules["806"] = [function(require,module,exports){var baseGet=require(745),baseSet=require(807),castPath=require(746);function basePickBy(e,a,t){for(var r=-1,s=a.length,b={};++rn?0:n+r),(a=a>n?n:a)a?0:a-r>>>0,r>>>=0;for(var o=Array(n);++lr||l&&u&&s&&!m&&!c||n&&u&&s||!e&&s||!o)return 1;if(!n&&!l&&!c&&i1?r[i-1]:void 0,n=i>2?r[2]:void 0;for(s=e.length>3&&"function"==typeof s?(i--,s):void 0,n&&isIterateeCall(r[0],r[1],n)&&(s=i-1?a[n?r[s]:s]:void 0}}module.exports=createFind; }, {"122":122,"777":777,"789":789}]; window.modules["860"] = [function(require,module,exports){var toNumber=require(889),INFINITY=1/0,MAX_INTEGER=1.7976931348623157e308;function toFinite(e){return e?(e=toNumber(e))===INFINITY||e===-INFINITY?(e0){if(++r>=HOT_COUNT)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}module.exports=shortOut; }, {}]; window.modules["887"] = [function(require,module,exports){var toFinite=require(860);function toInteger(t){var e=toFinite(t),r=e%1;return e==e?r?e-r:e:0}module.exports=toInteger; }, {"860":860}]; window.modules["889"] = [function(require,module,exports){var isObject=require(73),isSymbol=require(736),NAN=NaN,reTrim=/^\s+|\s+$/g,reIsBadHex=/^[-+]0x[0-9a-f]+$/i,reIsBinary=/^0b[01]+$/i,reIsOctal=/^0o[0-7]+$/i,freeParseInt=parseInt;function toNumber(e){if("number"==typeof e)return e;if(isSymbol(e))return NAN;if(isObject(e)){var r="function"==typeof e.valueOf?e.valueOf():e;e=isObject(r)?r+"":r}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(reTrim,"");var t=reIsBinary.test(e);return t||reIsOctal.test(e)?freeParseInt(e.slice(2),t?2:8):reIsBadHex.test(e)?NAN:+e}module.exports=toNumber; }, {"73":73,"736":736}]; window.modules["890"] = [function(require,module,exports){var root=require(641),now=function(){return root.Date.now()};module.exports=now; }, {"641":641}]; window.modules["896"] = [function(require,module,exports){var apply=require(680),baseEach=require(729),baseInvoke=require(758),baseRest=require(816),isArrayLike=require(789),invokeMap=baseRest(function(e,a,r){var i=-1,s="function"==typeof a,n=isArrayLike(e)?Array(e.length):[];return baseEach(e,function(e){n[++i]=s?apply(a,e,r):baseInvoke(e,a,r)}),n});module.exports=invokeMap; }, {"680":680,"729":729,"758":758,"789":789,"816":816}]; window.modules["897"] = [function(require,module,exports){function stubFalse(){return!1}module.exports=stubFalse; }, {}]; window.modules["906"] = [function(require,module,exports){var baseIteratee=require(777),basePullAt=require(810);function remove(e,r){var t=[];if(!e||!e.length)return t;var a=-1,u=[],l=e.length;for(r=baseIteratee(r,3);++a0&&p>s&&(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["1129"] = [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;n=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}; }, {"1169":1169}]; window.modules["1171"] = [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["nav-search-button.client"] = [function(require,module,exports){"use strict";var dom=require(1),$gtm=require(41);DS.controller("nav-search-button",[function(){function t(t){var e=dom.find("body");this.el=t,this.button=dom.find(t,".nav-search-button-trigger"),this.search=dom.find(t,".nav-search-form"),this.inputField=dom.find(t,".search-input"),e.addEventListener("click",this.collapseSearch.bind(this)),e.addEventListener("touchend",this.collapseSearch.bind(this)),document.addEventListener("keydown",this.escapeSearch.bind(this))}return t.prototype={events:{".nav-search-button-trigger click":"expandSearch",".nav-search-form submit":"submitHandler"},toggleClasses:function(){var t=dom.find("body");this.el.classList.toggle("closed"),this.el.classList.toggle("open"),t.classList.toggle("disabled"),t.classList.toggle("search-active")},expandSearch:function(){this.toggleClasses(),this.el.classList.contains("open")&&this.inputField.focus()},collapseSearch:function(t){!this.el.contains(t.target)&&this.el.classList.contains("open")&&this.toggleClasses()},escapeSearch:function(t){27===t.keyCode&&this.el.classList.contains("open")&&this.toggleClasses()},submitHandler:function(t){t.preventDefault(),this.search.submit(),this.emitTrackingEvent()},emitTrackingEvent:function(){$gtm.reportCustomEvent({category:"search",label:"on="+window.location.href,action:this.inputField.value})}},t}]); }, {"1":1,"41":41}]; window.modules["nav-dropdown-button.client"] = [function(require,module,exports){"use strict";var dom=require(1);function getNextSiblings(n){for(var t=[],e=n;e=e.nextElementSibling;)t.push(e);return t}module.exports=function(n){var t,e=n.querySelector(".nav-dropdown-button-trigger"),o=dom.find("body"),i=dom.find("header.page-header"),s=dom.find('[data-editable="main"]');function d(){var e,d=window.innerWidtha.bottom||n.righta.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 getCutAdChannel(e){return{all:"",animals:"Self/SoU",beauty:"Style/Beauty","career money productivity":"Power/Money",celebrity:"Culture/Celebrity","crime-assault":"Power","culture-media":"Culture",fashion:"Style/Fashion","feminism-politics-identity":"Power/Politics","relationships-friends family":"Self","health-wellness":"Self/Health","home design":"Style/Design_Hunting","learning creativity":"Self/SoU",living:"Style",other:"",parenting:"Self/Motherhood","mental health personality social behavior":"Self","relationships-sex dating marriage":"Self/sex_relationships",shopping:"Style/Shopping",weddings:"Style/Weddings"}[e]||""}function getVultureAdChannel(e){var t="";switch(e){case"tv":case"music":case"movies":case"books":case"comedy":case"art":case"theater":t=e;break;default:t=""}return t}function getIntelligencerAdChannel(e){var t="";switch(e){case"politics-domestic":case"politics-international":t="Politics";break;case"business":case"internet-culture":case"products-apps-software":case"products-consumer-electronics":t="Business";break;case"tech-industry":case"tech-society":t="Technology";break;default:t=""}return t}function getNYMagAdChannel(e){var t="";switch(e){case"all":t=e;break;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;default:t=""}return t}function appendSectionToDfpAds(){var e,t,n,a=document.querySelector("meta[property='og:site_name']"),i=document.querySelector("article[data-content-channel]"),o=document.querySelectorAll('[data-name^="/4088/"]');a&&(e=a.content),i&&(t=i.getAttribute("data-content-channel").toLowerCase()),t&&("The Cut"===e?n=getCutAdChannel(t):"Vulture"===e?n=getVultureAdChannel(t):"Intelligencer"===e?n=getIntelligencerAdChannel(t):"New York Magazine"===e&&(n=getNYMagAdChannel(t)),n&&_forEach(o,function(e){e.setAttribute("data-name",e.getAttribute("data-name")+"/"+n)}))}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(),injectGoogleScripts(),DS.controller("ad",["adService",function(e){return function(t){var n,a,i=e.create(t),o=t.getAttribute("data-offload"),r=new $visibility.Visible(t,{preloadThreshold:o?window.innerHeight/2:200}),s=!1;function l(){window.innerWidth>=1180&&t.parentElement.classList.contains("ad-repeat")&&flaggedComponentsOnPage.length&&(n=getElementsOverlapAmount(t,flaggedComponentsOnPage),a=parseInt(t.parentElement.getAttribute("data-gap"),10),t.style.marginTop=a+30+n+"px")}function c(){l(),e.refresh(i)}function d(){e.remove(i),s||(s=!0,r.on("shown",c))}r.preload&&$visibility.isElementNotHidden(t)?(e.addToPageLoadQueue(i),o&&r.on("hidden",d)):(r.on("preload",function(){!i.slot&&$visibility.isElementNotHidden(t)&&(l(),e.load(i))}),o&&r.on("hidden",d)),this.adData=i}}]); }, {"27":27,"28":28,"29":29}]; window.modules["newsletter-flex-text.client"] = [function(require,module,exports){"use strict";var dom=require(1);DS.controller("newsletter-flex-text",["$window",function(e){function t(t){this.el=t,this.email=dom.find(t,".email"),this.source=dom.find(t,".source"),this.form=dom.find(t,".form"),this.returnMsg=dom.find(t,".return-message"),this.newsletterId=dom.find(t,".newsletterId").value,this.local=e.localStorage,this.session=e.sessionStorage,this.displayComponent()}return t.prototype={getRequestUrl:function(){return this.form.getAttribute("action")},getPayloadObject:function(){var e={};return e.email=this.email.value,e.source=this.source.value,e.lists={},e.lists[this.newsletterId]=!0,e},displayComponent:function(){var t,s=Object.keys(this.local),i=this,n=[];for(t=0;t-1&&n.push(s[t]);if(0===n.length){if(this.el.classList.remove("initially-hidden"),this.form.classList.remove("initially-hidden"),setTimeout(function(){i.el.classList.remove("opacity-zero")},100),this.session)try{this.session.setItem("signUpColumn","displayed")}catch(e){}}else i.el.parentElement.classList.add("newsletter-collapsed");e.addEventListener("unload",function(){i.session.removeItem("signUpColumn")})},events:{".form submit":"submitForm",".email keypress":"clearMsg"},clearMsg:function(){this.returnMsg.innerHTML=""},submitForm:function(e){var t=new XMLHttpRequest,s=this.form.getAttribute("data-error-msg");this.email.value.search(/\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b/i)=200&&t 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); } } }); } // 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(); // ]] http://vulture.com/
2 Sign In Account http://vulture.com/#
3 TV TV TV http://vulture.com/tv/
3 Movies Movies Movies http://vulture.com/movies/
3 Comedy Comedy Comedy http://vulture.com/comedy/
3 Music Music Music http://vulture.com/music/
1 TV Recaps http://vulture.com/tv-recaps/
3 What to Stream What to Stream What To Stream http://vulture.com/streaming/
3 Vulture Lists Vulture Lists a:hover .hp-more-vulture-lists-arrow, a:focus .hp-more-vulture-lists-arrow { fill: #00bcf1; } a:hover .hp-more-vulture-lists-bg-fill, a:focus .hp-more-vulture-lists-bg-fill { fill: #111; } More Vulture Lists http://vulture.com/vulture-lists/
3 Books Books Books http://vulture.com/books/
1 Theater http://vulture.com/theater/
1 Art http://vulture.com/art/
1 Awards http://vulture.com/awards/
1 Videos http://vulture.com/video/
1 About http://vulture.com/article/about-us.html
2 Seen .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000} Arts http://vulture.com/art
1 The Feed The Feed The Feed http://vulture.com/blog/
1 More News More News http://vulture.com/blog/?start=10
1 More News More News http://vulture.com/blog/?start=16
1 More News More News http://vulture.com/blog/?start=17
1 .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000} Reviews http://vulture.com/news/review
1 .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000}.tv-svg-left { display: none; }.tv-svg-right { display: block; }@media all and (min-width:768px) {.tv-svg-left { display: block; }.tv-svg-right { display: none; }} TV http://vulture.com/tv
1 Movies http://vulture.com/movies
1 .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000}.comedy-svg-left { display: none; }.comedy-svg-right { display: block; }@media all and (min-width:768px) {.comedy-svg-left { display: block; }.comedy-svg-right { display: none; }} Comedy http://vulture.com/comedy
1 .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000} Music http://vulture.com/music
1 .svg:hover .svg-background,.svg:focus .svg-background{fill:#000}.svg:hover .svg-text,.svg:focus .svg-text{fill:#fff}.svg:hover .svg-banner-shadow,.svg:focus .svg-banner-shadow{fill:#000}.books-svg-left { display: none; }.books-svg-right { display: block; }@media all and (min-width:768px) {.books-svg-left { display: block; }.books-svg-right { display: none; }} Books http://vulture.com/books
1 .podcasts-svg-left { display: none; }.podcasts-svg-right { display: block; }@media all and (min-width:768px) {.podcasts-svg-left { display: block; }.podcasts-svg-right { display: none; }} Podcasts http://vulture.com/news/podcasts