Discussion Question-Can complete today before 12 pm CST

profilemj007
ConsciousCapitalismIsNotanOxymoron.mht

2/3 Free Articles leftRemaining Register for more | Subscribe + Save! MENU

  • SUGGESTED TOPICS
Subscribe Hi, Guest Sign In Register

Items added to cart

Your Shopping Cart is empty.
Visit our store

Guest User

MY LIBRARY TOPIC FEEDS PURCHASES ACTIVITY ACCOUNT SETTINGS EMAIL PREFERENCES LOG OUT
  • SUGGESTED TOPICS
Harvard Business Review Loading... Leadership

“Conscious Capitalism” Is Not an Oxymoron

January 14, 2013 Loading...

There is a growing network of people — including the leaders of companies such as the Container Store, Starbucks, Trader Joe’s, Patagonia and Whole Foods Market (of which one of us is the co-CEO) — building their companies based on the idea that business is about more than making a profit. It’s about higher purpose. We are a part of this group, and host a set of conferences each year to share the guiding principles and best business practices that we have come to call “conscious capitalism.” Every year, we come in contact with more leaders — perhaps like you — who share these beliefs.

But one of the most predictable responses we get from people when we mention the idea of conscious capitalism is, “That’s an oxymoron!”

It is undoubtedly an unusual juxtaposition of words. The word “conscious” has many connotations for people. We define it as being mindful and awake, seeing reality as it is rather than as we wish it to be, recognizing and being accountable for all the consequences of our actions, having a better sense of what is right and what is wrong, rejecting violence as a way to solve problems and being in harmony with nature.

The word “capitalism” was coined by its harshest critic, Karl Marx, around 1850. The interest in and widespread confusion surrounding these ideas is evident from the fact that the most searched word of 2012 on Merriam-Webster’s online dictionary was “capitalism,” followed by “socialism.” Type “define capitalism” into Google’s search box and one of the first entries is “An economic and political system in which a country’s trade and industry are controlled by private owners for profit.” That is a value-laden definition — especially the words “controlled” and “for profit.”

We think of capitalism in simple and benign terms: it is simply the co-existence of free markets and free people, or economic and political freedom. Unique among all the species on this planet, we human beings are wired to create value and trade with each other. This is in our very nature. The evidence is overwhelming that whenever in history humans have enjoyed unencumbered freedom to do just that, we have prospered, our numbers have grown, and we have lived longer, happier and more peaceful lives. When our natural urges to interact and trade freely with others have been suppressed, we have regressed. See Matt Ridley’s terrific book The Rational Optimist for oodles of historical evidence of this.

Consider what has happened in just the past 200 years or so, a time when capitalism really took root as an idea in many societies. After tens of millennia in which 85-90% of human beings lived on less than a dollar a day in today’s terms, worldwide per capita incomes have increased nearly fifteen-fold in constant dollars. Today, about 16% of the world’s population lives on less than a dollar a day. Adjusting for quality and affordability, it is estimated that the average American is 100 times better off today than 200 years ago. Average life expectancy has climbed from about 30 to over 67 years in that time span, and human population has risen from one billion in 1820 to over seven billion today.

That is astounding progress, not just for a fortunate few but for most of humanity. We therefore hold these truths to be self-evident: business is good because it creates value, it is ethical because it is based on voluntary exchange, it is noble because it can elevate our existence and it is heroic because it lifts people out of poverty and creates prosperity. Free enterprise capitalism is the most powerful system for social cooperation and human progress ever conceived. It is one of the most compelling ideas we humans have ever had. But we can aspire to even more.

“Conscious Capitalism” is a way of thinking about capitalism and business that better reflects where we are in the human journey, the state of our world today, and the innate potential of business to make a positive impact on the world. Conscious businesses are galvanized by higher purposes that serve, align and integrate the interests of all their major stakeholders. Their higher state of consciousness makes visible to them the interdependencies that exist across all stakeholders, allowing them to discover and harvest synergies from situations that otherwise seem replete with trade-offs. They have conscious leaders who are driven by service to the company’s purpose, to all the people the business touches and to the planet we all share. Conscious businesses have trusting, authentic, innovative and caring cultures that make working there a source of both personal growth and professional fulfillment. They endeavor to create financial, intellectual, social, cultural, emotional, spiritual, physical and ecological wealth for all their stakeholders. Evidence is mounting that such businesses significantly outperform traditional businesses in financial terms, while also creating many other forms of well-being.

Ultimately conscious businesses create lasting value as the world evolves to even greater levels of prosperity, helping billions of people flourish and lead lives infused with passion, purpose, love and creativity — a world of freedom, harmony, prosperity and compassion.

John Mackey is the co-CEO and cofounder of Whole Foods Market and cofounder of the nonprofit Conscious Capitalism, Inc. Raj Sisodia is cofounder and trustee of Conscious Capitalism, Inc. and professor of marketing at Bentley University. They are the authors of Conscious Capitalism: Liberating the Heroic Spirit of Business (HBR Press, 2013).

This article is about LEADERSHIP
Follow this topic Following Related Topics: Loading... Loading...
Partner Center
Harvard Business Review THE LATEST MOST POPULAR ALL TOPICS VIDEO MAGAZINE ARCHIVE BUY HBR PRODUCTS SUBSCRIBER EXCLUSIVES MY LIBRARY Subscribe Subscribe + Save! Harvard Business Review
EXPLORE HBR
HBR STORE
ABOUT HBR
HBR SUBSCRIBER ASSISTANCE
HBR.ORG CUSTOMER ASSISTANCE
FOLLOW HBR
Harvard Business Publishing Harvard Business Publishing: Copyright © 2017 Harvard Business School Publishing. All rights reserved. Harvard Business Publishing is an affiliate of Harvard Business School. <img src="http://b.scorecardresearch.com/p?c1=2&c2=14457509&cv=2.0&cj=1" />

.st0{fill:#393D41;}

.st0{fill:none;stroke:#393D41;stroke-miterlimit:10;stroke-width:3;}

.style0{fill: #999999;}

@font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-Regular.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-Regular.woff) format("woff"), url(/resources/fonts/NationalWebLF-Regular.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-Regular.svg#NationalWebLF-Regular) format("svg"); font-weight: 400; font-style: normal; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-RegularItalic.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-RegularItalic.woff) format("woff"), url(/resources/fonts/NationalWebLF-RegularItalic.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-RegularItalic.svg#NationalWebLF-RegularItalic) format("svg"); font-weight: 400; font-style: italic; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-Light.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-Light.woff) format("woff"), url(/resources/fonts/NationalWebLF-Light.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-Light.svg#NationalWebLF-Light) format("svg"); font-weight: 200; font-style: normal; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-LightItalic.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-LightItalic.woff) format("woff"), url(/resources/fonts/NationalWebLF-LightItalic.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-LightItalic.svg#NationalWebLF-LightItalic) format("svg"); font-weight: 200; font-style: italic; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-Semibold.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-Semibold.woff) format("woff"), url(/resources/fonts/NationalWebLF-Semibold.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-Semibold.svg#NationalWebLF-Semibold) format("svg"); font-weight: 700; font-style: normal; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-SemiboldItalic.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-SemiboldItalic.woff) format("woff"), url(/resources/fonts/NationalWebLF-SemiboldItalic.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-SemiboldItalic.svg#NationalWebLF-SemiboldItalic) format("svg"); font-weight: 700; font-style: italic; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-Extrabold.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-Extrabold.woff) format("woff"), url(/resources/fonts/NationalWebLF-Extrabold.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-Extrabold.svg#NationalWebLF-Extrabold) format("svg"); font-weight: 900; font-style: normal; font-stretch: normal; } @font-face { font-family: National; src: url(/resources/fonts/NationalWebLF-ExtraboldItalic.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/NationalWebLF-ExtraboldItalic.woff) format("woff"), url(/resources/fonts/NationalWebLF-ExtraboldItalic.ttf) format("truetype"), url(/resources/fonts/NationalWebLF-ExtraboldItalic.svg#NationalWeb-ExtraboldItalic) format("svg"); font-weight: 900; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Extralight.otf) format("opentype"); font-weight: 100; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-ExtralightItalic.otf) format("opentype"); font-weight: 100; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Light.otf) format("opentype"); font-weight: 200; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-LightItalic.otf) format("opentype"); font-weight: 200; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Thin.otf) format("opentype"); font-weight: 300; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-ThinItalic.otf) format("opentype"); font-weight: 300; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Regular.otf) format("opentype"); font-weight: 400; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-RegularItalic.otf) format("opentype"); font-weight: 400; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Medium.otf) format("opentype"); font-weight: 500; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-MediumItalic.otf) format("opentype"); font-weight: 500; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Bold.otf) format("opentype"); font-weight: 700; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-BoldItalic.otf) format("opentype"); font-weight: 700; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Black.otf) format("opentype"); font-weight: 700; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-BlackItalic.otf) format("opentype"); font-weight: 700; font-style: italic; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-Extrabold.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/National2Compressed-Extrabold.woff) format("woff"), url(/resources/fonts/National2Compressed-Extrabold.ttf) format("truetype"), url(/resources/fonts/National2Compressed-Extrabold.svg#NationalWeb-Extrabold) format("svg"); font-weight: 700; font-style: normal; font-stretch: normal; } @font-face { font-family: National Compressed; src: url(/resources/fonts/National2Compressed-ExtraboldItalic.otf) format("opentype"); font-weight: 700; font-style: italic; font-stretch: normal; } @font-face { font-family: Guardian; src: url(/resources/fonts/GuardianTextEgyp-Regular-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/GuardianTextEgyp-Regular-Web.woff) format("woff"), url(/resources/fonts/GuardianTextEgyp-Regular-Web.ttf) format("truetype"), url(/resources/fonts/GuardianTextEgyp-Regular-Web.svg#GuardianTextEgyp-Regular-Web) format("svg"); font-weight: 400; font-style: normal; font-stretch: normal; } @font-face { font-family: Guardian; src: url(/resources/fonts/GuardianTextEgyp-RegularIt-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/GuardianTextEgyp-RegularIt-Web.woff) format("woff"), url(/resources/fonts/GuardianTextEgyp-RegularIt-Web.ttf) format("truetype"), url(/resources/fonts/GuardianTextEgyp-RegularIt-Web.svg#GuardianTextEgyp-RegularIt-Web) format("svg"); font-weight: 400; font-style: italic; font-stretch: normal; } @font-face { font-family: Guardian; src: url(/resources/fonts/GuardianTextEgyp-Bold-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/GuardianTextEgyp-Bold-Web.woff) format("woff"), url(/resources/fonts/GuardianTextEgyp-Bold-Web.ttf) format("truetype"), url(/resources/fonts/GuardianTextEgyp-Bold-Web.svg#GuardianTextEgyp-Bold-Web) format("svg"); font-weight: 700; font-style: normal; font-stretch: normal; } @font-face { font-family: Guardian; src: url(/resources/fonts/GuardianTextEgyp-BoldIt-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/GuardianTextEgyp-BoldIt-Web.woff) format("woff"), url(/resources/fonts/GuardianTextEgyp-BoldIt-Web.ttf) format("truetype"), url(/resources/fonts/GuardianTextEgyp-BoldIt-Web.svg#GuardianTextEgyp-BoldIt-Web) format("svg"); font-weight: 700; font-style: italic; font-stretch: normal; } @font-face { font-family: Caponi Slab Web; src: url(/resources/fonts/CaponiSlab-Medium-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/CaponiSlab-Medium-Web.woff) format("woff"), url(/resources/fonts/CaponiSlab-Medium-Web.ttf) format("truetype"), url(/resources/fonts/CaponiSlab-Medium-Web.svg#CaponiSlab-Medium) format("svg"); font-weight: 500; font-style: normal; font-stretch: normal; } @font-face { font-family: Caponi Slab Web; src: url(/resources/fonts/CaponiSlab-MediumItalic-Web.eot?#iefix) format("embedded-opentype"), url(/resources/fonts/CaponiSlab-MediumItalic-Web.woff) format("woff"), url(/resources/fonts/CaponiSlab-MediumItalic-Web.ttf) format("truetype"), url(/resources/fonts/CaponiSlab-MediumItalic-Web.svg#CaponiSlab-MediumItalic) format("svg"); font-weight: 500; font-style: italic; font-stretch: normal; } @font-face { font-family: Sentinel SSm A", "Sentinel SSm B; font-weight: 400; font-style: normal; font-stretch: normal; } @font-face { font-family: HBRIcons; src: url(/resources/fonts/HBRIcons-Regular.eot?#iefix}) format("embedded-opentype"), url(/resources/fonts/HBRIcons-Regular.woff) format("woff"), url(/resources/fonts/HBRIcons-Regular.ttf) format("truetype"), url(/resources/fonts/HBRIcons-Regular.svg#hbriconsregular) format("svg"); font-weight: 400; font-style: normal; } html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } body { margin: 0px; } article { display: block; } aside { display: block; } details { display: block; } figcaption { display: block; } figure { display: block; } footer { display: block; } header { display: block; } hgroup { display: block; } main { display: block; } nav { display: block; } section { display: block; } summary { display: block; } audio { vertical-align: baseline; display: inline-block; } canvas { vertical-align: baseline; display: inline-block; } progress { vertical-align: baseline; display: inline-block; } video { vertical-align: baseline; display: inline-block; } audio:not([controls]) { height: 0px; display: none; } [hidden] { display: none; } template { display: none; } a { background: 0px 0px; } a:active { outline: 0px; } a:hover { outline: 0px; } abbr[title] { border-bottom-color: currentColor; border-bottom-width: 1px; border-bottom-style: dotted; } b { font-weight: 700; } strong { font-weight: 700; } dfn { font-style: italic; } mark { background: rgb(251, 100, 5); color: rgb(0, 0, 0); } sub { line-height: 0; font-size: 75%; vertical-align: baseline; position: relative; } sup { line-height: 0; font-size: 75%; vertical-align: baseline; position: relative; } sup { top: -0.5em; } sub { bottom: -0.25em; } img { border: 0px currentColor; border-image: none; } svg:not(:root) { overflow: hidden; } figure { margin: 1em 40px; } hr { height: 0px; box-sizing: content-box; } pre { overflow: auto; } code { font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace; font-size: 1em; } kbd { font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace; font-size: 1em; } pre { font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace; font-size: 1em; } samp { font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace; font-size: 1em; } button { font: inherit; margin: 0px; color: inherit; font-size-adjust: inherit; font-stretch: inherit; } input { font: inherit; margin: 0px; color: inherit; font-size-adjust: inherit; font-stretch: inherit; } optgroup { font: inherit; margin: 0px; color: inherit; font-size-adjust: inherit; font-stretch: inherit; } select { font: inherit; margin: 0px; color: inherit; font-size-adjust: inherit; font-stretch: inherit; } textarea { font: inherit; margin: 0px; color: inherit; font-size-adjust: inherit; font-stretch: inherit; } button { overflow: visible; } button { text-transform: none; } select { text-transform: none; } button { cursor: pointer; -webkit-appearance: button; } html input[type=button] { cursor: pointer; -webkit-appearance: button; } input[type=reset] { cursor: pointer; -webkit-appearance: button; } input[type=submit] { cursor: pointer; -webkit-appearance: button; } button[disabled] { cursor: default; } html input[disabled] { cursor: default; } input { line-height: normal; } input[type=checkbox] { padding: 0px; box-sizing: border-box; } input[type=radio] { padding: 0px; box-sizing: border-box; } input[type=search] { box-sizing: content-box; } fieldset { margin: 0px 2px; padding: 0.35em 0.62em 0.75em; border: 1px solid silver; border-image: none; } legend { padding: 0px; border: 0px currentColor; border-image: none; } textarea { overflow: auto; } optgroup { font-weight: 700; } table { border-collapse: collapse; border-spacing: 0; } td { padding: 0px; } th { padding: 0px; } meta.foundation-version { font-family: "/5.5.2/"; } meta.foundation-mq-small { width: 0px; font-family: "/only screen/"; } meta.foundation-mq-small-only { width: 0px; font-family: "/only screen and (max-width: 47.9375rem)/"; } meta.foundation-mq-medium { width: 48rem; font-family: "/only screen and (min-width:48rem), print/"; } meta.foundation-mq-medium-only { width: 48rem; font-family: "/only screen and (min-width:48rem) and (max-width:64rem)/"; } meta.foundation-mq-large { width: 64.06rem; font-family: "/only screen and (min-width:64.0625rem)/"; } meta.foundation-mq-large-only { width: 64.06rem; font-family: "/only screen and (min-width:64.0625rem) and (max-width:84.375rem)/"; } meta.foundation-mq-xlarge { width: 84.43rem; font-family: "/only screen and (min-width:84.4375rem)/"; } meta.foundation-mq-xlarge-only { width: 84.43rem; font-family: "/only screen and (min-width:84.4375rem) and (max-width:120rem)/"; } meta.foundation-mq-xxlarge { width: 120rem; font-family: "/only screen and (min-width:120rem)/"; } meta.foundation-data-attribute-namespace { font-family: false; } body { height: 100%; } html { height: 100%; } html { box-sizing: border-box; } * { box-sizing: inherit; } ::after { box-sizing: inherit; } ::before { box-sizing: inherit; } body { font-size: 100%; } html { font-size: 100%; } body { background: rgb(255, 255, 255); margin: 0px; padding: 0px; color: rgb(34, 34, 34); line-height: 140%; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 400; position: relative; cursor: auto; } a:hover { cursor: pointer; } img { height: auto; max-width: 100%; } img { -ms-interpolation-mode: bicubic; } #map_canvas embed { max-width: none !important; } #map_canvas img { max-width: none !important; } #map_canvas object { max-width: none !important; } .map_canvas embed { max-width: none !important; } .map_canvas img { max-width: none !important; } .map_canvas object { max-width: none !important; } .mqa-display embed { max-width: none !important; } .mqa-display img { max-width: none !important; } .mqa-display object { max-width: none !important; } .left { float: left !important; } .right { float: right !important; } .clearfix::after { display: table; content: " "; } .clearfix::before { display: table; content: " "; } .clearfix::after { clear: both; } .hide { display: none; } .invisible { visibility: hidden; } .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } img { vertical-align: middle; display: inline-block; } textarea { height: auto; min-height: 50px; } select { width: 100%; } .row { margin: 0px auto; width: 100%; max-width: 120rem; } .row::after { display: table; content: " "; } .row::before { display: table; content: " "; } .row::after { clear: both; } .collapse.row > .column { padding-right: 0px; padding-left: 0px; } .collapse.row > .columns { padding-right: 0px; padding-left: 0px; } .collapse.row .row { margin-right: 0px; margin-left: 0px; } .row .row { margin: 0px -0.62rem; width: auto; max-width: none; } .row .row::after { display: table; content: " "; } .row .row::before { display: table; content: " "; } .row .row::after { clear: both; } .row .collapse.row { margin: 0px; width: auto; max-width: none; } .row .collapse.row::after { display: table; content: " "; } .row .collapse.row::before { display: table; content: " "; } .row .collapse.row::after { clear: both; } .column { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .columns { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .column + :last-child.column { float: right; } .column + :last-child.columns { float: right; } .columns + :last-child.column { float: right; } .columns + :last-child.columns { float: right; } .column + .end.column { float: left; } .column + .end.columns { float: left; } .columns + .end.column { float: left; } .columns + .end.columns { float: left; } @media only screen { .small-push-0 { left: 0px; right: auto; position: relative; } .small-pull-0 { left: auto; right: 0px; position: relative; } .small-push-1 { left: 8.33%; right: auto; position: relative; } .small-pull-1 { left: auto; right: 8.33%; position: relative; } .small-push-2 { left: 16.66%; right: auto; position: relative; } .small-pull-2 { left: auto; right: 16.66%; position: relative; } .small-push-3 { left: 25%; right: auto; position: relative; } .small-pull-3 { left: auto; right: 25%; position: relative; } .small-push-4 { left: 33.33%; right: auto; position: relative; } .small-pull-4 { left: auto; right: 33.33%; position: relative; } .small-push-5 { left: 41.66%; right: auto; position: relative; } .small-pull-5 { left: auto; right: 41.66%; position: relative; } .small-push-6 { left: 50%; right: auto; position: relative; } .small-pull-6 { left: auto; right: 50%; position: relative; } .small-push-7 { left: 58.33%; right: auto; position: relative; } .small-pull-7 { left: auto; right: 58.33%; position: relative; } .small-push-8 { left: 66.66%; right: auto; position: relative; } .small-pull-8 { left: auto; right: 66.66%; position: relative; } .small-push-9 { left: 75%; right: auto; position: relative; } .small-pull-9 { left: auto; right: 75%; position: relative; } .small-push-10 { left: 83.33%; right: auto; position: relative; } .small-pull-10 { left: auto; right: 83.33%; position: relative; } .small-push-11 { left: 91.66%; right: auto; position: relative; } .small-pull-11 { left: auto; right: 91.66%; position: relative; } .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .small-1 { width: 8.33%; } .small-2 { width: 16.66%; } .small-3 { width: 25%; } .small-4 { width: 33.33%; } .small-5 { width: 41.66%; } .small-6 { width: 50%; } .small-7 { width: 58.33%; } .small-8 { width: 66.66%; } .small-9 { width: 75%; } .small-10 { width: 83.33%; } .small-11 { width: 91.66%; } .small-12 { width: 100%; } .small-offset-0 { margin-left: 0px !important; } .small-offset-1 { margin-left: 8.33% !important; } .small-offset-2 { margin-left: 16.66% !important; } .small-offset-3 { margin-left: 25% !important; } .small-offset-4 { margin-left: 33.33% !important; } .small-offset-5 { margin-left: 41.66% !important; } .small-offset-6 { margin-left: 50% !important; } .small-offset-7 { margin-left: 58.33% !important; } .small-offset-8 { margin-left: 66.66% !important; } .small-offset-9 { margin-left: 75% !important; } .small-offset-10 { margin-left: 83.33% !important; } .small-offset-11 { margin-left: 91.66% !important; } .small-reset-order { left: auto; right: auto; margin-right: 0px; margin-left: 0px; float: left; } .small-centered.column { margin-right: auto; margin-left: auto; float: none; } .small-centered.columns { margin-right: auto; margin-left: auto; float: none; } .small-uncentered.column { margin-right: 0px; margin-left: 0px; float: left; } .small-uncentered.columns { margin-right: 0px; margin-left: 0px; float: left; } :last-child.small-centered.column { float: none; } :last-child.small-centered.columns { float: none; } :last-child.small-uncentered.column { float: left; } :last-child.small-uncentered.columns { float: left; } .opposite.small-uncentered.column { float: right; } .opposite.small-uncentered.columns { float: right; } .small-collapse.row > .column { padding-right: 0px; padding-left: 0px; } .small-collapse.row > .columns { padding-right: 0px; padding-left: 0px; } .small-collapse.row .row { margin-right: 0px; margin-left: 0px; } .small-uncollapse.row > .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .small-uncollapse.row > .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (min-width:48rem), print { .medium-push-0 { left: 0px; right: auto; position: relative; } .medium-pull-0 { left: auto; right: 0px; position: relative; } .medium-push-1 { left: 8.33%; right: auto; position: relative; } .medium-pull-1 { left: auto; right: 8.33%; position: relative; } .medium-push-2 { left: 16.66%; right: auto; position: relative; } .medium-pull-2 { left: auto; right: 16.66%; position: relative; } .medium-push-3 { left: 25%; right: auto; position: relative; } .medium-pull-3 { left: auto; right: 25%; position: relative; } .medium-push-4 { left: 33.33%; right: auto; position: relative; } .medium-pull-4 { left: auto; right: 33.33%; position: relative; } .medium-push-5 { left: 41.66%; right: auto; position: relative; } .medium-pull-5 { left: auto; right: 41.66%; position: relative; } .medium-push-6 { left: 50%; right: auto; position: relative; } .medium-pull-6 { left: auto; right: 50%; position: relative; } .medium-push-7 { left: 58.33%; right: auto; position: relative; } .medium-pull-7 { left: auto; right: 58.33%; position: relative; } .medium-push-8 { left: 66.66%; right: auto; position: relative; } .medium-pull-8 { left: auto; right: 66.66%; position: relative; } .medium-push-9 { left: 75%; right: auto; position: relative; } .medium-pull-9 { left: auto; right: 75%; position: relative; } .medium-push-10 { left: 83.33%; right: auto; position: relative; } .medium-pull-10 { left: auto; right: 83.33%; position: relative; } .medium-push-11 { left: 91.66%; right: auto; position: relative; } .medium-pull-11 { left: auto; right: 91.66%; position: relative; } .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .medium-1 { width: 8.33%; } .medium-2 { width: 16.66%; } .medium-3 { width: 25%; } .medium-4 { width: 33.33%; } .medium-5 { width: 41.66%; } .medium-6 { width: 50%; } .medium-7 { width: 58.33%; } .medium-8 { width: 66.66%; } .medium-9 { width: 75%; } .medium-10 { width: 83.33%; } .medium-11 { width: 91.66%; } .medium-12 { width: 100%; } .medium-offset-0 { margin-left: 0px !important; } .medium-offset-1 { margin-left: 8.33% !important; } .medium-offset-2 { margin-left: 16.66% !important; } .medium-offset-3 { margin-left: 25% !important; } .medium-offset-4 { margin-left: 33.33% !important; } .medium-offset-5 { margin-left: 41.66% !important; } .medium-offset-6 { margin-left: 50% !important; } .medium-offset-7 { margin-left: 58.33% !important; } .medium-offset-8 { margin-left: 66.66% !important; } .medium-offset-9 { margin-left: 75% !important; } .medium-offset-10 { margin-left: 83.33% !important; } .medium-offset-11 { margin-left: 91.66% !important; } .medium-reset-order { left: auto; right: auto; margin-right: 0px; margin-left: 0px; float: left; } .medium-centered.column { margin-right: auto; margin-left: auto; float: none; } .medium-centered.columns { margin-right: auto; margin-left: auto; float: none; } .medium-uncentered.column { margin-right: 0px; margin-left: 0px; float: left; } .medium-uncentered.columns { margin-right: 0px; margin-left: 0px; float: left; } :last-child.medium-centered.column { float: none; } :last-child.medium-centered.columns { float: none; } :last-child.medium-uncentered.column { float: left; } :last-child.medium-uncentered.columns { float: left; } .opposite.medium-uncentered.column { float: right; } .opposite.medium-uncentered.columns { float: right; } .medium-collapse.row > .column { padding-right: 0px; padding-left: 0px; } .medium-collapse.row > .columns { padding-right: 0px; padding-left: 0px; } .medium-collapse.row .row { margin-right: 0px; margin-left: 0px; } .medium-uncollapse.row > .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .medium-uncollapse.row > .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .push-0 { left: 0px; right: auto; position: relative; } .pull-0 { left: auto; right: 0px; position: relative; } .push-1 { left: 8.33%; right: auto; position: relative; } .pull-1 { left: auto; right: 8.33%; position: relative; } .push-2 { left: 16.66%; right: auto; position: relative; } .pull-2 { left: auto; right: 16.66%; position: relative; } .push-3 { left: 25%; right: auto; position: relative; } .pull-3 { left: auto; right: 25%; position: relative; } .push-4 { left: 33.33%; right: auto; position: relative; } .pull-4 { left: auto; right: 33.33%; position: relative; } .push-5 { left: 41.66%; right: auto; position: relative; } .pull-5 { left: auto; right: 41.66%; position: relative; } .push-6 { left: 50%; right: auto; position: relative; } .pull-6 { left: auto; right: 50%; position: relative; } .push-7 { left: 58.33%; right: auto; position: relative; } .pull-7 { left: auto; right: 58.33%; position: relative; } .push-8 { left: 66.66%; right: auto; position: relative; } .pull-8 { left: auto; right: 66.66%; position: relative; } .push-9 { left: 75%; right: auto; position: relative; } .pull-9 { left: auto; right: 75%; position: relative; } .push-10 { left: 83.33%; right: auto; position: relative; } .pull-10 { left: auto; right: 83.33%; position: relative; } .push-11 { left: 91.66%; right: auto; position: relative; } .pull-11 { left: auto; right: 91.66%; position: relative; } } @media only screen and (min-width:64.06rem) { .large-push-0 { left: 0px; right: auto; position: relative; } .large-pull-0 { left: auto; right: 0px; position: relative; } .large-push-1 { left: 8.33%; right: auto; position: relative; } .large-pull-1 { left: auto; right: 8.33%; position: relative; } .large-push-2 { left: 16.66%; right: auto; position: relative; } .large-pull-2 { left: auto; right: 16.66%; position: relative; } .large-push-3 { left: 25%; right: auto; position: relative; } .large-pull-3 { left: auto; right: 25%; position: relative; } .large-push-4 { left: 33.33%; right: auto; position: relative; } .large-pull-4 { left: auto; right: 33.33%; position: relative; } .large-push-5 { left: 41.66%; right: auto; position: relative; } .large-pull-5 { left: auto; right: 41.66%; position: relative; } .large-push-6 { left: 50%; right: auto; position: relative; } .large-pull-6 { left: auto; right: 50%; position: relative; } .large-push-7 { left: 58.33%; right: auto; position: relative; } .large-pull-7 { left: auto; right: 58.33%; position: relative; } .large-push-8 { left: 66.66%; right: auto; position: relative; } .large-pull-8 { left: auto; right: 66.66%; position: relative; } .large-push-9 { left: 75%; right: auto; position: relative; } .large-pull-9 { left: auto; right: 75%; position: relative; } .large-push-10 { left: 83.33%; right: auto; position: relative; } .large-pull-10 { left: auto; right: 83.33%; position: relative; } .large-push-11 { left: 91.66%; right: auto; position: relative; } .large-pull-11 { left: auto; right: 91.66%; position: relative; } .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; position: relative; } .large-1 { width: 8.33%; } .large-2 { width: 16.66%; } .large-3 { width: 25%; } .large-4 { width: 33.33%; } .large-5 { width: 41.66%; } .large-6 { width: 50%; } .large-7 { width: 58.33%; } .large-8 { width: 66.66%; } .large-9 { width: 75%; } .large-10 { width: 83.33%; } .large-11 { width: 91.66%; } .large-12 { width: 100%; } .large-offset-0 { margin-left: 0px !important; } .large-offset-1 { margin-left: 8.33% !important; } .large-offset-2 { margin-left: 16.66% !important; } .large-offset-3 { margin-left: 25% !important; } .large-offset-4 { margin-left: 33.33% !important; } .large-offset-5 { margin-left: 41.66% !important; } .large-offset-6 { margin-left: 50% !important; } .large-offset-7 { margin-left: 58.33% !important; } .large-offset-8 { margin-left: 66.66% !important; } .large-offset-9 { margin-left: 75% !important; } .large-offset-10 { margin-left: 83.33% !important; } .large-offset-11 { margin-left: 91.66% !important; } .large-reset-order { left: auto; right: auto; margin-right: 0px; margin-left: 0px; float: left; } .large-centered.column { margin-right: auto; margin-left: auto; float: none; } .large-centered.columns { margin-right: auto; margin-left: auto; float: none; } .large-uncentered.column { margin-right: 0px; margin-left: 0px; float: left; } .large-uncentered.columns { margin-right: 0px; margin-left: 0px; float: left; } :last-child.large-centered.column { float: none; } :last-child.large-centered.columns { float: none; } :last-child.large-uncentered.column { float: left; } :last-child.large-uncentered.columns { float: left; } .opposite.large-uncentered.column { float: right; } .opposite.large-uncentered.columns { float: right; } .large-collapse.row > .column { padding-right: 0px; padding-left: 0px; } .large-collapse.row > .columns { padding-right: 0px; padding-left: 0px; } .large-collapse.row .row { margin-right: 0px; margin-left: 0px; } .large-uncollapse.row > .column { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .large-uncollapse.row > .columns { padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .push-0 { left: 0px; right: auto; position: relative; } .pull-0 { left: auto; right: 0px; position: relative; } .push-1 { left: 8.33%; right: auto; position: relative; } .pull-1 { left: auto; right: 8.33%; position: relative; } .push-2 { left: 16.66%; right: auto; position: relative; } .pull-2 { left: auto; right: 16.66%; position: relative; } .push-3 { left: 25%; right: auto; position: relative; } .pull-3 { left: auto; right: 25%; position: relative; } .push-4 { left: 33.33%; right: auto; position: relative; } .pull-4 { left: auto; right: 33.33%; position: relative; } .push-5 { left: 41.66%; right: auto; position: relative; } .pull-5 { left: auto; right: 41.66%; position: relative; } .push-6 { left: 50%; right: auto; position: relative; } .pull-6 { left: auto; right: 50%; position: relative; } .push-7 { left: 58.33%; right: auto; position: relative; } .pull-7 { left: auto; right: 58.33%; position: relative; } .push-8 { left: 66.66%; right: auto; position: relative; } .pull-8 { left: auto; right: 66.66%; position: relative; } .push-9 { left: 75%; right: auto; position: relative; } .pull-9 { left: auto; right: 75%; position: relative; } .push-10 { left: 83.33%; right: auto; position: relative; } .pull-10 { left: auto; right: 83.33%; position: relative; } .push-11 { left: 91.66%; right: auto; position: relative; } .pull-11 { left: auto; right: 91.66%; position: relative; } } .alert-box { padding: 0.62rem 0.87rem 0.62rem 0.62rem; border: 1px solid rgb(172, 32, 2); transition:opacity 0.3s ease-out; color: rgb(255, 255, 255); font-size: 0.81rem; font-weight: 400; margin-bottom: 1.25rem; display: block; position: relative; background-color: rgb(200, 37, 2); } .alert-box .close { background: inherit; padding: 0px 6px 4px; top: 50%; right: 0.25rem; color: rgb(51, 51, 51); line-height: 0.9; font-size: 1.37rem; margin-top: -0.68rem; position: absolute; opacity: 0.3; } .alert-box .close:focus { opacity: 0.5; } .alert-box .close:hover { opacity: 0.5; } .radius.alert-box { border-radius: 3px; } .round.alert-box { border-radius: 1000px; } .success.alert-box { border-color: rgb(40, 120, 22); color: rgb(255, 255, 255); background-color: rgb(46, 140, 26); } .alert.alert-box { border-color: rgb(219, 73, 1); color: rgb(255, 255, 255); background-color: rgb(254, 85, 2); } .secondary.alert-box { border-color: rgb(146, 151, 152); color: rgb(255, 255, 255); background-color: rgb(171, 175, 176); } .warning.alert-box { border-color: rgb(240, 147, 3); color: rgb(255, 255, 255); background-color: rgb(252, 165, 31); } .info.alert-box { border-color: rgb(30, 134, 146); color: rgb(255, 255, 255); background-color: rgb(35, 156, 170); } .alert-close.alert-box { opacity: 0; } [class*=block-grid-] { margin: 0px -0.62rem; padding: 0px; display: block; } [class*=block-grid-]::after { display: table; content: " "; } [class*=block-grid-]::before { display: table; content: " "; } [class*=block-grid-]::after { clear: both; } [class*=block-grid-] > li { padding: 0px 0.62rem 1.25rem; height: auto; float: left; display: block; } @media only screen { .small-block-grid-1 > li { list-style: none; width: 100%; } .small-block-grid-1 > li:nth-of-type(n) { clear: none; } .small-block-grid-1 > li:nth-of-type(n+1) { clear: both; } .small-block-grid-2 > li { list-style: none; width: 50%; } .small-block-grid-2 > li:nth-of-type(n) { clear: none; } .small-block-grid-2 > li:nth-of-type(2n+1) { clear: both; } .small-block-grid-3 > li { list-style: none; width: 33.33%; } .small-block-grid-3 > li:nth-of-type(n) { clear: none; } .small-block-grid-3 > li:nth-of-type(3n+1) { clear: both; } .small-block-grid-4 > li { list-style: none; width: 25%; } .small-block-grid-4 > li:nth-of-type(n) { clear: none; } .small-block-grid-4 > li:nth-of-type(4n+1) { clear: both; } .small-block-grid-5 > li { list-style: none; width: 20%; } .small-block-grid-5 > li:nth-of-type(n) { clear: none; } .small-block-grid-5 > li:nth-of-type(5n+1) { clear: both; } .small-block-grid-6 > li { list-style: none; width: 16.66%; } .small-block-grid-6 > li:nth-of-type(n) { clear: none; } .small-block-grid-6 > li:nth-of-type(6n+1) { clear: both; } .small-block-grid-7 > li { list-style: none; width: 14.28%; } .small-block-grid-7 > li:nth-of-type(n) { clear: none; } .small-block-grid-7 > li:nth-of-type(7n+1) { clear: both; } .small-block-grid-8 > li { list-style: none; width: 12.5%; } .small-block-grid-8 > li:nth-of-type(n) { clear: none; } .small-block-grid-8 > li:nth-of-type(8n+1) { clear: both; } .small-block-grid-9 > li { list-style: none; width: 11.11%; } .small-block-grid-9 > li:nth-of-type(n) { clear: none; } .small-block-grid-9 > li:nth-of-type(9n+1) { clear: both; } .small-block-grid-10 > li { list-style: none; width: 10%; } .small-block-grid-10 > li:nth-of-type(n) { clear: none; } .small-block-grid-10 > li:nth-of-type(10n+1) { clear: both; } .small-block-grid-11 > li { list-style: none; width: 9.09%; } .small-block-grid-11 > li:nth-of-type(n) { clear: none; } .small-block-grid-11 > li:nth-of-type(11n+1) { clear: both; } .small-block-grid-12 > li { list-style: none; width: 8.33%; } .small-block-grid-12 > li:nth-of-type(n) { clear: none; } .small-block-grid-12 > li:nth-of-type(12n+1) { clear: both; } } @media only screen and (min-width:48rem), print { .medium-block-grid-1 > li { list-style: none; width: 100%; } .medium-block-grid-1 > li:nth-of-type(n) { clear: none; } .medium-block-grid-1 > li:nth-of-type(n+1) { clear: both; } .medium-block-grid-2 > li { list-style: none; width: 50%; } .medium-block-grid-2 > li:nth-of-type(n) { clear: none; } .medium-block-grid-2 > li:nth-of-type(2n+1) { clear: both; } .medium-block-grid-3 > li { list-style: none; width: 33.33%; } .medium-block-grid-3 > li:nth-of-type(n) { clear: none; } .medium-block-grid-3 > li:nth-of-type(3n+1) { clear: both; } .medium-block-grid-4 > li { list-style: none; width: 25%; } .medium-block-grid-4 > li:nth-of-type(n) { clear: none; } .medium-block-grid-4 > li:nth-of-type(4n+1) { clear: both; } .medium-block-grid-5 > li { list-style: none; width: 20%; } .medium-block-grid-5 > li:nth-of-type(n) { clear: none; } .medium-block-grid-5 > li:nth-of-type(5n+1) { clear: both; } .medium-block-grid-6 > li { list-style: none; width: 16.66%; } .medium-block-grid-6 > li:nth-of-type(n) { clear: none; } .medium-block-grid-6 > li:nth-of-type(6n+1) { clear: both; } .medium-block-grid-7 > li { list-style: none; width: 14.28%; } .medium-block-grid-7 > li:nth-of-type(n) { clear: none; } .medium-block-grid-7 > li:nth-of-type(7n+1) { clear: both; } .medium-block-grid-8 > li { list-style: none; width: 12.5%; } .medium-block-grid-8 > li:nth-of-type(n) { clear: none; } .medium-block-grid-8 > li:nth-of-type(8n+1) { clear: both; } .medium-block-grid-9 > li { list-style: none; width: 11.11%; } .medium-block-grid-9 > li:nth-of-type(n) { clear: none; } .medium-block-grid-9 > li:nth-of-type(9n+1) { clear: both; } .medium-block-grid-10 > li { list-style: none; width: 10%; } .medium-block-grid-10 > li:nth-of-type(n) { clear: none; } .medium-block-grid-10 > li:nth-of-type(10n+1) { clear: both; } .medium-block-grid-11 > li { list-style: none; width: 9.09%; } .medium-block-grid-11 > li:nth-of-type(n) { clear: none; } .medium-block-grid-11 > li:nth-of-type(11n+1) { clear: both; } .medium-block-grid-12 > li { list-style: none; width: 8.33%; } .medium-block-grid-12 > li:nth-of-type(n) { clear: none; } .medium-block-grid-12 > li:nth-of-type(12n+1) { clear: both; } } @media only screen and (min-width:64.06rem) { .large-block-grid-1 > li { list-style: none; width: 100%; } .large-block-grid-1 > li:nth-of-type(n) { clear: none; } .large-block-grid-1 > li:nth-of-type(n+1) { clear: both; } .large-block-grid-2 > li { list-style: none; width: 50%; } .large-block-grid-2 > li:nth-of-type(n) { clear: none; } .large-block-grid-2 > li:nth-of-type(2n+1) { clear: both; } .large-block-grid-3 > li { list-style: none; width: 33.33%; } .large-block-grid-3 > li:nth-of-type(n) { clear: none; } .large-block-grid-3 > li:nth-of-type(3n+1) { clear: both; } .large-block-grid-4 > li { list-style: none; width: 25%; } .large-block-grid-4 > li:nth-of-type(n) { clear: none; } .large-block-grid-4 > li:nth-of-type(4n+1) { clear: both; } .large-block-grid-5 > li { list-style: none; width: 20%; } .large-block-grid-5 > li:nth-of-type(n) { clear: none; } .large-block-grid-5 > li:nth-of-type(5n+1) { clear: both; } .large-block-grid-6 > li { list-style: none; width: 16.66%; } .large-block-grid-6 > li:nth-of-type(n) { clear: none; } .large-block-grid-6 > li:nth-of-type(6n+1) { clear: both; } .large-block-grid-7 > li { list-style: none; width: 14.28%; } .large-block-grid-7 > li:nth-of-type(n) { clear: none; } .large-block-grid-7 > li:nth-of-type(7n+1) { clear: both; } .large-block-grid-8 > li { list-style: none; width: 12.5%; } .large-block-grid-8 > li:nth-of-type(n) { clear: none; } .large-block-grid-8 > li:nth-of-type(8n+1) { clear: both; } .large-block-grid-9 > li { list-style: none; width: 11.11%; } .large-block-grid-9 > li:nth-of-type(n) { clear: none; } .large-block-grid-9 > li:nth-of-type(9n+1) { clear: both; } .large-block-grid-10 > li { list-style: none; width: 10%; } .large-block-grid-10 > li:nth-of-type(n) { clear: none; } .large-block-grid-10 > li:nth-of-type(10n+1) { clear: both; } .large-block-grid-11 > li { list-style: none; width: 9.09%; } .large-block-grid-11 > li:nth-of-type(n) { clear: none; } .large-block-grid-11 > li:nth-of-type(11n+1) { clear: both; } .large-block-grid-12 > li { list-style: none; width: 8.33%; } .large-block-grid-12 > li:nth-of-type(n) { clear: none; } .large-block-grid-12 > li:nth-of-type(12n+1) { clear: both; } } .button { margin: 0px 0px 1.25rem; padding: 0.87rem 1.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(160, 30, 2); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(200, 37, 2); -webkit-appearance: none; -moz-appearance: none; } button { margin: 0px 0px 1.25rem; padding: 0.87rem 1.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(160, 30, 2); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(200, 37, 2); -webkit-appearance: none; -moz-appearance: none; } .button:focus { background-color: rgb(160, 30, 2); } .button:hover { background-color: rgb(160, 30, 2); } button:focus { background-color: rgb(160, 30, 2); } button:hover { background-color: rgb(160, 30, 2); } .button:focus { color: rgb(255, 255, 255); } .button:hover { color: rgb(255, 255, 255); } button:focus { color: rgb(255, 255, 255); } button:hover { color: rgb(255, 255, 255); } .secondary.button { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); background-color: rgb(171, 175, 176); } button.secondary { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); background-color: rgb(171, 175, 176); } .secondary.button:focus { background-color: rgb(135, 141, 142); } .secondary.button:hover { background-color: rgb(135, 141, 142); } button.secondary:focus { background-color: rgb(135, 141, 142); } button.secondary:hover { background-color: rgb(135, 141, 142); } .secondary.button:focus { color: rgb(255, 255, 255); } .secondary.button:hover { color: rgb(255, 255, 255); } button.secondary:focus { color: rgb(255, 255, 255); } button.secondary:hover { color: rgb(255, 255, 255); } .success.button { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); background-color: rgb(46, 140, 26); } button.success { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); background-color: rgb(46, 140, 26); } .success.button:focus { background-color: rgb(37, 112, 21); } .success.button:hover { background-color: rgb(37, 112, 21); } button.success:focus { background-color: rgb(37, 112, 21); } button.success:hover { background-color: rgb(37, 112, 21); } .success.button:focus { color: rgb(255, 255, 255); } .success.button:hover { color: rgb(255, 255, 255); } button.success:focus { color: rgb(255, 255, 255); } button.success:hover { color: rgb(255, 255, 255); } .alert.button { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); background-color: rgb(254, 85, 2); } button.alert { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); background-color: rgb(254, 85, 2); } .alert.button:focus { background-color: rgb(204, 68, 1); } .alert.button:hover { background-color: rgb(204, 68, 1); } button.alert:focus { background-color: rgb(204, 68, 1); } button.alert:hover { background-color: rgb(204, 68, 1); } .alert.button:focus { color: rgb(255, 255, 255); } .alert.button:hover { color: rgb(255, 255, 255); } button.alert:focus { color: rgb(255, 255, 255); } button.alert:hover { color: rgb(255, 255, 255); } .warning.button { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); background-color: rgb(252, 165, 31); } button.warning { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); background-color: rgb(252, 165, 31); } .warning.button:focus { background-color: rgb(223, 137, 3); } .warning.button:hover { background-color: rgb(223, 137, 3); } button.warning:focus { background-color: rgb(223, 137, 3); } button.warning:hover { background-color: rgb(223, 137, 3); } .warning.button:focus { color: rgb(255, 255, 255); } .warning.button:hover { color: rgb(255, 255, 255); } button.warning:focus { color: rgb(255, 255, 255); } button.warning:hover { color: rgb(255, 255, 255); } .info.button { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); background-color: rgb(35, 156, 170); } button.info { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); background-color: rgb(35, 156, 170); } .info.button:focus { background-color: rgb(28, 125, 136); } .info.button:hover { background-color: rgb(28, 125, 136); } button.info:focus { background-color: rgb(28, 125, 136); } button.info:hover { background-color: rgb(28, 125, 136); } .info.button:focus { color: rgb(255, 255, 255); } .info.button:hover { color: rgb(255, 255, 255); } button.info:focus { color: rgb(255, 255, 255); } button.info:hover { color: rgb(255, 255, 255); } .large.button { padding: 1rem 2rem 1.06rem; font-size: 1.12rem; } button.large { padding: 1rem 2rem 1.06rem; font-size: 1.12rem; } .small.button { padding: 0.5rem 1rem 0.56rem; font-size: 0.75rem; } button.small { padding: 0.5rem 1rem 0.56rem; font-size: 0.75rem; } .tiny.button { padding: 0.31rem 0.62rem 0.37rem; font-size: 0.68rem; } button.tiny { padding: 0.31rem 0.62rem 0.37rem; font-size: 0.68rem; } .expand.button { width: 100%; padding-right: 0px; padding-left: 0px; } button.expand { width: 100%; padding-right: 0px; padding-left: 0px; } .left-align.button { text-align: left; text-indent: 0.75rem; } button.left-align { text-align: left; text-indent: 0.75rem; } .right-align.button { text-align: right; padding-right: 0.75rem; } button.right-align { text-align: right; padding-right: 0.75rem; } .radius.button { border-radius: 3px; } button.radius { border-radius: 3px; } .round.button { border-radius: 1000px; } button.round { border-radius: 1000px; } .disabled.button { border-color: rgb(160, 30, 2); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(200, 37, 2); } [disabled].button { border-color: rgb(160, 30, 2); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(200, 37, 2); } button.disabled { border-color: rgb(160, 30, 2); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(200, 37, 2); } button[disabled] { border-color: rgb(160, 30, 2); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(200, 37, 2); } .disabled.button:focus { background-color: rgb(160, 30, 2); } .disabled.button:hover { background-color: rgb(160, 30, 2); } [disabled].button:focus { background-color: rgb(160, 30, 2); } [disabled].button:hover { background-color: rgb(160, 30, 2); } button.disabled:focus { background-color: rgb(160, 30, 2); } button.disabled:hover { background-color: rgb(160, 30, 2); } button[disabled]:focus { background-color: rgb(160, 30, 2); } button[disabled]:hover { background-color: rgb(160, 30, 2); } .disabled.button:focus { color: rgb(255, 255, 255); } .disabled.button:hover { color: rgb(255, 255, 255); } [disabled].button:focus { color: rgb(255, 255, 255); } [disabled].button:hover { color: rgb(255, 255, 255); } button.disabled:focus { color: rgb(255, 255, 255); } button.disabled:hover { color: rgb(255, 255, 255); } button[disabled]:focus { color: rgb(255, 255, 255); } button[disabled]:hover { color: rgb(255, 255, 255); } .disabled.button:focus { background-color: rgb(200, 37, 2); } .disabled.button:hover { background-color: rgb(200, 37, 2); } [disabled].button:focus { background-color: rgb(200, 37, 2); } [disabled].button:hover { background-color: rgb(200, 37, 2); } button.disabled:focus { background-color: rgb(200, 37, 2); } button.disabled:hover { background-color: rgb(200, 37, 2); } button[disabled]:focus { background-color: rgb(200, 37, 2); } button[disabled]:hover { background-color: rgb(200, 37, 2); } .secondary.disabled.button { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(171, 175, 176); } [disabled].secondary.button { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(171, 175, 176); } button.secondary.disabled { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(171, 175, 176); } button[disabled].secondary { border-color: rgb(135, 141, 142); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(171, 175, 176); } .secondary.disabled.button:focus { background-color: rgb(135, 141, 142); } .secondary.disabled.button:hover { background-color: rgb(135, 141, 142); } [disabled].secondary.button:focus { background-color: rgb(135, 141, 142); } [disabled].secondary.button:hover { background-color: rgb(135, 141, 142); } button.secondary.disabled:focus { background-color: rgb(135, 141, 142); } button.secondary.disabled:hover { background-color: rgb(135, 141, 142); } button[disabled].secondary:focus { background-color: rgb(135, 141, 142); } button[disabled].secondary:hover { background-color: rgb(135, 141, 142); } .secondary.disabled.button:focus { color: rgb(255, 255, 255); } .secondary.disabled.button:hover { color: rgb(255, 255, 255); } [disabled].secondary.button:focus { color: rgb(255, 255, 255); } [disabled].secondary.button:hover { color: rgb(255, 255, 255); } button.secondary.disabled:focus { color: rgb(255, 255, 255); } button.secondary.disabled:hover { color: rgb(255, 255, 255); } button[disabled].secondary:focus { color: rgb(255, 255, 255); } button[disabled].secondary:hover { color: rgb(255, 255, 255); } .secondary.disabled.button:focus { background-color: rgb(171, 175, 176); } .secondary.disabled.button:hover { background-color: rgb(171, 175, 176); } [disabled].secondary.button:focus { background-color: rgb(171, 175, 176); } [disabled].secondary.button:hover { background-color: rgb(171, 175, 176); } button.secondary.disabled:focus { background-color: rgb(171, 175, 176); } button.secondary.disabled:hover { background-color: rgb(171, 175, 176); } button[disabled].secondary:focus { background-color: rgb(171, 175, 176); } button[disabled].secondary:hover { background-color: rgb(171, 175, 176); } .success.disabled.button { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(46, 140, 26); } [disabled].success.button { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(46, 140, 26); } button.success.disabled { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(46, 140, 26); } button[disabled].success { border-color: rgb(37, 112, 21); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(46, 140, 26); } .success.disabled.button:focus { background-color: rgb(37, 112, 21); } .success.disabled.button:hover { background-color: rgb(37, 112, 21); } [disabled].success.button:focus { background-color: rgb(37, 112, 21); } [disabled].success.button:hover { background-color: rgb(37, 112, 21); } button.success.disabled:focus { background-color: rgb(37, 112, 21); } button.success.disabled:hover { background-color: rgb(37, 112, 21); } button[disabled].success:focus { background-color: rgb(37, 112, 21); } button[disabled].success:hover { background-color: rgb(37, 112, 21); } .success.disabled.button:focus { color: rgb(255, 255, 255); } .success.disabled.button:hover { color: rgb(255, 255, 255); } [disabled].success.button:focus { color: rgb(255, 255, 255); } [disabled].success.button:hover { color: rgb(255, 255, 255); } button.success.disabled:focus { color: rgb(255, 255, 255); } button.success.disabled:hover { color: rgb(255, 255, 255); } button[disabled].success:focus { color: rgb(255, 255, 255); } button[disabled].success:hover { color: rgb(255, 255, 255); } .success.disabled.button:focus { background-color: rgb(46, 140, 26); } .success.disabled.button:hover { background-color: rgb(46, 140, 26); } [disabled].success.button:focus { background-color: rgb(46, 140, 26); } [disabled].success.button:hover { background-color: rgb(46, 140, 26); } button.success.disabled:focus { background-color: rgb(46, 140, 26); } button.success.disabled:hover { background-color: rgb(46, 140, 26); } button[disabled].success:focus { background-color: rgb(46, 140, 26); } button[disabled].success:hover { background-color: rgb(46, 140, 26); } .alert.disabled.button { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(254, 85, 2); } [disabled].alert.button { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(254, 85, 2); } button.alert.disabled { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(254, 85, 2); } button[disabled].alert { border-color: rgb(204, 68, 1); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(254, 85, 2); } .alert.disabled.button:focus { background-color: rgb(204, 68, 1); } .alert.disabled.button:hover { background-color: rgb(204, 68, 1); } [disabled].alert.button:focus { background-color: rgb(204, 68, 1); } [disabled].alert.button:hover { background-color: rgb(204, 68, 1); } button.alert.disabled:focus { background-color: rgb(204, 68, 1); } button.alert.disabled:hover { background-color: rgb(204, 68, 1); } button[disabled].alert:focus { background-color: rgb(204, 68, 1); } button[disabled].alert:hover { background-color: rgb(204, 68, 1); } .alert.disabled.button:focus { color: rgb(255, 255, 255); } .alert.disabled.button:hover { color: rgb(255, 255, 255); } [disabled].alert.button:focus { color: rgb(255, 255, 255); } [disabled].alert.button:hover { color: rgb(255, 255, 255); } button.alert.disabled:focus { color: rgb(255, 255, 255); } button.alert.disabled:hover { color: rgb(255, 255, 255); } button[disabled].alert:focus { color: rgb(255, 255, 255); } button[disabled].alert:hover { color: rgb(255, 255, 255); } .alert.disabled.button:focus { background-color: rgb(254, 85, 2); } .alert.disabled.button:hover { background-color: rgb(254, 85, 2); } [disabled].alert.button:focus { background-color: rgb(254, 85, 2); } [disabled].alert.button:hover { background-color: rgb(254, 85, 2); } button.alert.disabled:focus { background-color: rgb(254, 85, 2); } button.alert.disabled:hover { background-color: rgb(254, 85, 2); } button[disabled].alert:focus { background-color: rgb(254, 85, 2); } button[disabled].alert:hover { background-color: rgb(254, 85, 2); } .warning.disabled.button { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(252, 165, 31); } [disabled].warning.button { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(252, 165, 31); } button.warning.disabled { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(252, 165, 31); } button[disabled].warning { border-color: rgb(223, 137, 3); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(252, 165, 31); } .warning.disabled.button:focus { background-color: rgb(223, 137, 3); } .warning.disabled.button:hover { background-color: rgb(223, 137, 3); } [disabled].warning.button:focus { background-color: rgb(223, 137, 3); } [disabled].warning.button:hover { background-color: rgb(223, 137, 3); } button.warning.disabled:focus { background-color: rgb(223, 137, 3); } button.warning.disabled:hover { background-color: rgb(223, 137, 3); } button[disabled].warning:focus { background-color: rgb(223, 137, 3); } button[disabled].warning:hover { background-color: rgb(223, 137, 3); } .warning.disabled.button:focus { color: rgb(255, 255, 255); } .warning.disabled.button:hover { color: rgb(255, 255, 255); } [disabled].warning.button:focus { color: rgb(255, 255, 255); } [disabled].warning.button:hover { color: rgb(255, 255, 255); } button.warning.disabled:focus { color: rgb(255, 255, 255); } button.warning.disabled:hover { color: rgb(255, 255, 255); } button[disabled].warning:focus { color: rgb(255, 255, 255); } button[disabled].warning:hover { color: rgb(255, 255, 255); } .warning.disabled.button:focus { background-color: rgb(252, 165, 31); } .warning.disabled.button:hover { background-color: rgb(252, 165, 31); } [disabled].warning.button:focus { background-color: rgb(252, 165, 31); } [disabled].warning.button:hover { background-color: rgb(252, 165, 31); } button.warning.disabled:focus { background-color: rgb(252, 165, 31); } button.warning.disabled:hover { background-color: rgb(252, 165, 31); } button[disabled].warning:focus { background-color: rgb(252, 165, 31); } button[disabled].warning:hover { background-color: rgb(252, 165, 31); } .info.disabled.button { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(35, 156, 170); } [disabled].info.button { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(35, 156, 170); } button.info.disabled { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(35, 156, 170); } button[disabled].info { border-color: rgb(28, 125, 136); color: rgb(255, 255, 255); cursor: default; opacity: 0.7; box-shadow: none; background-color: rgb(35, 156, 170); } .info.disabled.button:focus { background-color: rgb(28, 125, 136); } .info.disabled.button:hover { background-color: rgb(28, 125, 136); } [disabled].info.button:focus { background-color: rgb(28, 125, 136); } [disabled].info.button:hover { background-color: rgb(28, 125, 136); } button.info.disabled:focus { background-color: rgb(28, 125, 136); } button.info.disabled:hover { background-color: rgb(28, 125, 136); } button[disabled].info:focus { background-color: rgb(28, 125, 136); } button[disabled].info:hover { background-color: rgb(28, 125, 136); } .info.disabled.button:focus { color: rgb(255, 255, 255); } .info.disabled.button:hover { color: rgb(255, 255, 255); } [disabled].info.button:focus { color: rgb(255, 255, 255); } [disabled].info.button:hover { color: rgb(255, 255, 255); } button.info.disabled:focus { color: rgb(255, 255, 255); } button.info.disabled:hover { color: rgb(255, 255, 255); } button[disabled].info:focus { color: rgb(255, 255, 255); } button[disabled].info:hover { color: rgb(255, 255, 255); } .info.disabled.button:focus { background-color: rgb(35, 156, 170); } .info.disabled.button:hover { background-color: rgb(35, 156, 170); } [disabled].info.button:focus { background-color: rgb(35, 156, 170); } [disabled].info.button:hover { background-color: rgb(35, 156, 170); } button.info.disabled:focus { background-color: rgb(35, 156, 170); } button.info.disabled:hover { background-color: rgb(35, 156, 170); } button[disabled].info:focus { background-color: rgb(35, 156, 170); } button[disabled].info:hover { background-color: rgb(35, 156, 170); } @media only screen and (min-width:48rem), print { .button { display: inline-block; } button { display: inline-block; } } .flex-video { height: 0px; overflow: hidden; padding-top: 0px; padding-bottom: 56.34%; margin-bottom: 1rem; position: relative; } .widescreen.flex-video { padding-bottom: 56.34%; } .vimeo.flex-video { padding-top: 0px; } .flex-video embed { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .flex-video iframe { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .flex-video object { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .flex-video video { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } form { margin: 0px 0px 1rem; } form .row .row { margin: 0px -0.5rem; } form .row .row .column { padding: 0px 0.5rem; } form .row .row .columns { padding: 0px 0.5rem; } form .row .collapse.row { margin: 0px; } form .row .collapse.row .column { padding: 0px; } form .row .collapse.row .columns { padding: 0px; } form .row .collapse.row input { border-top-right-radius: 0px; border-bottom-right-radius: 0px; -webkit-border-bottom-right-radius: 0; -webkit-border-top-right-radius: 0; } form .row input.column { padding-left: 0.5rem; } form .row input.columns { padding-left: 0.5rem; } form .row textarea.column { padding-left: 0.5rem; } form .row textarea.columns { padding-left: 0.5rem; } label { color: rgb(77, 76, 76); line-height: 1.5; font-size: 0.87rem; font-weight: 400; margin-bottom: 0px; display: block; cursor: pointer; } label.right { text-align: right; float: none !important; } label.inline { margin: 0px 0px 1rem; padding: 0.56rem 0px; } label small { color: rgb(103, 103, 103); text-transform: capitalize; } .postfix { border-width: 1px; border-style: solid; width: 100%; height: 2.31rem; text-align: center; line-height: 2.31rem; overflow: visible; padding-top: 0px; padding-bottom: 0px; font-size: 0.87rem; display: block; position: relative; z-index: 2; } .prefix { border-width: 1px; border-style: solid; width: 100%; height: 2.31rem; text-align: center; line-height: 2.31rem; overflow: visible; padding-top: 0px; padding-bottom: 0px; font-size: 0.87rem; display: block; position: relative; z-index: 2; } .button.postfix { } .button.prefix { padding: 0px; border: currentColor; border-image: none; text-align: center; } .radius.button.prefix { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } .radius.button.postfix { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } .round.button.prefix { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } .round.button.postfix { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } label.prefix { background: rgb(242, 242, 242); border-color: rgb(204, 204, 204); color: rgb(51, 51, 51); border-right-width: medium; border-right-style: none; } span.prefix { background: rgb(242, 242, 242); border-color: rgb(204, 204, 204); color: rgb(51, 51, 51); border-right-width: medium; border-right-style: none; } label.postfix { background: rgb(242, 242, 242); border-color: rgb(204, 204, 204); color: rgb(51, 51, 51); } span.postfix { background: rgb(242, 242, 242); border-color: rgb(204, 204, 204); color: rgb(51, 51, 51); } input[type=color] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=date] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=datetime-local] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=datetime] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=email] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=month] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=number] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=password] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=search] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=tel] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=text] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=time] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=url] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=week] { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } textarea { margin: 0px 0px 1rem; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); transition:border-color 0.15s linear, background 0.15s linear; width: 100%; height: 2.31rem; color: rgba(0, 0, 0, 0.75); font-family: inherit; font-size: 0.87rem; display: block; box-sizing: border-box; box-shadow: none; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } input[type=color]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=date]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=datetime-local]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=datetime]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=email]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=month]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=number]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=password]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=search]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=tel]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=text]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=time]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=url]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=week]:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } textarea:focus { background: rgb(255, 255, 255); border-color: rgb(204, 204, 204); outline: 0px; } input[type=color]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=date]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime-local]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=email]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=month]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=number]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=password]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=search]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=tel]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=text]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=time]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=url]:disabled { cursor: default; background-color: rgb(221, 221, 221); } input[type=week]:disabled { cursor: default; background-color: rgb(221, 221, 221); } textarea:disabled { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=color] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=date] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=datetime-local] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=datetime] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=email] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=month] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=number] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=password] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=search] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=tel] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=text] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=time] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=url] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] input[type=week] { cursor: default; background-color: rgb(221, 221, 221); } fieldset[disabled] textarea { cursor: default; background-color: rgb(221, 221, 221); } input[type=color][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=color][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=date][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=date][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime-local][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime-local][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=datetime][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=email][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=email][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=month][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=month][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=number][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=number][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=password][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=password][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=search][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=search][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=tel][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=tel][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=text][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=text][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=time][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=time][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=url][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=url][readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=week][disabled] { cursor: default; background-color: rgb(221, 221, 221); } input[type=week][readonly] { cursor: default; background-color: rgb(221, 221, 221); } textarea[disabled] { cursor: default; background-color: rgb(221, 221, 221); } textarea[readonly] { cursor: default; background-color: rgb(221, 221, 221); } input[type=color].radius { border-radius: 3px; } input[type=date].radius { border-radius: 3px; } input[type=datetime-local].radius { border-radius: 3px; } input[type=datetime].radius { border-radius: 3px; } input[type=email].radius { border-radius: 3px; } input[type=month].radius { border-radius: 3px; } input[type=number].radius { border-radius: 3px; } input[type=password].radius { border-radius: 3px; } input[type=search].radius { border-radius: 3px; } input[type=tel].radius { border-radius: 3px; } input[type=text].radius { border-radius: 3px; } input[type=time].radius { border-radius: 3px; } input[type=url].radius { border-radius: 3px; } input[type=week].radius { border-radius: 3px; } textarea.radius { border-radius: 3px; } form .row .collapse.row.prefix-radius button { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } form .row .collapse.row.prefix-radius input { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } form .row .collapse.row.prefix-radius select { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } form .row .collapse.row.prefix-radius textarea { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } form .row .collapse.row.prefix-radius .prefix { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } form .row .collapse.row.postfix-radius button { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } form .row .collapse.row.postfix-radius input { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } form .row .collapse.row.postfix-radius select { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } form .row .collapse.row.postfix-radius textarea { border-radius: 3px 0px 0px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } form .row .collapse.row.postfix-radius .postfix { border-radius: 0px 3px 3px 0px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } form .row .collapse.row.prefix-round button { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } form .row .collapse.row.prefix-round input { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } form .row .collapse.row.prefix-round select { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } form .row .collapse.row.prefix-round textarea { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } form .row .collapse.row.prefix-round .prefix { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } form .row .collapse.row.postfix-round button { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } form .row .collapse.row.postfix-round input { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } form .row .collapse.row.postfix-round select { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } form .row .collapse.row.postfix-round textarea { border-radius: 1000px 0px 0px 1000px; -webkit-border-bottom-left-radius: 1000px; -webkit-border-top-left-radius: 1000px; } form .row .collapse.row.postfix-round .postfix { border-radius: 0px 1000px 1000px 0px; -webkit-border-bottom-right-radius: 1000px; -webkit-border-top-right-radius: 1000px; } input[type=submit] { border-radius: 0px; -webkit-appearance: none; -moz-appearance: none; } textarea[rows] { height: auto; } textarea { max-width: 100%; } :-ms-input-placeholder { color: rgb(204, 204, 204); } select { background-position: 100%; padding: 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); height: 2.31rem; color: rgba(0, 0, 0, 0.75); line-height: normal; font-family: inherit; font-size: 0.87rem; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+"); background-repeat: no-repeat; background-color: rgb(250, 250, 250); -webkit-appearance: none; -moz-appearance: none; } select::-ms-expand { display: none; } select.radius { border-radius: 3px; } select:hover { border-color: rgb(204, 204, 204); background-color: rgb(243, 242, 242); } select:disabled { cursor: default; background-color: rgb(221, 221, 221); } select[multiple] { height: auto; } input[type=checkbox] { margin: 0px 0px 1rem; } input[type=file] { margin: 0px 0px 1rem; } input[type=radio] { margin: 0px 0px 1rem; } select { margin: 0px 0px 1rem; } input[type=checkbox] + label { margin-right: 1rem; margin-bottom: 0px; margin-left: 0.5rem; vertical-align: baseline; display: inline-block; } input[type=radio] + label { margin-right: 1rem; margin-bottom: 0px; margin-left: 0.5rem; vertical-align: baseline; display: inline-block; } input[type=file] { width: 100%; } input[type=number] { -moz-appearance: textfield; } fieldset { margin: 1.12rem 0px; padding: 1.25rem; border: 1px solid rgb(221, 221, 221); border-image: none; } fieldset legend { background: rgb(255, 255, 255); margin: 0px; padding: 0px 0.18rem; font-weight: 700; } [data-abide] .error small.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } [data-abide] .error span.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } [data-abide] small.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } [data-abide] span.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } [data-abide] small.error { display: none; } [data-abide] span.error { display: none; } small.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } span.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } .error input { margin-bottom: 0px; } .error select { margin-bottom: 0px; } .error textarea { margin-bottom: 0px; } .error input[type=checkbox] { margin-bottom: 1rem; } .error input[type=radio] { margin-bottom: 1rem; } .error label { color: rgb(254, 85, 2); } .error label.error { color: rgb(254, 85, 2); } .error small.error { background: rgb(254, 85, 2); padding: 0.37rem 0.56rem 0.56rem; color: rgb(255, 255, 255); font-size: 0.75rem; font-style: italic; font-weight: 400; margin-top: -1px; margin-bottom: 1rem; display: block; } .error > label > small { background: 0px 0px; margin: 0px; padding: 0px; color: rgb(103, 103, 103); text-transform: capitalize; font-size: 60%; font-style: normal; display: inline; } .error span.error-message { display: block; } input.error { margin-bottom: 0px; } select.error { margin-bottom: 0px; } textarea.error { margin-bottom: 0px; } label.error { color: rgb(254, 85, 2); } .inline-list { list-style: none; margin: 0px auto 1.06rem; padding: 0px; overflow: hidden; } .inline-list > li { list-style: none; margin-left: 1.37rem; float: left; display: block; } .inline-list > li > * { display: block; } .joyride-list { display: none; } .joyride-tip-guide { background: rgb(51, 51, 51); left: 2.5%; top: 0px; width: 95%; color: rgb(255, 255, 255); font-family: inherit; font-weight: 400; display: none; position: absolute; z-index: 101; } .lt-ie9 .joyride-tip-guide { left: 50%; margin-left: -400px; max-width: 800px; } .joyride-content-wrapper { padding: 1.12rem 1.25rem 1.5rem; width: 100%; } .joyride-content-wrapper .button { margin-bottom: 0px !important; } .joyride-content-wrapper .joyride-prev-tip { margin-right: 10px; } .joyride-tip-guide .joyride-nub { border: 10px solid rgb(51, 51, 51); border-image: none; left: 22px; width: 0px; height: 0px; display: block; position: absolute; } .joyride-tip-guide .top.joyride-nub { top: -20px; border-top-color: transparent !important; border-right-color: transparent !important; border-bottom-color: rgb(51, 51, 51); border-left-color: transparent !important; border-top-style: solid; } .joyride-tip-guide .bottom.joyride-nub { border-color: rgb(51, 51, 51) transparent transparent !important; bottom: -20px; border-bottom-style: solid; } .joyride-tip-guide .right.joyride-nub { right: -20px; } .joyride-tip-guide .left.joyride-nub { left: -20px; } .joyride-tip-guide h1 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide h2 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide h3 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide h4 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide h5 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide h6 { margin: 0px; color: rgb(255, 255, 255); line-height: 1.25; font-weight: 700; } .joyride-tip-guide p { margin: 0px 0px 1.12rem; line-height: 1.3; font-size: 0.87rem; } .joyride-timer-indicator-wrap { border: 1px solid rgb(85, 85, 85); border-image: none; width: 50px; height: 3px; right: 1.06rem; bottom: 1rem; position: absolute; } .joyride-timer-indicator { background: rgb(102, 102, 102); width: 0px; height: inherit; display: block; } .joyride-close-tip { top: 10px; right: 12px; color: rgb(119, 119, 119) !important; line-height: 0.5 !important; font-size: 24px; font-weight: 400; text-decoration: none; position: absolute; } .joyride-close-tip:focus { color: rgb(238, 238, 238) !important; } .joyride-close-tip:hover { color: rgb(238, 238, 238) !important; } .joyride-modal-bg { background: rgba(0, 0, 0, 0.5); left: 0px; top: 0px; width: 100%; height: 100%; display: none; position: fixed; z-index: 100; cursor: pointer; } .joyride-expose-wrapper { border-radius: 3px; position: absolute; z-index: 102; box-shadow: 0px 0px 15px #fff; background-color: rgb(255, 255, 255); } .joyride-expose-cover { background: 0px 0px; border-radius: 3px; left: 0px; top: 0px; position: absolute; z-index: 9999; } @media only screen and (min-width:48rem), print { .joyride-tip-guide { left: inherit; width: 300px; } .joyride-tip-guide .bottom.joyride-nub { border-color: rgb(51, 51, 51) transparent transparent !important; bottom: -20px; } .joyride-tip-guide .right.joyride-nub { border-color: transparent transparent transparent rgb(51, 51, 51) !important; left: auto; top: 22px; right: -20px; } .joyride-tip-guide .left.joyride-nub { border-color: transparent rgb(51, 51, 51) transparent transparent !important; left: -20px; top: 22px; right: auto; } } .label { padding: 0.37rem 0.75rem; text-align: center; color: rgb(255, 255, 255); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-size: 0.68rem; font-weight: 400; text-decoration: none; margin-bottom: auto; display: inline-block; white-space: nowrap; position: relative; background-color: rgb(200, 37, 2); } .radius.label { border-radius: 3px; } .round.label { border-radius: 1000px; } .alert.label { color: rgb(255, 255, 255); background-color: rgb(254, 85, 2); } .warning.label { color: rgb(255, 255, 255); background-color: rgb(252, 165, 31); } .success.label { color: rgb(255, 255, 255); background-color: rgb(46, 140, 26); } .secondary.label { color: rgb(255, 255, 255); background-color: rgb(171, 175, 176); } .info.label { color: rgb(255, 255, 255); background-color: rgb(35, 156, 170); } .panel { background: rgb(252, 252, 252); padding: 1.5rem; border: 0px solid rgb(225, 225, 225); color: rgb(34, 34, 34); margin-bottom: 1.5rem; } .panel > :first-child { margin-top: 0px; } .panel > :last-child { margin-bottom: 0px; } .panel dl { color: rgb(34, 34, 34); } .panel h1 { color: rgb(34, 34, 34); } .panel h2 { color: rgb(34, 34, 34); } .panel h3 { color: rgb(34, 34, 34); } .panel h4 { color: rgb(34, 34, 34); } .panel h5 { color: rgb(34, 34, 34); } .panel h6 { color: rgb(34, 34, 34); } .panel li { color: rgb(34, 34, 34); } .panel p { color: rgb(34, 34, 34); } .panel h1 { line-height: 1; margin-bottom: 0.62rem; } .panel h2 { line-height: 1; margin-bottom: 0.62rem; } .panel h3 { line-height: 1; margin-bottom: 0.62rem; } .panel h4 { line-height: 1; margin-bottom: 0.62rem; } .panel h5 { line-height: 1; margin-bottom: 0.62rem; } .panel h6 { line-height: 1; margin-bottom: 0.62rem; } .panel h1.subheader { line-height: 1.4; } .panel h2.subheader { line-height: 1.4; } .panel h3.subheader { line-height: 1.4; } .panel h4.subheader { line-height: 1.4; } .panel h5.subheader { line-height: 1.4; } .panel h6.subheader { line-height: 1.4; } .callout.panel { background: rgb(255, 240, 237); padding: 1.5rem; border: 0px solid rgb(225, 225, 225); color: rgb(34, 34, 34); margin-bottom: 1.5rem; } .callout.panel > :first-child { margin-top: 0px; } .callout.panel > :last-child { margin-bottom: 0px; } .callout.panel dl { color: rgb(34, 34, 34); } .callout.panel h1 { color: rgb(34, 34, 34); } .callout.panel h2 { color: rgb(34, 34, 34); } .callout.panel h3 { color: rgb(34, 34, 34); } .callout.panel h4 { color: rgb(34, 34, 34); } .callout.panel h5 { color: rgb(34, 34, 34); } .callout.panel h6 { color: rgb(34, 34, 34); } .callout.panel li { color: rgb(34, 34, 34); } .callout.panel p { color: rgb(34, 34, 34); } .callout.panel h1 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h2 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h3 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h4 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h5 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h6 { line-height: 1; margin-bottom: 0.62rem; } .callout.panel h1.subheader { line-height: 1.4; } .callout.panel h2.subheader { line-height: 1.4; } .callout.panel h3.subheader { line-height: 1.4; } .callout.panel h4.subheader { line-height: 1.4; } .callout.panel h5.subheader { line-height: 1.4; } .callout.panel h6.subheader { line-height: 1.4; } .callout.panel a:not(.button) { color: rgb(117, 126, 133); } .callout.panel a:not(.button):focus { color: rgb(101, 108, 114); } .callout.panel a:not(.button):hover { color: rgb(101, 108, 114); } .radius.panel { border-radius: 3px; } .progress { padding: 0.12rem; border: 1px solid rgb(255, 255, 255); border-image: none; height: 1.56rem; margin-bottom: 0.62rem; background-color: rgb(246, 246, 246); } .progress .meter { background: rgb(200, 37, 2); height: 100%; display: block; } .secondary.progress .meter { background: rgb(171, 175, 176); height: 100%; display: block; } .success.progress .meter { background: rgb(46, 140, 26); height: 100%; display: block; } .alert.progress .meter { background: rgb(254, 85, 2); height: 100%; display: block; } .radius.progress { border-radius: 3px; } .radius.progress .meter { border-radius: 2px; } .round.progress { border-radius: 1000px; } .round.progress .meter { border-radius: 999px; } .range-slider { background: rgb(250, 250, 250); margin: 1.25rem 0px; border: 1px solid rgb(221, 221, 221); border-image: none; width: 100%; height: 1rem; display: block; position: relative; -ms-touch-action: none; touch-action: none; } .vertical-range.range-slider { margin: 1.25rem 0px; border: 1px solid rgb(221, 221, 221); border-image: none; width: 1rem; height: 12.5rem; display: inline-block; position: relative; -ms-touch-action: none; touch-action: none; } .vertical-range.range-slider .range-slider-handle { bottom: -10.5rem; margin-top: 0px; margin-left: -0.5rem; position: absolute; } .vertical-range.range-slider .range-slider-active-segment { width: 0.87rem; height: auto; bottom: 0px; border-bottom-right-radius: inherit; border-bottom-left-radius: inherit; } .radius.range-slider { background: rgb(250, 250, 250); border-radius: 3px; } .radius.range-slider .range-slider-handle { background: rgb(200, 37, 2); border-radius: 3px; } .radius.range-slider .range-slider-handle:hover { background: rgb(176, 33, 2); } .round.range-slider { background: rgb(250, 250, 250); border-radius: 1000px; } .round.range-slider .range-slider-handle { background: rgb(200, 37, 2); border-radius: 1000px; } .round.range-slider .range-slider-handle:hover { background: rgb(176, 33, 2); } .disabled.range-slider { background: rgb(250, 250, 250); cursor: not-allowed; opacity: 0.7; } [disabled].range-slider { background: rgb(250, 250, 250); cursor: not-allowed; opacity: 0.7; } .disabled.range-slider .range-slider-handle { background: rgb(200, 37, 2); cursor: default; opacity: 0.7; } [disabled].range-slider .range-slider-handle { background: rgb(200, 37, 2); cursor: default; opacity: 0.7; } .disabled.range-slider .range-slider-handle:hover { background: rgb(176, 33, 2); } [disabled].range-slider .range-slider-handle:hover { background: rgb(176, 33, 2); } .range-slider-active-segment { background: rgb(169, 173, 174); height: 0.87rem; display: inline-block; position: absolute; border-top-left-radius: inherit; border-bottom-left-radius: inherit; } .range-slider-handle { background: rgb(200, 37, 2); border-color: currentColor; top: -0.31rem; width: 2rem; height: 1.37rem; display: inline-block; position: absolute; z-index: 1; cursor: pointer; -ms-touch-action: manipulation; touch-action: manipulation; } .range-slider-handle:hover { background: rgb(176, 33, 2); } .reveal-modal-bg { background: rgba(0, 0, 0, 0.45); left: 0px; top: 0px; right: 0px; bottom: 0px; display: none; position: fixed; z-index: 1004; } .reveal-modal { padding: 1.87rem; border-radius: 3px; border: 1px solid rgb(102, 102, 102); border-image: none; left: 0px; top: 0px; width: 100%; display: none; visibility: hidden; position: absolute; z-index: 1005; box-shadow: 0px 0px 10px rgba(0,0,0,0.4); background-color: rgb(255, 255, 255); } @media only screen and (max-width:47.93rem) { .reveal-modal { min-height: 100vh; } } .reveal-modal .column { min-width: 0px; } .reveal-modal .columns { min-width: 0px; } .reveal-modal > :first-child { margin-top: 0px; } .reveal-modal > :last-child { margin-bottom: 0px; } @media only screen and (min-width:48rem), print { .reveal-modal { margin: 0px auto; left: 0px; width: 80%; right: 0px; max-width: 120rem; } } @media only screen and (min-width:48rem), print { .reveal-modal { top: 6.25rem; } } .radius.reveal-modal { border-radius: 3px; } .round.reveal-modal { border-radius: 1000px; } .collapse.reveal-modal { padding: 0px; } @media only screen and (min-width:48rem), print { .tiny.reveal-modal { margin: 0px auto; left: 0px; width: 30%; right: 0px; max-width: 120rem; } } @media only screen and (min-width:48rem), print { .small.reveal-modal { margin: 0px auto; left: 0px; width: 40%; right: 0px; max-width: 120rem; } } @media only screen and (min-width:48rem), print { .medium.reveal-modal { margin: 0px auto; left: 0px; width: 60%; right: 0px; max-width: 120rem; } } @media only screen and (min-width:48rem), print { .large.reveal-modal { margin: 0px auto; left: 0px; width: 70%; right: 0px; max-width: 120rem; } } @media only screen and (min-width:48rem), print { .xlarge.reveal-modal { margin: 0px auto; left: 0px; width: 95%; right: 0px; max-width: 120rem; } } .full.reveal-modal { left: 0px; top: 0px; height: 100%; margin-left: 0px !important; min-height: 100vh; max-width: none !important; } @media only screen and (min-width:48rem), print { .full.reveal-modal { margin: 0px auto; left: 0px; width: 100%; right: 0px; max-width: 120rem; } } .toback.reveal-modal { z-index: 1003; } .reveal-modal .close-reveal-modal { top: 0.62rem; right: 1.37rem; color: rgb(170, 170, 170); line-height: 1; font-size: 2.5rem; font-weight: 700; position: absolute; cursor: pointer; } .switch { padding: 0px; outline: 0px; border: currentColor; border-image: none; margin-bottom: 1.25rem; position: relative; -ms-user-select: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; } .switch label { background: rgb(35, 156, 170); transition:left 0.1s ease-out; width: 4.5rem; height: 2.25rem; color: transparent; text-indent: 100%; margin-bottom: 1.12rem; display: block; position: relative; cursor: pointer; } .switch input { padding: 0px; left: 10px; top: 9px; position: absolute; opacity: 0; } .switch input + label { margin-right: 0px; margin-left: 0px; } .switch label::after { background: rgb(255, 255, 255); transition:left 0.1s ease-out; left: 0.25rem; top: 0.25rem; width: 1.75rem; height: 1.75rem; display: block; position: absolute; content: ""; transform: translate3d(0px, 0px, 0px); -webkit-transform: translate3d(0, 0, 0); } .switch input:checked + label { background: rgb(200, 37, 2); } .switch input:checked + label::after { left: 2.5rem; } .switch label { width: 4.5rem; height: 2.25rem; } .switch label::after { width: 1.75rem; height: 1.75rem; } .switch input:checked + label::after { left: 2.5rem; } .switch label { background: rgb(35, 156, 170); color: transparent; } .switch label::after { background: rgb(255, 255, 255); } .switch input:checked + label { background: rgb(200, 37, 2); } .large.switch label { width: 5.5rem; height: 2.75rem; } .large.switch label::after { width: 2.25rem; height: 2.25rem; } .large.switch input:checked + label::after { left: 3rem; } .small.switch label { width: 3.5rem; height: 1.75rem; } .small.switch label::after { width: 1.25rem; height: 1.25rem; } .small.switch input:checked + label::after { left: 2rem; } .tiny.switch label { width: 2.75rem; height: 1.37rem; } .tiny.switch label::after { width: 0.87rem; height: 0.87rem; } .tiny.switch input:checked + label::after { left: 1.62rem; } .radius.switch label { border-radius: 4px; } .radius.switch label::after { border-radius: 3px; } .round.switch { border-radius: 1000px; } .round.switch label { border-radius: 2rem; } .round.switch label::after { border-radius: 2rem; } table { background: rgb(255, 255, 255); border: 1px solid rgb(221, 221, 221); border-image: none; margin-bottom: 1.25rem; table-layout: auto; } table caption { background: 0px 0px; color: rgb(34, 34, 34); font-size: 1rem; font-weight: 700; } table thead { background: rgb(245, 245, 245); } table thead tr td { padding: 0.5rem 0.62rem 0.62rem; color: rgb(34, 34, 34); font-size: 0.87rem; font-weight: 700; } table thead tr th { padding: 0.5rem 0.62rem 0.62rem; color: rgb(34, 34, 34); font-size: 0.87rem; font-weight: 700; } table tfoot { background: rgb(245, 245, 245); } table tfoot tr td { padding: 0.5rem 0.62rem 0.62rem; color: rgb(34, 34, 34); font-size: 0.87rem; font-weight: 700; } table tfoot tr th { padding: 0.5rem 0.62rem 0.62rem; color: rgb(34, 34, 34); font-size: 0.87rem; font-weight: 700; } table tr td { padding: 0.56rem 0.62rem; text-align: left; color: rgb(34, 34, 34); font-size: 0.87rem; } table tr th { padding: 0.56rem 0.62rem; text-align: left; color: rgb(34, 34, 34); font-size: 0.87rem; } table tr.alt { background: rgb(249, 249, 249); } table tr.even { background: rgb(249, 249, 249); } table tr:nth-of-type(2n) { background: rgb(249, 249, 249); } table tbody tr td { line-height: 1.12rem; display: table-cell; } table tbody tr th { line-height: 1.12rem; display: table-cell; } table tfoot tr td { line-height: 1.12rem; display: table-cell; } table tfoot tr th { line-height: 1.12rem; display: table-cell; } table thead tr th { line-height: 1.12rem; display: table-cell; } table tr td { line-height: 1.12rem; display: table-cell; } .tabs { margin-bottom: 0px !important; margin-left: 0px; } .tabs::after { display: table; content: " "; } .tabs::before { display: table; content: " "; } .tabs::after { clear: both; } .tabs .tab-title { list-style: none; margin-bottom: 0px !important; float: left; position: relative; } .tabs dd { list-style: none; margin-bottom: 0px !important; float: left; position: relative; } .tabs .tab-title > a { padding: 1rem 2rem; color: rgb(34, 34, 34); font-family: Helvetica,Arial,sans-serif; font-size: 1rem; display: block; background-color: rgb(239, 239, 239); } .tabs dd > a { padding: 1rem 2rem; color: rgb(34, 34, 34); font-family: Helvetica,Arial,sans-serif; font-size: 1rem; display: block; background-color: rgb(239, 239, 239); } .tabs .tab-title > a:hover { background-color: rgb(225, 225, 225); } .tabs dd > a:hover { background-color: rgb(225, 225, 225); } .tabs .active.tab-title a { color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); } .tabs dd.active a { color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); } .radius.tabs :first-child.tab a { border-top-left-radius: 3px; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } .radius.tabs dd:first-child a { border-top-left-radius: 3px; border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-top-left-radius: 3px; } .radius.tabs :last-child.tab a { border-top-right-radius: 3px; border-bottom-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } .radius.tabs dd:last-child a { border-top-right-radius: 3px; border-bottom-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; -webkit-border-top-right-radius: 3px; } .vertical.tabs .tab-title { top: auto; float: none; display: block; position: inherit; } .vertical.tabs dd { top: auto; float: none; display: block; position: inherit; } .tabs-content { width: 100%; margin-bottom: 1.5rem; } .tabs-content::after { display: table; content: " "; } .tabs-content::before { display: table; content: " "; } .tabs-content::after { clear: both; } .tabs-content > .content { padding: 0.62rem 0px; width: 100%; float: left; display: none; } .tabs-content > .active.content { float: none; display: block; } .tabs-content > .contained.content { padding: 0.62rem; } .vertical.tabs-content { display: block; } .vertical.tabs-content > .content { padding: 0px 0.62rem; } @media only screen and (min-width:48rem), print { .vertical.tabs { width: 20%; margin-top: 0px; margin-right: 0px; margin-bottom: 1.25rem !important; margin-left: 0px; float: left; max-width: 20%; } .vertical.tabs-content { width: 80%; padding-left: 1rem; margin-left: -1px; float: left; max-width: 80%; } } .no-js .tabs-content > .content { float: none; display: block; } .th { border: 4px solid rgb(255, 255, 255); transition:0.2s ease-out; border-image: none; line-height: 0; display: inline-block; max-width: 100%; box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.2); } .th:focus { box-shadow: 0px 0px 6px 1px rgba(200,37,2,0.5); } .th:hover { box-shadow: 0px 0px 6px 1px rgba(200,37,2,0.5); } .radius.th { border-radius: 3px; } .has-tip { color: rgb(51, 51, 51); font-weight: 700; border-bottom-color: rgb(204, 204, 204); border-bottom-width: 1px; border-bottom-style: dotted; cursor: help; } .has-tip:focus { color: rgb(200, 37, 2); border-bottom-color: rgb(90, 17, 1); border-bottom-width: 1px; border-bottom-style: dotted; } .has-tip:hover { color: rgb(200, 37, 2); border-bottom-color: rgb(90, 17, 1); border-bottom-width: 1px; border-bottom-style: dotted; } .tip-left.has-tip { float: none !important; } .tip-right.has-tip { float: none !important; } .tooltip { background: rgb(51, 51, 51); padding: 0.75rem; left: 50%; width: 100%; color: rgb(255, 255, 255); line-height: 1.3; font-size: 0.87rem; font-weight: 400; display: none; position: absolute; z-index: 1006; max-width: 300px; } .tooltip > .nub { border: 5px solid currentColor; border-image: none; left: 5px; top: -10px; width: 0px; height: 0px; display: block; position: absolute; pointer-events: none; } .tooltip > .rtl.nub { left: auto; right: 5px; } .radius.tooltip { border-radius: 3px; } .round.tooltip { border-radius: 1000px; } .round.tooltip > .nub { left: 2rem; } .opened.tooltip { color: rgb(200, 37, 2) !important; border-bottom-color: rgb(90, 17, 1) !important; border-bottom-width: 1px !important; border-bottom-style: dotted !important; } .tap-to-close { color: rgb(119, 119, 119); font-size: 0.62rem; font-weight: 400; display: block; } @media only screen and (min-width:48rem), print { .tooltip > .nub { border-color: transparent transparent rgb(51, 51, 51); top: -10px; } .tip-top.tooltip > .nub { border-color: rgb(51, 51, 51) transparent transparent; top: auto; bottom: -10px; } .tip-left.tooltip { float: none !important; } .tip-right.tooltip { float: none !important; } .tip-left.tooltip > .nub { border-color: transparent transparent transparent rgb(51, 51, 51); left: auto; top: 50%; right: -10px; margin-top: -5px; } .tip-right.tooltip > .nub { border-color: transparent rgb(51, 51, 51) transparent transparent; left: -10px; top: 50%; right: auto; margin-top: -5px; } } .text-left { text-align: left !important; } .text-right { text-align: right !important; } .text-center { text-align: center !important; } .text-justify { text-align: justify !important; } @media only screen and (max-width:47.93rem) { .small-only-text-left { text-align: left !important; } .small-only-text-right { text-align: right !important; } .small-only-text-center { text-align: center !important; } .small-only-text-justify { text-align: justify !important; } } @media only screen { .small-text-left { text-align: left !important; } .small-text-right { text-align: right !important; } .small-text-center { text-align: center !important; } .small-text-justify { text-align: justify !important; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .medium-only-text-left { text-align: left !important; } .medium-only-text-right { text-align: right !important; } .medium-only-text-center { text-align: center !important; } .medium-only-text-justify { text-align: justify !important; } } @media only screen and (min-width:48rem), print { .medium-text-left { text-align: left !important; } .medium-text-right { text-align: right !important; } .medium-text-center { text-align: center !important; } .medium-text-justify { text-align: justify !important; } } @media only screen and (max-width:84.37rem) and (min-width:64.06rem) { .large-only-text-left { text-align: left !important; } .large-only-text-right { text-align: right !important; } .large-only-text-center { text-align: center !important; } .large-only-text-justify { text-align: justify !important; } } @media only screen and (min-width:64.06rem) { .large-text-left { text-align: left !important; } .large-text-right { text-align: right !important; } .large-text-center { text-align: center !important; } .large-text-justify { text-align: justify !important; } } @media only screen and (max-width:120rem) and (min-width:84.43rem) { .xlarge-only-text-left { text-align: left !important; } .xlarge-only-text-right { text-align: right !important; } .xlarge-only-text-center { text-align: center !important; } .xlarge-only-text-justify { text-align: justify !important; } } @media only screen and (min-width:84.43rem) { .xlarge-text-left { text-align: left !important; } .xlarge-text-right { text-align: right !important; } .xlarge-text-center { text-align: center !important; } .xlarge-text-justify { text-align: justify !important; } } @media not all { .xxlarge-only-text-left { text-align: left !important; } .xxlarge-only-text-right { text-align: right !important; } .xxlarge-only-text-center { text-align: center !important; } .xxlarge-only-text-justify { text-align: justify !important; } } @media only screen and (min-width:120rem) { .xxlarge-text-left { text-align: left !important; } .xxlarge-text-right { text-align: right !important; } .xxlarge-text-center { text-align: center !important; } .xxlarge-text-justify { text-align: justify !important; } } blockquote { margin: 0px; padding: 0px; } dd { margin: 0px; padding: 0px; } div { margin: 0px; padding: 0px; } dl { margin: 0px; padding: 0px; } dt { margin: 0px; padding: 0px; } form { margin: 0px; padding: 0px; } h1 { margin: 0px; padding: 0px; } h2 { margin: 0px; padding: 0px; } h3 { margin: 0px; padding: 0px; } h4 { margin: 0px; padding: 0px; } h5 { margin: 0px; padding: 0px; } h6 { margin: 0px; padding: 0px; } li { margin: 0px; padding: 0px; } ol { margin: 0px; padding: 0px; } p { margin: 0px; padding: 0px; } pre { margin: 0px; padding: 0px; } td { margin: 0px; padding: 0px; } th { margin: 0px; padding: 0px; } ul { margin: 0px; padding: 0px; } a { color: rgb(200, 37, 2); line-height: inherit; text-decoration: none; } a:focus { color: rgb(172, 32, 2); } a:hover { color: rgb(172, 32, 2); } a img { border: currentColor; border-image: none; } p { line-height: 1.9; font-family: Garamond,Baskerville,"Times New Roman",serif; font-size: 1rem; font-weight: 400; margin-bottom: 2rem; text-rendering: optimizeSpeed; } p.lead { line-height: 1.6; font-size: 1.21rem; } p aside { line-height: 1.35; font-size: 0.87rem; font-style: normal; } h1 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h2 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h3 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h4 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h5 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h6 { color: rgb(34, 34, 34); line-height: 1; font-family: Helvetica,Arial,sans-serif; font-style: normal; font-weight: 700; margin-top: 0px; margin-bottom: 0.75rem; text-rendering: auto; } h1 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h2 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h3 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h4 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h5 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h6 small { color: rgb(111, 111, 111); line-height: 0; font-size: 80%; } h1 { font-size: 2.5rem; } h2 { font-size: 1.5rem; } h3 { font-size: 1.31rem; } h4 { font-size: 1.18rem; } h5 { font-size: 1.25rem; } h6 { font-size: 1.12rem; } .subheader { color: rgb(111, 111, 111); line-height: 1; font-weight: 200; margin-top: 0.2rem; margin-bottom: 0.5rem; } hr { border-width: 1px 0px 0px; border-style: solid; border-color: rgb(213, 215, 216); margin: 1.5rem 0px 1.43rem; border-image: none; height: 0px; clear: both; } em { line-height: inherit; font-style: italic; } i { line-height: inherit; font-style: italic; } b { line-height: inherit; font-weight: 700; } strong { line-height: inherit; font-weight: 700; } small { line-height: inherit; font-size: 80%; } code { padding: 0.12rem 0.31rem 0.06rem; border: 0px solid rgb(215, 217, 217); color: rgb(129, 24, 1); font-family: "Courier New",Courier,"Lucida Sans Typewriter","Lucida Typewriter",monospace; font-weight: 400; background-color: rgb(239, 240, 240); } dl { line-height: 1.8; font-family: inherit; font-size: 1rem; margin-bottom: 2rem; list-style-position: outside; } ol { line-height: 1.8; font-family: inherit; font-size: 1rem; margin-bottom: 2rem; list-style-position: outside; } ul { line-height: 1.8; font-family: inherit; font-size: 1rem; margin-bottom: 2rem; list-style-position: outside; } ul { margin-left: 1.1rem; } ul.no-bullet { margin-left: 0px; } ul.no-bullet li ol { list-style: none; margin-bottom: 0px; margin-left: 1.25rem; } ul.no-bullet li ul { list-style: none; margin-bottom: 0px; margin-left: 1.25rem; } ul li ol { margin-bottom: 0px; margin-left: 1.25rem; } ul li ul { margin-bottom: 0px; margin-left: 1.25rem; } ul.circle li ul { list-style: inherit; } ul.disc li ul { list-style: inherit; } ul.square li ul { list-style: inherit; } ul.square { margin-left: 1.1rem; list-style-type: square; } ul.circle { margin-left: 1.1rem; list-style-type: circle; } ul.disc { margin-left: 1.1rem; list-style-type: disc; } ul.no-bullet { list-style: none; } ol { margin-left: 1.4rem; } ol li ol { margin-bottom: 0px; margin-left: 1.25rem; } ol li ul { margin-bottom: 0px; margin-left: 1.25rem; } dl dt { font-weight: 700; margin-bottom: 0.3rem; } dl dd { margin-bottom: 0.75rem; } abbr { color: rgb(34, 34, 34); text-transform: uppercase; font-size: 90%; cursor: help; } acronym { color: rgb(34, 34, 34); text-transform: uppercase; font-size: 90%; cursor: help; } abbr { text-transform: none; } abbr[title] { border-bottom-color: rgb(221, 221, 221); border-bottom-width: 1px; border-bottom-style: dotted; } blockquote { margin: 0px 0px 2rem; padding: 0.56rem 1.25rem 0px 1.18rem; border-left-color: rgb(221, 221, 221); border-left-width: 1px; border-left-style: solid; } blockquote cite { color: rgb(85, 85, 85); font-size: 0.81rem; display: block; } blockquote cite::before { content: "\2014 \0020"; } blockquote cite a { color: rgb(85, 85, 85); } blockquote cite a:visited { color: rgb(85, 85, 85); } blockquote { color: rgb(111, 111, 111); line-height: 1.9; } blockquote p { color: rgb(111, 111, 111); line-height: 1.9; } .vcard { margin: 0px 0px 1.25rem; padding: 0.62rem 0.75rem; border: 1px solid rgb(221, 221, 221); border-image: none; display: inline-block; } .vcard li { margin: 0px; display: block; } .vcard .fn { font-size: 0.93rem; font-weight: 700; } .vevent .summary { font-weight: 700; } .vevent abbr { padding: 0px 0.06rem; border: currentColor; border-image: none; font-weight: 700; text-decoration: none; cursor: default; } @media only screen and (min-width:48rem), print { h1 { line-height: 1; } h2 { line-height: 1; } h3 { line-height: 1; } h4 { line-height: 1; } h5 { line-height: 1; } h6 { line-height: 1; } h1 { font-size: 3.12rem; } h2 { font-size: 2.12rem; } h3 { font-size: 1.62rem; } h4 { font-size: 1.5rem; } h5 { font-size: 1.25rem; } h6 { font-size: 1.12rem; } } @media only screen { .hide-for-large { display: inherit !important; } .hide-for-large-only { display: inherit !important; } .hide-for-large-up { display: inherit !important; } .hide-for-medium { display: inherit !important; } .hide-for-medium-only { display: inherit !important; } .hide-for-medium-up { display: inherit !important; } .hide-for-xlarge { display: inherit !important; } .hide-for-xlarge-only { display: inherit !important; } .hide-for-xlarge-up { display: inherit !important; } .hide-for-xxlarge { display: inherit !important; } .hide-for-xxlarge-only { display: inherit !important; } .hide-for-xxlarge-up { display: inherit !important; } .show-for-large-down { display: inherit !important; } .show-for-medium-down { display: inherit !important; } .show-for-small { display: inherit !important; } .show-for-small-down { display: inherit !important; } .show-for-small-only { display: inherit !important; } .show-for-small-up { display: inherit !important; } .show-for-xlarge-down { display: inherit !important; } .show-for-xxlarge-down { display: inherit !important; } .hide-for-large-down { display: none !important; } .hide-for-medium-down { display: none !important; } .hide-for-small { display: none !important; } .hide-for-small-down { display: none !important; } .hide-for-small-only { display: none !important; } .hide-for-small-up { display: none !important; } .hide-for-xlarge-down { display: none !important; } .hide-for-xxlarge-down { display: none !important; } .show-for-large { display: none !important; } .show-for-large-only { display: none !important; } .show-for-large-up { display: none !important; } .show-for-medium { display: none !important; } .show-for-medium-only { display: none !important; } .show-for-medium-up { display: none !important; } .show-for-xlarge { display: none !important; } .show-for-xlarge-only { display: none !important; } .show-for-xlarge-up { display: none !important; } .show-for-xxlarge { display: none !important; } .show-for-xxlarge-only { display: none !important; } .show-for-xxlarge-up { display: none !important; } .hidden-for-large { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } table.hide-for-large { display: table !important; } table.hide-for-large-only { display: table !important; } table.hide-for-large-up { display: table !important; } table.hide-for-medium { display: table !important; } table.hide-for-medium-only { display: table !important; } table.hide-for-medium-up { display: table !important; } table.hide-for-xlarge { display: table !important; } table.hide-for-xlarge-only { display: table !important; } table.hide-for-xlarge-up { display: table !important; } table.hide-for-xxlarge { display: table !important; } table.hide-for-xxlarge-only { display: table !important; } table.hide-for-xxlarge-up { display: table !important; } table.show-for-large-down { display: table !important; } table.show-for-medium-down { display: table !important; } table.show-for-small { display: table !important; } table.show-for-small-down { display: table !important; } table.show-for-small-only { display: table !important; } table.show-for-small-up { display: table !important; } table.show-for-xlarge-down { display: table !important; } table.show-for-xxlarge-down { display: table !important; } thead.hide-for-large { display: table-header-group !important; } thead.hide-for-large-only { display: table-header-group !important; } thead.hide-for-large-up { display: table-header-group !important; } thead.hide-for-medium { display: table-header-group !important; } thead.hide-for-medium-only { display: table-header-group !important; } thead.hide-for-medium-up { display: table-header-group !important; } thead.hide-for-xlarge { display: table-header-group !important; } thead.hide-for-xlarge-only { display: table-header-group !important; } thead.hide-for-xlarge-up { display: table-header-group !important; } thead.hide-for-xxlarge { display: table-header-group !important; } thead.hide-for-xxlarge-only { display: table-header-group !important; } thead.hide-for-xxlarge-up { display: table-header-group !important; } thead.show-for-large-down { display: table-header-group !important; } thead.show-for-medium-down { display: table-header-group !important; } thead.show-for-small { display: table-header-group !important; } thead.show-for-small-down { display: table-header-group !important; } thead.show-for-small-only { display: table-header-group !important; } thead.show-for-small-up { display: table-header-group !important; } thead.show-for-xlarge-down { display: table-header-group !important; } thead.show-for-xxlarge-down { display: table-header-group !important; } tbody.hide-for-large { display: table-row-group !important; } tbody.hide-for-large-only { display: table-row-group !important; } tbody.hide-for-large-up { display: table-row-group !important; } tbody.hide-for-medium { display: table-row-group !important; } tbody.hide-for-medium-only { display: table-row-group !important; } tbody.hide-for-medium-up { display: table-row-group !important; } tbody.hide-for-xlarge { display: table-row-group !important; } tbody.hide-for-xlarge-only { display: table-row-group !important; } tbody.hide-for-xlarge-up { display: table-row-group !important; } tbody.hide-for-xxlarge { display: table-row-group !important; } tbody.hide-for-xxlarge-only { display: table-row-group !important; } tbody.hide-for-xxlarge-up { display: table-row-group !important; } tbody.show-for-large-down { display: table-row-group !important; } tbody.show-for-medium-down { display: table-row-group !important; } tbody.show-for-small { display: table-row-group !important; } tbody.show-for-small-down { display: table-row-group !important; } tbody.show-for-small-only { display: table-row-group !important; } tbody.show-for-small-up { display: table-row-group !important; } tbody.show-for-xlarge-down { display: table-row-group !important; } tbody.show-for-xxlarge-down { display: table-row-group !important; } tr.hide-for-large { display: table-row; } tr.hide-for-large-only { display: table-row; } tr.hide-for-large-up { display: table-row; } tr.hide-for-medium { display: table-row; } tr.hide-for-medium-only { display: table-row; } tr.hide-for-medium-up { display: table-row; } tr.hide-for-xlarge { display: table-row; } tr.hide-for-xlarge-only { display: table-row; } tr.hide-for-xlarge-up { display: table-row; } tr.hide-for-xxlarge { display: table-row; } tr.hide-for-xxlarge-only { display: table-row; } tr.hide-for-xxlarge-up { display: table-row; } tr.show-for-large-down { display: table-row; } tr.show-for-medium-down { display: table-row; } tr.show-for-small { display: table-row; } tr.show-for-small-down { display: table-row; } tr.show-for-small-only { display: table-row; } tr.show-for-small-up { display: table-row; } tr.show-for-xlarge-down { display: table-row; } tr.show-for-xxlarge-down { display: table-row; } td.hide-for-large { display: table-cell !important; } td.hide-for-large-only { display: table-cell !important; } td.hide-for-large-up { display: table-cell !important; } td.hide-for-medium { display: table-cell !important; } td.hide-for-medium-only { display: table-cell !important; } td.hide-for-medium-up { display: table-cell !important; } td.hide-for-xlarge { display: table-cell !important; } td.hide-for-xlarge-only { display: table-cell !important; } td.hide-for-xlarge-up { display: table-cell !important; } td.hide-for-xxlarge { display: table-cell !important; } td.hide-for-xxlarge-only { display: table-cell !important; } td.hide-for-xxlarge-up { display: table-cell !important; } td.show-for-large-down { display: table-cell !important; } td.show-for-medium-down { display: table-cell !important; } td.show-for-small { display: table-cell !important; } td.show-for-small-down { display: table-cell !important; } td.show-for-small-only { display: table-cell !important; } td.show-for-small-up { display: table-cell !important; } td.show-for-xlarge-down { display: table-cell !important; } td.show-for-xxlarge-down { display: table-cell !important; } th.hide-for-large { display: table-cell !important; } th.hide-for-large-only { display: table-cell !important; } th.hide-for-large-up { display: table-cell !important; } th.hide-for-medium { display: table-cell !important; } th.hide-for-medium-only { display: table-cell !important; } th.hide-for-medium-up { display: table-cell !important; } th.hide-for-xlarge { display: table-cell !important; } th.hide-for-xlarge-only { display: table-cell !important; } th.hide-for-xlarge-up { display: table-cell !important; } th.hide-for-xxlarge { display: table-cell !important; } th.hide-for-xxlarge-only { display: table-cell !important; } th.hide-for-xxlarge-up { display: table-cell !important; } th.show-for-large-down { display: table-cell !important; } th.show-for-medium-down { display: table-cell !important; } th.show-for-small { display: table-cell !important; } th.show-for-small-down { display: table-cell !important; } th.show-for-small-only { display: table-cell !important; } th.show-for-small-up { display: table-cell !important; } th.show-for-xlarge-down { display: table-cell !important; } th.show-for-xxlarge-down { display: table-cell !important; } } @media only screen and (min-width:48rem), print { .hide-for-large { display: inherit !important; } .hide-for-large-only { display: inherit !important; } .hide-for-large-up { display: inherit !important; } .hide-for-small { display: inherit !important; } .hide-for-small-down { display: inherit !important; } .hide-for-small-only { display: inherit !important; } .hide-for-xlarge { display: inherit !important; } .hide-for-xlarge-only { display: inherit !important; } .hide-for-xlarge-up { display: inherit !important; } .hide-for-xxlarge { display: inherit !important; } .hide-for-xxlarge-only { display: inherit !important; } .hide-for-xxlarge-up { display: inherit !important; } .show-for-large-down { display: inherit !important; } .show-for-medium { display: inherit !important; } .show-for-medium-down { display: inherit !important; } .show-for-medium-only { display: inherit !important; } .show-for-medium-up { display: inherit !important; } .show-for-small-up { display: inherit !important; } .show-for-xlarge-down { display: inherit !important; } .show-for-xxlarge-down { display: inherit !important; } .hide-for-large-down { display: none !important; } .hide-for-medium { display: none !important; } .hide-for-medium-down { display: none !important; } .hide-for-medium-only { display: none !important; } .hide-for-medium-up { display: none !important; } .hide-for-small-up { display: none !important; } .hide-for-xlarge-down { display: none !important; } .hide-for-xxlarge-down { display: none !important; } .show-for-large { display: none !important; } .show-for-large-only { display: none !important; } .show-for-large-up { display: none !important; } .show-for-small { display: none !important; } .show-for-small-down { display: none !important; } .show-for-small-only { display: none !important; } .show-for-xlarge { display: none !important; } .show-for-xlarge-only { display: none !important; } .show-for-xlarge-up { display: none !important; } .show-for-xxlarge { display: none !important; } .show-for-xxlarge-only { display: none !important; } .show-for-xxlarge-up { display: none !important; } .hidden-for-large { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } table.hide-for-large { display: table !important; } table.hide-for-large-only { display: table !important; } table.hide-for-large-up { display: table !important; } table.hide-for-small { display: table !important; } table.hide-for-small-down { display: table !important; } table.hide-for-small-only { display: table !important; } table.hide-for-xlarge { display: table !important; } table.hide-for-xlarge-only { display: table !important; } table.hide-for-xlarge-up { display: table !important; } table.hide-for-xxlarge { display: table !important; } table.hide-for-xxlarge-only { display: table !important; } table.hide-for-xxlarge-up { display: table !important; } table.show-for-large-down { display: table !important; } table.show-for-medium { display: table !important; } table.show-for-medium-down { display: table !important; } table.show-for-medium-only { display: table !important; } table.show-for-medium-up { display: table !important; } table.show-for-small-up { display: table !important; } table.show-for-xlarge-down { display: table !important; } table.show-for-xxlarge-down { display: table !important; } thead.hide-for-large { display: table-header-group !important; } thead.hide-for-large-only { display: table-header-group !important; } thead.hide-for-large-up { display: table-header-group !important; } thead.hide-for-small { display: table-header-group !important; } thead.hide-for-small-down { display: table-header-group !important; } thead.hide-for-small-only { display: table-header-group !important; } thead.hide-for-xlarge { display: table-header-group !important; } thead.hide-for-xlarge-only { display: table-header-group !important; } thead.hide-for-xlarge-up { display: table-header-group !important; } thead.hide-for-xxlarge { display: table-header-group !important; } thead.hide-for-xxlarge-only { display: table-header-group !important; } thead.hide-for-xxlarge-up { display: table-header-group !important; } thead.show-for-large-down { display: table-header-group !important; } thead.show-for-medium { display: table-header-group !important; } thead.show-for-medium-down { display: table-header-group !important; } thead.show-for-medium-only { display: table-header-group !important; } thead.show-for-medium-up { display: table-header-group !important; } thead.show-for-small-up { display: table-header-group !important; } thead.show-for-xlarge-down { display: table-header-group !important; } thead.show-for-xxlarge-down { display: table-header-group !important; } tbody.hide-for-large { display: table-row-group !important; } tbody.hide-for-large-only { display: table-row-group !important; } tbody.hide-for-large-up { display: table-row-group !important; } tbody.hide-for-small { display: table-row-group !important; } tbody.hide-for-small-down { display: table-row-group !important; } tbody.hide-for-small-only { display: table-row-group !important; } tbody.hide-for-xlarge { display: table-row-group !important; } tbody.hide-for-xlarge-only { display: table-row-group !important; } tbody.hide-for-xlarge-up { display: table-row-group !important; } tbody.hide-for-xxlarge { display: table-row-group !important; } tbody.hide-for-xxlarge-only { display: table-row-group !important; } tbody.hide-for-xxlarge-up { display: table-row-group !important; } tbody.show-for-large-down { display: table-row-group !important; } tbody.show-for-medium { display: table-row-group !important; } tbody.show-for-medium-down { display: table-row-group !important; } tbody.show-for-medium-only { display: table-row-group !important; } tbody.show-for-medium-up { display: table-row-group !important; } tbody.show-for-small-up { display: table-row-group !important; } tbody.show-for-xlarge-down { display: table-row-group !important; } tbody.show-for-xxlarge-down { display: table-row-group !important; } tr.hide-for-large { display: table-row; } tr.hide-for-large-only { display: table-row; } tr.hide-for-large-up { display: table-row; } tr.hide-for-small { display: table-row; } tr.hide-for-small-down { display: table-row; } tr.hide-for-small-only { display: table-row; } tr.hide-for-xlarge { display: table-row; } tr.hide-for-xlarge-only { display: table-row; } tr.hide-for-xlarge-up { display: table-row; } tr.hide-for-xxlarge { display: table-row; } tr.hide-for-xxlarge-only { display: table-row; } tr.hide-for-xxlarge-up { display: table-row; } tr.show-for-large-down { display: table-row; } tr.show-for-medium { display: table-row; } tr.show-for-medium-down { display: table-row; } tr.show-for-medium-only { display: table-row; } tr.show-for-medium-up { display: table-row; } tr.show-for-small-up { display: table-row; } tr.show-for-xlarge-down { display: table-row; } tr.show-for-xxlarge-down { display: table-row; } td.hide-for-large { display: table-cell !important; } td.hide-for-large-only { display: table-cell !important; } td.hide-for-large-up { display: table-cell !important; } td.hide-for-small { display: table-cell !important; } td.hide-for-small-down { display: table-cell !important; } td.hide-for-small-only { display: table-cell !important; } td.hide-for-xlarge { display: table-cell !important; } td.hide-for-xlarge-only { display: table-cell !important; } td.hide-for-xlarge-up { display: table-cell !important; } td.hide-for-xxlarge { display: table-cell !important; } td.hide-for-xxlarge-only { display: table-cell !important; } td.hide-for-xxlarge-up { display: table-cell !important; } td.show-for-large-down { display: table-cell !important; } td.show-for-medium { display: table-cell !important; } td.show-for-medium-down { display: table-cell !important; } td.show-for-medium-only { display: table-cell !important; } td.show-for-medium-up { display: table-cell !important; } td.show-for-small-up { display: table-cell !important; } td.show-for-xlarge-down { display: table-cell !important; } td.show-for-xxlarge-down { display: table-cell !important; } th.hide-for-large { display: table-cell !important; } th.hide-for-large-only { display: table-cell !important; } th.hide-for-large-up { display: table-cell !important; } th.hide-for-small { display: table-cell !important; } th.hide-for-small-down { display: table-cell !important; } th.hide-for-small-only { display: table-cell !important; } th.hide-for-xlarge { display: table-cell !important; } th.hide-for-xlarge-only { display: table-cell !important; } th.hide-for-xlarge-up { display: table-cell !important; } th.hide-for-xxlarge { display: table-cell !important; } th.hide-for-xxlarge-only { display: table-cell !important; } th.hide-for-xxlarge-up { display: table-cell !important; } th.show-for-large-down { display: table-cell !important; } th.show-for-medium { display: table-cell !important; } th.show-for-medium-down { display: table-cell !important; } th.show-for-medium-only { display: table-cell !important; } th.show-for-medium-up { display: table-cell !important; } th.show-for-small-up { display: table-cell !important; } th.show-for-xlarge-down { display: table-cell !important; } th.show-for-xxlarge-down { display: table-cell !important; } } @media only screen and (min-width:64.06rem) { .hide-for-medium { display: inherit !important; } .hide-for-medium-down { display: inherit !important; } .hide-for-medium-only { display: inherit !important; } .hide-for-small { display: inherit !important; } .hide-for-small-down { display: inherit !important; } .hide-for-small-only { display: inherit !important; } .hide-for-xlarge { display: inherit !important; } .hide-for-xlarge-only { display: inherit !important; } .hide-for-xlarge-up { display: inherit !important; } .hide-for-xxlarge { display: inherit !important; } .hide-for-xxlarge-only { display: inherit !important; } .hide-for-xxlarge-up { display: inherit !important; } .show-for-large { display: inherit !important; } .show-for-large-down { display: inherit !important; } .show-for-large-only { display: inherit !important; } .show-for-large-up { display: inherit !important; } .show-for-medium-up { display: inherit !important; } .show-for-small-up { display: inherit !important; } .show-for-xlarge-down { display: inherit !important; } .show-for-xxlarge-down { display: inherit !important; } .hide-for-large { display: none !important; } .hide-for-large-down { display: none !important; } .hide-for-large-only { display: none !important; } .hide-for-large-up { display: none !important; } .hide-for-medium-up { display: none !important; } .hide-for-small-up { display: none !important; } .hide-for-xlarge-down { display: none !important; } .hide-for-xxlarge-down { display: none !important; } .show-for-medium { display: none !important; } .show-for-medium-down { display: none !important; } .show-for-medium-only { display: none !important; } .show-for-small { display: none !important; } .show-for-small-down { display: none !important; } .show-for-small-only { display: none !important; } .show-for-xlarge { display: none !important; } .show-for-xlarge-only { display: none !important; } .show-for-xlarge-up { display: none !important; } .show-for-xxlarge { display: none !important; } .show-for-xxlarge-only { display: none !important; } .show-for-xxlarge-up { display: none !important; } .hidden-for-medium { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-large-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-large-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-large-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } table.hide-for-medium { display: table !important; } table.hide-for-medium-down { display: table !important; } table.hide-for-medium-only { display: table !important; } table.hide-for-small { display: table !important; } table.hide-for-small-down { display: table !important; } table.hide-for-small-only { display: table !important; } table.hide-for-xlarge { display: table !important; } table.hide-for-xlarge-only { display: table !important; } table.hide-for-xlarge-up { display: table !important; } table.hide-for-xxlarge { display: table !important; } table.hide-for-xxlarge-only { display: table !important; } table.hide-for-xxlarge-up { display: table !important; } table.show-for-large { display: table !important; } table.show-for-large-down { display: table !important; } table.show-for-large-only { display: table !important; } table.show-for-large-up { display: table !important; } table.show-for-medium-up { display: table !important; } table.show-for-small-up { display: table !important; } table.show-for-xlarge-down { display: table !important; } table.show-for-xxlarge-down { display: table !important; } thead.hide-for-medium { display: table-header-group !important; } thead.hide-for-medium-down { display: table-header-group !important; } thead.hide-for-medium-only { display: table-header-group !important; } thead.hide-for-small { display: table-header-group !important; } thead.hide-for-small-down { display: table-header-group !important; } thead.hide-for-small-only { display: table-header-group !important; } thead.hide-for-xlarge { display: table-header-group !important; } thead.hide-for-xlarge-only { display: table-header-group !important; } thead.hide-for-xlarge-up { display: table-header-group !important; } thead.hide-for-xxlarge { display: table-header-group !important; } thead.hide-for-xxlarge-only { display: table-header-group !important; } thead.hide-for-xxlarge-up { display: table-header-group !important; } thead.show-for-large { display: table-header-group !important; } thead.show-for-large-down { display: table-header-group !important; } thead.show-for-large-only { display: table-header-group !important; } thead.show-for-large-up { display: table-header-group !important; } thead.show-for-medium-up { display: table-header-group !important; } thead.show-for-small-up { display: table-header-group !important; } thead.show-for-xlarge-down { display: table-header-group !important; } thead.show-for-xxlarge-down { display: table-header-group !important; } tbody.hide-for-medium { display: table-row-group !important; } tbody.hide-for-medium-down { display: table-row-group !important; } tbody.hide-for-medium-only { display: table-row-group !important; } tbody.hide-for-small { display: table-row-group !important; } tbody.hide-for-small-down { display: table-row-group !important; } tbody.hide-for-small-only { display: table-row-group !important; } tbody.hide-for-xlarge { display: table-row-group !important; } tbody.hide-for-xlarge-only { display: table-row-group !important; } tbody.hide-for-xlarge-up { display: table-row-group !important; } tbody.hide-for-xxlarge { display: table-row-group !important; } tbody.hide-for-xxlarge-only { display: table-row-group !important; } tbody.hide-for-xxlarge-up { display: table-row-group !important; } tbody.show-for-large { display: table-row-group !important; } tbody.show-for-large-down { display: table-row-group !important; } tbody.show-for-large-only { display: table-row-group !important; } tbody.show-for-large-up { display: table-row-group !important; } tbody.show-for-medium-up { display: table-row-group !important; } tbody.show-for-small-up { display: table-row-group !important; } tbody.show-for-xlarge-down { display: table-row-group !important; } tbody.show-for-xxlarge-down { display: table-row-group !important; } tr.hide-for-medium { display: table-row; } tr.hide-for-medium-down { display: table-row; } tr.hide-for-medium-only { display: table-row; } tr.hide-for-small { display: table-row; } tr.hide-for-small-down { display: table-row; } tr.hide-for-small-only { display: table-row; } tr.hide-for-xlarge { display: table-row; } tr.hide-for-xlarge-only { display: table-row; } tr.hide-for-xlarge-up { display: table-row; } tr.hide-for-xxlarge { display: table-row; } tr.hide-for-xxlarge-only { display: table-row; } tr.hide-for-xxlarge-up { display: table-row; } tr.show-for-large { display: table-row; } tr.show-for-large-down { display: table-row; } tr.show-for-large-only { display: table-row; } tr.show-for-large-up { display: table-row; } tr.show-for-medium-up { display: table-row; } tr.show-for-small-up { display: table-row; } tr.show-for-xlarge-down { display: table-row; } tr.show-for-xxlarge-down { display: table-row; } td.hide-for-medium { display: table-cell !important; } td.hide-for-medium-down { display: table-cell !important; } td.hide-for-medium-only { display: table-cell !important; } td.hide-for-small { display: table-cell !important; } td.hide-for-small-down { display: table-cell !important; } td.hide-for-small-only { display: table-cell !important; } td.hide-for-xlarge { display: table-cell !important; } td.hide-for-xlarge-only { display: table-cell !important; } td.hide-for-xlarge-up { display: table-cell !important; } td.hide-for-xxlarge { display: table-cell !important; } td.hide-for-xxlarge-only { display: table-cell !important; } td.hide-for-xxlarge-up { display: table-cell !important; } td.show-for-large { display: table-cell !important; } td.show-for-large-down { display: table-cell !important; } td.show-for-large-only { display: table-cell !important; } td.show-for-large-up { display: table-cell !important; } td.show-for-medium-up { display: table-cell !important; } td.show-for-small-up { display: table-cell !important; } td.show-for-xlarge-down { display: table-cell !important; } td.show-for-xxlarge-down { display: table-cell !important; } th.hide-for-medium { display: table-cell !important; } th.hide-for-medium-down { display: table-cell !important; } th.hide-for-medium-only { display: table-cell !important; } th.hide-for-small { display: table-cell !important; } th.hide-for-small-down { display: table-cell !important; } th.hide-for-small-only { display: table-cell !important; } th.hide-for-xlarge { display: table-cell !important; } th.hide-for-xlarge-only { display: table-cell !important; } th.hide-for-xlarge-up { display: table-cell !important; } th.hide-for-xxlarge { display: table-cell !important; } th.hide-for-xxlarge-only { display: table-cell !important; } th.hide-for-xxlarge-up { display: table-cell !important; } th.show-for-large { display: table-cell !important; } th.show-for-large-down { display: table-cell !important; } th.show-for-large-only { display: table-cell !important; } th.show-for-large-up { display: table-cell !important; } th.show-for-medium-up { display: table-cell !important; } th.show-for-small-up { display: table-cell !important; } th.show-for-xlarge-down { display: table-cell !important; } th.show-for-xxlarge-down { display: table-cell !important; } } @media only screen and (min-width:84.43rem) { .hide-for-large { display: inherit !important; } .hide-for-large-down { display: inherit !important; } .hide-for-large-only { display: inherit !important; } .hide-for-medium { display: inherit !important; } .hide-for-medium-down { display: inherit !important; } .hide-for-medium-only { display: inherit !important; } .hide-for-small { display: inherit !important; } .hide-for-small-down { display: inherit !important; } .hide-for-small-only { display: inherit !important; } .hide-for-xxlarge { display: inherit !important; } .hide-for-xxlarge-only { display: inherit !important; } .hide-for-xxlarge-up { display: inherit !important; } .show-for-large-up { display: inherit !important; } .show-for-medium-up { display: inherit !important; } .show-for-small-up { display: inherit !important; } .show-for-xlarge { display: inherit !important; } .show-for-xlarge-down { display: inherit !important; } .show-for-xlarge-only { display: inherit !important; } .show-for-xlarge-up { display: inherit !important; } .show-for-xxlarge-down { display: inherit !important; } .hide-for-large-up { display: none !important; } .hide-for-medium-up { display: none !important; } .hide-for-small-up { display: none !important; } .hide-for-xlarge { display: none !important; } .hide-for-xlarge-down { display: none !important; } .hide-for-xlarge-only { display: none !important; } .hide-for-xlarge-up { display: none !important; } .hide-for-xxlarge-down { display: none !important; } .show-for-large { display: none !important; } .show-for-large-down { display: none !important; } .show-for-large-only { display: none !important; } .show-for-medium { display: none !important; } .show-for-medium-down { display: none !important; } .show-for-medium-only { display: none !important; } .show-for-small { display: none !important; } .show-for-small-down { display: none !important; } .show-for-small-only { display: none !important; } .show-for-xxlarge { display: none !important; } .show-for-xxlarge-only { display: none !important; } .show-for-xxlarge-up { display: none !important; } .hidden-for-large { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xxlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xxlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } table.hide-for-large { display: table !important; } table.hide-for-large-down { display: table !important; } table.hide-for-large-only { display: table !important; } table.hide-for-medium { display: table !important; } table.hide-for-medium-down { display: table !important; } table.hide-for-medium-only { display: table !important; } table.hide-for-small { display: table !important; } table.hide-for-small-down { display: table !important; } table.hide-for-small-only { display: table !important; } table.hide-for-xxlarge { display: table !important; } table.hide-for-xxlarge-only { display: table !important; } table.hide-for-xxlarge-up { display: table !important; } table.show-for-large-up { display: table !important; } table.show-for-medium-up { display: table !important; } table.show-for-small-up { display: table !important; } table.show-for-xlarge { display: table !important; } table.show-for-xlarge-down { display: table !important; } table.show-for-xlarge-only { display: table !important; } table.show-for-xlarge-up { display: table !important; } table.show-for-xxlarge-down { display: table !important; } thead.hide-for-large { display: table-header-group !important; } thead.hide-for-large-down { display: table-header-group !important; } thead.hide-for-large-only { display: table-header-group !important; } thead.hide-for-medium { display: table-header-group !important; } thead.hide-for-medium-down { display: table-header-group !important; } thead.hide-for-medium-only { display: table-header-group !important; } thead.hide-for-small { display: table-header-group !important; } thead.hide-for-small-down { display: table-header-group !important; } thead.hide-for-small-only { display: table-header-group !important; } thead.hide-for-xxlarge { display: table-header-group !important; } thead.hide-for-xxlarge-only { display: table-header-group !important; } thead.hide-for-xxlarge-up { display: table-header-group !important; } thead.show-for-large-up { display: table-header-group !important; } thead.show-for-medium-up { display: table-header-group !important; } thead.show-for-small-up { display: table-header-group !important; } thead.show-for-xlarge { display: table-header-group !important; } thead.show-for-xlarge-down { display: table-header-group !important; } thead.show-for-xlarge-only { display: table-header-group !important; } thead.show-for-xlarge-up { display: table-header-group !important; } thead.show-for-xxlarge-down { display: table-header-group !important; } tbody.hide-for-large { display: table-row-group !important; } tbody.hide-for-large-down { display: table-row-group !important; } tbody.hide-for-large-only { display: table-row-group !important; } tbody.hide-for-medium { display: table-row-group !important; } tbody.hide-for-medium-down { display: table-row-group !important; } tbody.hide-for-medium-only { display: table-row-group !important; } tbody.hide-for-small { display: table-row-group !important; } tbody.hide-for-small-down { display: table-row-group !important; } tbody.hide-for-small-only { display: table-row-group !important; } tbody.hide-for-xxlarge { display: table-row-group !important; } tbody.hide-for-xxlarge-only { display: table-row-group !important; } tbody.hide-for-xxlarge-up { display: table-row-group !important; } tbody.show-for-large-up { display: table-row-group !important; } tbody.show-for-medium-up { display: table-row-group !important; } tbody.show-for-small-up { display: table-row-group !important; } tbody.show-for-xlarge { display: table-row-group !important; } tbody.show-for-xlarge-down { display: table-row-group !important; } tbody.show-for-xlarge-only { display: table-row-group !important; } tbody.show-for-xlarge-up { display: table-row-group !important; } tbody.show-for-xxlarge-down { display: table-row-group !important; } tr.hide-for-large { display: table-row; } tr.hide-for-large-down { display: table-row; } tr.hide-for-large-only { display: table-row; } tr.hide-for-medium { display: table-row; } tr.hide-for-medium-down { display: table-row; } tr.hide-for-medium-only { display: table-row; } tr.hide-for-small { display: table-row; } tr.hide-for-small-down { display: table-row; } tr.hide-for-small-only { display: table-row; } tr.hide-for-xxlarge { display: table-row; } tr.hide-for-xxlarge-only { display: table-row; } tr.hide-for-xxlarge-up { display: table-row; } tr.show-for-large-up { display: table-row; } tr.show-for-medium-up { display: table-row; } tr.show-for-small-up { display: table-row; } tr.show-for-xlarge { display: table-row; } tr.show-for-xlarge-down { display: table-row; } tr.show-for-xlarge-only { display: table-row; } tr.show-for-xlarge-up { display: table-row; } tr.show-for-xxlarge-down { display: table-row; } td.hide-for-large { display: table-cell !important; } td.hide-for-large-down { display: table-cell !important; } td.hide-for-large-only { display: table-cell !important; } td.hide-for-medium { display: table-cell !important; } td.hide-for-medium-down { display: table-cell !important; } td.hide-for-medium-only { display: table-cell !important; } td.hide-for-small { display: table-cell !important; } td.hide-for-small-down { display: table-cell !important; } td.hide-for-small-only { display: table-cell !important; } td.hide-for-xxlarge { display: table-cell !important; } td.hide-for-xxlarge-only { display: table-cell !important; } td.hide-for-xxlarge-up { display: table-cell !important; } td.show-for-large-up { display: table-cell !important; } td.show-for-medium-up { display: table-cell !important; } td.show-for-small-up { display: table-cell !important; } td.show-for-xlarge { display: table-cell !important; } td.show-for-xlarge-down { display: table-cell !important; } td.show-for-xlarge-only { display: table-cell !important; } td.show-for-xlarge-up { display: table-cell !important; } td.show-for-xxlarge-down { display: table-cell !important; } th.hide-for-large { display: table-cell !important; } th.hide-for-large-down { display: table-cell !important; } th.hide-for-large-only { display: table-cell !important; } th.hide-for-medium { display: table-cell !important; } th.hide-for-medium-down { display: table-cell !important; } th.hide-for-medium-only { display: table-cell !important; } th.hide-for-small { display: table-cell !important; } th.hide-for-small-down { display: table-cell !important; } th.hide-for-small-only { display: table-cell !important; } th.hide-for-xxlarge { display: table-cell !important; } th.hide-for-xxlarge-only { display: table-cell !important; } th.hide-for-xxlarge-up { display: table-cell !important; } th.show-for-large-up { display: table-cell !important; } th.show-for-medium-up { display: table-cell !important; } th.show-for-small-up { display: table-cell !important; } th.show-for-xlarge { display: table-cell !important; } th.show-for-xlarge-down { display: table-cell !important; } th.show-for-xlarge-only { display: table-cell !important; } th.show-for-xlarge-up { display: table-cell !important; } th.show-for-xxlarge-down { display: table-cell !important; } } @media only screen and (min-width:120rem) { .hide-for-large { display: inherit !important; } .hide-for-large-down { display: inherit !important; } .hide-for-large-only { display: inherit !important; } .hide-for-medium { display: inherit !important; } .hide-for-medium-down { display: inherit !important; } .hide-for-medium-only { display: inherit !important; } .hide-for-small { display: inherit !important; } .hide-for-small-down { display: inherit !important; } .hide-for-small-only { display: inherit !important; } .hide-for-xlarge { display: inherit !important; } .hide-for-xlarge-down { display: inherit !important; } .hide-for-xlarge-only { display: inherit !important; } .show-for-large-up { display: inherit !important; } .show-for-medium-up { display: inherit !important; } .show-for-small-up { display: inherit !important; } .show-for-xlarge-up { display: inherit !important; } .show-for-xxlarge { display: inherit !important; } .show-for-xxlarge-down { display: inherit !important; } .show-for-xxlarge-only { display: inherit !important; } .show-for-xxlarge-up { display: inherit !important; } .hide-for-large-up { display: none !important; } .hide-for-medium-up { display: none !important; } .hide-for-small-up { display: none !important; } .hide-for-xlarge-up { display: none !important; } .hide-for-xxlarge { display: none !important; } .hide-for-xxlarge-down { display: none !important; } .hide-for-xxlarge-only { display: none !important; } .hide-for-xxlarge-up { display: none !important; } .show-for-large { display: none !important; } .show-for-large-down { display: none !important; } .show-for-large-only { display: none !important; } .show-for-medium { display: none !important; } .show-for-medium-down { display: none !important; } .show-for-medium-only { display: none !important; } .show-for-small { display: none !important; } .show-for-small-down { display: none !important; } .show-for-small-only { display: none !important; } .show-for-xlarge { display: none !important; } .show-for-xlarge-down { display: none !important; } .show-for-xlarge-only { display: none !important; } .hidden-for-large { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-medium-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-small-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-xlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-large-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-medium-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-small-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-down { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-only { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .visible-for-xxlarge-up { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .hidden-for-large-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-medium-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-small-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .hidden-for-xxlarge-up { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-large-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-medium-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-small-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-down { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .visible-for-xlarge-only { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } table.hide-for-large { display: table !important; } table.hide-for-large-down { display: table !important; } table.hide-for-large-only { display: table !important; } table.hide-for-medium { display: table !important; } table.hide-for-medium-down { display: table !important; } table.hide-for-medium-only { display: table !important; } table.hide-for-small { display: table !important; } table.hide-for-small-down { display: table !important; } table.hide-for-small-only { display: table !important; } table.hide-for-xlarge { display: table !important; } table.hide-for-xlarge-down { display: table !important; } table.hide-for-xlarge-only { display: table !important; } table.show-for-large-up { display: table !important; } table.show-for-medium-up { display: table !important; } table.show-for-small-up { display: table !important; } table.show-for-xlarge-up { display: table !important; } table.show-for-xxlarge { display: table !important; } table.show-for-xxlarge-down { display: table !important; } table.show-for-xxlarge-only { display: table !important; } table.show-for-xxlarge-up { display: table !important; } thead.hide-for-large { display: table-header-group !important; } thead.hide-for-large-down { display: table-header-group !important; } thead.hide-for-large-only { display: table-header-group !important; } thead.hide-for-medium { display: table-header-group !important; } thead.hide-for-medium-down { display: table-header-group !important; } thead.hide-for-medium-only { display: table-header-group !important; } thead.hide-for-small { display: table-header-group !important; } thead.hide-for-small-down { display: table-header-group !important; } thead.hide-for-small-only { display: table-header-group !important; } thead.hide-for-xlarge { display: table-header-group !important; } thead.hide-for-xlarge-down { display: table-header-group !important; } thead.hide-for-xlarge-only { display: table-header-group !important; } thead.show-for-large-up { display: table-header-group !important; } thead.show-for-medium-up { display: table-header-group !important; } thead.show-for-small-up { display: table-header-group !important; } thead.show-for-xlarge-up { display: table-header-group !important; } thead.show-for-xxlarge { display: table-header-group !important; } thead.show-for-xxlarge-down { display: table-header-group !important; } thead.show-for-xxlarge-only { display: table-header-group !important; } thead.show-for-xxlarge-up { display: table-header-group !important; } tbody.hide-for-large { display: table-row-group !important; } tbody.hide-for-large-down { display: table-row-group !important; } tbody.hide-for-large-only { display: table-row-group !important; } tbody.hide-for-medium { display: table-row-group !important; } tbody.hide-for-medium-down { display: table-row-group !important; } tbody.hide-for-medium-only { display: table-row-group !important; } tbody.hide-for-small { display: table-row-group !important; } tbody.hide-for-small-down { display: table-row-group !important; } tbody.hide-for-small-only { display: table-row-group !important; } tbody.hide-for-xlarge { display: table-row-group !important; } tbody.hide-for-xlarge-down { display: table-row-group !important; } tbody.hide-for-xlarge-only { display: table-row-group !important; } tbody.show-for-large-up { display: table-row-group !important; } tbody.show-for-medium-up { display: table-row-group !important; } tbody.show-for-small-up { display: table-row-group !important; } tbody.show-for-xlarge-up { display: table-row-group !important; } tbody.show-for-xxlarge { display: table-row-group !important; } tbody.show-for-xxlarge-down { display: table-row-group !important; } tbody.show-for-xxlarge-only { display: table-row-group !important; } tbody.show-for-xxlarge-up { display: table-row-group !important; } tr.hide-for-large { display: table-row; } tr.hide-for-large-down { display: table-row; } tr.hide-for-large-only { display: table-row; } tr.hide-for-medium { display: table-row; } tr.hide-for-medium-down { display: table-row; } tr.hide-for-medium-only { display: table-row; } tr.hide-for-small { display: table-row; } tr.hide-for-small-down { display: table-row; } tr.hide-for-small-only { display: table-row; } tr.hide-for-xlarge { display: table-row; } tr.hide-for-xlarge-down { display: table-row; } tr.hide-for-xlarge-only { display: table-row; } tr.show-for-large-up { display: table-row; } tr.show-for-medium-up { display: table-row; } tr.show-for-small-up { display: table-row; } tr.show-for-xlarge-up { display: table-row; } tr.show-for-xxlarge { display: table-row; } tr.show-for-xxlarge-down { display: table-row; } tr.show-for-xxlarge-only { display: table-row; } tr.show-for-xxlarge-up { display: table-row; } td.hide-for-large { display: table-cell !important; } td.hide-for-large-down { display: table-cell !important; } td.hide-for-large-only { display: table-cell !important; } td.hide-for-medium { display: table-cell !important; } td.hide-for-medium-down { display: table-cell !important; } td.hide-for-medium-only { display: table-cell !important; } td.hide-for-small { display: table-cell !important; } td.hide-for-small-down { display: table-cell !important; } td.hide-for-small-only { display: table-cell !important; } td.hide-for-xlarge { display: table-cell !important; } td.hide-for-xlarge-down { display: table-cell !important; } td.hide-for-xlarge-only { display: table-cell !important; } td.show-for-large-up { display: table-cell !important; } td.show-for-medium-up { display: table-cell !important; } td.show-for-small-up { display: table-cell !important; } td.show-for-xlarge-up { display: table-cell !important; } td.show-for-xxlarge { display: table-cell !important; } td.show-for-xxlarge-down { display: table-cell !important; } td.show-for-xxlarge-only { display: table-cell !important; } td.show-for-xxlarge-up { display: table-cell !important; } th.hide-for-large { display: table-cell !important; } th.hide-for-large-down { display: table-cell !important; } th.hide-for-large-only { display: table-cell !important; } th.hide-for-medium { display: table-cell !important; } th.hide-for-medium-down { display: table-cell !important; } th.hide-for-medium-only { display: table-cell !important; } th.hide-for-small { display: table-cell !important; } th.hide-for-small-down { display: table-cell !important; } th.hide-for-small-only { display: table-cell !important; } th.hide-for-xlarge { display: table-cell !important; } th.hide-for-xlarge-down { display: table-cell !important; } th.hide-for-xlarge-only { display: table-cell !important; } th.show-for-large-up { display: table-cell !important; } th.show-for-medium-up { display: table-cell !important; } th.show-for-small-up { display: table-cell !important; } th.show-for-xlarge-up { display: table-cell !important; } th.show-for-xxlarge { display: table-cell !important; } th.show-for-xxlarge-down { display: table-cell !important; } th.show-for-xxlarge-only { display: table-cell !important; } th.show-for-xxlarge-up { display: table-cell !important; } } .hide-for-portrait { display: inherit !important; } .show-for-landscape { display: inherit !important; } .hide-for-landscape { display: none !important; } .show-for-portrait { display: none !important; } table.hide-for-landscape { display: table !important; } table.show-for-portrait { display: table !important; } thead.hide-for-landscape { display: table-header-group !important; } thead.show-for-portrait { display: table-header-group !important; } tbody.hide-for-landscape { display: table-row-group !important; } tbody.show-for-portrait { display: table-row-group !important; } tr.hide-for-landscape { display: table-row !important; } tr.show-for-portrait { display: table-row !important; } td.hide-for-landscape { display: table-cell !important; } td.show-for-portrait { display: table-cell !important; } th.hide-for-landscape { display: table-cell !important; } th.show-for-portrait { display: table-cell !important; } @media only screen and (orientation:landscape) { .hide-for-portrait { display: inherit !important; } .show-for-landscape { display: inherit !important; } .hide-for-landscape { display: none !important; } .show-for-portrait { display: none !important; } table.hide-for-portrait { display: table !important; } table.show-for-landscape { display: table !important; } thead.hide-for-portrait { display: table-header-group !important; } thead.show-for-landscape { display: table-header-group !important; } tbody.hide-for-portrait { display: table-row-group !important; } tbody.show-for-landscape { display: table-row-group !important; } tr.hide-for-portrait { display: table-row !important; } tr.show-for-landscape { display: table-row !important; } td.hide-for-portrait { display: table-cell !important; } td.show-for-landscape { display: table-cell !important; } th.hide-for-portrait { display: table-cell !important; } th.show-for-landscape { display: table-cell !important; } } @media only screen and (orientation:portrait) { .hide-for-landscape { display: inherit !important; } .show-for-portrait { display: inherit !important; } .hide-for-portrait { display: none !important; } .show-for-landscape { display: none !important; } table.hide-for-landscape { display: table !important; } table.show-for-portrait { display: table !important; } thead.hide-for-landscape { display: table-header-group !important; } thead.show-for-portrait { display: table-header-group !important; } tbody.hide-for-landscape { display: table-row-group !important; } tbody.show-for-portrait { display: table-row-group !important; } tr.hide-for-landscape { display: table-row !important; } tr.show-for-portrait { display: table-row !important; } td.hide-for-landscape { display: table-cell !important; } td.show-for-portrait { display: table-cell !important; } th.hide-for-landscape { display: table-cell !important; } th.show-for-portrait { display: table-cell !important; } } .show-for-touch { display: none !important; } .hide-for-touch { display: inherit !important; } .touch .show-for-touch { display: inherit !important; } .touch .hide-for-touch { display: none !important; } table.hide-for-touch { display: table !important; } .touch table.show-for-touch { display: table !important; } thead.hide-for-touch { display: table-header-group !important; } .touch thead.show-for-touch { display: table-header-group !important; } tbody.hide-for-touch { display: table-row-group !important; } .touch tbody.show-for-touch { display: table-row-group !important; } tr.hide-for-touch { display: table-row !important; } .touch tr.show-for-touch { display: table-row !important; } td.hide-for-touch { display: table-cell !important; } .touch td.show-for-touch { display: table-cell !important; } th.hide-for-touch { display: table-cell !important; } .touch th.show-for-touch { display: table-cell !important; } .show-for-sr { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .show-on-focus { width: 1px; height: 1px; overflow: hidden; position: absolute !important; clip: rect(1px, 1px, 1px, 1px); } .show-on-focus:active { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .show-on-focus:focus { width: auto; height: auto; overflow: visible; position: static !important; clip: auto; } .print-only { display: none !important; } @media print { * { background: 0px 0px !important; color: rgb(0, 0, 0) !important; box-shadow: none !important; text-shadow: none !important; } .show-for-print { display: block; } .hide-for-print { display: none; } table.show-for-print { display: table !important; } thead.show-for-print { display: table-header-group !important; } tbody.show-for-print { display: table-row-group !important; } tr.show-for-print { display: table-row !important; } td.show-for-print { display: table-cell !important; } th.show-for-print { display: table-cell !important; } a { text-decoration: underline; } a:visited { text-decoration: underline; } a[href]::after { content: " (" attr(href) ")"; } abbr[title]::after { content: " (" attr(title) ")"; } .ir a::after { content: ""; } a[href^='#']::after { content: ""; } a[href^='javascript:']::after { content: ""; } blockquote { border: 1px solid rgb(153, 153, 153); border-image: none; page-break-inside: avoid; } pre { border: 1px solid rgb(153, 153, 153); border-image: none; page-break-inside: avoid; } thead { display: table-header-group; } img { page-break-inside: avoid; } tr { page-break-inside: avoid; } img { max-width: 100% !important; } h2 { orphans: 3; widows: 3; } h3 { orphans: 3; widows: 3; } p { orphans: 3; widows: 3; } h2 { page-break-after: avoid; } h3 { page-break-after: avoid; } .hide-on-print { display: none !important; } .print-only { display: block !important; } .hide-for-print { display: none !important; } .show-for-print { display: inherit !important; } } @media print { .show-for-print { display: block; } .hide-for-print { display: none; } table.show-for-print { display: table !important; } thead.show-for-print { display: table-header-group !important; } tbody.show-for-print { display: table-row-group !important; } tr.show-for-print { display: table-row !important; } td.show-for-print { display: table-cell !important; } th.show-for-print { display: table-cell !important; } } @media not print { .show-for-print { display: none !important; } } .slick-slider { margin-bottom: 30px; display: block; position: relative; box-sizing: border-box; -ms-user-select: none; -ms-touch-action: none; touch-action: none; -webkit-user-select: none; -moz-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; } .slick-list { margin: 0px; padding: 0px; overflow: hidden; display: block; position: relative; } .slick-list:focus { outline: 0px; } .slick-loading .slick-list { background: url("/resources/css/images/ajax-loader.gif") no-repeat center rgb(255, 255, 255); } .dragging.slick-list { } .slick-slide { transform: translate3d(0px, 0px, 0px); -webkit-transform: translate3d(0, 0, 0); } .slick-slide img { transform: translate3d(0px, 0px, 0px); -webkit-transform: translate3d(0, 0, 0); } .slick-slider .slick-list { transform: translate3d(0px, 0px, 0px); -webkit-transform: translate3d(0, 0, 0); } .slick-track { transform: translate3d(0px, 0px, 0px); -webkit-transform: translate3d(0, 0, 0); } .slick-track { left: 0px; top: 0px; display: block; position: relative; -ms-zoom: 1; } .slick-track::after { display: table; content: ""; } .slick-track::before { display: table; content: ""; } .slick-track::after { clear: both; } .slick-loading .slick-track { visibility: hidden; } .slick-slide { height: 100%; float: left; display: none; min-height: 1px; } .slick-slide img { display: block; } .slick-loading.slick-slide img { display: none; } .dragging.slick-slide img { pointer-events: none; } .slick-initialized .slick-slide { display: block; } .slick-loading .slick-slide { visibility: hidden; } .slick-vertical .slick-slide { border: 1px solid transparent; border-image: none; height: auto; display: block; } .slick-next { background: 0px 0px; padding: 0px; outline: 0px; border: 0px currentColor; border-image: none; top: 50%; width: 20px; height: 20px; color: transparent; line-height: 0; font-size: 0px; margin-top: -10px; display: block; position: absolute; cursor: pointer; } .slick-prev { background: 0px 0px; padding: 0px; outline: 0px; border: 0px currentColor; border-image: none; top: 50%; width: 20px; height: 20px; color: transparent; line-height: 0; font-size: 0px; margin-top: -10px; display: block; position: absolute; cursor: pointer; } .store-carousel .slick-next { top: 30%; } .store-carousel .slick-prev { top: 30%; } .slick-next:focus { background: 0px 0px; outline: 0px; color: transparent; } .slick-next:hover { background: 0px 0px; outline: 0px; color: transparent; } .slick-prev:focus { background: 0px 0px; outline: 0px; color: transparent; } .slick-prev:hover { background: 0px 0px; outline: 0px; color: transparent; } .slick-next:focus::before { opacity: 1; } .slick-next:hover::before { opacity: 1; } .slick-prev:focus::before { opacity: 1; } .slick-prev:hover::before { opacity: 1; } .slick-disabled.slick-next::before { opacity: 0.25; } .slick-disabled.slick-prev::before { opacity: 0.25; } .slick-next::before { color: rgb(200, 37, 2); line-height: 1; font-family: National; font-size: 72px; opacity: 0.75; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .slick-prev::before { color: rgb(200, 37, 2); line-height: 1; font-family: National; font-size: 72px; opacity: 0.75; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .slick-prev { left: -25px; } .slick-prev::before { content: "<"; } .slick-next { right: -25px; } .slick-next::before { content: ">"; } .slick-dots { list-style: none; padding: 0px; width: 100%; text-align: center; bottom: -45px; display: block; position: absolute; } .slick-dots li { margin: 0px 5px; padding: 0px; width: 20px; height: 20px; display: inline-block; position: relative; cursor: pointer; } .slick-dots li button { background: 0px 0px; padding: 5px; outline: 0px; border: 0px currentColor; border-image: none; width: 20px; height: 20px; color: transparent; line-height: 0; font-size: 0px; display: block; cursor: pointer; } .slick-dots li button:focus { outline: 0px; } .slick-dots li button:hover { outline: 0px; } .slick-dots li button:focus::before { opacity: 1; } .slick-dots li button:hover::before { opacity: 1; } .slick-dots li button::before { left: 0px; top: 0px; width: 20px; height: 20px; text-align: center; color: rgb(0, 0, 0); line-height: 20px; font-family: National; font-size: 4.5rem; position: absolute; content: "•"; opacity: 0.25; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .slick-dots li.slick-active button::before { color: rgb(200, 37, 2); opacity: 0.75; } .icon { line-height: 1; font-family: HBRIcons; font-style: normal; font-weight: 400; display: inline-block; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-lg { line-height: 0.75em; font-size: 1.33em; vertical-align: -15%; } .icon-2x { font-size: 2em; } .icon-3x { font-size: 3em; } .icon-4x { font-size: 4em; } .icon-5x { font-size: 5em; } .icon-fw { width: 1.28em; text-align: center; } .icon-ul { padding-left: 0px; margin-left: 2.14em; list-style-type: none; } .icon-ul > li { position: relative; } .icon-li { left: -2.14em; top: 0.14em; width: 2.14em; text-align: center; position: absolute; } .icon-lg.icon-li { left: -1.85em; } .icon-border { padding: 0.2em 0.25em 0.15em; border-radius: 0.1em; border: 0.08em solid rgb(238, 238, 238); border-image: none; } .pull-right { float: right; } .pull-left { float: left; } .pull-left.icon { margin-right: 0.3em; } .pull-right.icon { margin-left: 0.3em; } .icon-spin { animation:spin 2s linear infinite; -webkit-animation: spin 2s infinite linear; } .icon-rotate-90 { transform: rotate(90deg); -webkit-transform: rotate(90deg); } .icon-rotate-180 { transform: rotate(180deg); -webkit-transform: rotate(180deg); } .icon-rotate-270 { transform: rotate(270deg); -webkit-transform: rotate(270deg); } .icon-flip-horizontal { transform: scale(-1, 1); -webkit-transform: scale(-1, 1); } .icon-flip-vertical { transform: scale(1, -1); -webkit-transform: scale(1, -1); } .icon-stack { width: 2em; height: 2em; line-height: 2em; vertical-align: middle; display: inline-block; position: relative; } .icon-stack-1x { left: 0px; width: 100%; text-align: center; position: absolute; } .icon-stack-2x { left: 0px; width: 100%; text-align: center; position: absolute; } .icon-stack-1x { line-height: inherit; } .icon-stack-2x { font-size: 2em; } .icon-inverse { color: rgb(255, 255, 255); } .icon-file-text-o::before { content: "\e010"; } .icon-video-camera::before { content: "\e025"; } .icon-check::before { content: "\e028"; } .icon-arrows-alt::before { content: "\e034"; } .icon-expand::before { content: "\e034"; } .icon-share-square-o::before { content: "\e015"; } .icon-share::before { content: "\e015"; } .icon-comment-o::before { content: "\e017"; } .icon-comment::before { content: "\e017"; } .icon-text-height::before { content: "\e019"; } .icon-print::before { content: "\e018"; } .icon-refresh::before { content: "\e014"; } .icon-circle-o::before { content: "\e026"; } .icon-plus::before { content: "\e029"; } .icon-circle::before { content: "\e027"; } .icon-question-circle::before { content: "\e030"; } .icon-user::before { content: "\e067"; } .icon-user-check::before { content: "\e068"; } .icon-shopping-cart::before { content: "\e065"; } .icon-search::before { content: "\e007"; } .icon-bars::before { content: "\e001"; } .icon-facebook-square::before { content: "\e021"; } .icon-facebook::before { content: "\e021"; } .icon-twitter-square::before { content: "\e020"; } .icon-twitter::before { content: "\e020"; } .icon-linkedin-square::before { content: "\e022"; } .icon-linkedin::before { content: "\e022"; } .icon-google-plus-square::before { content: "\e033"; } .icon-google-plus::before { content: "\e033"; } .icon-times::before { content: "\e012"; } .icon-exclamation::before { content: "\e032"; } .icon-save::before { content: "\e010"; } .icon-create-new-list::before { content: "\e029"; } .icon-plus-square-o::before { content: "\e029"; } .icon-shield::before { content: "\e023"; } .icon-executive-summary::before { content: "\e024"; } .icon-full-article::before { content: "\e035"; } .icon-download-pdf::before { content: "\e036"; } .icon-load-more::before { content: "\e037"; } .icon-follow-this::before { content: "\e003"; } .icon-unfollow-this::before { content: "\e013"; } .icon-unfollow-this-full::before { content: "\e081"; } .icon-play::before { content: "\e046"; } .icon-video-play::before { content: "\e046"; } .icon-daily-stat::before { content: "\e038"; } .icon-daily-idea::before { content: "\e043"; } .icon-management-tip::before { content: "\e042"; } .icon-daily-alert::before { content: "\e047"; } .icon-weekly-hotlist::before { content: "\e059"; } .icon-thumbs-up::before { content: "\e005"; } .icon-thumbs-down::before { content: "\e044"; } .icon-mail::before { content: "\e040"; } .icon-alert::before { content: "\e039"; } .icon-settings::before { content: "\e009"; } .icon-angle-down { content: "\e049"; } .icon-caret-down::before { content: "\e049"; } .icon-chevron-down { content: "\e049"; } .icon-angle-up { content: "\e050"; } .icon-caret-up::before { content: "\e050"; } .icon-chevron-up { content: "\e050"; } .icon-angle-left { content: "\e048"; } .icon-caret-left::before { content: "\e048"; } .icon-chevron-left { content: "\e048"; } .icon-angle-right { content: "\e002"; } .icon-caret-right::before { content: "\e002"; } .icon-chevron-right { content: "\e002"; } .icon-organize::before { content: "\e041"; } .icon-shield-reverse::before { content: "\e051"; } .icon-ellipsis { content: "\e052"; } .icon-view-more::before { content: "\e052"; } .icon-loading::before { content: "\e053"; } .icon-spinner::before { content: "\e053"; } .icon-zoom::before { content: "\e054"; } .icon-minus::before { content: "\e055"; } .icon-question-mark::before { content: "\e056"; } .icon-reload::before { content: "\e057"; } .icon-information::before { content: "\e058"; } .icon-circle-x::before { content: "\e060"; } .icon-business-bookshelf::before { content: "\e061"; } .icon-pencil::before { content: "\e069"; } .icon-buy-copies::before { content: "\e070"; } .icon-user-info::before { content: "\e071"; } .icon-EPB::before { content: "\e072"; } .icon-epub::before { content: "\e072"; } .icon-PDF::before { content: "\e073"; } .icon-pdf::before { content: "\e073"; } .icon-MBI::before { content: "\e074"; } .icon-mobi::before { content: "\e074"; } .icon-save-folder-saved::before { content: "\e075"; } .icon-AVO::before { content: "\e077"; } .icon-video::before { content: "\e077"; } .icon-ZIP::before { content: "\e078"; } .icon-zip::before { content: "\e078"; } .icon-TOOLKIT::before { content: "\e079"; } .icon-toolkit::before { content: "\e079"; } .icon-newsreader::before { content: "\e083"; } .icon-gift::before { content: "\e084"; } add-to-cart { display: block; } add-to-cart-confirmation { display: block; } article-comments { display: block; } article-comments-legend { display: block; } article-comments-list { display: block; } article-comments-post { display: block; } article-content { display: block; } article-overlay-sidebar { display: block; } article-paywall { display: block; } article-promo { display: block; } article-sidebar { display: block; } article-toolbar { display: block; } cart-billing { display: block; } cart-estimate { display: block; } cart-item { display: block; } cart-payment { display: block; } cart-promo { display: block; } cart-shipping { display: block; } cart-total { display: block; } countinue-reading { display: block; } follow-subscribe { display: block; } footer-menu { display: block; } global-nav { display: block; } issue-carousel { display: block; } persistent-banner { display: block; } personalization-placement { display: block; } popular-topic { display: block; } popup-slider { display: block; } product-menu { display: block; } progress-meter { display: block; } search-stream { display: block; } shopping-cart { display: block; } sign-in { display: block; } slider-promo { display: block; } store-carousel { display: block; } stream-content { display: block; } stream-item { display: block; } stream-list { display: block; } stream-section { display: block; } tab-bar { display: block; } topic-circulator { display: block; } figure { margin: 0px; } .child-links--black a { color: rgb(34, 34, 34); } .link--black { color: rgb(34, 34, 34); } h1 > a { color: rgb(34, 34, 34); } h2 > a { color: rgb(34, 34, 34); } h3 > a { color: rgb(34, 34, 34); } h4 > a { color: rgb(34, 34, 34); } h5 > a { color: rgb(34, 34, 34); } h6 > a { color: rgb(34, 34, 34); } .child-links--black a:focus { color: rgb(1, 1, 1); } .child-links--black a:hover { color: rgb(1, 1, 1); } .link--black:focus { color: rgb(1, 1, 1); } .link--black:hover { color: rgb(1, 1, 1); } h1 > a:focus { color: rgb(1, 1, 1); } h1 > a:hover { color: rgb(1, 1, 1); } h2 > a:focus { color: rgb(1, 1, 1); } h2 > a:hover { color: rgb(1, 1, 1); } h3 > a:focus { color: rgb(1, 1, 1); } h3 > a:hover { color: rgb(1, 1, 1); } h4 > a:focus { color: rgb(1, 1, 1); } h4 > a:hover { color: rgb(1, 1, 1); } h5 > a:focus { color: rgb(1, 1, 1); } h5 > a:hover { color: rgb(1, 1, 1); } h6 > a:focus { color: rgb(1, 1, 1); } h6 > a:hover { color: rgb(1, 1, 1); } .link--white { color: rgb(255, 255, 255); } .link--white:focus { color: rgb(239, 240, 240); } .link--white:hover { color: rgb(239, 240, 240); } @media only screen and (min-width:48rem), print { .link--white-medium-up { color: rgb(255, 255, 255); } .link--white-medium-up:focus { color: rgb(239, 240, 240); } .link--white-medium-up:hover { color: rgb(239, 240, 240); } } @media only screen and (max-width:47.93rem) { .link--black-small { color: rgb(34, 34, 34); } .link--black-small:focus { color: rgb(1, 1, 1); } .link--black-small:hover { color: rgb(1, 1, 1); } } .link--aqua { color: rgb(35, 156, 170); } .link--aqua:focus { color: rgb(31, 137, 149); } .link--aqua:hover { color: rgb(31, 137, 149); } hr { margin-top: 1.5rem; margin-bottom: 1.5rem; } svg { pointer-events: none; } .initial-hide { display: none; } .is-hidden { display: none; } .inline-list > li > .is-hidden { display: none; } input[type=date].is-hidden { display: none; } input[type=datetime-local].is-hidden { display: none; } input[type=datetime].is-hidden { display: none; } input[type=email].is-hidden { display: none; } input[type=month].is-hidden { display: none; } input[type=number].is-hidden { display: none; } input[type=password].is-hidden { display: none; } input[type=search].is-hidden { display: none; } input[type=tel].is-hidden { display: none; } input[type=text].is-hidden { display: none; } input[type=time].is-hidden { display: none; } input[type=url].is-hidden { display: none; } input[type=week].is-hidden { display: none; } textarea.is-hidden { display: none; } .do-not-show { display: none !important; } .is-block { display: block !important; } .is-inline { display: inline !important; } .is-inline-block { display: inline-block !important; } .is-opaque { opacity: 1; } .is-transparent { opacity: 0.5; } .is-very-transparent { opacity: 0.3; } .faded { opacity: 0; } .is-invisible { opacity: 0; } .fadable { transition:opacity 0.5s; } .faded { transition:opacity 0.5s; } .overflow-auto { overflow: auto; } .overflow-hidden { overflow: hidden; } .grayed-out { opacity: 0.7; -webkit-filter: grayscale(1); } .blurred { -webkit-filter: blur(5px); } .has-white-bg { background: rgb(255, 255, 255) !important; } .has-transparent-bg { background: rgba(255, 255, 255, 0.85) !important; } .has-no-bg { background: 0px 0px !important; } .has-borders { border: 1px solid rgb(213, 215, 216); border-image: none; } .has-border-top { border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .has-border-top-light { border-top-color: rgb(117, 126, 133); border-top-width: 1px; border-top-style: solid; } .has-border-bottom { border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } @media only screen and (max-width:47.93rem) { .has-border-bottom-for-small { border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } } @media only screen and (max-width:47.93rem) { .has-border-bottom-dark-for-small { border-bottom-color: rgb(34, 34, 34); border-bottom-width: 1px; border-bottom-style: solid; } } @media only screen and (max-width:47.93rem) { .has-border-top-dark-for-small { border-top-color: rgb(34, 34, 34); border-top-width: 1px; border-top-style: solid; } } .has-border-bottom-light { border-bottom-color: rgb(117, 126, 133); border-bottom-width: 1px; border-bottom-style: solid; } .has-border-left { border-left-color: rgb(213, 215, 216); border-left-width: 1px; border-left-style: solid; } @media only screen and (min-width:48rem), print { .has-border-left-for-medium-up { border-left-color: rgb(213, 215, 216); border-left-width: 1px; border-left-style: solid; } } @media only screen and (min-width:48rem), print { .has-border-right-for-medium-up { border-right-color: rgb(213, 215, 216); border-right-width: 1px; border-right-style: solid; } } .has-border-right { border-right-color: rgb(213, 215, 216); border-right-width: 1px; border-right-style: solid; } @media only screen and (max-width:47.93rem) { .has-border-right-for-small { border-right-color: rgb(213, 215, 216); border-right-width: 1px; border-right-style: solid; } } .has-no-border { border-width: 0px !important; } ul.has-horizontal-dividers > li { padding: 0.75rem 0px; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } ul.has-horizontal-dividers > li:first-child { border-top-color: currentColor; border-top-width: 0px; border-top-style: none; } ul.has-vertical-dividers > li { border-left-color: rgb(213, 215, 216); border-left-width: 1px; border-left-style: solid; } ul.has-vertical-dividers > li:first-child { border-left-color: currentColor; border-left-width: 0px; border-left-style: none; } .svg-ie { fill: none; stroke: currentColor; stroke-width: 2; } .svg-stroke-3 { stroke-width: 3; } .svg-fill-current { fill: currentColor; } .margin-top-normal { margin-top: 1rem; } .margin-bottom-normal { margin-bottom: 1rem; } @media only screen and (max-width:47.93rem) { .has-padding-left-for-small { padding-left: 10px !important; } } .accent { color: rgb(200, 37, 2) !important; } .cta { color: rgb(200, 37, 2) !important; } .primary-color { color: rgb(200, 37, 2) !important; } .accent a { color: rgb(200, 37, 2); } .cta a { color: rgb(200, 37, 2); } .primary-color a { color: rgb(200, 37, 2); } .accent a:hover { color: rgb(150, 28, 1); } .cta a:hover { color: rgb(150, 28, 1); } .primary-color a:hover { color: rgb(150, 28, 1); } .inverted.accent { background: rgb(200, 37, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.cta { background: rgb(200, 37, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.primary-color { background: rgb(200, 37, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.accent a { color: rgb(255, 255, 255); } .inverted.accent a:hover { color: rgb(255, 255, 255); } .inverted.cta a { color: rgb(255, 255, 255); } .inverted.cta a:hover { color: rgb(255, 255, 255); } .inverted.primary-color a { color: rgb(255, 255, 255); } .inverted.primary-color a:hover { color: rgb(255, 255, 255); } .border.accent { border-color: rgb(200, 37, 2); } .border.cta { border-color: rgb(200, 37, 2); } .border.primary-color { border-color: rgb(200, 37, 2); } .secondary-color { color: rgb(171, 175, 176) !important; } .secondary-color a { color: rgb(171, 175, 176); } .secondary-color a:hover { color: rgb(145, 150, 151); } .inverted.secondary-color { background: rgb(171, 175, 176) !important; color: rgb(34, 34, 34) !important; } .inverted.secondary-color a { color: rgb(34, 34, 34); } .inverted.secondary-color a:hover { color: rgb(34, 34, 34); } .border.secondary-color { border-color: rgb(171, 175, 176); } .tertiary-color { color: rgb(218, 37, 2) !important; } .tertiary-color a { color: rgb(218, 37, 2); } .tertiary-color a:hover { color: rgb(167, 28, 2); } .inverted.tertiary-color { background: rgb(218, 37, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.tertiary-color a { color: rgb(255, 255, 255); } .inverted.tertiary-color a:hover { color: rgb(255, 255, 255); } .border.tertiary-color { border-color: rgb(218, 37, 2); } .quaternary-color { color: rgb(57, 61, 65) !important; } .quaternary-color a { color: rgb(57, 61, 65); } .quaternary-color a:hover { color: rgb(33, 36, 38); } .inverted.quaternary-color { background: rgb(57, 61, 65) !important; color: rgb(255, 255, 255) !important; } .inverted.quaternary-color a { color: rgb(255, 255, 255); } .inverted.quaternary-color a:hover { color: rgb(255, 255, 255); } .border.quaternary-color { border-color: rgb(57, 61, 65); } .alert-color { color: rgb(254, 85, 2) !important; } .alert-color a { color: rgb(254, 85, 2); } .alert-color a:hover { color: rgb(204, 68, 1); } .inverted.alert-color { background: rgb(254, 85, 2) !important; color: rgb(34, 34, 34) !important; } .inverted.alert-color a { color: rgb(34, 34, 34); } .inverted.alert-color a:hover { color: rgb(34, 34, 34); } .border.alert-color { border-color: rgb(254, 85, 2); } .success-color { color: rgb(46, 140, 26) !important; } .success-color a { color: rgb(46, 140, 26); } .success-color a:hover { color: rgb(32, 97, 18); } .inverted.success-color { background: rgb(46, 140, 26) !important; color: rgb(255, 255, 255) !important; } .inverted.success-color a { color: rgb(255, 255, 255); } .inverted.success-color a:hover { color: rgb(255, 255, 255); } .border.success-color { border-color: rgb(46, 140, 26); } .warning-color { color: rgb(252, 165, 31) !important; } .warning-color a { color: rgb(252, 165, 31); } .warning-color a:hover { color: rgb(229, 140, 3); } .inverted.warning-color { background: rgb(252, 165, 31) !important; color: rgb(34, 34, 34) !important; } .inverted.warning-color a { color: rgb(34, 34, 34); } .inverted.warning-color a:hover { color: rgb(34, 34, 34); } .border.warning-color { border-color: rgb(252, 165, 31); } .highlight { color: rgb(35, 156, 170) !important; } .info-color { color: rgb(35, 156, 170) !important; } .highlight a { color: rgb(35, 156, 170); } .info-color a { color: rgb(35, 156, 170); } .highlight a:hover { color: rgb(26, 117, 128); } .info-color a:hover { color: rgb(26, 117, 128); } .inverted.highlight { background: rgb(35, 156, 170) !important; color: rgb(255, 255, 255) !important; } .inverted.info-color { background: rgb(35, 156, 170) !important; color: rgb(255, 255, 255) !important; } .inverted.highlight a { color: rgb(255, 255, 255); } .inverted.highlight a:hover { color: rgb(255, 255, 255); } .inverted.info-color a { color: rgb(255, 255, 255); } .inverted.info-color a:hover { color: rgb(255, 255, 255); } .border.highlight { border-color: rgb(35, 156, 170); } .border.info-color { border-color: rgb(35, 156, 170); } .lighter-info-color { color: rgb(214, 243, 246) !important; } .lighter-info-color a { color: rgb(214, 243, 246); } .lighter-info-color a:hover { color: rgb(171, 231, 238); } .inverted.lighter-info-color { background: rgb(214, 243, 246) !important; color: rgb(34, 34, 34) !important; } .inverted.lighter-info-color a { color: rgb(34, 34, 34); } .inverted.lighter-info-color a:hover { color: rgb(34, 34, 34); } .border.lighter-info-color { border-color: rgb(214, 243, 246); } .white { color: rgb(255, 255, 255) !important; } .white a { color: rgb(255, 255, 255); } .white a:hover { color: rgb(230, 229, 229); } .inverted.white { background: rgb(255, 255, 255) !important; color: rgb(34, 34, 34) !important; } .inverted.white a { color: rgb(34, 34, 34); } .inverted.white a:hover { color: rgb(34, 34, 34); } .border.white { border-color: rgb(255, 255, 255); } .darker-gray { color: rgb(17, 17, 17) !important; } .darker-gray a { color: rgb(17, 17, 17); } .darker-gray a:hover { color: rgb(0, 0, 0); } .inverted.darker-gray { background: rgb(17, 17, 17) !important; color: rgb(255, 255, 255) !important; } .inverted.darker-gray a { color: rgb(255, 255, 255); } .inverted.darker-gray a:hover { color: rgb(255, 255, 255); } .border.darker-gray { border-color: rgb(17, 17, 17); } .dark-gray { color: rgb(49, 54, 58) !important; } .dark-gray a { color: rgb(49, 54, 58); } .dark-gray a:hover { color: rgb(26, 28, 30); } .inverted.dark-gray { background: rgb(49, 54, 58) !important; color: rgb(255, 255, 255) !important; } .inverted.dark-gray a { color: rgb(255, 255, 255); } .inverted.dark-gray a:hover { color: rgb(255, 255, 255); } .border.dark-gray { border-color: rgb(49, 54, 58); } .hbrgray { color: rgb(57, 61, 65) !important; } .hbrgray a { color: rgb(57, 61, 65); } .hbrgray a:hover { color: rgb(33, 36, 38); } .inverted.hbrgray { background: rgb(57, 61, 65) !important; color: rgb(255, 255, 255) !important; } .inverted.hbrgray a { color: rgb(255, 255, 255); } .inverted.hbrgray a:hover { color: rgb(255, 255, 255); } .border.hbrgray { border-color: rgb(57, 61, 65); } .light-gray { color: rgb(117, 126, 133) !important; } .light-gray a { color: rgb(117, 126, 133); } .light-gray a:hover { color: rgb(93, 100, 106); } .inverted.light-gray { background: rgb(117, 126, 133) !important; color: rgb(255, 255, 255) !important; } .inverted.light-gray a { color: rgb(255, 255, 255); } .inverted.light-gray a:hover { color: rgb(255, 255, 255); } .border.light-gray { border-color: rgb(117, 126, 133); } .lighter-gray { color: rgb(171, 175, 176) !important; } .lighter-gray a { color: rgb(171, 175, 176); } .lighter-gray a:hover { color: rgb(145, 150, 151); } .inverted.lighter-gray { background: rgb(171, 175, 176) !important; color: rgb(34, 34, 34) !important; } .inverted.lighter-gray a { color: rgb(34, 34, 34); } .inverted.lighter-gray a:hover { color: rgb(34, 34, 34); } .border.lighter-gray { border-color: rgb(171, 175, 176); } .lighter-2x-gray { color: rgb(197, 200, 201) !important; } .lighter-2x-gray a { color: rgb(197, 200, 201); } .lighter-2x-gray a:hover { color: rgb(171, 175, 176); } .inverted.lighter-2x-gray { background: rgb(197, 200, 201) !important; color: rgb(34, 34, 34) !important; } .inverted.lighter-2x-gray a { color: rgb(34, 34, 34); } .inverted.lighter-2x-gray a:hover { color: rgb(34, 34, 34); } .border.lighter-2x-gray { border-color: rgb(197, 200, 201); } .lighter-3x-gray { color: rgb(213, 215, 216) !important; } .lighter-3x-gray a { color: rgb(213, 215, 216); } .lighter-3x-gray a:hover { color: rgb(187, 190, 191); } .inverted.lighter-3x-gray { background: rgb(213, 215, 216) !important; color: rgb(34, 34, 34) !important; } .inverted.lighter-3x-gray a { color: rgb(34, 34, 34); } .inverted.lighter-3x-gray a:hover { color: rgb(34, 34, 34); } .border.lighter-3x-gray { border-color: rgb(213, 215, 216); } .lightest-gray { color: rgb(239, 240, 240) !important; } .lightest-gray a { color: rgb(239, 240, 240); } .lightest-gray a:hover { color: rgb(213, 215, 216); } .inverted.lightest-gray { background: rgb(239, 240, 240) !important; color: rgb(34, 34, 34) !important; } .inverted.lightest-gray a { color: rgb(34, 34, 34); } .inverted.lightest-gray a:hover { color: rgb(34, 34, 34); } .border.lightest-gray { border-color: rgb(239, 240, 240); } .text-gray-light { color: rgb(136, 136, 136) !important; } .text-gray-light a { color: rgb(136, 136, 136); } .text-gray-light a:hover { color: rgb(111, 110, 110); } .inverted.text-gray-light { background: rgb(136, 136, 136) !important; color: rgb(34, 34, 34) !important; } .inverted.text-gray-light a { color: rgb(34, 34, 34); } .inverted.text-gray-light a:hover { color: rgb(34, 34, 34); } .border.text-gray-light { border-color: rgb(136, 136, 136); } .text-gray { color: rgb(102, 102, 102) !important; } .text-gray a { color: rgb(102, 102, 102); } .text-gray a:hover { color: rgb(77, 76, 76); } .inverted.text-gray { background: rgb(102, 102, 102) !important; color: rgb(255, 255, 255) !important; } .inverted.text-gray a { color: rgb(255, 255, 255); } .inverted.text-gray a:hover { color: rgb(255, 255, 255); } .border.text-gray { border-color: rgb(102, 102, 102); } .text-gray-dark { color: rgb(34, 34, 34) !important; } .text-gray-dark a { color: rgb(34, 34, 34); } .text-gray-dark a:hover { color: rgb(9, 8, 8); } .inverted.text-gray-dark { background: rgb(34, 34, 34) !important; color: rgb(255, 255, 255) !important; } .inverted.text-gray-dark a { color: rgb(255, 255, 255); } .inverted.text-gray-dark a:hover { color: rgb(255, 255, 255); } .border.text-gray-dark { border-color: rgb(34, 34, 34); } .transparent-white { color: rgba(247, 247, 247, 0.95) !important; } .transparent-white a { color: rgba(247, 247, 247, 0.95); } .transparent-white a:hover { color: rgba(222, 221, 221, 0.95); } .inverted.transparent-white { background: rgba(247, 247, 247, 0.95) !important; color: rgb(34, 34, 34) !important; } .inverted.transparent-white a { color: rgb(34, 34, 34); } .inverted.transparent-white a:hover { color: rgb(34, 34, 34); } .border.transparent-white { border-color: rgba(247, 247, 247, 0.95); } .transparent-black { color: rgba(0, 0, 0, 0.85) !important; } .transparent-black a { color: rgba(0, 0, 0, 0.85); } .transparent-black a:hover { color: rgba(0, 0, 0, 0.85); } .inverted.transparent-black { background: rgba(0, 0, 0, 0.85) !important; color: rgb(255, 255, 255) !important; } .inverted.transparent-black a { color: rgb(255, 255, 255); } .inverted.transparent-black a:hover { color: rgb(255, 255, 255); } .border.transparent-black { border-color: rgba(0, 0, 0, 0.85); } .hbr-red { color: rgb(200, 37, 2) !important; } .hbr-red a { color: rgb(200, 37, 2); } .hbr-red a:hover { color: rgb(150, 28, 1); } .inverted.hbr-red { background: rgb(200, 37, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.hbr-red a { color: rgb(255, 255, 255); } .inverted.hbr-red a:hover { color: rgb(255, 255, 255); } .border.hbr-red { border-color: rgb(200, 37, 2); } .dark-teal { color: rgb(35, 156, 170) !important; } .dark-teal a { color: rgb(35, 156, 170); } .dark-teal a:hover { color: rgb(26, 117, 128); } .inverted.dark-teal { background: rgb(35, 156, 170) !important; color: rgb(255, 255, 255) !important; } .inverted.dark-teal a { color: rgb(255, 255, 255); } .inverted.dark-teal a:hover { color: rgb(255, 255, 255); } .border.dark-teal { border-color: rgb(35, 156, 170); } .light-teal { color: rgb(214, 243, 246) !important; } .light-teal a { color: rgb(214, 243, 246); } .light-teal a:hover { color: rgb(171, 231, 238); } .inverted.light-teal { background: rgb(214, 243, 246) !important; color: rgb(34, 34, 34) !important; } .inverted.light-teal a { color: rgb(34, 34, 34); } .inverted.light-teal a:hover { color: rgb(34, 34, 34); } .border.light-teal { border-color: rgb(214, 243, 246); } .dark-orange { color: rgb(206, 75, 2) !important; } .dark-orange a { color: rgb(206, 75, 2); } .dark-orange a:hover { color: rgb(155, 57, 2); } .inverted.dark-orange { background: rgb(206, 75, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.dark-orange a { color: rgb(255, 255, 255); } .inverted.dark-orange a:hover { color: rgb(255, 255, 255); } .border.dark-orange { border-color: rgb(206, 75, 2); } .bright-green { color: rgb(110, 232, 2) !important; } .bright-green a { color: rgb(110, 232, 2); } .bright-green a:hover { color: rgb(86, 181, 2); } .inverted.bright-green { background: rgb(110, 232, 2) !important; color: rgb(255, 255, 255) !important; } .inverted.bright-green a { color: rgb(255, 255, 255); } .inverted.bright-green a:hover { color: rgb(255, 255, 255); } .border.bright-green { border-color: rgb(110, 232, 2); } .magenta { color: rgb(234, 0, 123) !important; } .magenta a { color: rgb(234, 0, 123); } .magenta a:hover { color: rgb(183, 0, 96); } .inverted.magenta { background: rgb(234, 0, 123) !important; color: rgb(255, 255, 255) !important; } .inverted.magenta a { color: rgb(255, 255, 255); } .inverted.magenta a:hover { color: rgb(255, 255, 255); } .border.magenta { border-color: rgb(234, 0, 123); } .bright-blue { color: rgb(12, 175, 252) !important; } .bright-blue a { color: rgb(12, 175, 252); } .bright-blue a:hover { color: rgb(3, 144, 210); } .inverted.bright-blue { background: rgb(12, 175, 252) !important; color: rgb(34, 34, 34) !important; } .inverted.bright-blue a { color: rgb(34, 34, 34); } .inverted.bright-blue a:hover { color: rgb(34, 34, 34); } .border.bright-blue { border-color: rgb(12, 175, 252); } .purple { color: rgb(168, 21, 243) !important; } .purple a { color: rgb(168, 21, 243); } .purple a:hover { color: rgb(138, 10, 203); } .inverted.purple { background: rgb(168, 21, 243) !important; color: rgb(34, 34, 34) !important; } .inverted.purple a { color: rgb(34, 34, 34); } .inverted.purple a:hover { color: rgb(34, 34, 34); } .border.purple { border-color: rgb(168, 21, 243); } .navy-blue { color: rgb(1, 45, 173) !important; } .navy-blue a { color: rgb(1, 45, 173); } .navy-blue a:hover { color: rgb(1, 32, 122); } .inverted.navy-blue { background: rgb(1, 45, 173) !important; color: rgb(255, 255, 255) !important; } .inverted.navy-blue a { color: rgb(255, 255, 255); } .inverted.navy-blue a:hover { color: rgb(255, 255, 255); } .border.navy-blue { border-color: rgb(1, 45, 173); } .backdrop-darker { background: rgb(17, 17, 17); } @media only screen and (max-width:47.93rem) { .poster .backdrop-darker { background: 0px 0px; } } .backdrop-dark { background: rgb(49, 54, 58); } @media only screen and (max-width:47.93rem) { .poster .backdrop-dark { background: 0px 0px; } } .backdrop-neutral { background: rgb(171, 175, 176); } @media only screen and (max-width:47.93rem) { .poster .backdrop-neutral { background: 0px 0px; } } .backdrop-light { background: rgb(197, 200, 201); } @media only screen and (max-width:47.93rem) { .poster .backdrop-light { background: 0px 0px; } } .backdrop-lighter { background: rgb(213, 215, 216); } @media only screen and (max-width:47.93rem) { .poster .backdrop-lighter { background: 0px 0px; } } .backdrop-lighter-2 { background: rgb(231, 233, 233); } @media only screen and (max-width:47.93rem) { .poster .backdrop-lighter-2 { background: 0px 0px; } } .backdrop-lightest { background: rgb(239, 240, 240); } @media only screen and (max-width:47.93rem) { .poster .backdrop-lightest { background: 0px 0px; } } .backdrop-white { background: rgb(255, 255, 255); } @media only screen and (max-width:47.93rem) { .poster .backdrop-white { background: 0px 0px; } } .backdrop-off-white { background: rgb(247, 247, 247); } @media only screen and (max-width:47.93rem) { .poster .backdrop-off-white { background: 0px 0px; } } .backdrop-black { background: rgb(0, 0, 0); } @media only screen and (max-width:47.93rem) { .poster .backdrop-black { background: 0px 0px; } } .backdrop-archive { background: rgb(10, 157, 188); } @media only screen and (max-width:47.93rem) { .poster .backdrop-archive { background: 0px 0px; } } .backdrop-bright-blue { background: rgb(12, 175, 252); } @media only screen and (max-width:47.93rem) { .poster .backdrop-bright-blue { background: 0px 0px; } } .backdrop-ordered { background: rgb(16, 155, 2); } @media only screen and (max-width:47.93rem) { .poster .backdrop-ordered { background: 0px 0px; } } .backdrop-cool-1 { background: rgb(203, 226, 228); } @media only screen and (max-width:47.93rem) { .poster .backdrop-cool-1 { background: 0px 0px; } } .backdrop-cool-2 { background: rgb(222, 228, 231); } @media only screen and (max-width:47.93rem) { .poster .backdrop-cool-2 { background: 0px 0px; } } .backdrop-cool-3 { background: rgb(226, 244, 247); } @media only screen and (max-width:47.93rem) { .poster .backdrop-cool-3 { background: 0px 0px; } } .backdrop-cool-4 { background: rgb(232, 236, 238); } @media only screen and (max-width:47.93rem) { .poster .backdrop-cool-4 { background: 0px 0px; } } .backdrop-primary-color { background: rgb(200, 37, 2); } @media only screen and (max-width:47.93rem) { .poster .backdrop-primary-color { background: 0px 0px; } } .backdrop-secondary-color { background: rgb(171, 175, 176); } @media only screen and (max-width:47.93rem) { .poster .backdrop-secondary-color { background: 0px 0px; } } .backdrop-tertiary-color { background: rgb(218, 37, 2); } @media only screen and (max-width:47.93rem) { .poster .backdrop-tertiary-color { background: 0px 0px; } } .backdrop-quaternary-color { background: rgb(57, 61, 65); } @media only screen and (max-width:47.93rem) { .poster .backdrop-quaternary-color { background: 0px 0px; } } .backdrop-alert-color { background: rgb(254, 85, 2); } @media only screen and (max-width:47.93rem) { .poster .backdrop-alert-color { background: 0px 0px; } } .backdrop-success-color { background: rgb(46, 140, 26); } @media only screen and (max-width:47.93rem) { .poster .backdrop-success-color { background: 0px 0px; } } .backdrop-warning-color { background: rgb(252, 165, 31); } @media only screen and (max-width:47.93rem) { .poster .backdrop-warning-color { background: 0px 0px; } } .backdrop-info-color { background: rgb(35, 156, 170); } @media only screen and (max-width:47.93rem) { .poster .backdrop-info-color { background: 0px 0px; } } .backdrop-black-gradient { background: linear-gradient(to top, rgba(0, 0, 0, 0.7), transparent); } @media only screen and (min-width:48rem), print { .backdrop-transparent-black { background: rgba(0, 0, 0, 0.85); } .backdrop-transparent-black .byline { color: rgb(255, 255, 255); } .backdrop-transparent-black .byline li { color: rgb(255, 255, 255); } .backdrop-transparent-black .content-type { color: rgb(255, 255, 255); } .backdrop-transparent-black h3 > a { color: rgb(255, 255, 255); } .backdrop-transparent-black h4 > a { color: rgb(255, 255, 255); } } .backdrop-transparent-white { background: rgba(247, 247, 247, 0.95); } @media only screen and (min-width:48rem), print { .backdrop-transparent-white-medium { background: rgba(247, 247, 247, 0.95); } } @media only screen and (min-width:48rem), print { .backdrop-transparent-black-text span { background: rgba(0, 0, 0, 0.85); } } @media only screen and (min-width:48rem), print { .backdrop-transparent-white-text span { background: rgba(247, 247, 247, 0.95); } } .sticky-backdrop { transition:background-color 0.1s; background-color: rgb(255, 255, 255); } .sponsored .sticky-backdrop { background-color: rgb(232, 236, 238); } .fixedsticky-on .sticky-backdrop { background-color: rgba(247, 247, 247, 0.95); } .hbr-checkbox { margin: 0.37rem; width: 1rem; position: relative; } .hbr-checkbox input[type=checkbox] { margin: 0px; visibility: hidden; } .hbr-checkbox input[type=checkbox] + label { margin-right: 0px; margin-left: 0px; } .hbr-checkbox label { background: rgb(255, 255, 255); border: 1px solid rgb(197, 200, 201); border-image: none; left: 0px; top: 0px; width: 1rem; height: 1rem; position: absolute; cursor: pointer; } .hbr-checkbox label::after { line-height: 1; font-family: HBRIcons; font-size: 1rem; font-style: normal; font-weight: 400; vertical-align: top; content: "\e028"; opacity: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .hbr-checkbox label:hover::after { opacity: 0; } .hbr-checkbox input[type=checkbox]:checked + label::after { opacity: 1; } .checkbox-size-large { width: 1.25rem; height: 1.25rem; } select { background-position: right; padding: 0.5rem 2.6rem 0.5rem 0.5rem; border-radius: 0px; border: 1px solid rgb(204, 204, 204); border-image: none; height: 2.31rem; text-indent: 0.01px; overflow: hidden; font-size: 0.87rem; background-image: url("data:image/svg+xml;base64, PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDNweCIKCSBoZWlnaHQ9IjQycHgiIHZpZXdCb3g9IjAgMCA0MyA0MiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDMgNDIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8ZyBpZD0iTGF5ZXJfMSI+Cgk8cGF0aCBmaWxsPSIjRjM1NDRBIiBkPSJNMjIuMDM2LDI1LjM0N2w2LjMzMy03LjY3M2wxLjU2NCwxLjMwNGwtNy44OTcsOS4zODhsLTcuOTctOS4zNTFsMS41NjQtMS4zOEwyMi4wMzYsMjUuMzQ3eiIvPgoJPGxpbmUgZmlsbD0ibm9uZSIgeDE9IjEiIHkxPSIwIiB4Mj0iMSIgeTI9IjQxIi8+Cgk8bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiNDQ0NDQ0MiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjAuNSIgeTE9IjAiIHgyPSIwLjUiIHkyPSI0MiIvPgo8L2c+Cjwvc3ZnPg=="); background-repeat: no-repeat; background-color: rgb(250, 250, 250); -webkit-appearance: none; -moz-appearance: none; } select.radius { border-radius: 3px; } select:hover { background-position: right; border-color: rgb(204, 204, 204); cursor: pointer; background-image: url("data:image/svg+xml;base64, PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNDNweCIKCSBoZWlnaHQ9IjQycHgiIHZpZXdCb3g9IjAgMCA0MyA0MiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNDMgNDIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8ZyBpZD0iTGF5ZXJfMSI+Cgk8cGF0aCBmaWxsPSIjYzkxODBkIiBkPSJNMjIuMDM2LDI1LjM0N2w2LjMzMy03LjY3M2wxLjU2NCwxLjMwNGwtNy44OTcsOS4zODhsLTcuOTctOS4zNTFsMS41NjQtMS4zOEwyMi4wMzYsMjUuMzQ3eiIvPgoJPGxpbmUgZmlsbD0ibm9uZSIgeDE9IjEiIHkxPSIwIiB4Mj0iMSIgeTI9IjQxIi8+Cgk8bGluZSBmaWxsPSJub25lIiBzdHJva2U9IiNDQ0NDQ0MiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgeDE9IjAuNSIgeTE9IjAiIHgyPSIwLjUiIHkyPSI0MiIvPgo8L2c+Cjwvc3ZnPg=="); background-repeat: no-repeat; background-color: rgb(243, 242, 242); } select:focus { color: inherit; background-color: rgb(243, 242, 242); } .search-form-container { margin-bottom: 0.75rem; position: relative; min-height: 3.25rem; } @media only screen and (min-width:48rem), print { .search-form-container { min-height: 4.12rem; } } .search-form-container [type=search].search-page-form { margin: 0px; padding: 0.75rem 2.5rem; left: 0px; right: 0px; font-size: 1.75rem; position: absolute; min-height: 3.25rem; } @media only screen and (min-width:48rem), print { .search-form-container [type=search].search-page-form { padding: 0.75rem 4.12rem; font-size: 2.62rem; min-height: 4.12rem; } } .search-form-container .search-form-magnify { left: 0.93rem; top: 0.93rem; position: absolute; } @media only screen and (min-width:48rem), print { .search-form-container .search-form-magnify { left: 1.2rem; top: 1.5rem; } } .search-form-container .search-form-magnify::after { color: rgb(197, 200, 201); font-family: HBRIcons; font-size: 1.06rem; content: "\e007"; } @media only screen and (min-width:48rem), print { .search-form-container .search-form-magnify::after { font-size: 1.62rem; } } .search-form-container .search-form-clear { top: 0.93rem; right: 0.93rem; position: absolute; } @media only screen and (min-width:48rem), print { .search-form-container .search-form-clear { top: 1.5rem; right: 1.2rem; } } .search-form-container .search-form-clear::after { color: rgb(197, 200, 201); font-family: HBRIcons; font-size: 1.06rem; content: "\e012"; } @media only screen and (min-width:48rem), print { .search-form-container .search-form-clear::after { font-size: 1.62rem; } } .content-area--article ul:not(.byline-list) textarea { transition:height 0.2s; } .content-area--idp ul:not(.byline-list) textarea { transition:height 0.2s; } .mag-search-container { margin-bottom: 0.75rem; position: relative; min-height: 3.25rem; } .mag-search-container [type=search].mag-search-form { margin: 0px; padding: 0.75rem 2.5rem; left: 0px; right: 0px; font-size: 1.75rem; position: absolute; min-height: 3.25rem; } .mag-search-container .search-form-magnify { left: 1rem; top: 1rem; position: absolute; } .mag-search-container .search-form-magnify::after { color: rgb(197, 200, 201); font-family: HBRIcons; font-size: 1.06rem; content: "\e007"; } .mag-search-container .search-form-clear { top: 1rem; right: 1rem; position: absolute; } .mag-search-container .search-form-clear::after { color: rgb(197, 200, 201); font-family: HBRIcons; font-size: 1.06rem; content: "\e012"; } .tidy-list input[type=checkbox] { margin-bottom: 0px; } .tidy-list input[type=file] { margin-bottom: 0px; } .tidy-list input[type=radio] { margin-bottom: 0px; } .tidy-list select { margin-bottom: 0px; } input[type=number] { -moz-appearance: textfield; } input[type=date].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=datetime-local].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=datetime].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=email].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=month].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=number].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=password].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=search].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=tel].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=text].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=time].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=url].error { border: 1px solid rgb(254, 85, 2); border-image: none; } input[type=week].error { border: 1px solid rgb(254, 85, 2); border-image: none; } select.error { border: 1px solid rgb(254, 85, 2); border-image: none; } textarea.error { border: 1px solid rgb(254, 85, 2); border-image: none; } .list-error { top: -10px; color: rgb(254, 85, 2); line-height: 1.5; font-size: 0.87rem; font-weight: 400; margin-bottom: 0px; display: none; position: relative; cursor: pointer; } .on.list-error { display: block; } .button { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .button--alt { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .button--black { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .button--form { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .button--gray { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .button--light-gray { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } button { text-transform: uppercase; letter-spacing: 0.12rem; white-space: nowrap; } .small.button--alt { letter-spacing: 0.06rem; } .tiny.button--alt { letter-spacing: 0.06rem; } .small.button--black { letter-spacing: 0.06rem; } .tiny.button--black { letter-spacing: 0.06rem; } .small.button--form { letter-spacing: 0.06rem; } .tiny.button--form { letter-spacing: 0.06rem; } .small.button--gray { letter-spacing: 0.06rem; } .tiny.button--gray { letter-spacing: 0.06rem; } .small.button--light-gray { letter-spacing: 0.06rem; } .tiny.button--light-gray { letter-spacing: 0.06rem; } .small.button { letter-spacing: 0.06rem; } .tiny.button { letter-spacing: 0.06rem; } button.small { letter-spacing: 0.06rem; } button.tiny { letter-spacing: 0.06rem; } .alt-tight.button--alt { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button--alt { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .alt-tight.button--black { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button--black { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .alt-tight.button--form { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button--form { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .alt-tight.button--gray { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button--gray { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .alt-tight.button--light-gray { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button--light-gray { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .alt-tight.button { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } .tight.button { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } button.alt-tight { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } button.tight { letter-spacing: 0.06rem; padding-right: 0.75rem; padding-left: 0.75rem; } @media only screen and (max-width:47.93rem) { .expand-when-small.button--alt { width: 100%; padding-right: 0px; padding-left: 0px; } .expand-when-small.button--black { width: 100%; padding-right: 0px; padding-left: 0px; } .expand-when-small.button--form { width: 100%; padding-right: 0px; padding-left: 0px; } .expand-when-small.button--gray { width: 100%; padding-right: 0px; padding-left: 0px; } .expand-when-small.button--light-gray { width: 100%; padding-right: 0px; padding-left: 0px; } .expand-when-small.button { width: 100%; padding-right: 0px; padding-left: 0px; } button.expand-when-small { width: 100%; padding-right: 0px; padding-left: 0px; } } .is-hidden.button--alt { display: none; } .is-hidden.button--black { display: none; } .is-hidden.button--form { display: none; } .is-hidden.button--gray { display: none; } .is-hidden.button--light-gray { display: none; } .is-hidden.button { display: none; } button.is-hidden { display: none; } .button--tight { margin: 0px 0px 1.25rem; padding: 0.87rem 0.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(160, 30, 2); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); text-transform: uppercase; line-height: normal; letter-spacing: 0.06rem; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; white-space: nowrap; position: relative; cursor: pointer; background-color: rgb(200, 37, 2); -webkit-appearance: none; -moz-appearance: none; } button.button--tight { margin: 0px 0px 1.25rem; padding: 0.87rem 0.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(160, 30, 2); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); text-transform: uppercase; line-height: normal; letter-spacing: 0.06rem; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; white-space: nowrap; position: relative; cursor: pointer; background-color: rgb(200, 37, 2); -webkit-appearance: none; -moz-appearance: none; } .button--tight:focus { background-color: rgb(160, 30, 2); } .button--tight:hover { background-color: rgb(160, 30, 2); } button.button--tight:focus { background-color: rgb(160, 30, 2); } button.button--tight:hover { background-color: rgb(160, 30, 2); } .button--tight:focus { color: rgb(255, 255, 255); } .button--tight:hover { color: rgb(255, 255, 255); } button.button--tight:focus { color: rgb(255, 255, 255); } button.button--tight:hover { color: rgb(255, 255, 255); } .button--alt { border-width: 0.18rem; border-style: solid; margin: 0px 0px 1.25rem; padding: 0.68rem 1.62rem 0.75rem; text-align: center; line-height: normal; font-size: 0.81rem; font-weight: 700; text-decoration: none; display: inline-block; position: relative; cursor: pointer; } .button--alt-black { border-width: 0.18rem; border-style: solid; margin: 0px 0px 1.25rem; padding: 0.68rem 1.62rem 0.75rem; text-align: center; line-height: normal; font-size: 0.81rem; font-weight: 700; text-decoration: none; display: inline-block; position: relative; cursor: pointer; } .sidebar-expand { border-width: 0.18rem; border-style: solid; margin: 0px 0px 1.25rem; padding: 0.68rem 1.62rem 0.75rem; text-align: center; line-height: normal; font-size: 0.81rem; font-weight: 700; text-decoration: none; display: inline-block; position: relative; cursor: pointer; } button.button--alt { border-width: 0.18rem; border-style: solid; margin: 0px 0px 1.25rem; padding: 0.68rem 1.62rem 0.75rem; text-align: center; line-height: normal; font-size: 0.81rem; font-weight: 700; text-decoration: none; display: inline-block; position: relative; cursor: pointer; } .button--alt.expand { width: 100%; } .button--alt-black.expand { width: 100%; } .sidebar-expand.expand { width: 100%; } .button--alt { border-color: rgb(200, 37, 2); color: rgb(200, 37, 2); background-color: transparent; } button.button--alt { border-color: rgb(200, 37, 2); color: rgb(200, 37, 2); background-color: transparent; } .button--alt:hover { border-color: rgb(109, 20, 1); color: rgb(109, 20, 1); } button.button--alt:hover { border-color: rgb(109, 20, 1); color: rgb(109, 20, 1); } .translucent-button { margin: 0px 0px 1.25rem; padding: 0.56rem 1.12rem 0.62rem; border-radius: 3px; border: 0px solid rgb(204, 204, 204); transition:background-color 0.3s ease-out; text-align: center; color: rgb(51, 51, 51); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(255, 255, 255); -webkit-appearance: none; -moz-appearance: none; } .translucent-button:focus { background-color: rgb(204, 204, 204); } .translucent-button:hover { background-color: rgb(204, 204, 204); } .translucent-button:focus { color: rgb(51, 51, 51); } .translucent-button:hover { color: rgb(51, 51, 51); } .button--black { margin: 0px 0px 1.25rem; padding: 0.87rem 1.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(14, 14, 14); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(17, 17, 17); -webkit-appearance: none; -moz-appearance: none; } .button--gray { margin: 0px 0px 1.25rem; padding: 0.87rem 1.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(14, 14, 14); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(17, 17, 17); -webkit-appearance: none; -moz-appearance: none; } .button--black:focus { background-color: rgb(14, 14, 14); } .button--black:hover { background-color: rgb(14, 14, 14); } .button--gray:focus { background-color: rgb(14, 14, 14); } .button--gray:hover { background-color: rgb(14, 14, 14); } .button--black:focus { color: rgb(255, 255, 255); } .button--black:hover { color: rgb(255, 255, 255); } .button--gray:focus { color: rgb(255, 255, 255); } .button--gray:hover { color: rgb(255, 255, 255); } .expand.button--black { width: 100%; } .expand.button--gray { width: 100%; } .button--light-gray { margin: 0px 0px 1.25rem; padding: 0.87rem 1.75rem 0.93rem; border-radius: 0px; border: 0px solid rgb(94, 101, 106); transition:background-color 0.3s ease-out; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.81rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(117, 126, 133); -webkit-appearance: none; -moz-appearance: none; } .button--light-gray:focus { background-color: rgb(94, 101, 106); } .button--light-gray:hover { background-color: rgb(94, 101, 106); } .button--light-gray:focus { color: rgb(255, 255, 255); } .button--light-gray:hover { color: rgb(255, 255, 255); } .expand.button--light-gray { width: 100%; } .button--alt-black { border-color: rgb(57, 61, 65); color: rgb(57, 61, 65); background-color: rgb(255, 255, 255); } .button--alt-black:focus { color: rgb(57, 61, 65); background-color: rgb(239, 240, 240); } .button--alt-black:hover { color: rgb(57, 61, 65); background-color: rgb(239, 240, 240); } .text-button { background: 0px 0px; margin: inherit; padding: inherit; color: inherit; text-transform: none; letter-spacing: normal; font-size: inherit; display: inline; -webkit-appearance: none; -moz-appearance: none; } button.text-button { background: 0px 0px; margin: inherit; padding: inherit; color: inherit; text-transform: none; letter-spacing: normal; font-size: inherit; display: inline; -webkit-appearance: none; -moz-appearance: none; } button.alt-action { background: 0px 0px; margin: inherit; padding: inherit; color: rgb(200, 37, 2); display: inline; -webkit-appearance: none; -moz-appearance: none; } .button--form { margin: 0px 0px 1.25rem; padding: 0.5rem 1rem 0.56rem; border-radius: 0px; border: 0px solid rgb(135, 141, 142); transition:background-color 0.3s ease-out; height: 2.31rem; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.75rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(171, 175, 176); -webkit-appearance: none; -moz-appearance: none; } button.button--form { margin: 0px 0px 1.25rem; padding: 0.5rem 1rem 0.56rem; border-radius: 0px; border: 0px solid rgb(135, 141, 142); transition:background-color 0.3s ease-out; height: 2.31rem; text-align: center; color: rgb(255, 255, 255); line-height: normal; font-family: Helvetica,Arial,sans-serif; font-size: 0.75rem; font-weight: 400; text-decoration: none; display: inline-block; position: relative; cursor: pointer; background-color: rgb(171, 175, 176); -webkit-appearance: none; -moz-appearance: none; } .button--form:focus { background-color: rgb(135, 141, 142); } .button--form:hover { background-color: rgb(135, 141, 142); } button.button--form:focus { background-color: rgb(135, 141, 142); } button.button--form:hover { background-color: rgb(135, 141, 142); } .button--form:focus { color: rgb(255, 255, 255); } .button--form:hover { color: rgb(255, 255, 255); } button.button--form:focus { color: rgb(255, 255, 255); } button.button--form:hover { color: rgb(255, 255, 255); } .expand.button--form { width: 100%; text-align: center; } button.expand.button--form { width: 100%; text-align: center; } .button-height { height: 2.75rem; } .form-height { height: 2.31rem; } .disabled.button { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } .disabled.button:focus { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } .disabled.button:hover { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } [disabled].button { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } [disabled].button:focus { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } [disabled].button:hover { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button.disabled { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button.disabled:focus { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button.disabled:hover { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button[disabled] { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button[disabled]:focus { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } button[disabled]:hover { border-color: rgb(255, 255, 255); color: rgb(255, 255, 255); background-color: rgb(197, 200, 201); } .attached-search-button { border-width: 1px 0px 1px 1px; border-style: solid none solid solid; border-color: rgb(204, 204, 204) currentColor rgb(204, 204, 204) rgb(204, 204, 204); padding: 0px; border-image: none; width: 2.31rem; height: 2.31rem; color: rgb(57, 61, 65); margin-bottom: 0px; background-color: rgb(255, 255, 255); } .attached-search-button:focus { color: rgb(57, 61, 65); background-color: rgb(197, 200, 201); } .attached-search-button:hover { color: rgb(57, 61, 65); background-color: rgb(197, 200, 201); } button.button--alt-small { padding: 2px 8px; border: 2px solid currentColor; border-image: none; color: rgb(254, 85, 2); letter-spacing: 0px; font-size: 15px; font-weight: 700; margin-bottom: 0px; background-color: transparent; } button.button--alt-small:hover { color: rgb(200, 37, 2); background-color: transparent; } .window-block { transition:opacity 0.5s ease-out 1s; left: 0px; top: 0px; width: 100%; height: 100%; text-align: center; right: 0px; bottom: 0px; overflow: auto; position: fixed; z-index: 2000020; } .intromercial-container { left: 50%; top: 50%; text-align: left; margin-top: -340px; margin-left: -320px; position: absolute; min-height: 680px; } @media only screen and (max-width:47.93rem) { .intromercial-container { margin-top: -150px; margin-left: -150px; min-height: 300px; } } .skip-container { height: 81px; color: rgb(197, 200, 201); font-size: 2.35rem; } @media only screen and (max-width:47.93rem) { .skip-container { height: 55px; font-size: 1.35rem; } } .skip-container a { right: 0px; bottom: 0px; color: rgb(197, 200, 201); vertical-align: bottom; position: absolute; } .skip-container a .icon { line-height: inherit; font-size: 2.75rem; vertical-align: -10px; } @media only screen and (max-width:47.93rem) { .skip-container a .icon { font-size: 1.75rem; } } .intromercial-iframe { margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; width: 640px; height: 480px; overflow: hidden; } @media only screen and (max-width:47.93rem) { .intromercial-iframe { width: 300px; height: 250px; } } .intromercial-header { padding-bottom: 1.5rem; } @media only screen and (max-width:47.93rem) { .intromercial-header { padding-bottom: 0.75rem; } } .intromercial-close { top: 87px; width: 36px; height: 36px; right: -18px; position: absolute; z-index: 2000040; cursor: pointer; background-image: url("/resources/html/marketing/intromercial/fancybox_sprite.png"); } @media not all, not all { .intromercial-close { background-image: url("/resources/html/marketing/intromercial/[email protected]"); background-size: 44px 152px; } } @media only screen and (max-width:47.93rem) { .intromercial-close { top: 49px; } } a[href] { text-decoration: none; } @media print { a[href]::after { content: ""; } } @media print { .hide-for-print { display: none !important; } iframe { border: 1px dotted rgb(239, 240, 240); border-image: none; } .content-circulator { display: none; } .partner-center { display: none; } .page { margin: 0.37rem 3rem; padding: 0.37rem 3rem; } .exhibit-tools { display: none; } figure.show-for-print.small-3 { width: 25%; } } @media only screen and (max-width:47.93rem) { .hide-small { display: none !important; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .hide-medium { display: none !important; } } @media only screen and (max-width:84.37rem) and (min-width:64.06rem) { .hide-large { display: none !important; } } @media only screen and (min-width:48rem), print { .hide-medium-up { display: none !important; } } @media only screen and (max-width:64rem) { .hide-medium-down { display: none !important; } } @media only screen and (min-width:64.06rem) { .hide-large-up { display: none !important; } } .showsup-insmalls { display: none; } @media only screen and (max-width:47.93rem) { .showsup-insmalls { display: block; } } html.registered .hide-for-registered { display: none !important; } html.subscribers .hide-for-subscriber { display: none !important; } html:not(.registered) .hide-for-unregistered { display: none !important; } html:not(.subscribers) .hide-for-non-subscriber { display: none !important; } .comments-list { margin-top: 0.37rem; } .filter-list { margin-top: 0.37rem; } .list-of-links { margin-top: 0.37rem; } .tidy-list { margin-top: 0.37rem; } .tidy-list--large { margin-top: 0.37rem; } .tidy-list--small { margin-top: 0.37rem; } .comments-list > li { line-height: 1.2; margin-bottom: 0.75rem; } .filter-list > li { line-height: 1.2; margin-bottom: 0.75rem; } .list-of-links > li { line-height: 1.2; margin-bottom: 0.75rem; } .tidy-list--large > li { line-height: 1.2; margin-bottom: 0.75rem; } .tidy-list--small > li { line-height: 1.2; margin-bottom: 0.75rem; } .tidy-list > li { line-height: 1.2; margin-bottom: 0.75rem; } @media only screen and (min-width:48rem), print { .two-column-text { column-count: 2; column-gap: 1.5rem; -webkit-column-count: 2; -moz-column-count: 2; -webkit-column-gap: 1.5rem; -moz-column-gap: 1.5rem; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .three-column-text { column-count: 2; column-gap: 1.5rem; -webkit-column-count: 2; -moz-column-count: 2; -webkit-column-gap: 1.5rem; -moz-column-gap: 1.5rem; } } @media only screen and (min-width:64.06rem), print { .three-column-text { column-count: 3; column-gap: 1.5rem; -webkit-column-count: 3; -moz-column-count: 3; -webkit-column-gap: 1.5rem; -moz-column-gap: 1.5rem; } } @media only screen and (min-width:48rem), print { .four-column-text { column-count: 3; column-gap: 1.5rem; -webkit-column-count: 3; -moz-column-count: 3; -webkit-column-gap: 1.5rem; -moz-column-gap: 1.5rem; } } @media only screen and (min-width:64.06rem) { .four-column-text { column-count: 4; column-gap: 1.5rem; -webkit-column-count: 4; -moz-column-count: 4; -webkit-column-gap: 1.5rem; -moz-column-gap: 1.5rem; } } .column-collapse { column-count: 1; -webkit-column-count: 1; -moz-column-count: 1; } .man { margin-top: 0px !important; } .mtn { margin-top: 0px !important; } .mvn { margin-top: 0px !important; } .mas { margin-top: 0.37rem !important; } .mts { margin-top: 0.37rem !important; } .mvs { margin-top: 0.37rem !important; } .mam { margin-top: 0.75rem !important; } .mtm { margin-top: 0.75rem !important; } .mvm { margin-top: 0.75rem !important; } .mal { margin-top: 1.5rem !important; } .mtl { margin-top: 1.5rem !important; } .mvl { margin-top: 1.5rem !important; } .maxl { margin-top: 3rem !important; } .mtxl { margin-top: 3rem !important; } .mvxl { margin-top: 3rem !important; } .man { margin-bottom: 0px !important; } .mbn { margin-bottom: 0px !important; } .mvn { margin-bottom: 0px !important; } .mas { margin-bottom: 0.37rem !important; } .mbs { margin-bottom: 0.37rem !important; } .mvs { margin-bottom: 0.37rem !important; } .mam { margin-bottom: 0.75rem !important; } .mbm { margin-bottom: 0.75rem !important; } .mvm { margin-bottom: 0.75rem !important; } .mal { margin-bottom: 1.5rem !important; } .mbl { margin-bottom: 1.5rem !important; } .mvl { margin-bottom: 1.5rem !important; } .maxl { margin-bottom: 3rem !important; } .mbxl { margin-bottom: 3rem !important; } .mvxl { margin-bottom: 3rem !important; } .man { margin-left: 0px !important; } .mhn { margin-left: 0px !important; } .mln { margin-left: 0px !important; } .mas { margin-left: 0.37rem !important; } .mhs { margin-left: 0.37rem !important; } .mls { margin-left: 0.37rem !important; } .mam { margin-left: 0.75rem !important; } .mhm { margin-left: 0.75rem !important; } .mlm { margin-left: 0.75rem !important; } .mal { margin-left: 1.5rem !important; } .mhl { margin-left: 1.5rem !important; } .mll { margin-left: 1.5rem !important; } .maxl { margin-left: 3rem !important; } .mhxl { margin-left: 3rem !important; } .mlxl { margin-left: 3rem !important; } .man { margin-right: 0px !important; } .mhn { margin-right: 0px !important; } .mrn { margin-right: 0px !important; } .mas { margin-right: 0.37rem !important; } .mhs { margin-right: 0.37rem !important; } .mrs { margin-right: 0.37rem !important; } .mam { margin-right: 0.75rem !important; } .mhm { margin-right: 0.75rem !important; } .mrm { margin-right: 0.75rem !important; } .mal { margin-right: 1.5rem !important; } .mhl { margin-right: 1.5rem !important; } .mrl { margin-right: 1.5rem !important; } .maxl { margin-right: 3rem !important; } .mhxl { margin-right: 3rem !important; } .mrxl { margin-right: 3rem !important; } .pan { padding-top: 0px !important; } .ptn { padding-top: 0px !important; } .pvn { padding-top: 0px !important; } .pas { padding-top: 0.37rem !important; } .pts { padding-top: 0.37rem !important; } .pvs { padding-top: 0.37rem !important; } .pam { padding-top: 0.75rem !important; } .ptm { padding-top: 0.75rem !important; } .pvm { padding-top: 0.75rem !important; } .pal { padding-top: 1.5rem !important; } .ptl { padding-top: 1.5rem !important; } .pvl { padding-top: 1.5rem !important; } .paxl { padding-top: 3rem !important; } .ptxl { padding-top: 3rem !important; } .pvxl { padding-top: 3rem !important; } .pan { padding-bottom: 0px !important; } .pbn { padding-bottom: 0px !important; } .pvn { padding-bottom: 0px !important; } .pas { padding-bottom: 0.37rem !important; } .pbs { padding-bottom: 0.37rem !important; } .pvs { padding-bottom: 0.37rem !important; } .pam { padding-bottom: 0.75rem !important; } .pbm { padding-bottom: 0.75rem !important; } .pvm { padding-bottom: 0.75rem !important; } .pal { padding-bottom: 1.5rem !important; } .pbl { padding-bottom: 1.5rem !important; } .pvl { padding-bottom: 1.5rem !important; } .paxl { padding-bottom: 3rem !important; } .pbxl { padding-bottom: 3rem !important; } .pvxl { padding-bottom: 3rem !important; } .pan { padding-left: 0px !important; } .phn { padding-left: 0px !important; } .pln { padding-left: 0px !important; } .pas { padding-left: 0.37rem !important; } .phs { padding-left: 0.37rem !important; } .pls { padding-left: 0.37rem !important; } .pam { padding-left: 0.75rem !important; } .phm { padding-left: 0.75rem !important; } .plm { padding-left: 0.75rem !important; } .pal { padding-left: 1.5rem !important; } .phl { padding-left: 1.5rem !important; } .pll { padding-left: 1.5rem !important; } .paxl { padding-left: 3rem !important; } .phxl { padding-left: 3rem !important; } .plxl { padding-left: 3rem !important; } .pan { padding-right: 0px !important; } .phn { padding-right: 0px !important; } .prn { padding-right: 0px !important; } .pas { padding-right: 0.37rem !important; } .phs { padding-right: 0.37rem !important; } .prs { padding-right: 0.37rem !important; } .pam { padding-right: 0.75rem !important; } .phm { padding-right: 0.75rem !important; } .prm { padding-right: 0.75rem !important; } .pal { padding-right: 1.5rem !important; } .phl { padding-right: 1.5rem !important; } .prl { padding-right: 1.5rem !important; } .paxl { padding-right: 3rem !important; } .phxl { padding-right: 3rem !important; } .prxl { padding-right: 3rem !important; } .tap-target-height { min-height: 44px; } .mha { margin-right: auto !important; } .mra { margin-right: auto !important; } .mha { margin-left: auto !important; } .mla { margin-left: auto !important; } .cushion { margin-top: 2.25rem !important; margin-bottom: 2.25rem !important; } @media only screen and (min-width:64.06rem) { .cushion { margin-top: 3.75rem !important; margin-bottom: 3.75rem !important; } } .mt-large2 { margin-top: 1.5rem !important; } .mv-large2 { margin-top: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mt-large2 { margin-top: 3rem !important; } .mv-large2 { margin-top: 3rem !important; } } .mt-large3 { margin-top: 1.5rem !important; } .mv-large3 { margin-top: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mt-large3 { margin-top: 4.5rem !important; } .mv-large3 { margin-top: 4.5rem !important; } } .mt-large4 { margin-top: 1.5rem !important; } .mv-large4 { margin-top: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mt-large4 { margin-top: 6rem !important; } .mv-large4 { margin-top: 6rem !important; } } .mt-large5 { margin-top: 1.5rem !important; } .mv-large5 { margin-top: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mt-large5 { margin-top: 7.5rem !important; } .mv-large5 { margin-top: 7.5rem !important; } } .mt-large6 { margin-top: 1.5rem !important; } .mv-large6 { margin-top: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mt-large6 { margin-top: 9rem !important; } .mv-large6 { margin-top: 9rem !important; } } .mb-large2 { margin-bottom: 1.5rem !important; } .mv-large2 { margin-bottom: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mb-large2 { margin-bottom: 3rem !important; } .mv-large2 { margin-bottom: 3rem !important; } } .mb-large3 { margin-bottom: 1.5rem !important; } .mv-large3 { margin-bottom: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mb-large3 { margin-bottom: 4.5rem !important; } .mv-large3 { margin-bottom: 4.5rem !important; } } .mb-large4 { margin-bottom: 1.5rem !important; } .mv-large4 { margin-bottom: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mb-large4 { margin-bottom: 6rem !important; } .mv-large4 { margin-bottom: 6rem !important; } } .mb-large5 { margin-bottom: 1.5rem !important; } .mv-large5 { margin-bottom: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mb-large5 { margin-bottom: 7.5rem !important; } .mv-large5 { margin-bottom: 7.5rem !important; } } .mb-large6 { margin-bottom: 1.5rem !important; } .mv-large6 { margin-bottom: 1.5rem !important; } @media only screen and (min-width:64.06rem) { .mb-large6 { margin-bottom: 9rem !important; } .mv-large6 { margin-bottom: 9rem !important; } } .island { margin: 2.25rem !important; } .far-island { margin: 4.5rem !important; } .is-centered { margin-right: auto !important; margin-left: auto !important; } .is-centered-list { margin-right: auto !important; margin-left: auto !important; display: table; } .nudge-up { top: -0.12rem; margin-top: -1.25rem; margin-bottom: 1.25rem; position: relative; } .ad-container { margin: 0px auto; overflow: hidden; max-width: 18.75rem; } @media print { .ad-container { display: none; } } @media only screen and (min-width:48rem), print { .ad-container { max-width: 60.62rem; } } .ad-728.ad-container { max-width: 45.5rem; } .ad-300.ad-container { max-width: 18.75rem; } .ad-230.ad-container { max-width: 14.37rem; } .ad-container img { max-width: 100%; } @media only screen and (min-width:48rem), print { .medium-left { float: left; } } @media only screen and (min-width:48rem), print { .medium-right { float: right; } } @media only screen and (min-width:64.06rem) { .large-left { float: left; } } @media only screen and (min-width:64.06rem) { .large-right { float: right; } } .remove-gutter { margin-right: -0.62rem; margin-left: -0.62rem; } .remove-gutter .row { margin-right: 0px !important; margin-left: 0px !important; } @media print { .remove-gutter { display: none; } } .remove-gutter-right { margin-right: -0.62rem; } .remove-gutter-left { margin-left: -0.62rem; } @media only screen and (max-width:47.93rem) { .small-remove-gutter { margin-right: -0.62rem; margin-left: -0.62rem; } } .no-clear-after::after { clear: none; } .row-layout-fix::after { clear: none; } .zindex-highest { z-index: 10001; } @media only screen and (max-width:47.93rem) { .limit-width-for-small { width: 18.75rem; margin-right: auto; margin-left: auto; } } .min-width-150 { min-width: 9.37rem; } .min-width-130 { min-width: 8.12rem; } .min-width-100 { min-width: 6.25rem; } .max-width-700 { max-width: 43.75rem; } .max-width-320 { max-width: 20rem; } .width-search-input { width: 10.12rem; } .width-100 { width: 6.25rem; } .width-150 { width: 9.37rem; } .width-200 { width: 12.5rem; } .width-250 { width: 15.62rem; } .width-300 { width: 18.75rem; } .width-350 { width: 18.75rem; } @media only screen and (min-width:48rem), print { .width-350 { width: 21.87rem; } } .width-400 { width: 18.75rem; } @media only screen and (min-width:48rem), print { .width-400 { width: 25rem; } } .width-550 { width: 18.75rem; } @media only screen and (min-width:48rem), print { .width-550 { width: 34.37rem; } } .width-100pct { width: 100%; } .width-90pct { width: 90%; } .width-80pct { width: 80%; } .width-66pct { width: 66%; } .height-100pct { height: 100%; } .height-250 { height: 15.62rem; } .size-64x64 { width: 64px; height: 64px; } .size-48x48 { width: 48px; height: 48px; } .size-32x32 { width: 32px; height: 32px; } .size-24x24 { width: 24px; height: 24px; } .container { width: auto; overflow: visible; position: relative; } .absolute { position: absolute; } .fixed { position: fixed; } .relative { position: relative; } @media only screen and (min-width:48rem), print { .absolute-bottom { bottom: 0px; position: absolute; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .absolute-bottom--medium-only { bottom: 0px; position: absolute; } } .vertical-align-top { vertical-align: top; } .vertical-align-bottom { vertical-align: bottom; } .vertical-align-middle { vertical-align: middle; } @media only screen and (max-width:47.93rem) { .poster-logo-for-small { top: -7.5rem; width: 12.5rem; position: absolute; } } .order-1 { order: 1; -webkit-box-ordinal-group: 2; -webkit-order: 1; } .order-2 { order: 2; -webkit-box-ordinal-group: 3; -webkit-order: 2; } .order-3 { order: 3; -webkit-box-ordinal-group: 4; -webkit-order: 3; } .justify-center { justify-content: center; -webkit-box-pack: center; -webkit-justify-content: center; } .justify-between { justify-content: space-between; -webkit-box-pack: justify; -webkit-justify-content: space-between; } .justify-around { justify-content: space-around; -webkit-justify-content: space-around; } .justify-end { justify-content: flex-end; -webkit-box-pack: end; -webkit-justify-content: flex-end; } .justify-start { justify-content: flex-start; -webkit-box-pack: start; -webkit-justify-content: flex-start; } .align-items-center { align-items: center; -webkit-box-align: center; -webkit-align-items: center; } .align-items-end { align-items: flex-end; -webkit-box-align: end; -webkit-align-items: flex-end; } .flex-row { display: flex; } .flex-direction--row { width: 100%; flex-direction: row; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; } @media only screen and (min-width:48rem), print { .flex-row-medium { display: flex; } } @media only screen and (min-width:64.06rem) { .flex-row-large { display: flex; } } .flex-col { display: flex; flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; } @media only screen and (min-width:48rem), print { .flex-col-medium { display: flex; flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; } } @media only screen and (min-width:64.06rem) { .flex-col-large { display: flex; flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; } } .flex-row-wrap { display: flex; flex-wrap: wrap; -webkit-flex-wrap: wrap; } .flex-1 { flex:1 1 0px; -webkit-box-flex: 1; -webkit-flex: 1; } .flex-2 { flex:2 1 0px; -webkit-box-flex: 2; -webkit-flex: 2; } .flex-shrink-0 { flex-shrink: 0; -webkit-flex-shrink: 0; } .faint-drop-shadow { box-shadow: 2px 2px 2px #eff0f0; } .clear-right { clear: right; } .clear-left { clear: left; } .clear-both { clear: both !important; } .clear-none { clear: none !important; } .ie-8-message { display: none; } .ie8 .ie-8-message { display: block; } .align-right { margin-bottom: 1rem; } .alignright { margin-bottom: 1rem; } @media only screen and (min-width:48rem), print { .align-right { margin-left: 2.5rem; float: right; } .alignright { margin-left: 2.5rem; float: right; } } .align-left { margin-bottom: 1rem; } .alignleft { margin-bottom: 1rem; } @media only screen and (min-width:48rem), print { .align-left { margin-right: 2.5rem; float: left; } .alignleft { margin-right: 2.5rem; float: left; } } .align-center { margin-right: auto; margin-bottom: 1rem; margin-left: auto; display: block; } .aligncenter { margin-right: auto; margin-bottom: 1rem; margin-left: auto; display: block; } .align-none { margin-bottom: 1rem; float: none; } .alignnone { margin-bottom: 1rem; float: none; } .top-8pct { top: -8%; } .top-100pct { top: 100%; } .bottom-100pct { bottom: 100%; } .bottom-0 { bottom: 0px; } .top-0 { top: 0px; } .rotate-180deg { transform: rotate(180deg); -webkit-transform: rotate(180deg); } @media only screen, print { .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (min-width:64.06rem) { .content-area { width: 75%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } } @media only screen and (min-width:84.43rem) { .content-area { width: 66.66%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } } @media only screen, print { .content-area--wide { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (min-width:64.06rem) { .content-area--wide { width: 83.33%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } } .content-area--article { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .content-area--idp { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } @media only screen and (min-width:48rem), print { .content-area--article { width: 58.33%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .content-area--idp { width: 58.33%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (min-width:64.06rem) { .content-area--article { width: 50%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } .content-area--idp { width: 50%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } } @media only screen and (min-width:84.43rem) { .content-area--article { width: 50%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } .content-area--idp { width: 50%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 16.66% !important; float: left; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .width-76pct.content-area--article { width: 76%; } .content-area--idp.width-76pct { width: 76%; } } @media only screen and (min-width:64.06rem) { .reset-content-areas .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 0px !important; float: left; } } @media only screen and (min-width:84.43rem) { .reset-content-areas .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 0px !important; float: left; } } .content-area--result { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } @media only screen and (min-width:48rem), print { .content-area--result { width: 75%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 25% !important; float: left; } .content-area--result .sidebar--filter { width: 26.66%; padding-right: 2%; margin-left: -33.33%; float: left; } .content-area--result .sidebar--right { width: 26.66%; padding-right: 2%; margin-left: -33.33%; float: left; } .content-area--result .sidebar--filter { height: 0px; overflow: visible; box-shadow: 0.37rem 0px 0.37rem -0.37rem #abafb0; } } @media only screen and (min-width:64.06rem) { .content-area--result .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 0px !important; float: left; } } @media only screen and (min-width:84.43rem) { .content-area--result .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; margin-left: 0px !important; float: left; } } #home-poster-container .content-area { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } @media only screen and (min-width:48rem), print { #home-poster-container .content-area { padding-left: 16.5rem; } } @media only screen and (min-width:64.06rem) { #home-poster-container .content-area { width: 100%; padding-right: 0.62rem; padding-left: 16.5rem; margin-left: 0px !important; float: left; } } @media only screen and (min-width:84.43rem) { #home-poster-container .content-area { width: 100%; padding-right: 0.62rem; padding-left: 16.5rem; margin-left: 0px !important; float: left; } } @media only screen and (min-width:48rem), print { #home-poster-container .poster--home { min-height: 41.87rem; } } .content-circulator .byline { display: block; } .content-circulator .section-image { width: 14.37rem; height: 8.06rem; } .content-circulator .panel { background: rgb(255, 255, 255); border-color: rgb(255, 255, 255); } @media only screen and (max-width:47.93rem) { .content-circulator .panel { margin: 0px; } .content-circulator .pls { padding-left: 0px !important; } .content-circulator .has-border-left { padding: 1.5rem 0px; border-top-color: rgb(213, 215, 216); border-left-color: currentColor; border-top-width: 1px; border-left-width: 0px; border-top-style: solid; border-left-style: none; } } .content-circulator .section-label { text-align: left; text-transform: uppercase; margin-bottom: 0.37rem; } .spotlight-article-wrapper h2.article-hed { margin-top: 150px; } .spotlight-article-wrapper .content-area--article div:first-of-type + a { margin-top: -130px; display: flex; } .spotlight-article-wrapper .content-area--idp div:first-of-type + a { margin-top: -130px; display: flex; } .spotlight-article-wrapper .fixedsticky-off { visibility: hidden; } .content-area .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--full .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--wide .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } @media only screen and (min-width:48rem), print { .content-area .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--full .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--wide .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area .promo--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area .sidebar--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--article .promo--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--article .sidebar--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--full .promo--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--full .sidebar--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--idp .promo--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--idp .sidebar--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--wide .promo--half-right { width: 46.01%; margin-left: 3.98%; float: right; } .content-area--wide .sidebar--half-right { width: 46.01%; margin-left: 3.98%; float: right; } } @media only screen and (min-width:48rem), print { .content-area--article .promo--right { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--article .sidebar--circulator { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--article .sidebar--right { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--idp .promo--right { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--idp .sidebar--circulator { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--idp .sidebar--right { width: 18.75rem; margin-right: -73.42%; float: right; } .content-area--article .promo--wide-right { width: 71.42%; margin-right: -73.42%; margin-left: 1.99%; float: right; } .content-area--article .sidebar--wide-right { width: 71.42%; margin-right: -73.42%; margin-left: 1.99%; float: right; } .content-area--idp .promo--wide-right { width: 71.42%; margin-right: -73.42%; margin-left: 1.99%; float: right; } .content-area--idp .sidebar--wide-right { width: 71.42%; margin-right: -73.42%; margin-left: 1.99%; float: right; } .content-area--article .sidebar--full { width: 173.42%; margin-right: -73.42%; float: right; } .content-area--idp .sidebar--full { width: 173.42%; margin-right: -73.42%; float: right; } .content-area--article .promo--edgeful { margin-right: -71.42%; } .content-area--article .sidebar--edgeful { margin-right: -71.42%; } .content-area--idp .promo--edgeful { margin-right: -71.42%; } .content-area--idp .sidebar--edgeful { margin-right: -71.42%; } } @media only screen and (min-width:64.06rem) { .content-area--article .promo--right { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--article .sidebar--circulator { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--article .sidebar--right { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--idp .promo--right { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--idp .sidebar--circulator { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--idp .sidebar--right { width: 18.75rem; margin-right: -68.31%; float: right; } .content-area--article .promo--wide-right { width: 83.33%; margin-right: -68.31%; margin-left: 1.65%; float: right; } .content-area--article .sidebar--wide-right { width: 83.33%; margin-right: -68.31%; margin-left: 1.65%; float: right; } .content-area--idp .promo--wide-right { width: 83.33%; margin-right: -68.31%; margin-left: 1.65%; float: right; } .content-area--idp .sidebar--wide-right { width: 83.33%; margin-right: -68.31%; margin-left: 1.65%; float: right; } .content-area--article .sidebar--full { width: 168.31%; margin-right: -68.31%; float: right; } .content-area--idp .sidebar--full { width: 168.31%; margin-right: -68.31%; float: right; } .content-area--article .promo--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--article .sidebar--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--idp .promo--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--idp .sidebar--edgeful { margin-right: -66.66%; margin-left: -33.33%; } } @media only screen and (min-width:84.43rem) { .content-area--article .promo--right { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--article .sidebar--circulator { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--article .sidebar--right { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--idp .promo--right { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--idp .sidebar--circulator { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--idp .sidebar--right { width: 18.75rem; margin-right: -51.05%; float: right; } .content-area--article .promo--wide-right { width: 66.66%; margin-right: -51.05%; margin-left: 1.05%; float: right; } .content-area--article .sidebar--wide-right { width: 66.66%; margin-right: -51.05%; margin-left: 1.05%; float: right; } .content-area--idp .promo--wide-right { width: 66.66%; margin-right: -51.05%; margin-left: 1.05%; float: right; } .content-area--idp .sidebar--wide-right { width: 66.66%; margin-right: -51.05%; margin-left: 1.05%; float: right; } .content-area--article .sidebar--full { width: 151.05%; margin-right: -51.05%; float: right; } .content-area--idp .sidebar--full { width: 151.05%; margin-right: -51.05%; float: right; } .content-area--article .promo--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--article .sidebar--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--idp .promo--edgeful { margin-right: -66.66%; margin-left: -33.33%; } .content-area--idp .sidebar--edgeful { margin-right: -66.66%; margin-left: -33.33%; } } @media print { .content-area--article { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .content-area--idp { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .content-area--article .promo--right { display: none; } .content-area--article .sidebar--circulator { display: none; } .content-area--idp .promo--right { display: none; } .content-area--idp .sidebar--circulator { display: none; } .content-area--article .promo--wide-right { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--article .sidebar--full { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--article .sidebar--wide-right { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--idp .promo--wide-right { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--idp .sidebar--full { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--idp .sidebar--wide-right { width: auto; margin-right: auto; margin-left: auto; float: none; } .content-area--article .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .promo--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .sidebar--half { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .promo--half-right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .sidebar--half-right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .sidebar--right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .promo--half-right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .sidebar--half-right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--idp .sidebar--right { width: 46.01%; margin-right: 3.98%; float: left; } .content-area--article .promo--edgeful { margin-right: -71.42%; } .content-area--article .sidebar--edgeful { margin-right: -71.42%; } .content-area--idp .promo--edgeful { margin-right: -71.42%; } .content-area--idp .sidebar--edgeful { margin-right: -71.42%; } } @media only screen and (min-width:48rem), print { .content-area .promo--right { width: 39.67%; float: right; } .content-area .promo--wide-right { width: 39.67%; float: right; } .content-area .sidebar--circulator { width: 39.67%; float: right; } .content-area .sidebar--right { width: 39.67%; float: right; } .content-area .sidebar--wide-right { width: 39.67%; float: right; } } @media only screen and (min-width:64.06rem) { .content-area .promo--right { width: 42.79%; margin-right: -12.76%; margin-left: 1.65%; } .content-area .promo--wide-right { width: 42.79%; margin-right: -12.76%; margin-left: 1.65%; } .content-area .sidebar--circulator { width: 42.79%; margin-right: -12.76%; margin-left: 1.65%; } .content-area .sidebar--right { width: 42.79%; margin-right: -12.76%; margin-left: 1.65%; } .content-area .sidebar--wide-right { width: 42.79%; margin-right: -12.76%; margin-left: 1.65%; } } @media only screen and (min-width:84.43rem) { .content-area .promo--right { width: 36.44%; margin-right: -26.05%; margin-left: 1.05%; } .content-area .promo--wide-right { width: 36.44%; margin-right: -26.05%; margin-left: 1.05%; } .content-area .sidebar--circulator { width: 36.44%; margin-right: -26.05%; margin-left: 1.05%; } .content-area .sidebar--right { width: 36.44%; margin-right: -26.05%; margin-left: 1.05%; } .content-area .sidebar--wide-right { width: 36.44%; margin-right: -26.05%; margin-left: 1.05%; } } @media only screen and (min-width:64.06rem) { .content-area .promo--edgeful { margin-right: -11.11%; margin-left: -22.22%; } .content-area .sidebar--edgeful { margin-right: -11.11%; margin-left: -22.22%; } } @media only screen and (min-width:64.06rem) { .content-area .promo--edgeful { margin-right: -25%; margin-left: -25%; } .content-area .sidebar--edgeful { margin-right: -25%; margin-left: -25%; } } @media only screen and (min-width:48rem), print { .content-area--wide .promo--right { width: 39.67%; margin-left: 1.99%; float: right; } .content-area--wide .promo--wide-right { width: 39.67%; margin-left: 1.99%; float: right; } .content-area--wide .sidebar--circulator { width: 39.67%; margin-left: 1.99%; float: right; } .content-area--wide .sidebar--right { width: 39.67%; margin-left: 1.99%; float: right; } .content-area--wide .sidebar--wide-right { width: 39.67%; margin-left: 1.99%; float: right; } } @media only screen and (min-width:64.06rem) { .content-area--wide .promo--right { width: 38.34%; margin-left: 1.65%; } .content-area--wide .promo--wide-right { width: 38.34%; margin-left: 1.65%; } .content-area--wide .sidebar--circulator { width: 38.34%; margin-left: 1.65%; } .content-area--wide .sidebar--right { width: 38.34%; margin-left: 1.65%; } .content-area--wide .sidebar--wide-right { width: 38.34%; margin-left: 1.65%; } } @media only screen and (min-width:84.43rem) { .content-area--wide .promo--right { width: 28.94%; margin-left: 1.05%; } .content-area--wide .promo--wide-right { width: 28.94%; margin-left: 1.05%; } .content-area--wide .sidebar--circulator { width: 28.94%; margin-left: 1.05%; } .content-area--wide .sidebar--right { width: 28.94%; margin-left: 1.05%; } .content-area--wide .sidebar--wide-right { width: 28.94%; margin-left: 1.05%; } } @media only screen and (min-width:64.06rem) { .content-area--wide .promo--edgeful { margin-left: -20%; } .content-area--wide .sidebar--edgeful { margin-left: -20%; } } .content-area--idp .label { background: rgb(114, 114, 114) !important; font-family: National; font-size: 0.75rem !important; } .content-area--idp .sidebar--idp { margin-right: -62% !important; } .content-area--idp .permission-quantity { width: 6.87rem; } .content-area--idp .idp-options__container { font-size: 0px; } .content-area--idp .idp-options__container .idp-option { cursor: pointer; } .content-area--idp .idp-options__container .font-light.idp-option:hover { color: rgb(7, 135, 177) !important; } .content-area--idp .stream-utility { line-height: 1.3; padding-right: 0.62rem; padding-left: 0.62rem; } .content-area--idp .price--large { font-size: 2.25rem; } .content-area--idp .collection-item-img { height: 16.25rem; } @media only screen and (max-width:64rem) and (min-width:48rem) { .content-area--idp .sidebar--idp { width: 55%; margin-right: -65% !important; } } @media only screen and (max-width:47.93rem) { .content-area--idp .is-inline-block.label { display: none !important; } .content-area--idp .icon-question-circle { font-size: 1rem !important; } .content-area--idp .price--large { padding-top: 1.5rem; font-size: 1.37rem !important; } .content-area--idp .idp-figure { display: flex; justify-content: center; -webkit-box-pack: center; -webkit-justify-content: center; } .content-area--idp .idp-figure img { height: 16rem; } .content-area--idp .idp-option { display: none; } .content-area--idp .figure-container { margin-bottom: 0px !important; justify-content: center; -webkit-box-pack: center; -webkit-justify-content: center; } .content-area--idp .price-container { display: flex; } .content-area--idp .idp--options-block__mobile { background: rgb(239, 240, 240); padding: 0px 0.75rem 0.37rem; margin-right: -0.62rem; margin-bottom: 1.5rem; margin-left: -0.62rem; } } @media only screen and (min-width:48rem), print { .content-area--idp .is-centered-list { margin-bottom: 1.5rem; } } @media only screen and (orientation:landscape) and (max-device-width:47.93rem) { .content-area--idp figure { width: 100%; display: flex; justify-content: center; -webkit-box-pack: center; -webkit-justify-content: center; } } @media only screen and (min-width:48rem), print { .embed-video-hide--half { display: inherit !important; } .embed-video-hide--full { display: none !important; } } @media only screen and (max-width:47.93rem) { embedded-video.sidebar--half .embed-video-hide--full { display: inherit !important; } embedded-video.sidebar--half-right .embed-video-hide--full { display: inherit !important; } embedded-video.sidebar--half .embed-video-hide--half { display: none !important; } embedded-video.sidebar--half-right .embed-video-hide--half { display: none !important; } .embed-video-hide--full { display: none !important; } } .bottom-aligned-header { margin: 0px 0px 0.37rem; height: 3rem; position: relative; } .bottom-aligned-header > h3 { left: 0px; width: 100%; bottom: 0px; line-height: 1.1; margin-bottom: 0px; position: absolute; } .bottom-aligned-header > h4 { left: 0px; width: 100%; bottom: 0px; line-height: 1.1; margin-bottom: 0px; position: absolute; } .bottom-aligned-header > h5 { left: 0px; width: 100%; bottom: 0px; line-height: 1.1; margin-bottom: 0px; position: absolute; } .bottom-aligned-header > h6 { left: 0px; width: 100%; bottom: 0px; line-height: 1.1; margin-bottom: 0px; position: absolute; } .tidy-list--large > li { margin-bottom: 1.5rem; } .tidy-list--large > li a { color: rgb(0, 0, 0); } .list-of-links a { color: rgb(117, 126, 133); } .list-of-links a:hover { color: rgb(200, 37, 2); } ul .plain-inline-list { margin-left: 0px; } .plain-inline-list { list-style: none; margin: 0px; padding: 0px; } .plain-inline-list > li { margin: 0px; padding: 0px 0.75rem; display: inline-block; } .plain-inline-list > li:first-child { padding: 0px 0.75rem 0px 0px; } .plain-inline-list > li:last-child { padding: 0px 0px 0px 0.75rem; } .plain-inline-list > li::after { content: " "; } .article-tools .plain-inline-list { list-style: none; margin: 0px; padding: 0px; } .article-tools .plain-inline-list > li { margin: 0px; padding: 0px 0.3rem; display: inline-block; } .article-tools .plain-inline-list > li:first-child { padding: 0px 0.3rem 0px 0px; } .article-tools .plain-inline-list > li:last-child { padding: 0px 0px 0px 0.3rem; } .article-tools .plain-inline-list > li::after { content: " "; } .article-tools .text-center.utility { font-size: 0.7rem; } .article-tools .text-center.utility i { vertical-align: inherit; } .piped-inline-list { list-style: none; margin: 0px; padding: 0px; } .piped-inline-list > li { margin: 0px; padding: 0px 0.75rem 0px 0px; display: inline-block; } .piped-inline-list > li::after { color: rgb(171, 175, 176); padding-left: 0.75rem; content: "|"; } .piped-inline-list > li:last-child::after { content: ""; } .byline-list { list-style: none; margin: 0px; padding: 0px; line-height: 1.2; display: inline; } .byline-list > li { margin: 0px; padding: 0px; display: inline; } .byline-list > li a { color: rgb(200, 37, 2); } .byline-list > li::before { content: ", "; } .byline-list > li:last-child::before { content: ", and "; } .byline-list > li:first-child + li:last-child::before { content: " and "; } .byline-list > li:first-child::before { content: "by "; } .no-by.byline-list > li:first-child::before { content: ""; } .sponsored.stream-entry .byline-list > li:first-child::before { content: ""; } ul.byline-list { margin-left: 0px !important; } .filter-list > li { margin-left: 1.12rem; position: relative; } .filter-list input[type=checkbox] { display: none; } .filter-list input[type=checkbox]:checked + span { color: rgb(200, 37, 2); } .filter-list input[type=checkbox]:checked + span::before { left: -1.12rem; width: 1.12rem; color: rgb(0, 0, 0); font-family: HBRIcons; position: absolute; content: "\e028"; } .list-li-clear-right li { clear: right; } .list-li-clearfix li { overflow: hidden; } .content-area--article dl { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--article ol { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--article ul:not(.byline-list) { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--idp dl { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--idp ol { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--idp ul:not(.byline-list) { font-family: Garamond,Baskerville,"Times New Roman",serif; } .font-guardian { font-family: Garamond,Baskerville,"Times New Roman",serif; } .font-secondary { font-family: Garamond,Baskerville,"Times New Roman",serif; } p { font-family: Garamond,Baskerville,"Times New Roman",serif; } .content-area--article .fonts-loaded dl { font-family: Guardian; } .content-area--article .fonts-loaded ol { font-family: Guardian; } .content-area--article .fonts-loaded ul:not(.byline-list) { font-family: Guardian; } .content-area--idp .fonts-loaded dl { font-family: Guardian; } .content-area--idp .fonts-loaded ol { font-family: Guardian; } .content-area--idp .fonts-loaded ul:not(.byline-list) { font-family: Guardian; } .fonts-loaded .content-area--article dl { font-family: Guardian; } .fonts-loaded .content-area--article ol { font-family: Guardian; } .fonts-loaded .content-area--article ul:not(.byline-list) { font-family: Guardian; } .fonts-loaded .content-area--idp dl { font-family: Guardian; } .fonts-loaded .content-area--idp ol { font-family: Guardian; } .fonts-loaded .content-area--idp ul:not(.byline-list) { font-family: Guardian; } .fonts-loaded .font-guardian { font-family: Guardian; } .fonts-loaded .font-secondary { font-family: Guardian; } .fonts-loaded p { font-family: Guardian; } .alt-action { font-family: Helvetica,Arial,sans-serif; } .article-callout p { font-family: Helvetica,Arial,sans-serif; } .artworkcaption p { font-family: Helvetica,Arial,sans-serif; } .artworkcaption p li { font-family: Helvetica,Arial,sans-serif; } .button { font-family: Helvetica,Arial,sans-serif; } .button--alt { font-family: Helvetica,Arial,sans-serif; } .button--alt-black { font-family: Helvetica,Arial,sans-serif; } .button--black { font-family: Helvetica,Arial,sans-serif; } .button--form { font-family: Helvetica,Arial,sans-serif; } .button--gray { font-family: Helvetica,Arial,sans-serif; } .button--light-gray { font-family: Helvetica,Arial,sans-serif; } .button--tight { font-family: Helvetica,Arial,sans-serif; } .byline-list { font-family: Helvetica,Arial,sans-serif; } .caption { font-family: Helvetica,Arial,sans-serif; } .caption li { font-family: Helvetica,Arial,sans-serif; } .comments-list { font-family: Helvetica,Arial,sans-serif; } .comments-list .comment-footer { font-family: Helvetica,Arial,sans-serif; } .comments-list p { font-family: Helvetica,Arial,sans-serif; } .content-area--article ul:not(.byline-list) textarea { font-family: Helvetica,Arial,sans-serif; } .content-area--idp ul:not(.byline-list) textarea { font-family: Helvetica,Arial,sans-serif; } .copyright { font-family: Helvetica,Arial,sans-serif; } .credit { font-family: Helvetica,Arial,sans-serif; } .credit li { font-family: Helvetica,Arial,sans-serif; } .dek { font-family: Helvetica,Arial,sans-serif; } .dek p { font-family: Helvetica,Arial,sans-serif; } .description-text { font-family: Helvetica,Arial,sans-serif; } .description-text li { font-family: Helvetica,Arial,sans-serif; } .disclaimer { font-family: Helvetica,Arial,sans-serif; } .flyout-list { font-family: Helvetica,Arial,sans-serif; } .flyout-share-chooser { font-family: Helvetica,Arial,sans-serif; } .font-national { font-family: Helvetica,Arial,sans-serif; } .font-national li { font-family: Helvetica,Arial,sans-serif; } .intervieweename { font-family: Helvetica,Arial,sans-serif; } .interviewname { font-family: Helvetica,Arial,sans-serif; } .link-list { font-family: Helvetica,Arial,sans-serif; } .link-list li { font-family: Helvetica,Arial,sans-serif; } .message { font-family: Helvetica,Arial,sans-serif; } .poster p { font-family: Helvetica,Arial,sans-serif; } .poster--home p { font-family: Helvetica,Arial,sans-serif; } .poster--spotlight p { font-family: Helvetica,Arial,sans-serif; } .price { font-family: Helvetica,Arial,sans-serif; } .price--large { font-family: Helvetica,Arial,sans-serif; } .price--small { font-family: Helvetica,Arial,sans-serif; } .price-text { font-family: Helvetica,Arial,sans-serif; } .price-text--large { font-family: Helvetica,Arial,sans-serif; } .price-text--small { font-family: Helvetica,Arial,sans-serif; } .product-info { font-family: Helvetica,Arial,sans-serif; } .product-text { font-family: Helvetica,Arial,sans-serif; } .product-text p { font-family: Helvetica,Arial,sans-serif; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--half-right > .promo-contents > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--half > .personalization-placement > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--half > .promo-contents > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--inline > .personalization-placement > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--inline > .promo-contents > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--right > .personalization-placement > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--right > .promo-contents > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li { font-family: Helvetica,Arial,sans-serif; } .publication-date { font-family: Helvetica,Arial,sans-serif; } .question { font-family: Helvetica,Arial,sans-serif; } .sans-serif-list { font-family: Helvetica,Arial,sans-serif; } .sans-serif-list li { font-family: Helvetica,Arial,sans-serif; } .sidebar { font-family: Helvetica,Arial,sans-serif; } .sidebar p { font-family: Helvetica,Arial,sans-serif; } .sidebar--circulator { font-family: Helvetica,Arial,sans-serif; } .sidebar--edgeful { font-family: Helvetica,Arial,sans-serif; } .sidebar--edgeful p { font-family: Helvetica,Arial,sans-serif; } .sidebar--full { font-family: Helvetica,Arial,sans-serif; } .sidebar--full p { font-family: Helvetica,Arial,sans-serif; } .sidebar--half { font-family: Helvetica,Arial,sans-serif; } .sidebar--half p { font-family: Helvetica,Arial,sans-serif; } .sidebar--half-right { font-family: Helvetica,Arial,sans-serif; } .sidebar--half-right p { font-family: Helvetica,Arial,sans-serif; } .sidebar--right { font-family: Helvetica,Arial,sans-serif; } .sidebar--right p { font-family: Helvetica,Arial,sans-serif; } .sidebar--wide-right { font-family: Helvetica,Arial,sans-serif; } .sidebar--wide-right p { font-family: Helvetica,Arial,sans-serif; } .sidebar-expand { font-family: Helvetica,Arial,sans-serif; } .utility { font-family: Helvetica,Arial,sans-serif; } .wp-caption-text { font-family: Helvetica,Arial,sans-serif; } [data-cart-badge]::after { font-family: Helvetica,Arial,sans-serif; } [data-comment-badge]::after { font-family: Helvetica,Arial,sans-serif; } [data-newfollowing-badge]::after { font-family: Helvetica,Arial,sans-serif; } [data-newfollowing-user-badge]::after { font-family: Helvetica,Arial,sans-serif; } body { font-family: Helvetica,Arial,sans-serif; } button { font-family: Helvetica,Arial,sans-serif; } button.button--alt { font-family: Helvetica,Arial,sans-serif; } button.button--form { font-family: Helvetica,Arial,sans-serif; } button.button--tight { font-family: Helvetica,Arial,sans-serif; } div.long.article-first-row > p:first-of-type::first-letter { font-family: Helvetica,Arial,sans-serif; } div.premium.article-first-row > p:first-of-type::first-letter { font-family: Helvetica,Arial,sans-serif; } footer { font-family: Helvetica,Arial,sans-serif; } footer ul { font-family: Helvetica,Arial,sans-serif; } h1 { font-family: Helvetica,Arial,sans-serif; } h2 { font-family: Helvetica,Arial,sans-serif; } h3 { font-family: Helvetica,Arial,sans-serif; } h4 { font-family: Helvetica,Arial,sans-serif; } h5 { font-family: Helvetica,Arial,sans-serif; } h6 { font-family: Helvetica,Arial,sans-serif; } p > span.dropcap-letter { font-family: Helvetica,Arial,sans-serif; } .article-callout .fonts-loaded p { font-family: National; } .artworkcaption .fonts-loaded p { font-family: National; } .artworkcaption p .fonts-loaded li { font-family: National; } .caption .fonts-loaded li { font-family: National; } .comments-list .fonts-loaded .comment-footer { font-family: National; } .comments-list .fonts-loaded p { font-family: National; } .content-area--article ul:not(.byline-list) .fonts-loaded textarea { font-family: National; } .content-area--idp ul:not(.byline-list) .fonts-loaded textarea { font-family: National; } .credit .fonts-loaded li { font-family: National; } .dek .fonts-loaded p { font-family: National; } .description-text .fonts-loaded li { font-family: National; } .font-national .fonts-loaded li { font-family: National; } .fonts-loaded .alt-action { font-family: National; } .fonts-loaded .article-callout p { font-family: National; } .fonts-loaded .artworkcaption p { font-family: National; } .fonts-loaded .artworkcaption p li { font-family: National; } .fonts-loaded .button { font-family: National; } .fonts-loaded .button--alt { font-family: National; } .fonts-loaded .button--alt-black { font-family: National; } .fonts-loaded .button--black { font-family: National; } .fonts-loaded .button--form { font-family: National; } .fonts-loaded .button--gray { font-family: National; } .fonts-loaded .button--light-gray { font-family: National; } .fonts-loaded .button--tight { font-family: National; } .fonts-loaded .byline-list { font-family: National; } .fonts-loaded .caption { font-family: National; } .fonts-loaded .caption li { font-family: National; } .fonts-loaded .comments-list { font-family: National; } .fonts-loaded .comments-list .comment-footer { font-family: National; } .fonts-loaded .comments-list p { font-family: National; } .fonts-loaded .content-area--article ul:not(.byline-list) textarea { font-family: National; } .fonts-loaded .content-area--idp ul:not(.byline-list) textarea { font-family: National; } .fonts-loaded .copyright { font-family: National; } .fonts-loaded .credit { font-family: National; } .fonts-loaded .credit li { font-family: National; } .fonts-loaded .dek { font-family: National; } .fonts-loaded .dek p { font-family: National; } .fonts-loaded .description-text { font-family: National; } .fonts-loaded .description-text li { font-family: National; } .fonts-loaded .disclaimer { font-family: National; } .fonts-loaded .flyout-list { font-family: National; } .fonts-loaded .flyout-share-chooser { font-family: National; } .fonts-loaded .font-national { font-family: National; } .fonts-loaded .font-national li { font-family: National; } .fonts-loaded .intervieweename { font-family: National; } .fonts-loaded .interviewname { font-family: National; } .fonts-loaded .link-list { font-family: National; } .fonts-loaded .link-list li { font-family: National; } .fonts-loaded .message { font-family: National; } .fonts-loaded .poster p { font-family: National; } .fonts-loaded .poster--home p { font-family: National; } .fonts-loaded .poster--spotlight p { font-family: National; } .fonts-loaded .price { font-family: National; } .fonts-loaded .price--large { font-family: National; } .fonts-loaded .price--small { font-family: National; } .fonts-loaded .price-text { font-family: National; } .fonts-loaded .price-text--large { font-family: National; } .fonts-loaded .price-text--small { font-family: National; } .fonts-loaded .product-info { font-family: National; } .fonts-loaded .product-text { font-family: National; } .fonts-loaded .product-text p { font-family: National; } .fonts-loaded .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--half-right > .promo-contents > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--half > .personalization-placement > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--half > .promo-contents > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--inline > .personalization-placement > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--inline > .promo-contents > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--right > .personalization-placement > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--right > .promo-contents > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li { font-family: National; } .fonts-loaded .publication-date { font-family: National; } .fonts-loaded .question { font-family: National; } .fonts-loaded .sans-serif-list { font-family: National; } .fonts-loaded .sans-serif-list li { font-family: National; } .fonts-loaded .sidebar { font-family: National; } .fonts-loaded .sidebar p { font-family: National; } .fonts-loaded .sidebar--circulator { font-family: National; } .fonts-loaded .sidebar--edgeful { font-family: National; } .fonts-loaded .sidebar--edgeful p { font-family: National; } .fonts-loaded .sidebar--full { font-family: National; } .fonts-loaded .sidebar--full p { font-family: National; } .fonts-loaded .sidebar--half { font-family: National; } .fonts-loaded .sidebar--half p { font-family: National; } .fonts-loaded .sidebar--half-right { font-family: National; } .fonts-loaded .sidebar--half-right p { font-family: National; } .fonts-loaded .sidebar--right { font-family: National; } .fonts-loaded .sidebar--right p { font-family: National; } .fonts-loaded .sidebar--wide-right { font-family: National; } .fonts-loaded .sidebar--wide-right p { font-family: National; } .fonts-loaded .sidebar-expand { font-family: National; } .fonts-loaded .utility { font-family: National; } .fonts-loaded .wp-caption-text { font-family: National; } .fonts-loaded [data-cart-badge]::after { font-family: National; } .fonts-loaded [data-comment-badge]::after { font-family: National; } .fonts-loaded [data-newfollowing-badge]::after { font-family: National; } .fonts-loaded [data-newfollowing-user-badge]::after { font-family: National; } .fonts-loaded body { font-family: National; } .fonts-loaded button { font-family: National; } .fonts-loaded button.button--alt { font-family: National; } .fonts-loaded button.button--form { font-family: National; } .fonts-loaded button.button--tight { font-family: National; } .fonts-loaded div.long.article-first-row > p:first-of-type::first-letter { font-family: National; } .fonts-loaded div.premium.article-first-row > p:first-of-type::first-letter { font-family: National; } .fonts-loaded footer { font-family: National; } .fonts-loaded footer ul { font-family: National; } .fonts-loaded h1 { font-family: National; } .fonts-loaded h2 { font-family: National; } .fonts-loaded h3 { font-family: National; } .fonts-loaded h4 { font-family: National; } .fonts-loaded h5 { font-family: National; } .fonts-loaded h6 { font-family: National; } .fonts-loaded p > span.dropcap-letter { font-family: National; } .link-list .fonts-loaded li { font-family: National; } .poster .fonts-loaded p { font-family: National; } .poster--home .fonts-loaded p { font-family: National; } .poster--spotlight .fonts-loaded p { font-family: National; } .product-text .fonts-loaded p { font-family: National; } .sans-serif-list .fonts-loaded li { font-family: National; } .sidebar .fonts-loaded p { font-family: National; } .sidebar--edgeful .fonts-loaded p { font-family: National; } .sidebar--full .fonts-loaded p { font-family: National; } .sidebar--half .fonts-loaded p { font-family: National; } .sidebar--half-right .fonts-loaded p { font-family: National; } .sidebar--right .fonts-loaded p { font-family: National; } .sidebar--wide-right .fonts-loaded p { font-family: National; } footer .fonts-loaded ul { font-family: National; } .sponsored .article-first-row h4.sidebar-title { font-family: serif; } .sponsored .sidebar-title { font-family: serif; } .sponsored h1.sponsored-article-hed { font-family: serif; } .sponsored.stream-entry .hed { font-family: serif; } .fonts-loaded .sponsored .article-first-row h4.sidebar-title { font-family: "Sentinel SSm A","Sentinel SSm B"; } .fonts-loaded .sponsored .sidebar-title { font-family: "Sentinel SSm A","Sentinel SSm B"; } .fonts-loaded .sponsored h1.sponsored-article-hed { font-family: "Sentinel SSm A","Sentinel SSm B"; } .fonts-loaded .sponsored.stream-entry .hed { font-family: "Sentinel SSm A","Sentinel SSm B"; } .sponsored .article-first-row .fonts-loaded h4.sidebar-title { font-family: "Sentinel SSm A","Sentinel SSm B"; } .sponsored .fonts-loaded .sidebar-title { font-family: "Sentinel SSm A","Sentinel SSm B"; } .sponsored .fonts-loaded h1.sponsored-article-hed { font-family: "Sentinel SSm A","Sentinel SSm B"; } .sponsored.stream-entry .fonts-loaded .hed { font-family: "Sentinel SSm A","Sentinel SSm B"; } .sponsored.article-content .article-first-row h1 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row h2 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row h3 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row h4 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row h5 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row h6 { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row li { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored.article-content .article-first-row p { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .font-system { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents dl { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents li { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents ol { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents p { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .sponsored .sidebar-contents ul { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .font-whitney { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .font-whitney p { font-family: "Helvetica Neue","Helvetica Neue",Helvetica,Arial,sans-serif; } .font-whitney .fonts-loaded p { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; } .fonts-loaded .font-whitney { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; } .fonts-loaded .font-whitney p { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; } .font-national-compressed { font-family: Helvetica,Arial,sans-serif; } .lineup-container .lineup-content .lineup-item--header-left { font-family: Helvetica,Arial,sans-serif; } .fonts-loaded .font-national-compressed { font-family: "National Compressed"; } .fonts-loaded .lineup-container .lineup-content .lineup-item--header-left { font-family: "National Compressed"; } .lineup-container .lineup-content .fonts-loaded .lineup-item--header-left { font-family: "National Compressed"; } .article-callout p { font-weight: 200; } .artworkcaption { font-weight: 200; } .caption { font-weight: 200; } .credit { font-weight: 200; } .description-text { font-weight: 200; } .disclaimer { font-weight: 200; } .flyout-header { font-weight: 200; } .flyout-share-chooser { font-weight: 200; } .flyout-share-title::before { font-weight: 200; } .subheader.large-hed { font-weight: 200; } .persistent-banner .quota { font-weight: 200; } :not(strong).price--large { font-weight: 200; } :not(strong).price--small { font-weight: 200; } :not(strong).price-text--large { font-weight: 200; } :not(strong).price-text--small { font-weight: 200; } :not(strong).price-text { font-weight: 200; } :not(strong).price { font-weight: 200; } .section-label { font-weight: 200; } .skip-container { font-weight: 200; } .subheader { font-weight: 200; } .subheader.xlarge-hed { font-weight: 200; } .subheader.xxlarge-hed { font-weight: 200; } .subheader.xxxlarge-hed { font-weight: 200; } footer { font-weight: 200; } .comments-list h5 { font-weight: 400; } footer li { font-weight: 400; } .sponsored-article-hed { font-weight: 500; } .alt-action { font-weight: 700; } .article-hed { font-weight: 700; } .flyout-share-chooser > li.active > a { font-weight: 700; } .flyout-share-title { font-weight: 700; } .qemphasis { font-weight: 700; } .section-label strong { font-weight: 700; } .stream-item .byline { font-weight: 700; } button.alt-action { font-weight: 700; } .large-hed { font-weight: 900; } .normal-hed { font-weight: 900; } .popular-topic > h3 { font-weight: 900; } .xlarge-hed { font-weight: 900; } .xxlarge-hed { font-weight: 900; } .xxxlarge-hed { font-weight: 900; } h1 strong { font-weight: 900; } h1.large-hed { font-weight: 900; } h1.normal-hed { font-weight: 900; } h1.xlarge-hed { font-weight: 900; } h1.xxlarge-hed { font-weight: 900; } h1.xxxlarge-hed { font-weight: 900; } h2 strong { font-weight: 900; } h3 strong { font-weight: 900; } h4 strong { font-weight: 900; } h5 strong { font-weight: 900; } h6 strong { font-weight: 900; } .lineup-container .lineup-content .lineup-item--header-left { font-size: 3.12rem; } .xxxlarge-hed { font-size: 3.12rem; } h1.xxxlarge-hed { font-size: 3.12rem; } @media only screen and (min-width:48rem), print { .lineup-container .lineup-content .lineup-item--header-left { font-size: 4.37rem; } .xxxlarge-hed { font-size: 4.37rem; } h1.xxxlarge-hed { font-size: 4.37rem; } } @media only screen and (min-width:64.06rem) { .lineup-container .lineup-content .lineup-item--header-left { font-size: 5.62rem; } .xxxlarge-hed { font-size: 5.62rem; } h1.xxxlarge-hed { font-size: 5.62rem; } } .poster--spotlight h1 { font-size: 3rem; } .xxlarge-hed { font-size: 3rem; } h1.xxlarge-hed { font-size: 3rem; } @media only screen and (min-width:48rem), print { .poster--spotlight h1 { font-size: 4rem; } .xxlarge-hed { font-size: 4rem; } h1.xxlarge-hed { font-size: 4rem; } } @media only screen and (min-width:64.06rem) { .poster--spotlight h1 { font-size: 4.87rem; } .xxlarge-hed { font-size: 4.87rem; } h1.xxlarge-hed { font-size: 4.87rem; } } .article-hed { font-size: 2.62rem; } .xlarge-hed { font-size: 2.62rem; } h1.xlarge-hed { font-size: 2.62rem; } @media only screen and (min-width:48rem), print { .article-hed { font-size: 3.5rem; } .xlarge-hed { font-size: 3.5rem; } h1.xlarge-hed { font-size: 3.5rem; } } @media only screen and (min-width:64.06rem) { .article-hed { font-size: 4rem; } .xlarge-hed { font-size: 4rem; } h1.xlarge-hed { font-size: 4rem; } } .large-hed { font-size: 2.25rem; } h1.large-hed { font-size: 2.25rem; } @media only screen and (min-width:48rem), print { .large-hed { font-size: 3.12rem; } h1.large-hed { font-size: 3.12rem; } } @media only screen and (min-width:64.06rem) { .large-hed { font-size: 3.5rem; } h1.large-hed { font-size: 3.5rem; } } .sponsored-article-hed { font-size: 2rem; } @media only screen and (min-width:48rem), print { .sponsored-article-hed { font-size: 2.62rem; } } @media only screen and (min-width:64.06rem) { .sponsored-article-hed { font-size: 3rem; } } .article-callout p { font-size: 1.75rem; } .normal-hed { font-size: 1.75rem; } .sidebar-expand i { font-size: 1.75rem; } h1.normal-hed { font-size: 1.75rem; } @media only screen and (min-width:48rem), print { .article-callout p { font-size: 2rem; } .normal-hed { font-size: 2rem; } .sidebar-expand i { font-size: 2rem; } h1.normal-hed { font-size: 2rem; } } @media only screen and (min-width:64.06rem) { .article-callout p { font-size: 2.12rem; } .normal-hed { font-size: 2.12rem; } .sidebar-expand i { font-size: 2.12rem; } h1.normal-hed { font-size: 2.12rem; } } .price--large { font-size: 1.5rem; } .price-text--large { font-size: 1.5rem; } @media only screen and (min-width:48rem), print { .price--large { font-size: 1.75rem; } .price-text--large { font-size: 1.75rem; } } @media only screen and (min-width:64.06rem) { .price--large { font-size: 1.87rem; } .price-text--large { font-size: 1.87rem; } } .article h2 { font-size: 1.37rem; } .article-sidebar h4 { font-size: 1.37rem; } .persistent-banner .quota strong .limit { font-size: 1.37rem; } .persistent-banner .quota strong .remaining { font-size: 1.37rem; } .price { font-size: 1.37rem; } .price-text { font-size: 1.37rem; } .sidebar h4 { font-size: 1.37rem; } .subscriber-search-active { font-size: 1.37rem; } .subscriber-search-inactive { font-size: 1.37rem; } @media only screen and (min-width:48rem), print { .article h2 { font-size: 1.56rem; } .article-sidebar h4 { font-size: 1.56rem; } .persistent-banner .quota strong .limit { font-size: 1.56rem; } .persistent-banner .quota strong .remaining { font-size: 1.56rem; } .price { font-size: 1.56rem; } .price-text { font-size: 1.56rem; } .sidebar h4 { font-size: 1.56rem; } .subscriber-search-active { font-size: 1.56rem; } .subscriber-search-inactive { font-size: 1.56rem; } } @media only screen and (min-width:64.06rem) { .article h2 { font-size: 1.62rem; } .article-sidebar h4 { font-size: 1.62rem; } .persistent-banner .quota strong .limit { font-size: 1.62rem; } .persistent-banner .quota strong .remaining { font-size: 1.62rem; } .price { font-size: 1.62rem; } .price-text { font-size: 1.62rem; } .sidebar h4 { font-size: 1.62rem; } .subscriber-search-active { font-size: 1.62rem; } .subscriber-search-inactive { font-size: 1.62rem; } } .article h3 { font-size: 1.31rem; } .persistent-banner .quota strong { font-size: 1.31rem; } .tidy-list--large > li { font-size: 1.31rem; } .article-header .byline-list { font-size: 1.12rem; } .article-header--premium .byline-list { font-size: 1.12rem; } .byline--large { font-size: 1.12rem; } .content-type--large { font-size: 1.12rem; } .eyebrow--large { font-size: 1.12rem; } .filter-list > li { font-size: 1.12rem; } .flyout-list > li { font-size: 1.12rem; } .flyout-list > li > label { font-size: 1.12rem; } .intervieweename { font-size: 1.12rem; } .interviewname { font-size: 1.12rem; } .poster--spotlight p { font-size: 1.12rem; } .product-info { font-size: 1.12rem; } .question { font-size: 1.12rem; } .slug--large { font-size: 1.12rem; } .topic--large { font-size: 1.12rem; } ul.byline--large { font-size: 1.12rem; } .comments-list p { font-size: 1rem; } .content-area--idp .idp-options__container .idp-option { font-size: 1rem; } .flyout-header { font-size: 1rem; } .price--small { font-size: 1rem; } .price-text--small { font-size: 1rem; } .product-text { font-size: 1rem; } .product-text p { font-size: 1rem; } .circulator-text-header { font-size: 0.93rem; } .message { font-size: 0.93rem; } .promo--half-right > .personalization-placement > h4 { font-size: 0.93rem; } .promo--half-right > h4 { font-size: 0.93rem; } .promo--half > .personalization-placement > h4 { font-size: 0.93rem; } .promo--half > h4 { font-size: 0.93rem; } .promo--inline > .personalization-placement > h4 { font-size: 0.93rem; } .promo--inline > h4 { font-size: 0.93rem; } .promo--right > .personalization-placement > h4 { font-size: 0.93rem; } .promo--right > h4 { font-size: 0.93rem; } .promo--wide-right > .personalization-placement > h4 { font-size: 0.93rem; } .promo--wide-right > h4 { font-size: 0.93rem; } .tab-bar--tab { font-size: 0.93rem; } .tidy-list > li { font-size: 0.93rem; } .wp-caption-text { font-size: 0.93rem; } .byline { font-size: 0.87rem; } .content-type { font-size: 0.87rem; } .eyebrow { font-size: 0.87rem; } .eyebrow--tight { font-size: 0.87rem; } .flyout-share-chooser { font-size: 0.87rem; } .follow-topic .follow-this { font-size: 0.87rem; } .follow-topic .login-this { font-size: 0.87rem; } .follow-topic .subscribe-this { font-size: 0.87rem; } .follow-topic .unfollow-this { font-size: 0.87rem; } .lineup-container .lineup-content .lineup-item--label { font-size: 0.87rem; } .load-ten-more { font-size: 0.87rem; } .slug { font-size: 0.87rem; } .sponsor-label { font-size: 0.87rem; } .stream-item .byline { font-size: 0.87rem; } .stream-item ul.byline { font-size: 0.87rem; } .topic { font-size: 0.87rem; } ul.byline { font-size: 0.87rem; } .alt-action { font-size: 0.81rem; } .byline--small { font-size: 0.81rem; } .content-type--small { font-size: 0.81rem; } .disclaimer { font-size: 0.81rem; } .eyebrow--small { font-size: 0.81rem; } .filter-crumbs > li a::after { font-size: 0.81rem; } .lineup-container .lineup-content .lineup-item--footer { font-size: 0.81rem; } .lineup-container .lineup-content .lineup-item--header-right { font-size: 0.81rem; } .publication-date { font-size: 0.81rem; } .slug--small { font-size: 0.81rem; } .store-category-selector { font-size: 0.81rem; } .tidy-list--small > li { font-size: 0.81rem; } .topic--small { font-size: 0.81rem; } .utility a i { font-size: 0.81rem; } [data-comment-badge]::after { font-size: 0.81rem; } button.alt-action { font-size: 0.81rem; } ul.byline--small { font-size: 0.81rem; } .copyright { font-size: 0.75rem; } .filter-crumbs > li a { font-size: 0.75rem; } .persistent-banner .quota { font-size: 0.75rem; } .persistent-banner .subscribe-now a { font-size: 0.75rem; } .product-hed { font-size: 0.75rem; } .utility { font-size: 0.75rem; } [data-cart-badge]::after { font-size: 0.75rem; } [data-newfollowing-badge]::after { font-size: 0.75rem; } [data-newfollowing-user-badge]::after { font-size: 0.75rem; } .artworkcaption { font-size: 0.68rem; } .caption { font-size: 0.68rem; } .credit { font-size: 0.68rem; } .sponsored .sidebar-contents { font-size: 0.87rem !important; } .sponsored .sidebar-contents dl { font-size: 0.87rem !important; } .sponsored .sidebar-contents li { font-size: 0.87rem !important; } .sponsored .sidebar-contents ol { font-size: 0.87rem !important; } .sponsored .sidebar-contents p { font-size: 0.87rem !important; } .sponsored .sidebar-contents ul { font-size: 0.87rem !important; } .sponsored .article-first-row h4.sidebar-title { font-size: 1.37rem !important; } .sponsored .sidebar-title { font-size: 1.37rem !important; } .comments-list p { line-height: 1.4; } .copyright { line-height: 1.4; } .dek { line-height: 1.4; } .message { line-height: 1.4; } .product-info { line-height: 1.4; } .product-text { line-height: 1.4; } .product-text p { line-height: 1.4; } .question { line-height: 1.4; } .wp-caption-text { line-height: 1.4; } .article-sidebar .qa { line-height: 1; } .sidebar .qa { line-height: 1; } .stream-item-info { line-height: 1; } .article-hed { line-height: 0.9; } .large-hed { line-height: 0.9; } .normal-hed { line-height: 0.9; } .xlarge-hed { line-height: 0.9; } .xxlarge-hed { line-height: 0.9; } .xxxlarge-hed { line-height: 0.9; } h1.large-hed { line-height: 0.9; } h1.normal-hed { line-height: 0.9; } h1.xlarge-hed { line-height: 0.9; } h1.xxlarge-hed { line-height: 0.9; } h1.xxxlarge-hed { line-height: 0.9; } .price { letter-spacing: -0.06rem; } .price--large { letter-spacing: -0.06rem; } .price--small { letter-spacing: -0.06rem; } .price-text { letter-spacing: -0.06rem; } .price-text--large { letter-spacing: -0.06rem; } .price-text--small { letter-spacing: -0.06rem; } .lineup-container .lineup-content .current.lineup-item--label { letter-spacing: -0.04rem; } .lineup-container .lineup-content .lineup-item--content .content-type { letter-spacing: 0px; } .lineup-container .lineup-content .lineup-item--content > h3 { letter-spacing: 0px; } .lineup-container .lineup-content .lineup-item--label { letter-spacing: 0px; } .lineup-container .lineup-content .lineup-item--header-left { letter-spacing: 0.06rem; } .sidebar-expand { letter-spacing: 0.06rem; } .eyebrow--tight { text-transform: uppercase; } .lineup-container .lineup-content .lineup-item--footer { text-transform: uppercase; } .lineup-container .lineup-content .lineup-item--header-right { text-transform: uppercase; } .lineup-container .lineup-content .lineup-item--label { text-transform: uppercase; } .popular-topic > h3 { text-transform: uppercase; } .publication-date { text-transform: uppercase; } .alt-action { text-transform: uppercase; letter-spacing: 0.06rem; } .eyebrow { text-transform: uppercase; letter-spacing: 0.06rem; } .eyebrow--large { text-transform: uppercase; letter-spacing: 0.06rem; } .eyebrow--small { text-transform: uppercase; letter-spacing: 0.06rem; } .follow-topic .follow-this { text-transform: uppercase; letter-spacing: 0.06rem; } .follow-topic .login-this { text-transform: uppercase; letter-spacing: 0.06rem; } .follow-topic .subscribe-this { text-transform: uppercase; letter-spacing: 0.06rem; } .follow-topic .unfollow-this { text-transform: uppercase; letter-spacing: 0.06rem; } .label { text-transform: uppercase; letter-spacing: 0.06rem; } .load-ten-more { text-transform: uppercase; letter-spacing: 0.06rem; } .persistent-banner .quota { text-transform: uppercase; letter-spacing: 0.06rem; } .persistent-banner .subscribe-now a { text-transform: uppercase; letter-spacing: 0.06rem; } .product-hed { text-transform: uppercase; letter-spacing: 0.06rem; } .tab-bar--tab { text-transform: uppercase; letter-spacing: 0.06rem; } .utility { text-transform: uppercase; letter-spacing: 0.06rem; } a.tab-bar--opener { text-transform: uppercase; letter-spacing: 0.06rem; } button.alt-action { text-transform: uppercase; letter-spacing: 0.06rem; } .lineup-container .lineup-content .lineup-item--header-left { text-transform: uppercase; font-weight: 700; } .slug { text-transform: uppercase; font-weight: 700; } .slug--large { text-transform: uppercase; font-weight: 700; } .slug--small { text-transform: uppercase; font-weight: 700; } .store-category-selector { text-transform: uppercase; font-weight: 700; } .topic { text-transform: uppercase; font-weight: 700; } .topic--large { text-transform: uppercase; font-weight: 700; } .topic--small { text-transform: uppercase; font-weight: 700; } .font-whitney-book { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content .lineup-item--content .content-type { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content .lineup-item--content > h3 { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content .lineup-item--content > p { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content .lineup-item--label { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content--area .lineup--back { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-container .lineup-content--area .lineup--timespan { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .lineup-item__signup { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 400; } .font-whitney-black { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content .lineup-item--content .lineup-item--order { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content .lineup-item--content .lineup-tools .lineup-item--action { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content .lineup-item--footer { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content .lineup-item--header-right { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content .current.lineup-item--label { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .lineup-container .lineup-content--area .lineup--title { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 800; } .font-whitney-bold { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 700; } .font-whitney-light { font-family: "Whitney Narrow SSm A","Whitney Narrow SSm B"; font-style: normal; font-weight: 300; } .link-list li { font-size: inherit; } .sans-serif-list li { font-size: inherit; } .font-serif { font-family: Garamond,Baskerville,"Times New Roman",serif !important; } .fonts-loaded .font-serif { font-family: Guardian !important; } .font-serif li { font-family: Garamond,Baskerville,"Times New Roman",serif; } .fonts-loaded .font-serif li { font-family: Guardian; } .font-sans-serif { font-family: Helvetica,Arial,sans-serif !important; } .fonts-loaded .font-sans-serif { font-family: National !important; } .font-sans-serif li { font-family: Helvetica,Arial,sans-serif; } .fonts-loaded .font-sans-serif li { font-family: National; } .font-caponi-slab { font-family: serif !important; } .fonts-loaded .font-caponi-slab { font-family: "Caponi Slab Web" !important; } .font-caponi-slab li { font-family: serif; } .fonts-loaded .font-caponi-slab li { font-family: "Caponi Slab Web"; } .font-sentinel { font-family: serif !important; } .fonts-loaded .font-sentinel { font-family: "Sentinel SSm A","Sentinel SSm B" !important; } .font-sentinel li { font-family: serif; } .fonts-loaded .font-sentinel li { font-family: "Sentinel SSm A","Sentinel SSm B"; } .artworkcaption { color: rgb(102, 102, 102); text-transform: uppercase; line-height: 1.3; padding-top: 0.37rem; } .caption { color: rgb(102, 102, 102); text-transform: uppercase; line-height: 1.3; padding-top: 0.37rem; } .credit { color: rgb(102, 102, 102); text-transform: uppercase; line-height: 1.3; padding-top: 0.37rem; } .disclaimer { line-height: 1.4; } .font-light { font-weight: 200 !important; } .font-weight-book { font-weight: 300 !important; } .font-weight-normal { font-weight: 400 !important; } .font-weight-medium { font-weight: 500 !important; } .font-weight-semibold { font-weight: 600 !important; } .font-bold { font-weight: 700 !important; } .font-heavy { font-weight: 900 !important; } .font-size-xxlarge { font-size: 1.5rem !important; } @media only screen and (min-width:48rem), print { .font-size-xxlarge { font-size: 1.75rem !important; } } @media only screen and (min-width:64.06rem) { .font-size-xxlarge { font-size: 1.87rem !important; } } .font-size-xlarge { font-size: 1.37rem !important; } @media only screen and (min-width:48rem), print { .font-size-xlarge { font-size: 1.56rem !important; } } @media only screen and (min-width:64.06rem) { .font-size-xlarge { font-size: 1.62rem !important; } } .font-size-large { font-size: 1.12rem !important; } .font-size-default { font-size: 1rem !important; } .font-size-small { font-size: 0.87rem !important; } .font-size-xsmall { font-size: 0.75rem !important; } .font-size-30 { font-size: 1.87rem !important; } .font-size-20 { font-size: 1.25rem !important; } .font-size-19 { font-size: 1.18rem !important; } .font-size-18 { font-size: 1.12rem !important; } .font-size-17 { font-size: 1.06rem !important; } .font-size-16 { font-size: 1rem !important; } .font-size-15 { font-size: 0.93rem !important; } .font-size-14 { font-size: 0.87rem !important; } .font-size-13 { font-size: 0.81rem !important; } .font-size-12 { font-size: 0.75rem !important; } .font-size-11 { font-size: 0.68rem !important; } .font-size-10 { font-size: 0.62rem !important; } .font-size-9 { font-size: 0.56rem !important; } .font-size-100pct { font-size: 100%; } .font-size-40pct { font-size: 40%; } .normal-hed { letter-spacing: 0px; } h1.normal-hed { letter-spacing: 0px; } .large-hed { letter-spacing: -0.06rem; } h1.large-hed { letter-spacing: -0.06rem; } .xlarge-hed { letter-spacing: -0.12rem; } h1.xlarge-hed { letter-spacing: -0.12rem; } .xxlarge-hed { letter-spacing: -0.12rem; } h1.xxlarge-hed { letter-spacing: -0.12rem; } .xxxlarge-hed { letter-spacing: -0.12rem; } h1.xxxlarge-hed { letter-spacing: -0.12rem; } .subheader.large-hed { letter-spacing: -0.03em; } .subheader.xlarge-hed { letter-spacing: -0.03em; } .subheader.xxlarge-hed { letter-spacing: -0.03em; } .subheader.xxxlarge-hed { letter-spacing: -0.03em; } .article-hed { letter-spacing: -0.06rem; } .sponsored-article-hed { line-height: 1.125; letter-spacing: -0.15rem; } .line-height-very-loose { line-height: 2.2 !important; } .line-height-loose { line-height: 1.8 !important; } .line-height-normal { line-height: 1.4 !important; } .line-height-tight { line-height: 1 !important; } .line-height-very-tight { line-height: 0.9 !important; } .line-height-very-very-tight { line-height: 0.8 !important; } .baseline-shift-up-more { top: -0.25em; position: relative; } .baseline-shift-up { top: -0.12em; position: relative; } .baseline-shift-down { top: 0.12em; position: relative; } .baseline-shift-down-more { top: 0.25em; position: relative; } .spacing-very-wide { letter-spacing: 0.12em !important; } .spacing-wide { letter-spacing: 0.06em !important; } .no-letter-space { letter-spacing: 0px !important; } .spacing-neutral { letter-spacing: 0px !important; } .spacing-narrow { letter-spacing: -0.03em !important; } .spacing-very-narrow { letter-spacing: -0.06em !important; } .spacing-very-very-narrow { letter-spacing: -0.09em !important; } .letter-spacing-narrow { letter-spacing: -0.06rem !important; } .font-tight { letter-spacing: 0px !important; } .letter-spacing-normal { letter-spacing: 0px !important; } .letter-spacing-wide { letter-spacing: 0.06rem !important; } .letter-spacing-very-wide { letter-spacing: 0.12rem !important; } .italic { font-style: italic; } .italics { font-style: italic; } .mediatitle { font-style: italic; } .oblique { font-style: italic; } .font-style-normal { font-style: normal; } .uppercase { text-transform: uppercase !important; } .capitalized { text-transform: capitalize !important; } .lowercase { text-transform: lowercase !important; } .nocase { text-transform: none !important; } .preserve-case { text-transform: none !important; } .preservecase { text-transform: none !important; } .text-transform-normal { } .nowrap { white-space: nowrap; } .text-overflow { overflow: hidden; -ms-text-overflow: ellipsis; } .is-underlined { text-decoration: underline !important; } .antialiased { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-smooth: always; } .non-antialiased { -webkit-font-smoothing: none; -moz-osx-font-smoothing: auto; font-smooth: never; } .text--align-center { text-align: center; } .text--align-left { text-align: left !important; } .section-label { text-align: center; } .article h3 { margin-bottom: 0.3rem; } .article p a { color: rgb(7, 135, 177); } .article p a:hover { color: rgb(5, 98, 128); } .article-larger h2 { font-size: 1.87rem; } .article-larger h3 { font-size: 1.56rem; margin-bottom: 0.4rem; } .article-larger > ol { line-height: 2.15; font-size: 1.18rem; } .article-larger > p { line-height: 2.15; font-size: 1.18rem; } .article-larger > ul { line-height: 2.15; font-size: 1.18rem; } .inverted.slug--large { color: rgb(255, 255, 255); } .inverted.slug--small { color: rgb(255, 255, 255); } .inverted.slug { color: rgb(255, 255, 255); } .inverted.slug--large a { color: rgb(255, 255, 255); } .inverted.slug--small a { color: rgb(255, 255, 255); } .inverted.slug a { color: rgb(255, 255, 255); } .topic { color: rgb(200, 37, 2); } .topic--large { color: rgb(200, 37, 2); } .topic--small { color: rgb(200, 37, 2); } .topic a { color: rgb(200, 37, 2); } .topic--large a { color: rgb(200, 37, 2); } .topic--small a { color: rgb(200, 37, 2); } .inverted.topic--large { color: rgb(255, 255, 255); } .inverted.topic--small { color: rgb(255, 255, 255); } .inverted.topic { color: rgb(255, 255, 255); } .inverted.topic--large a { color: rgb(255, 255, 255); } .inverted.topic--small a { color: rgb(255, 255, 255); } .inverted.topic a { color: rgb(255, 255, 255); } .content-type { text-transform: uppercase; } .content-type--large { text-transform: uppercase; } .content-type--small { text-transform: uppercase; } .eyebrow { color: rgb(57, 61, 65); } .eyebrow--large { color: rgb(57, 61, 65); } .eyebrow--small { color: rgb(57, 61, 65); } .eyebrow--tight { color: rgb(57, 61, 65); } .byline a { color: inherit; } .byline--large a { color: inherit; } .byline--small a { color: inherit; } .stream-item .byline { color: rgb(136, 136, 136); } .stream-item .byline a { color: rgb(136, 136, 136); } .panel .byline li { color: rgb(102, 102, 102); } .dek { color: rgb(136, 136, 136); margin-bottom: 0.37rem; } .dek p { line-height: inherit; font-size: inherit; font-weight: inherit; margin-bottom: 0px; } .wp-caption-text { margin-bottom: 0.37rem; } .product-text { overflow: hidden; } .product-text p { overflow: hidden; } .product-text p { margin-bottom: 0px; } .utility a { transition:color 0.3s ease-out; color: rgb(136, 136, 136); } .utility a i { color: rgb(200, 37, 2); } .utility a:hover { color: rgb(17, 17, 17); } .pubdate { color: rgb(35, 156, 170); text-transform: uppercase; } .sponsor-label { color: rgb(102, 102, 102); font-weight: 700; } .sponsor-label a { color: rgb(102, 102, 102); } a.alt-action { color: rgb(200, 37, 2); } .price--large::before { content: "$"; } .price--small::before { content: "$"; } .price::before { content: "$"; } .product-hed { color: rgb(171, 175, 176); font-weight: 700; } .navigation-header { transition:font-size 0.3s ease-in-out; } .visual-library-header { transition:font-size 0.3s ease-in-out; } .intervieweename { font-weight: 700; } .interviewname { font-weight: 700; } .question { font-weight: 700; } .question { margin-bottom: -1.25rem; display: block; } .qemphasis { font-style: italic; } .top-header { width: 100%; z-index: 4900; } @media only screen and (min-width:64.06rem) { .top-header { height: 0px; position: absolute; } } .top-header--bar { height: 50px; padding-right: 38px; } .top-header--register { padding-right: 9px; padding-left: 11px; border-left-color: rgb(171, 175, 176); border-left-width: 1px; border-left-style: solid; white-space: nowrap; } .top-header--register:hover { color: rgb(7, 135, 177); } @media only screen and (max-width:64rem) { .top-header--register:hover { color: rgb(34, 34, 34); } } .top-header--subscribe { color: rgb(34, 34, 34); font-weight: 900; } .top-header--subscribe:hover { color: rgb(7, 135, 177); } .top-header--shopping-cart { color: rgb(34, 34, 34); } .top-header--shopping-cart:hover { color: rgb(7, 135, 177); } @media only screen and (max-width:64rem) { .top-header--shopping-cart:hover { color: rgb(1, 1, 1); } } .header-menu { transition:visibility 0.15s, opacity 0.15s, transform 0.15s; z-index: -1; } :not(.active).header-menu { visibility: hidden; opacity: 0; transform: translateY(-1rem); -webkit-transform: translateY(-1rem); } @media only screen and (max-width:47.93rem) { .header-menu { width: 100%; border-bottom-color: rgb(171, 175, 176); border-bottom-width: 4px; border-bottom-style: solid; box-shadow: inset 0px 4px 2px -2px #abafb0; } } @media only screen and (min-width:48rem), print { .header-menu { border: 4px solid rgb(171, 175, 176); border-image: none; top: calc(50px + .75rem); width: 25rem; right: 0.75rem; } } .cart-container { -ms-overflow-y: auto; max-height: calc(85vh - 10rem); } .global-header-button { height: 50px; min-width: 50px; } .active.global-header-button { color: rgb(35, 156, 170); } .is-signed:hover { color: rgb(7, 135, 177); } .top-header--menu-link { height: 50px; } @media only screen and (min-width:64.06rem) { .top-header--menu-link { width: 90px; } } @media only screen and (max-width:64rem) { .top-header--menu-link { width: 50px; } } .toggled.top-header--menu-link { color: rgb(35, 156, 170); } .toggled.top-header--menu-link .top-header--menu-icon-open { display: none; } :not(.toggled).top-header--menu-link .top-header--menu-icon-close { display: none; } .top-header--logo { width: 54px; height: 30px; } .search-suggestions { border-width: 0px 1px 1px; border-style: solid; border-color: rgb(204, 204, 204); border-image: none; } input:not(:focus) + :not(:hover).search-suggestions { display: none; } .site-logo { background: 0px 0px; width: 100%; height: 0px; overflow: visible; position: relative; } @media print { .site-logo { height: 4.5rem; } } .brand { display: none; position: absolute; z-index: 4899; } @media print { .brand { left: 0.75rem; display: block; } } @media only screen and (min-width:64.06rem) { .brand { left: 1.5rem; } } @media only screen and (min-width:64.06rem) { .brand { top: 4.5rem; width: 7.62rem; display: block; } } #home .site-logo { display: none; } .persistent-banner { background: rgb(200, 37, 2); margin: 0px; padding: 0.18rem 0px 0.56rem; width: 100%; height: 33px; color: rgb(255, 255, 255); line-height: 1; } .persistent-banner .quota { color: rgb(255, 255, 255); } .persistent-banner .quota strong { top: 0.18rem; position: relative; } .persistent-banner .subscribe-now a { color: rgb(255, 255, 255); text-transform: uppercase; } .persistent-banner .subscribe-now a:hover { color: rgb(255, 255, 255); } .persistent-banner .is-transparent { opacity: 0.8; -webkit-font-smoothing: none; } .subscribers .persistent-banner { background: rgb(35, 156, 170); padding: 0.37rem 0px; } .subscribers .persistent-banner .quota { display: none; } .hbr-video-logo { width: 176px; height: 25px; } .autosuggest-shift-left-34 { margin-left: -34px; position: absolute; } footer { padding: 0.75rem 0px; } footer ul { font-size: inherit; -ms-text-overflow: ellipsis; } footer a { color: rgb(57, 61, 65); } footer .icon-ul { margin-left: 1.54em; } footer .footer-container { width: 96%; } footer .footer-container--top { flex-flow:row wrap; width: 100%; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -webkit-flex-wrap: wrap; } footer .footer-container--top .footer-logo { flex:1 1 0px; -webkit-box-flex: 1; -webkit-flex: 1; } footer .logo { max-width: 8.75rem; } footer .panel-container { flex:2 1 0px; -webkit-box-flex: 2; -webkit-flex: 2; } footer .panel-inner-container { display: flex; } footer .panel { background: rgb(255, 255, 255); padding: 0.75rem !important; border: 1px solid rgb(213, 215, 216); flex:1 1 0px; border-image: none; width: 100%; height: 3.78rem; -webkit-box-flex: 1; -webkit-flex: 1; } footer .placeholder { flex:1 1 0px; -webkit-box-flex: 1; -webkit-flex: 1; } footer .icon-caret-right { display: none; } footer .footer-content--list { padding-right: 1.5rem !important; padding-bottom: 1.5rem !important; padding-left: 0.75rem !important; border-left-color: rgb(213, 215, 216); border-left-width: 1px; border-left-style: solid; } @media only screen and (min-width:64.06rem) { footer .footer-content--list { width: 16.66%; } } @media only screen and (max-width:64rem) and (min-width:48rem) { footer .footer-content--list { width: 30%; } } @media only screen and (max-width:47.93rem) { footer h6 { font-size: 0.87rem !important; margin-top: 0.75rem; display: inline; } footer li { font-size: 0.93rem !important; } footer .footer-item--arrow { transition:transform 0.15s; transform: rotate(0deg); -webkit-transform: rotate(0); } footer .show-list ul { display: block; } footer .show-list .footer-item--arrow { transform: rotate(90deg); -webkit-transform: rotate(90deg); } footer .footer-container { width: 92%; } footer .footer-container--top { display: block; } footer .icon-caret-right { display: block; } footer .panel-inner-container { display: block; } footer .panel-container { width: 100%; clear: both; margin-top: 1.5rem; margin-bottom: 1.5rem; float: left; } footer .hide-for-small--list { display: none; } footer .footer-content--list { padding: 0px !important; width: 100%; margin-bottom: 0px !important; border-bottom-color: rgb(213, 215, 216); border-left-color: currentColor; border-bottom-width: 1px; border-left-width: 0px; border-bottom-style: solid; border-left-style: none; cursor: pointer; } footer .footer-content--last-list { border: 0px currentColor; border-image: none; } footer .footer-content--container { border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } } .copyright { color: rgb(171, 175, 176); } .copyright-block { margin-left: -75px; } #home-poster-container { position: relative; } .global-nav { transition:visibility 0.15s, opacity 0.15s, transform 0.15s; position: absolute; z-index: 5000; -ms-overflow-y: auto; } @media only screen and (min-width:48rem), print { .global-nav { width: 14rem; } } @media only screen and (max-width:47.93rem) { .global-nav { width: 75%; } } :not(.active):not(.is-contained).global-nav { visibility: hidden; opacity: 0; transform: translateX(-1rem); -webkit-transform: translateX(-1rem); } .is-contained.global-nav { bottom: 0px; } @media only screen and (max-width:64rem) and (min-width:48rem) { .is-contained.global-nav { top: 0px !important; } } @media only screen and (min-width:64.06rem) { .is-contained.global-nav { top: 50px !important; } } :not(.is-contained).global-nav { max-height: calc(100vh - 50px - 33px); box-shadow: 2px 2px 2px #eff0f0; } .nav-magazine-cover { width: 6.25rem; } .sign-in-error { position: relative; } .sign-in-error-box { background: rgb(255, 255, 255); margin: 0.75rem 0.37rem; padding: 0.75rem; display: none; } .sign-in-error-box::before { left: -6px; top: 1.5rem; width: 0px; height: 0px; border-top-color: transparent; border-right-color: rgb(255, 255, 255); border-bottom-color: transparent; border-top-width: 6px; border-right-width: 6px; border-bottom-width: 6px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; display: none; position: absolute; content: ""; } @media only screen and (min-width:48rem), print { .sign-in-error-box::before { display: block; } } @media only screen and (min-width:48rem), print { :not(.sign-in-page).sign-in-error-box { left: 90%; top: -0.75rem; width: 70%; position: absolute; } } .login-form-close { display: none; } .login-form-form { display: none; } .login-form-help { display: none; } .login-form-pending { display: none; } .sign-in.guest .login-form-close { display: block; } .sign-in.guest .login-form-form { display: block; } .sign-in.guest .login-form-help { display: block; } .pending.sign-in.guest .login-form-form { display: none; } .pending.sign-in.guest .login-form-pending { display: block; } .fail.sign-in.guest .is-contained .sign-in-error-box { display: block; } .fail.sign-in.guest .is-open .sign-in-error-box { display: block; } .fail.sign-in.guest .sign-in-page.sign-in-error-box { display: block; } .fail.sign-in.guest .login-form-form input[type=password] { border: 3px solid rgb(252, 165, 31); border-image: none; } .fail.sign-in.guest .login-form-form input[type=text] { border: 3px solid rgb(252, 165, 31); border-image: none; } .filter-crumbs { margin: 0px; display: inline; } .filter-crumbs > li { background: rgb(239, 240, 240); padding: 0.18rem 0.37rem; border: 1px solid rgb(213, 215, 216); border-image: none; line-height: 1; margin-right: 0.37rem; display: inline-block; } .filter-crumbs > li a { margin: 0px; padding: 0px; color: rgb(117, 126, 133); text-transform: uppercase; } .filter-crumbs > li a::after { top: 0.12em; font-family: HBRIcons; position: relative; content: " \e012"; } .filter-crumbs + a { display: inline; } .anchor-padding-top { top: -50px; display: block; visibility: hidden; position: relative; } .sticky-progress-meter { width: 100%; } .sticky-tools { width: 100%; } .sticky-top-header { width: 100%; } @media print { .sticky-progress-meter { display: none; } .sticky-tools { display: none; } .sticky-top-header { display: none; } } .persistent-banner { bottom: 0px; position: fixed; z-index: 7000; } .sticky-top-header { top: 0px; position: relative; z-index: 6000; } .sticky-tools { top: 3.12rem; z-index: 4900; } .sticky-progress-meter { top: 6.62rem; position: absolute; z-index: 4900; } .fixedsticky-forced.fixedsticky { position: fixed; } .fixedsticky-on.fixedsticky { position: fixed; } .down.fixedsticky { display: none; } .fixedsticky-dummy { display: none; } .fixedsticky-forced + .fixedsticky-dummy { display: block; } .fixedsticky-on + .fixedsticky-dummy { display: block; } .header-article-title { overflow: hidden; font-size: 13px; font-weight: 800; margin-left: 18%; display: none; white-space: nowrap; -ms-text-overflow: ellipsis; } .on.header-article-title { display: block; } @media all and (max-width:1024px) and (min-width:300px) { .on.header-article-title { display: none; } } @media all and (orientation:portrait) and (max-width:1024px) and (min-width:768px) { .header-article-title { width: 100px; margin-left: 0px; white-space: nowrap; -ms-text-overflow: ellipsis; } } @media all and (orientation:landscape) and (max-width:1024px) and (min-width:768px) { .header-article-title { width: 300px; margin-left: 0px; white-space: nowrap; -ms-text-overflow: ellipsis; } } @media all and (orientation:portrait) and (max-width:768px) and (min-width:300px) { .header-article-title { width: 100px; margin-left: 0px; white-space: nowrap; -ms-text-overflow: ellipsis; } } @media all and (orientation:landscape) and (max-width:768px) and (min-width:300px) { .header-article-title { width: 200px; margin-left: 0px; white-space: nowrap; -ms-text-overflow: ellipsis; } } [data-cart-badge]::after { background: rgb(200, 37, 2); padding: 0.18rem 0.12rem; border-radius: 0.75rem; height: 1.12rem; text-align: center; color: rgb(255, 255, 255); line-height: 1; letter-spacing: 0px; min-width: 1.12rem; } [data-comment-badge]::after { background: rgb(200, 37, 2); padding: 0.18rem 0.12rem; border-radius: 0.75rem; height: 1.12rem; text-align: center; color: rgb(255, 255, 255); line-height: 1; letter-spacing: 0px; min-width: 1.12rem; } [data-newfollowing-badge]::after { background: rgb(200, 37, 2); padding: 0.18rem 0.12rem; border-radius: 0.75rem; height: 1.12rem; text-align: center; color: rgb(255, 255, 255); line-height: 1; letter-spacing: 0px; min-width: 1.12rem; } [data-newfollowing-user-badge]::after { background: rgb(200, 37, 2); padding: 0.18rem 0.12rem; border-radius: 0.75rem; height: 1.12rem; text-align: center; color: rgb(255, 255, 255); line-height: 1; letter-spacing: 0px; min-width: 1.12rem; } .flyout { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .light-box-shadow { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .notification-box { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .popup-slider { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .sign-in-error-box { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .slider-promo { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } popup-slider { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } slider-promo { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.2); } .faint-box-shadow { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.1); } .hbr-checkbox label:hover { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.1); } .popular-topic { box-shadow: 0px 0px 0.75rem 0px rgba(50,50,50,0.1); } .sidebar .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--edgeful .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--full .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--half .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--half-right .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--right .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .sidebar--wide-right .sidebar-contents::after { margin-top: 10em; margin-bottom: -10em; display: block; content: ""; } .magazine-carousel { margin: 0px 1.87rem; } .poster-carousel { margin: 0px 1.87rem; } .store-carousel { margin: 0px 1.87rem; } .slick-next { width: 1.87rem; height: 4.93rem; margin-top: -2.12rem; } .slick-prev { width: 1.87rem; height: 4.93rem; margin-top: -2.12rem; } .slick-prev { left: -1.87rem; } .slick-next { right: -1.87rem; } .slick-next::before { font-size: 4.5rem; } .slick-prev::before { font-size: 4.5rem; } .slick-dots { text-align: right; } .slick-slider .carousel-item.row { margin-right: 0px; margin-left: 0px; } .article-header { margin-top: 1.5rem; } @media only screen and (min-width:64.06rem) { .article-header { margin-top: 4.37rem; } } .article-header--premium { margin-top: 0.75rem; } .article-header .byline { padding-bottom: 0.37rem; } .article-header--premium .byline { padding-bottom: 0.37rem; } .article-header .publication-date { padding-bottom: 1.5rem; } .article-header--premium .publication-date { padding-bottom: 1.5rem; } .sidebar--circulator { line-height: 1.3333; } .sidebar--circulator ul { margin-bottom: 0px; } .circulator-text-header { color: rgb(57, 61, 65); padding-top: 2rem; } .authors p { line-height: 1.6; } .sponsored hr { border-width: 1px 0px 0px; border-style: solid; border-color: rgb(197, 200, 201); border-image: none; } .sponsored ul.has-vertical-dividers > li { border-left-color: rgb(197, 200, 201); border-left-width: 1px; border-left-style: solid; } .sponsored ul.has-vertical-dividers > li:first-child { border-left-color: currentColor; border-left-width: 0px; border-left-style: none; } .sponsored .article-sidebar { background-color: rgb(255, 255, 255); } .sponsored .sidebar--half.article-sidebar { padding: 1.5rem !important; } .sponsored .article-first-row h4.sidebar-title { color: rgb(16, 155, 2) !important; } .sponsored .sidebar-title { color: rgb(16, 155, 2) !important; } .sponsored .sidebar-contents { line-height: normal !important; } .sponsored .sidebar-contents dl { line-height: normal !important; } .sponsored .sidebar-contents li { line-height: normal !important; } .sponsored .sidebar-contents ol { line-height: normal !important; } .sponsored .sidebar-contents p { line-height: normal !important; } .sponsored .sidebar-contents ul { line-height: normal !important; } div.long.article-first-row > p:first-of-type::first-letter { color: rgb(34, 34, 34); line-height: 0.62em; font-size: 825%; font-weight: 900; float: left; } div.premium.article-first-row > p:first-of-type::first-letter { color: rgb(34, 34, 34); line-height: 0.62em; font-size: 825%; font-weight: 900; float: left; } p > span.dropcap-letter { color: rgb(34, 34, 34); line-height: 0.62em; font-size: 825%; font-weight: 900; float: left; } div.long.article-first-row > p:first-of-type { overflow: hidden; } div.premium.article-first-row > p:first-of-type { overflow: hidden; } div.article-executive-summary > p:first-of-type { padding-top: 2.5rem; } div.article-first-row > p:first-of-type { padding-top: 2.5rem; } div.long.article-first-row.article-larger > p:first-of-type::first-letter { font-size: 900%; } div.premium.article-first-row.article-larger > p:first-of-type::first-letter { font-size: 900%; } article-content > :last-of-type.row > .content-area--article > .article > p:last-child::after { line-height: normal; padding-left: 0.18rem; font-family: HBRIcons; content: "\e023"; } article-content > :last-of-type.row > .content-area--article > .article > ul:last-child > li:last-child::after { line-height: normal; padding-left: 0.18rem; font-family: HBRIcons; content: "\e023"; } article-content > :last-of-type.row > .content-area--idp > .article > p:last-child::after { line-height: normal; padding-left: 0.18rem; font-family: HBRIcons; content: "\e023"; } article-content > :last-of-type.row > .content-area--idp > .article > ul:last-child > li:last-child::after { line-height: normal; padding-left: 0.18rem; font-family: HBRIcons; content: "\e023"; } .blog-video-embed { height: 0px; overflow: hidden; padding-top: 0px; padding-bottom: 56.34%; margin-bottom: 1rem; position: relative; } .embed-video { height: 0px; overflow: hidden; padding-top: 0px; padding-bottom: 56.34%; margin-bottom: 1rem; position: relative; } .widescreen.blog-video-embed { padding-bottom: 56.34%; } .widescreen.embed-video { padding-bottom: 56.34%; } .vimeo.blog-video-embed { padding-top: 0px; } .vimeo.embed-video { padding-top: 0px; } .blog-video-embed embed { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .blog-video-embed iframe { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .blog-video-embed object { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .blog-video-embed video { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .embed-video embed { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .embed-video iframe { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .embed-video object { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .embed-video video { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; } .youtube.blog-video-embed { padding-top: 1.56rem; padding-bottom: 67.5%; } .youtube.embed-video { padding-top: 1.56rem; padding-bottom: 67.5%; } .article-tools { padding: 9px 0px 6px; overflow: hidden; } .article-tools li { line-height: 1; vertical-align: middle; } .article-tools li i { line-height: 1.8; } .article-tools li .price--small { line-height: 1.4; font-weight: 700; vertical-align: middle; } @media print { .article-tools { display: none; } } [data-cart-badge] { position: relative; } [data-comment-badge] { position: relative; } [data-newfollowing-badge] { position: relative; } [data-newfollowing-user-badge] { position: relative; } [data-cart-badge]::after { display: inline-block; position: absolute; } [data-comment-badge]::after { display: inline-block; position: absolute; } [data-newfollowing-badge]::after { display: inline-block; position: absolute; } [data-newfollowing-user-badge]::after { display: inline-block; position: absolute; } [data-comment-badge]::after { top: -9px; right: -15px; content: attr(data-comment-badge); } @media only screen and (max-width:47.93rem) { [data-comment-badge]::after { display: none; } } [data-cart-badge]::after { top: 27px; right: 1px; content: attr(data-cart-badge); } [data-newfollowing-badge]::after { background: rgb(35, 156, 170); top: 8px; padding-left: 0px; content: attr(data-newfollowing-badge); } [data-newfollowing-user-badge]::after { background: rgb(35, 156, 170); left: 15px; top: 14px; content: attr(data-newfollowing-user-badge); } .progress-meter { padding: 0px; display: none; } .progress-meter .progress-meter-granules { background-position: 0px 0px; padding: 0px; border: 0px currentColor; border-image: none; height: 3px; margin-bottom: 0px; background-repeat: repeat-x; background-color: transparent; } .progress-meter .progress-meter-granules .meter-granules-filled { background: repeat-x 0px 0px rgb(13, 146, 180); margin: 0px; padding: 0px; border: 0px currentColor; border-image: none; width: 0px; height: 100%; display: block; } .article-sidebar { padding: 2rem 0px 1.25rem 1.5rem !important; margin-bottom: 1.5rem !important; border-top-color: rgb(213, 215, 216); border-bottom-color: rgb(213, 215, 216); border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid; } .sidebar { padding: 2rem 0px 1.25rem 1.5rem !important; margin-bottom: 1.5rem !important; border-top-color: rgb(213, 215, 216); border-bottom-color: rgb(213, 215, 216); border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid; } @media only screen and (min-width:48rem), print { .article-sidebar { margin-bottom: 3rem !important; } .sidebar { margin-bottom: 3rem !important; } } .sidebar--half.article-sidebar { padding-bottom: 2rem !important; margin-bottom: 2rem !important; } .sidebar--half-right.article-sidebar { padding-bottom: 2rem !important; margin-bottom: 2rem !important; } .sidebar--half.sidebar { padding-bottom: 2rem !important; margin-bottom: 2rem !important; } .sidebar--half-right.sidebar { padding-bottom: 2rem !important; margin-bottom: 2rem !important; } .sidebar--right.article-sidebar { margin-top: 0px !important; } .sidebar--right.sidebar { margin-top: 0px !important; } .article-sidebar tr:last-child td { padding-bottom: 0px; } .sidebar tr:last-child td { padding-bottom: 0px; } .article-sidebar .qa { padding-top: 0.75rem; } .sidebar .qa { padding-top: 0.75rem; } .article-sidebar .qa .question { margin-top: 1.5rem; margin-bottom: 0.37rem; display: block; } .sidebar .qa .question { margin-top: 1.5rem; margin-bottom: 0.37rem; display: block; } .article-ideainbrief { display: none; } .inline.IB.derivative { display: none; } .sidebar { line-height: 1.3333; } .sidebar--edgeful { line-height: 1.3333; } .sidebar--full { line-height: 1.3333; } .sidebar--half { line-height: 1.3333; } .sidebar--half-right { line-height: 1.3333; } .sidebar--right { line-height: 1.3333; } .sidebar--wide-right { line-height: 1.3333; } .sidebar p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--edgeful p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--full p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--half p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--half-right p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--right p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .sidebar--wide-right p { line-height: 1.3333; font-size: inherit !important; margin-bottom: 0.62rem !important; } .alt.sidebar--edgeful { background-color: rgb(203, 226, 228); } .alt-1.sidebar--edgeful { background-color: rgb(203, 226, 228); } .alt.sidebar--full { background-color: rgb(203, 226, 228); } .alt-1.sidebar--full { background-color: rgb(203, 226, 228); } .alt.sidebar--half-right { background-color: rgb(203, 226, 228); } .alt-1.sidebar--half-right { background-color: rgb(203, 226, 228); } .alt.sidebar--half { background-color: rgb(203, 226, 228); } .alt-1.sidebar--half { background-color: rgb(203, 226, 228); } .alt.sidebar--right { background-color: rgb(203, 226, 228); } .alt-1.sidebar--right { background-color: rgb(203, 226, 228); } .alt.sidebar--wide-right { background-color: rgb(203, 226, 228); } .alt-1.sidebar--wide-right { background-color: rgb(203, 226, 228); } .alt.sidebar { background-color: rgb(203, 226, 228); } .alt-1.sidebar { background-color: rgb(203, 226, 228); } .alt-2.sidebar--edgeful { background-color: rgb(222, 228, 231); } .alt-2.sidebar--full { background-color: rgb(222, 228, 231); } .alt-2.sidebar--half-right { background-color: rgb(222, 228, 231); } .alt-2.sidebar--half { background-color: rgb(222, 228, 231); } .alt-2.sidebar--right { background-color: rgb(222, 228, 231); } .alt-2.sidebar--wide-right { background-color: rgb(222, 228, 231); } .alt-2.sidebar { background-color: rgb(222, 228, 231); } .alt-3.sidebar--edgeful { background-color: rgb(226, 244, 247); } .alt-3.sidebar--full { background-color: rgb(226, 244, 247); } .alt-3.sidebar--half-right { background-color: rgb(226, 244, 247); } .alt-3.sidebar--half { background-color: rgb(226, 244, 247); } .alt-3.sidebar--right { background-color: rgb(226, 244, 247); } .alt-3.sidebar--wide-right { background-color: rgb(226, 244, 247); } .alt-3.sidebar { background-color: rgb(226, 244, 247); } .sidebar .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--edgeful .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--full .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--half .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--half-right .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--right .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar--wide-right .sidebar-title { color: rgb(12, 175, 252); line-height: 0.9 !important; } .sidebar .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--edgeful .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--full .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--half .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--half-right .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--right .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar--wide-right .sidebar-contents { margin: 0.75rem 0px; color: rgb(102, 102, 102); padding-top: 0px; padding-right: 0.75rem; padding-bottom: 0px; padding-left: 0px !important; font-size: 1.12rem !important; } .sidebar .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--edgeful .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--edgeful .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--full .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--full .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--half .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--half .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--half-right .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--half-right .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--right .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--right .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar--wide-right .sidebar-contents ol { font-family: inherit !important; font-size: inherit !important; } .sidebar--wide-right .sidebar-contents ul { font-family: inherit !important; font-size: inherit !important; } .sidebar .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--edgeful .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--edgeful .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--full .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--full .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--half .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--half .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--half-right .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--half-right .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--right .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--right .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--wide-right .sidebar-contents ol li { margin: 0.75rem 0px; line-height: 1.3333; } .sidebar--wide-right .sidebar-contents ul li { margin: 0.75rem 0px; line-height: 1.3333; } @media print { .sidebar { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--edgeful { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--full { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--half { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--half-right { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--right { border: 1px dotted rgb(0, 0, 0); border-image: none; } .sidebar--wide-right { border: 1px dotted rgb(0, 0, 0); border-image: none; } } .promo--half-right > .personalization-placement > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--half-right > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--half > .personalization-placement > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--half > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--inline > .personalization-placement > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--inline > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--right > .personalization-placement > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--right > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--wide-right > .personalization-placement > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--wide-right > h4 { text-transform: uppercase; padding-top: 0.75rem; margin-bottom: 0.75rem; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--half-right > .promo-contents > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--half > .personalization-placement > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--half > .promo-contents > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--inline > .personalization-placement > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--inline > .promo-contents > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--right > .personalization-placement > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--right > .promo-contents > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) { line-height: 1; margin-left: 0px; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--half-right > .promo-contents > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--half > .personalization-placement > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--half > .promo-contents > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--inline > .personalization-placement > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--inline > .promo-contents > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--right > .personalization-placement > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--right > .promo-contents > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--wide-right > .promo-contents > ul:not(.stream-utility) .byline { color: rgb(136, 136, 136); } .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--half-right > .promo-contents > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--half > .personalization-placement > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--half > .promo-contents > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--inline > .personalization-placement > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--inline > .promo-contents > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--right > .personalization-placement > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--right > .promo-contents > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li { padding: 1.12rem 0px 0.75rem; overflow: hidden; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; display: block; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--half-right > .promo-contents > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--half > .personalization-placement > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--half > .promo-contents > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--inline > .personalization-placement > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--inline > .promo-contents > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--right > .personalization-placement > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--right > .promo-contents > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li:first-of-type { padding-top: 0px; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--half-right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--half > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--half > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--inline > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--inline > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info { margin-bottom: 0px; } .promo--half-right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--half-right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--half > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--half > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--inline > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--inline > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--wide-right > .personalization-placement > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } .promo--wide-right > .promo-contents > ul:not(.stream-utility) > li > .stream-item-info > ul { line-height: 1; } @media only screen and (min-width:64.06rem) { .promo--half-right { padding-left: 1.5rem; } .promo--wide-right { padding-left: 1.5rem; } } .promo--inline { margin: 1.5rem 0px; overflow: hidden; padding-bottom: 0.75rem; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } .height--collapse { height: 0px; overflow: hidden; } @media print { .height--collapse { height: auto; } } .sidebar-collapse { padding: 0.37rem 0.37rem 0px 1.5rem; float: right; } .sidebar-collapse .white { color: rgb(0, 0, 0) !important; } .sidebar-collapse:hover { cursor: pointer; } @media print { .sidebar-collapse { display: none; } } .sidebar-fade { display: none; } .sidebar-expand { padding: 0.56rem 0.81rem 0.62rem; text-transform: uppercase; margin-top: 0.75rem !important; margin-bottom: 0px; } .sidebar-expand i { color: rgb(200, 37, 2); } .sidebar-expand:hover { cursor: pointer; } .sidebar-expand .icon-caret-right { display: none; } @media print { .sidebar-expand { display: none; } } .sidebar .sidebar { margin: 0px; padding: 0px; } .article-callout { margin: 1.5rem 0px 1.5rem 1.87rem; padding: 0px; width: 80%; color: rgb(136, 136, 136); position: relative; min-width: 15rem; } @media only screen and (min-width:48rem), print { .article-callout { margin: 1.5rem 0px 1.5rem 3.75rem; } } .article-callout p { line-height: 1.1; letter-spacing: 0.02rem; } .full-width-image { background-position: 50% 50%; height: 10em; background-size: cover; } @media only screen and (min-width:48rem), print { .full-width-image { height: 20em; } } @media only screen and (min-width:64.06rem) { .full-width-image { height: 30em; } } @media only screen and (min-width:84.43rem) { .full-width-image { height: 40em; } } .artwork-oldblog { display: none; } .artwork-narrow { padding-bottom: 1rem; } @media only screen and (min-width:48rem), print { .artwork-narrow { width: 50%; padding-right: 2.5rem; float: left; } } .comments-list { list-style: none; margin-left: 0px; } .comments-list h5 small { color: rgb(136, 136, 136); padding-left: 0.75rem; } .comments-list p { color: rgb(136, 136, 136); margin-bottom: 0.75rem; } .comments-list ul { list-style: none; margin-left: 1.5rem; } @media only screen and (min-width:48rem), print { .comments-list ul { margin-left: 3rem; } } .comments-list > li { margin-bottom: 1.5rem; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } .comments-list > li:last-child { border-bottom-color: currentColor; border-bottom-width: 0px; border-bottom-style: none; } .comments-list .comment-text { margin-bottom: 0.75rem; } .comments-list .comment-footer { color: rgb(136, 136, 136); } .comments-list .comment-footer span { color: rgb(136, 136, 136); } .comments-list .comment-footer .vote-down:hover { color: rgb(102, 102, 102); cursor: pointer; } .comments-list .comment-footer .vote-up:hover { color: rgb(102, 102, 102); cursor: pointer; } .comments-list .comment-footer .voted { color: rgb(35, 156, 170); } .comments-anchor { top: -166px; display: block; visibility: hidden; position: relative; } @media only screen and (max-width:47.93rem) { .comments-anchor { top: -98px; } } .circulator-image { width: 25%; text-align: center; overflow: hidden; min-width: 7.75rem; max-width: 9.37rem; } @media only screen and (min-width:48rem), print { .circulator-image { min-width: 10.87rem; max-width: 15.87rem; } } .flyout { background: rgb(255, 255, 255); margin: 0.37rem 0px; padding: 0.75rem; width: 50vw; position: absolute; z-index: 9000; min-height: 5rem; min-width: 14.37rem; max-width: 20rem; } .flyout::before { left: 1.5rem; top: -0.37rem; width: 0px; height: 0px; border-right-color: transparent; border-bottom-color: rgb(239, 240, 240); border-left-color: transparent; border-right-width: 0.45rem; border-bottom-width: 0.37rem; border-left-width: 0.45rem; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; position: absolute; content: ""; } .pointer-top-center.flyout::before { left: 48%; top: -0.37rem; } .pointer-top-right.flyout::before { left: auto; top: -0.37rem; right: 1.5rem; } .pointer-bottom-left.flyout::before { top: auto; bottom: -0.37rem; border-top-color: rgb(255, 255, 255); border-top-width: 0.37rem; border-bottom-width: 0px; border-top-style: solid; } .pointer-bottom-center.flyout::before { left: 48%; top: auto; bottom: -0.37rem; border-top-color: rgb(255, 255, 255); border-top-width: 0.37rem; border-bottom-width: 0px; border-top-style: solid; } .pointer-bottom-right.flyout::before { left: auto; top: auto; right: 1.5rem; bottom: -0.37rem; border-top-color: rgb(255, 255, 255); border-top-width: 0.37rem; border-bottom-width: 0px; border-top-style: solid; } .flyout > .flyout-header { margin-right: -0.75rem; margin-left: -0.75rem; } .flyout > .flyout-list { margin-right: -0.75rem; margin-left: -0.75rem; } .flyout > hr { margin: 0.37rem -0.75rem; } .flyout > .message { margin: 1.5rem 1.5rem 1.5rem 0.75rem; } .flyout > button { margin-bottom: 0.37rem; } .flyout-close { top: 0.75rem; right: 0.75rem; position: absolute; } .flyout-header { background: rgb(239, 240, 240); padding: 0.75rem 1.5rem 0.75rem 0.75rem; margin-top: -0.75rem; margin-bottom: 0.75rem; border-bottom-color: rgb(197, 200, 201); border-bottom-width: 1px; border-bottom-style: solid; } .flyout-list { list-style: none; margin-bottom: 0.37rem; } .flyout-list > li { margin: 0px; padding: 0.75rem; } .flyout-list > li:not(:last-child) { border-bottom-color: rgb(197, 200, 201); border-bottom-width: 1px; border-bottom-style: solid; } .flyout-share-title { overflow: hidden; white-space: nowrap; -ms-text-overflow: ellipsis; } .flyout-share-title::before { content: "Share "; } .flyout-share-chooser { list-style: none; margin: 0px 0px 0.75rem; padding: 0px; text-transform: uppercase; } .flyout-share-chooser > li { margin: 0px; padding: 0px 0.12rem 0px 0px; display: inline-block; } .flyout-share-chooser > li.active > a { color: rgb(34, 34, 34); } .flyout-share-chooser > li::after { content: " "; } .border-caret { fill: #f7f7f7; stroke: #abafb0; } .border-caret-dark { fill: #31363a; stroke: #abafb0; } .thick-border { border: 4px solid rgb(49, 54, 58); border-image: none; } .thick-border .border-caret { stroke: #31363a; } .help-box { width: 300px; z-index: 6001; } .flyout--search { width: 100%; position: relative; max-width: 100%; } linked-video .has-play-button::after { padding: 0.56rem 0px 0px 0.65rem; border-radius: 0px; width: 2.25rem; height: 2.25rem; bottom: 0.75rem; font-size: 0.87rem; } .loading { background: rgb(255, 255, 255); width: 24px; height: 24px; position: relative; } .loading .pie { background: rgb(255, 255, 255); transform-origin: 100% 50%; border: 2px solid rgb(35, 156, 170); border-image: none; width: 50%; height: 100%; position: absolute; -webkit-transform-origin: 100% 50%; } .loading .rotation { border-radius: 100% 0px 0px 100% / 50% 0px 0px 50%; animation:rota 3s linear infinite; border-right-color: currentColor; border-right-width: 0px; border-right-style: none; z-index: 1002; -webkit-animation: rota 3s linear infinite; } .loading:hover .filler { animation-play-state: running; -webkit-animation-play-state: running; } .loading:hover .mask { animation-play-state: running; -webkit-animation-play-state: running; } .loading:hover .rotation { animation-play-state: running; -webkit-animation-play-state: running; } .loading .filler { border-radius: 0px 100% 100% 0px / 0px 50% 50% 0px; animation:opa 3s steps(1, end) infinite reverse; left: 50%; border-left-color: currentColor; border-left-width: 0px; border-left-style: none; z-index: 1000; opacity: 0; -webkit-animation: opa 3s steps(1, end) infinite reverse; } .loading .mask { background: inherit; animation:opa 3s steps(1, end) infinite; width: 50%; height: 100%; position: absolute; z-index: 1003; opacity: 1; -webkit-animation: opa 3s steps(1, end) infinite; } .loading--dark { background: rgb(17, 17, 17); width: 24px; height: 24px; position: relative; } .loading--dark .pie { background: rgb(17, 17, 17); transform-origin: 100% 50%; border: 2px solid rgb(35, 156, 170); border-image: none; width: 50%; height: 100%; position: absolute; -webkit-transform-origin: 100% 50%; } .loading--dark .rotation { border-radius: 100% 0px 0px 100% / 50% 0px 0px 50%; animation:rota 3s linear infinite; border-right-color: currentColor; border-right-width: 0px; border-right-style: none; z-index: 1002; -webkit-animation: rota 3s linear infinite; } .loading--dark:hover .filler { animation-play-state: running; -webkit-animation-play-state: running; } .loading--dark:hover .mask { animation-play-state: running; -webkit-animation-play-state: running; } .loading--dark:hover .rotation { animation-play-state: running; -webkit-animation-play-state: running; } .loading--dark .filler { border-radius: 0px 100% 100% 0px / 0px 50% 50% 0px; animation:opa 3s steps(1, end) infinite reverse; left: 50%; border-left-color: currentColor; border-left-width: 0px; border-left-style: none; z-index: 1000; opacity: 0; -webkit-animation: opa 3s steps(1, end) infinite reverse; } .loading--dark .mask { background: inherit; animation:opa 3s steps(1, end) infinite; width: 50%; height: 100%; position: absolute; z-index: 1003; opacity: 1; -webkit-animation: opa 3s steps(1, end) infinite; } .loading--light { background: rgb(231, 233, 233); width: 24px; height: 24px; position: relative; } .loading--light .pie { background: rgb(231, 233, 233); transform-origin: 100% 50%; border: 2px solid rgb(35, 156, 170); border-image: none; width: 50%; height: 100%; position: absolute; -webkit-transform-origin: 100% 50%; } .loading--light .rotation { border-radius: 100% 0px 0px 100% / 50% 0px 0px 50%; animation:rota 3s linear infinite; border-right-color: currentColor; border-right-width: 0px; border-right-style: none; z-index: 1002; -webkit-animation: rota 3s linear infinite; } .loading--light:hover .filler { animation-play-state: running; -webkit-animation-play-state: running; } .loading--light:hover .mask { animation-play-state: running; -webkit-animation-play-state: running; } .loading--light:hover .rotation { animation-play-state: running; -webkit-animation-play-state: running; } .loading--light .filler { border-radius: 0px 100% 100% 0px / 0px 50% 50% 0px; animation:opa 3s steps(1, end) infinite reverse; left: 50%; border-left-color: currentColor; border-left-width: 0px; border-left-style: none; z-index: 1000; opacity: 0; -webkit-animation: opa 3s steps(1, end) infinite reverse; } .loading--light .mask { background: inherit; animation:opa 3s steps(1, end) infinite; width: 50%; height: 100%; position: absolute; z-index: 1003; opacity: 1; -webkit-animation: opa 3s steps(1, end) infinite; } .notification-box { background: rgb(255, 255, 255); margin: 1.5rem; position: relative; } .notification-box-content { margin: 0.75rem 0px; padding: 0.75rem 0.37rem; display: none; } @media only screen and (min-width:48rem), print { .notification-box-content { width: 100%; } } .magazine-cover { min-width: 9.37rem; max-width: 25rem; flex-shrink: 0; -webkit-flex-shrink: 0; } .medium-magazine-cover { width: 11.25rem; } .current-issue { min-width: 15.62rem; max-width: 25rem; flex-shrink: 0; -webkit-flex-shrink: 0; } .poster-subscription-offer { padding-top: 33%; padding-bottom: 17%; padding-left: 10%; background-repeat: no-repeat; background-size: cover; } .mag-toc-poster { background-position: 75% 50%; background-size: cover; background-color: rgb(255, 255, 255); } @media only screen and (max-width:47.93rem) { .mag-toc-poster { background-image: none; } } .load-ten-more { text-align: center; } .load-ten-more a { color: rgb(200, 37, 2); } .credit-card-logo-img { width: 2.18rem; } .tab-strip > * { border-width: 2px 1px; border-style: solid; border-color: rgb(117, 126, 133); padding: 0.4rem 1rem; color: rgb(117, 126, 133); background-color: rgb(247, 247, 247); } .tab-strip > :hover { color: rgb(93, 100, 106); } .tab-strip > .active { color: rgb(247, 247, 247); background-color: rgb(117, 126, 133); } .tab-strip > :first-child { border-left-width: 2px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .tab-strip > :last-child { border-right-width: 2px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; } .video-tile-container { margin-right: -0.62rem; margin-left: -0.62rem; display: flex; flex-wrap: wrap; -webkit-flex-wrap: wrap; } .video-tile-container > * { padding-right: 0.62rem; padding-left: 0.62rem; } @media only screen and (min-width:48rem), print { .video-tile-container > * { width: 33.33%; } .video-tile-container > .hero-video { width: 66.66%; } } @media only screen and (max-width:47.93rem) { .video-tile-container > * { width: 100%; } } .vjs-modal-overlay select { background: rgb(255, 255, 255); width: 120px; } .newsletter-tile-container { margin-right: -0.62rem; margin-left: -0.62rem; } .newsletter-tile-container > * { border-radius: 2px; margin-right: 0.62rem; margin-left: 0.62rem; box-shadow: 1px 1px 3px #c5c8c9; } @media only screen and (max-width:47.93rem) { .newsletter-tile-container > * { flex-basis: calc(100% - 1.25rem); -webkit-flex-basis: calc(100% - 1.25rem); } } @media only screen and (min-width:48rem), print { .newsletter-tile-container > * { flex-basis: calc(33.33% - 1.25rem); -webkit-flex-basis: calc(33.33% - 1.25rem); } } @media only screen and (min-width:84.43rem) { .newsletter-tile-container > * { flex-basis: calc(25% - 1.25rem); -webkit-flex-basis: calc(25% - 1.25rem); } } .newsletter-no-wrap { flex-wrap: nowrap; -webkit-flex-wrap: nowrap; } @media only screen and (max-width:47.93rem) { .newsletter-no-wrap { flex-wrap: wrap; -webkit-flex-wrap: wrap; } } .transparent-layer { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; z-index: 9999; opacity: 0.6; background-color: rgb(34, 34, 34); } .transparent-layer-white { left: 0px; top: 0px; width: 100%; height: 100%; position: absolute; z-index: 9999; opacity: 0.5; background-color: rgb(255, 255, 255); } .poster { background-position: top; padding-top: 50%; background-repeat: no-repeat; background-size: 100%; } .poster--home { background-position: top; padding-top: 50%; background-repeat: no-repeat; background-size: 100%; } .poster--spotlight { background-position: top; padding-top: 50%; background-repeat: no-repeat; background-size: 100%; } .poster p { line-height: 1; margin-bottom: 0px; } .poster--home p { line-height: 1; margin-bottom: 0px; } .poster--spotlight p { line-height: 1; margin-bottom: 0px; } @media only screen and (min-width:48rem), print { .poster { background-position: 75% 50%; padding-top: 0px; position: relative; background-size: cover; background-color: rgb(197, 200, 201); } .poster--home { background-position: 75% 50%; padding-top: 0px; position: relative; background-size: cover; background-color: rgb(197, 200, 201); } .poster--spotlight { background-position: 75% 50%; padding-top: 0px; position: relative; background-size: cover; background-color: rgb(197, 200, 201); } .poster h3.hed { font-size: 1.5rem; } .poster--home h3.hed { font-size: 1.5rem; } .poster--spotlight h3.hed { font-size: 1.5rem; } } @media only screen and (max-width:47.93rem) { .poster h1 > a { color: rgb(34, 34, 34) !important; } .poster h1 > span > a { color: rgb(34, 34, 34) !important; } .poster--home h1 > a { color: rgb(34, 34, 34) !important; } .poster--home h1 > span > a { color: rgb(34, 34, 34) !important; } .poster--spotlight h1 > a { color: rgb(34, 34, 34) !important; } .poster--spotlight h1 > span > a { color: rgb(34, 34, 34) !important; } .poster .panel { background: 0px 0px; margin: 0px; padding: 0px; } .poster--home .panel { background: 0px 0px; margin: 0px; padding: 0px; } .poster--spotlight .panel { background: 0px 0px; margin: 0px; padding: 0px; } .poster .left { float: none !important; } .poster .right { float: none !important; } .poster--home .left { float: none !important; } .poster--home .right { float: none !important; } .poster--spotlight .left { float: none !important; } .poster--spotlight .right { float: none !important; } .poster .white { color: rgb(34, 34, 34) !important; } .poster--home .white { color: rgb(34, 34, 34) !important; } .poster--spotlight .white { color: rgb(34, 34, 34) !important; } .poster .white a { color: rgb(34, 34, 34); } .poster--home .white a { color: rgb(34, 34, 34); } .poster--spotlight .white a { color: rgb(34, 34, 34); } .poster .white a:hover { color: rgb(9, 8, 8); } .poster--home .white a:hover { color: rgb(9, 8, 8); } .poster--spotlight .white a:hover { color: rgb(9, 8, 8); } .poster .xlarge-hed { font-size: 2.25rem; } .poster .xxlarge-hed { font-size: 2.25rem; } .poster .xxxlarge-hed { font-size: 2.25rem; } .poster--home .xlarge-hed { font-size: 2.25rem; } .poster--home .xxlarge-hed { font-size: 2.25rem; } .poster--home .xxxlarge-hed { font-size: 2.25rem; } .poster--spotlight .xlarge-hed { font-size: 2.25rem; } .poster--spotlight .xxlarge-hed { font-size: 2.25rem; } .poster--spotlight .xxxlarge-hed { font-size: 2.25rem; } .poster .topic { color: rgb(200, 37, 2) !important; } .poster--home .topic { color: rgb(200, 37, 2) !important; } .poster--spotlight .topic { color: rgb(200, 37, 2) !important; } .poster .byline { color: rgb(136, 136, 136) !important; } .poster--home .byline { color: rgb(136, 136, 136) !important; } .poster--spotlight .byline { color: rgb(136, 136, 136) !important; } } .poster--home { overflow: hidden; position: relative; } @media only screen and (min-width:48rem), print { .poster--home { min-height: 18.75rem; } } .poster--spotlight { color: rgb(0, 0, 0); text-transform: uppercase; overflow: hidden; padding-right: 0.62rem; padding-left: 0.62rem; position: relative; } .poster--spotlight h1 { line-height: 0.75 !important; } .poster--spotlight .poster-dek { border-width: 1px 0px; border-style: solid; border-color: rgb(0, 0, 0); border-image: none; } @media only screen and (max-width:47.93rem) { .poster--spotlight .poster-dek { border-width: 0px; } } .poster--spotlight .poster-flyouts { color: rgb(0, 0, 0); margin-right: 25px; } .poster--spotlight .poster-flyouts:hover { color: rgb(0, 0, 0); } .poster--spotlight .poster-flyouts i { color: rgb(0, 0, 0); margin-right: 5px; } @media only screen and (min-width:48rem), print { .poster--spotlight { height: 37.5rem; color: rgb(255, 255, 255); } .poster--spotlight .poster-dek { border-color: rgb(255, 255, 255); } .poster--spotlight .poster-flyouts { color: rgb(255, 255, 255); } .poster--spotlight .poster-flyouts:hover { color: rgb(255, 255, 255); } .poster--spotlight .poster-flyouts i { color: rgb(255, 255, 255); } } @media only screen and (min-width:64.06rem) { .poster--spotlight { padding-right: 66.7%; padding-left: 1.5rem; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .poster--spotlight { padding-right: 60%; } } .store-category-img { text-align: center; margin-bottom: 0.37rem; } .store-category-img img { margin: 0px auto; max-width: 5.93rem; } .carousel-image { margin: 0.75rem auto; max-width: 9.37rem; } .carousel-image img { width: 100%; height: auto; } @media only screen and (min-width:48rem), print { .carousel-image { max-width: 15.62rem; } } .store-category-selector { background: rgb(255, 255, 255); margin: 0.37rem; padding: 0.75rem 0px; width: auto; text-align: center; color: rgb(200, 37, 2); display: block; } .selected.store-category-selector { background: rgb(214, 243, 246); color: rgb(0, 0, 0); cursor: default; } .selected.store-category-selector:hover { background: rgb(214, 243, 246); cursor: default; } .store-category-selector:hover { background: rgb(239, 240, 240); } .product-thumb { margin: 0px 0.75rem 0.75rem 0px; width: 6.25rem; } .product-thumb img { width: 100%; height: auto; } .product-thumb-small { margin: 0px 0.75rem 0.75rem 0px; width: auto; max-height: 7.81rem; } .product-thumb-small img { width: 100%; height: auto; } .product-thumb-margin { height: 9.37rem; margin-left: 7rem; position: relative; } .product-thumb-margin .stick-to-bottom { bottom: 0px; position: absolute; } .product-thumb-margin .stick-to-bottom .price { font-size: 1.37em; } @media only screen and (min-width:48rem), print { .idp-left { margin-right: 1.5rem; } } @media only screen and (min-width:48rem), print { .idp-right { margin-left: 1.5rem; } } .better-together__container .cushion { margin-top: 0px !important; } @media only screen and (max-width:47.93rem) { .better-together .better-together__item { margin-bottom: 2.25rem !important; } } .better-together .btn-cart { margin: 0.81rem 0.81rem 0.75rem; } @media only screen and (min-width:48rem), print { .better-together :not(:last-child).item-separator { border-right-color: rgb(213, 215, 216); border-right-width: 1px; border-right-style: solid; } } .better-together .hbr-checkbox input { margin-bottom: -0.31rem !important; } .product-menu__container { width: 100%; } .product-menu__item { padding-top: 1.87rem; } .product-menu__item .product-menu-item__header { cursor: pointer; } .product-menu__item .product-menu-item__content { overflow: hidden; max-height: 0px; } .product-menu__item .product-menu-item__content a { color: rgb(7, 135, 177); } .product-menu__item .product-menu-item__content a:hover { color: rgb(5, 98, 128); } .product-menu-item--show .icon-caret-down { color: rgb(171, 175, 176) !important; transform: rotate(180deg); -webkit-transform: rotate(180deg); } .product-menu-item--show .product-menu-item__content { max-height: 62.5rem; animation-name: slide-open; animation-duration: 1s; -webkit-animation-name: slide-open; -webkit-animation-duration: 1s; } .product-menu-item--hide .icon-caret-down { color: rgb(200, 37, 2) !important; transform: none; -webkit-transform: none; } .product-menu-item--hide .product-menu-item__content { overflow: hidden; max-height: 0px; animation-name: slide-close; animation-duration: 0.3s; -webkit-animation-name: slide-close; -webkit-animation-duration: .3s; } @media only screen and (min-width:48rem), print { .expand-for-large .icon-caret-down { color: rgb(171, 175, 176) !important; transform: rotate(180deg); -webkit-transform: rotate(180deg); } .expand-for-large .product-menu-item__content { max-height: 62.5rem; } } .product-carousel { height: 18.12rem; } @media only screen and (min-width:48rem), print { .product-carousel { height: 17.18rem; } } .product-carousel .slick-dots { padding-right: 1.5rem; margin-left: 0px; display: flex; flex-direction: row; justify-content: center; -webkit-box-pack: center; -webkit-justify-content: center; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; } .product-carousel .slick-dots li { margin: 0px; width: 1rem; } .slick-dots li button::before { color: rgb(197, 200, 201); font-family: HBRIcons; font-size: 0.81rem; content: "\e082"; opacity: 1; } .slick-dots li.slick-active button::before { color: rgb(0, 0, 0); } .related-section__item { height: 9.37rem; } @media only screen and (min-width:48rem), print { .related-section__item { flex:1 1 0px; -webkit-box-flex: 1; -webkit-flex: 1; } } @media only screen and (max-width:47.93rem) { .related-section__item { width: 31.25rem; margin-bottom: 2.25rem; } } .related-section__container .cushion { margin-top: 0px !important; } @media only screen and (max-width:47.93rem) { .related-section__container .cushion { margin-bottom: 0px !important; } .related-section__container .justify-center { -webkit-box-pack: initial; -webkit-justify-content: initial; } } .button--add-to-cart__idp { padding: 0.75rem 0.81rem 0.68rem !important; } .title-ellipses-3 { height: 3.12rem; overflow: hidden; position: relative; } @media only screen and (min-width:64.06rem) { .breadcrumbs-container { margin-top: 56px !important; } } .flip-stream-items.stream-entry .stream-item > .stream-image { margin: 0px; height: 3.5rem; float: left; min-width: 6.25rem; max-width: 6.25rem; } .stream-three-left .stream-item > .stream-image { margin: 0px; height: 3.5rem; float: left; min-width: 6.25rem; max-width: 6.25rem; } .flip-stream-items.stream-entry .stream-item > :not(.stream-image) { margin-left: 7.75rem; } .stream-three-left .stream-item > :not(.stream-image) { margin-left: 7.75rem; } a.tab-bar--opener { color: rgb(17, 17, 17); border-bottom-color: rgb(17, 17, 17); border-bottom-width: 4px; border-bottom-style: solid; background-color: rgba(255, 255, 255, 0.6); } .stream-choosers--dark a.tab-bar--opener { color: rgb(255, 255, 255); border-bottom-color: rgb(35, 156, 170); border-bottom-width: 4px; border-bottom-style: solid; background-color: rgba(255, 255, 255, 0.1); } @media only screen and (min-width:48rem), print { a.tab-bar--opener { display: none; } } .tab-bar--arrow { transition:transform 0.15s; transform: rotate(0deg); -webkit-transform: rotate(0); } tab-bar.open .tab-bar--arrow { transform: rotate(90deg); -webkit-transform: rotate(90deg); } @media only screen and (max-width:47.93rem) { .tab-bar--tabs { width: 100%; position: absolute; z-index: 1102; background-color: rgb(239, 240, 240); } .stream-choosers--dark .tab-bar--tabs { background-color: rgb(49, 54, 58); } tab-bar:not(.open) .tab-bar--tabs { display: none; } } .tab-bar--tab { color: rgb(57, 61, 65); } .tab-bar--tab:hover { color: rgb(17, 17, 17); } .stream-choosers--dark .tab-bar--tab { color: rgb(213, 215, 216); } .stream-choosers--dark .tab-bar--tab:hover { color: rgb(239, 240, 240); } @media only screen and (max-width:47.93rem) { .tab-bar--tab { padding-top: 0.75rem; padding-bottom: 0.75rem; display: block; } :not(:last-child).tab-bar--tab { border-bottom-color: rgb(117, 126, 133); border-bottom-width: 1px; border-bottom-style: solid; } } @media only screen and (min-width:48rem), print { .tab-bar--tab { border-bottom-color: transparent; border-bottom-width: 4px; border-bottom-style: solid; min-height: 4rem; } .active.tab-bar--tab { color: rgb(17, 17, 17); border-bottom-color: rgb(17, 17, 17); border-bottom-width: 4px; border-bottom-style: solid; background-color: rgba(255, 255, 255, 0.6); } .stream-choosers--dark .active.tab-bar--tab { color: rgb(255, 255, 255); border-bottom-color: rgb(35, 156, 170); border-bottom-width: 4px; border-bottom-style: solid; background-color: rgba(255, 255, 255, 0.1); } } .stream-content { display: none; } .active.stream-content { display: block; } .stream-list ul { list-style: none; margin: inherit; line-height: inherit; font-size: inherit; } .stream-entry { padding-top: 1.5rem; padding-bottom: 1.5rem; } :not(:last-child).stream-entry { border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } .sponsored.stream-entry .dek { display: none; } .sponsored.stream-entry .hed { font-weight: 400; } .stream-entry-border-lighter-gray :not(:last-child).stream-entry { border-bottom-color: rgb(197, 200, 201); border-bottom-width: 1px; border-bottom-style: solid; } .stream-utility { list-style: none; margin: 0px; padding: 0px; } .stream-utility > li { margin: 0px; padding: 0px 1.5rem 0px 0px; display: inline-block; } .stream-utility > li:last-child { padding: 0px; } .stream-utility .util-discard { display: none; } .stream-utility .util-organize { display: none; } .stream-item-info { margin-bottom: 0.37rem; } .stream-image { margin: 0px 0px 0px 1.5rem; width: 25%; height: 5.25rem; text-align: center; overflow: hidden; float: right; min-width: 7.75rem; max-width: 9.37rem; } @media only screen and (min-width:48rem), print { .stream-image { height: 8.06rem; min-width: 10.87rem; max-width: 15.87rem; } } .stream-image figure { margin: 0px auto; height: 100%; max-width: 15.87rem; } .stream-image figure img { max-height: 100%; max-width: 100%; } .has-play-button { position: relative; } [data-content-type=Video] .stream-image figure { position: relative; } [data-content-type=video] .stream-image figure { position: relative; } .has-play-button::after { background: rgb(57, 61, 65); border-radius: 3px; border: 1px solid rgb(255, 255, 255); transition:background 0.2s; border-image: none; left: 0.75rem; top: 0.75rem; width: 3.75rem; height: 3.75rem; color: rgb(255, 255, 255); padding-top: 1.12rem; padding-left: 0.75rem; font-family: HBRIcons; font-size: 1.25rem; position: absolute; content: "\e046"; opacity: 0.5; pointer-events: none; } [data-content-type=Video] .stream-image figure::after { background: rgb(57, 61, 65); border-radius: 3px; border: 1px solid rgb(255, 255, 255); transition:background 0.2s; border-image: none; left: 0.75rem; top: 0.75rem; width: 3.75rem; height: 3.75rem; color: rgb(255, 255, 255); padding-top: 1.12rem; padding-left: 0.75rem; font-family: HBRIcons; font-size: 1.25rem; position: absolute; content: "\e046"; opacity: 0.5; pointer-events: none; } [data-content-type=video] .stream-image figure::after { background: rgb(57, 61, 65); border-radius: 3px; border: 1px solid rgb(255, 255, 255); transition:background 0.2s; border-image: none; left: 0.75rem; top: 0.75rem; width: 3.75rem; height: 3.75rem; color: rgb(255, 255, 255); padding-top: 1.12rem; padding-left: 0.75rem; font-family: HBRIcons; font-size: 1.25rem; position: absolute; content: "\e046"; opacity: 0.5; pointer-events: none; } [data-item-selectable=true] .stream-utility .util-discard { display: inline-block; } [data-item-selectable=true] .stream-utility .util-organize { display: inline-block; } [data-item-selectable=true] .stream-utility .util-save { display: none; } .stream-item-activity-label { width: 4.5rem; margin-bottom: 0.37rem; } .stream-item-activity-label::first-letter { text-transform: capitalize; } @media only screen and (min-width:48rem), print { .stream-item-activity-label { margin-top: 0.37rem; margin-left: 0px; float: left; } } .read.stream-item-activity-label { color: rgb(251, 100, 5); } .shared.stream-item-activity-label { color: rgb(252, 165, 31); } .watched.stream-item-activity-label { color: rgb(46, 140, 26); } .ordered.stream-item-activity-label .stream-item-activity-label-text { padding: 0.37rem; background-color: rgb(226, 244, 247); } .saved.stream-item-activity-label { color: rgb(200, 37, 2); } .stream-item-price { margin: 0px; } .stream-item-price button { margin-bottom: 0px; } .stream-item-price > .add-to-cart { margin: 0.37rem 0.75rem 0.37rem 0px; display: inline-block; } .stream-item-price > .price { margin: 0.37rem 0.75rem 0.37rem 0px; display: inline-block; } @media only screen and (min-width:48rem), print { .stream-item-price { width: 17.5%; text-align: center; float: right; } .stream-item-price > .add-to-cart { margin: 0px auto 0.37rem; display: block; } .stream-item-price > .price { margin: 0px auto 0.37rem; display: block; } } .stream-three-left { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } @media only screen and (min-width:48rem), print { .stream-three-left { width: 58.33%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (min-width:84.43rem) { .stream-three-left { width: 66.66%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } @media only screen and (max-width:47.93rem) { .stream-three-left { padding-bottom: 1.5rem; margin-bottom: 1.87rem; border-bottom-color: rgb(213, 215, 216); border-bottom-width: 1px; border-bottom-style: solid; } } .stream-three-right { width: 100%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } .stream-three-right ul.stream-utility { margin-left: 0px; } @media only screen and (min-width:48rem), print { .stream-three-right { width: 41.66%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; max-width: 20rem; } .stream-three-right .advertising { float: right; max-width: 100%; } } @media only screen and (min-width:84.43rem) { .stream-three-right { width: 33.33%; padding-right: 0.62rem; padding-left: 0.62rem; float: left; } } .stream-three-right .stream-image { margin: 0px 0px 0px 1.5rem; width: auto; float: none; max-height: none; max-width: none; } .stream-three-right .stream-image figure { max-width: none; } @media only screen and (max-width:47.93rem) { .folder-list { margin-right: -0.62rem; margin-left: -0.62rem; } } .folder-list--opener { text-transform: uppercase; background-color: rgb(105, 112, 119); } @media only screen and (min-width:48rem), print { .folder-list--opener { display: none; } } @media only screen and (max-width:47.93rem) { .folder-list--folders { top: 0px; width: 100%; position: absolute; z-index: 1101; box-shadow: 2px 2px 2px #abafb0; } :not(.open).folder-list .folder-list--folders { display: none; } } @media only screen and (max-width:47.93rem) { .folder-list--folder-link { color: rgb(255, 255, 255); text-transform: uppercase; } .folder-list--folder-link:focus { color: rgb(239, 240, 240); } .folder-list--folder-link:hover { color: rgb(239, 240, 240); } } @media only screen and (min-width:48rem), print { .folder-list--folder-link { color: rgb(34, 34, 34); } .folder-list--folder-link:focus { color: rgb(1, 1, 1); } .folder-list--folder-link:hover { color: rgb(1, 1, 1); } .active.folder-list--folder .folder-list--folder-link { color: rgb(35, 156, 170); } .active.folder-list--folder .folder-list--folder-link:focus { color: rgb(31, 137, 149); } .active.folder-list--folder .folder-list--folder-link:hover { color: rgb(31, 137, 149); } } @media only screen and (max-width:47.93rem) { .folder-list--edit-link { color: rgb(255, 255, 255); } .folder-list--edit-link:focus { color: rgb(239, 240, 240); } .folder-list--edit-link:hover { color: rgb(239, 240, 240); } } @media only screen and (min-width:48rem), print { .folder-list--edit-link { color: rgb(34, 34, 34); } .folder-list--edit-link:focus { color: rgb(1, 1, 1); } .folder-list--edit-link:hover { color: rgb(1, 1, 1); } } @media only screen and (min-width:48rem), print { .folder-list--folder { padding-left: 0.75rem; border-top-color: rgb(239, 240, 240); border-top-width: 1px; border-top-style: solid; } } @media only screen and (max-width:47.93rem) { .folder-list--folder { padding-left: 1.5rem; background-color: rgb(69, 74, 79); } .active.folder-list--folder { background-color: rgb(105, 112, 119); } .editing.folder-list--folder { background-color: rgb(255, 255, 255); } :not(:last-child).folder-list--folder { border-bottom-color: rgb(117, 126, 133); border-bottom-width: 1px; border-bottom-style: solid; } } @media only screen and (min-width:48rem), print { .folder-list--form { border-top-color: rgb(171, 175, 176); border-bottom-color: rgb(171, 175, 176); border-top-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid; } } .subscriber-search-active .subscriber-search { color: rgb(35, 156, 170) !important; background-image: url("/resources/images/search_assets/checkmark-full.svg"); background-repeat: no-repeat; } .subscriber-search-inactive .search-all { color: rgb(35, 156, 170) !important; background-image: url("/resources/images/search_assets/checkmark-full.svg"); background-repeat: no-repeat; } .subscriber-search-active .subscriber-search a { color: rgb(35, 156, 170); } .subscriber-search-inactive .search-all a { color: rgb(35, 156, 170); } .subscriber-search-active .subscriber-search a:hover { color: rgb(26, 117, 128); } .subscriber-search-inactive .search-all a:hover { color: rgb(26, 117, 128); } .subscriber-search-active .subscriber-search.inverted { background: rgb(35, 156, 170) !important; color: rgb(255, 255, 255) !important; } .subscriber-search-inactive .search-all.inverted { background: rgb(35, 156, 170) !important; color: rgb(255, 255, 255) !important; } .subscriber-search-active .subscriber-search.inverted a { color: rgb(255, 255, 255); } .subscriber-search-active .subscriber-search.inverted a:hover { color: rgb(255, 255, 255); } .subscriber-search-inactive .search-all.inverted a { color: rgb(255, 255, 255); } .subscriber-search-inactive .search-all.inverted a:hover { color: rgb(255, 255, 255); } .subscriber-search-active .subscriber-search.border { border-color: rgb(35, 156, 170); } .subscriber-search-inactive .search-all.border { border-color: rgb(35, 156, 170); } .subscriber-search-active .search-all { color: rgb(136, 136, 136) !important; background-image: url("/resources/images/search_assets/checkmark-empty.svg"); background-repeat: no-repeat; } .subscriber-search-inactive .subscriber-search { color: rgb(136, 136, 136) !important; background-image: url("/resources/images/search_assets/checkmark-empty.svg"); background-repeat: no-repeat; } .subscriber-search-active .search-all a { color: rgb(136, 136, 136); } .subscriber-search-inactive .subscriber-search a { color: rgb(136, 136, 136); } .subscriber-search-active .search-all a:hover { color: rgb(111, 110, 110); } .subscriber-search-inactive .subscriber-search a:hover { color: rgb(111, 110, 110); } .subscriber-search-active .search-all.inverted { background: rgb(136, 136, 136) !important; color: rgb(34, 34, 34) !important; } .subscriber-search-inactive .subscriber-search.inverted { background: rgb(136, 136, 136) !important; color: rgb(34, 34, 34) !important; } .subscriber-search-active .search-all.inverted a { color: rgb(34, 34, 34); } .subscriber-search-active .search-all.inverted a:hover { color: rgb(34, 34, 34); } .subscriber-search-inactive .subscriber-search.inverted a { color: rgb(34, 34, 34); } .subscriber-search-inactive .subscriber-search.inverted a:hover { color: rgb(34, 34, 34); } .subscriber-search-active .search-all.border { border-color: rgb(136, 136, 136); } .subscriber-search-inactive .subscriber-search.border { border-color: rgb(136, 136, 136); } .subscriber-search-active { letter-spacing: -0.03em !important; font-weight: 300; } .subscriber-search-inactive { letter-spacing: -0.03em !important; font-weight: 300; } .subscriber-search-active .subscriber-search { padding-left: 35px; margin-right: 1.5rem !important; } .subscriber-search-inactive .subscriber-search { padding-left: 35px; margin-right: 1.5rem !important; } @media only screen and (max-device-width:47.93rem) { .subscriber-search-active .subscriber-search { line-height: 1.4 !important; padding-left: 30px; margin-right: 0.75rem !important; } .subscriber-search-inactive .subscriber-search { line-height: 1.4 !important; padding-left: 30px; margin-right: 0.75rem !important; } } .subscriber-search-active .search-all { padding-left: 35px; } .subscriber-search-inactive .search-all { padding-left: 35px; } @media only screen and (max-device-width:47.93rem) { .subscriber-search-active .search-all { line-height: 1.4 !important; padding-left: 30px; } .subscriber-search-inactive .search-all { line-height: 1.4 !important; padding-left: 30px; } } .popular-topic { padding: 0.75rem 0.75rem 1.5rem 1.5rem; position: relative; min-height: 17.5rem; } .popular-topic > h3 { margin: 3rem 0px 1.5rem; } .refresh-animation { animation:refresh-animation 0.5s cubic-bezier(0.175, 0.885, 0.365, 1.455); -webkit-animation: refresh-animation .5s ease-in; -webkit-animation-timing-function: cubic-bezier(.175, .885, .365, 1.455); } .popular-topic-follow { margin: 0px auto; left: 0px; text-align: center; right: 0px; bottom: 1.5rem; position: absolute; } .follow-topic .follow-this { display: block; } .follow-topic .login-this { display: block; } .follow-topic .subscribe-this { display: block; } .follow-topic .follow-this a { color: rgb(200, 37, 2); } .follow-topic .login-this a { color: rgb(200, 37, 2); } .follow-topic .subscribe-this a { color: rgb(200, 37, 2); } .follow-topic .unfollow-this { display: none; } .follow-topic .unfollow-this a { color: rgb(46, 140, 26); } .disabled.follow-topic .follow-this { display: none; } .disabled.follow-topic .unfollow-this { display: block; } .follow-topic-subscriber .follow-this { display: none; } .follow-topic-subscriber .subscribe-this { display: none; } .follow-topic-subscriber .unfollow-this { display: none; } .follow-topic-subscriber .login-this { display: block; } .registered .follow-topic-subscriber .follow-this { display: none; } .registered .follow-topic-subscriber .login-this { display: none; } .registered .follow-topic-subscriber .unfollow-this { display: none; } .registered .follow-topic-subscriber .subscribe-this { display: block; } .subscribers .follow-topic-subscriber .login-this { display: none; } .subscribers .follow-topic-subscriber .subscribe-this { display: none; } .subscribers .follow-topic-subscriber .unfollow-this { display: none; } .subscribers .follow-topic-subscriber .follow-this { display: block; } .subscribers .disabled.follow-topic-subscriber .follow-this { display: none; } .subscribers .disabled.follow-topic-subscriber .login-this { display: none; } .subscribers .disabled.follow-topic-subscriber .subscribe-this { display: none; } .subscribers .disabled.follow-topic-subscriber .unfollow-this { display: block; } .subscribe-newsletter { margin-top: 0.75rem; } .subscribe-newsletter .subscribe-this { display: block; } .subscribe-newsletter .subscribe-this a { color: rgb(200, 37, 2); } .subscribe-newsletter .unsubscribe-this { display: none; } .subscribe-newsletter .unsubscribe-this a { color: rgb(35, 156, 170); } .disabled.subscribe-newsletter .subscribe-this { display: none; } .disabled.subscribe-newsletter .unsubscribe-this { display: block; } add-to-cart-confirmation { left: 0px; top: -70.31rem; width: 100%; position: absolute; z-index: 10000; min-height: 45.31rem; background-color: rgb(255, 255, 255); } .show-confirmation { transition:top 1s; top: 0px; } .mbl.message { display: block; } .thanks.mbl.message { font-weight: 700; display: flex; justify-content: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; -webkit-box-align: center; -webkit-align-items: center; } .thanks.mbl.message .icon-alert.icon { transform: rotate(180deg); -webkit-transform: rotate(180deg); } @media only screen and (min-width:48rem), print { .thanks.mbl.message .icon-alert.icon { margin-bottom: 10px; } } .thanks.mbl.message .icon-alert.icon::before { padding: 0px 0px 0px 0.37rem; color: rgb(35, 156, 170); font-size: 22px; } .order.mbl.message { margin: 0px 0px 3rem !important; display: flex; justify-content: flex-start; align-items: center; -webkit-box-pack: start; -webkit-justify-content: flex-start; -webkit-box-align: center; -webkit-align-items: center; } .order.mbl.message .icon-alert.icon { transform: rotate(180deg); -webkit-transform: rotate(180deg); } .order.mbl.message .icon-alert.icon::before { padding: 0px 0px 0px 0.37rem; color: rgb(35, 156, 170); font-size: 22px; } .mbl.message strong { margin: 0px 0.37rem 0px 0px; font-weight: 700; } .mbl.message .HO_Download { font-weight: 700; } .show-modal { transition:top 1s; top: 25%; } .open-modal { display: block; visibility: visible; } .reveal-modal { z-index: 10000; } .modal-overlay { transition:visibility 0.15s, opacity 0.15s; left: 0px; top: 0px; right: 0px; bottom: 0px; position: fixed; z-index: 8001; background-color: rgba(0, 0, 0, 0.4); } :not(.active).modal-container .modal-overlay { visibility: hidden; opacity: 0; } .modal-frame { transition:visibility 0.15s, opacity 0.15s, transform 0.15s; left: 0px; top: 0px; right: 0px; position: fixed; z-index: 8002; } :not(.active).modal-container .modal-frame { visibility: hidden; opacity: 0; transform: translateY(-1rem); -webkit-transform: translateY(-1rem); } .sign-in-modal--container { top: calc(50% - 14rem); z-index: 8002; } @media only screen and (max-width:47.93rem) { .sign-in-modal--container { top: 50px; } .sign-in-modal--container input { font-size: 1rem; } .modal-open.sign-in-modal--container { position: absolute !important; } } .sign-in-modal--frame { border: 4px solid rgb(171, 175, 176); border-image: none; width: 20rem; } .flyout-modal--container { top: calc(50% - 14rem); z-index: 8002; } audio { margin: 0px; padding: 0px; display: block; } .hbraudio-container { width: inherit; min-width: 176px; } .hbraudio-container li { list-style: none; margin: 0px; padding: 0px; } .hbraudio-container ul { list-style: none; margin: 0px; padding: 0px; } .hbraudio-container a:active { border: 0px currentColor; border-image: none; cursor: pointer; } .hbraudio-container a:hover { border: 0px currentColor; border-image: none; cursor: pointer; } .hbraudio-container a:link { border: 0px currentColor; border-image: none; cursor: pointer; } .hbraudio-container a:visited { border: 0px currentColor; border-image: none; cursor: pointer; } .module.hbraudio-container .hbraudio-top ul li { margin-bottom: 0px; } .hbraudio-top { background: linear-gradient(rgb(17, 17, 17) 46%, rgb(0, 0, 0) 58%); border-radius: 3px; border: 0px currentColor; border-image: none; height: 40px; overflow: hidden; position: relative; } .hbraudio-play-holder { width: 25%; height: 40px; float: left; position: relative; min-width: 44px; } .hbraudio-play { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left 0px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-play:hover { background-position: left -200px; } .hbraudio-pause { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -100px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-pause:hover { background-position: left -300px; } .hbraudio-time-holder { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -1100px; width: 50%; height: 40px; float: left; position: relative; min-width: 88px; } .hbraudio-remaining-time { margin: 9px 0px 0px 11.3%; color: rgba(255, 255, 255, 0.5); line-height: 22px; font-family: Helvetica Neue,Helvetica,Arial,sans-serif; font-size: 22px; font-weight: 400; display: block; } .hbraudio-replay-holder { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -1100px; width: 25%; height: 40px; float: left; position: relative; min-width: 44px; } .hbraudio-headset { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -400px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-replay { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -500px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-progress { background: linear-gradient(rgb(255, 245, 238) 1%, rgb(179, 179, 179) 61%, rgb(235, 235, 235) 100%); margin: 5px 0px 0px; padding: 0px; border-radius: 3px; height: 5px; cursor: pointer; } .hbraudio-seek-bar { background: linear-gradient(rgb(179, 179, 179) 1%, rgb(235, 235, 235) 61%, rgb(179, 179, 179) 100%); border-radius: 3px; height: 5px; } .hbraudio-play-bar { background: linear-gradient(rgb(249, 195, 71) 1%, rgb(229, 168, 27) 61%, rgb(246, 205, 111) 100%); border-radius: 3px; height: 5px; } .hbraudio-share-opener { height: 30px; overflow: hidden; } .hbraudio-share-open { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -600px; margin: 0px auto; width: 44px; height: 30px; text-indent: -9999px; float: right; display: block; } .hbraudio-share-toolbox { height: 0px; overflow: visible; position: absolute; } .hbraudio-share-tools { width: 100%; position: relative; } .hbraudio-share-tools li { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -1100px rgb(17, 17, 17); width: 44px; float: left; position: relative; } .hbraudio-share-tools li:first-child { background: rgb(17, 17, 17); } .hbraudio-share-download { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -700px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-share-twitter { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -800px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-share-linkedin { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -900px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } .hbraudio-share-facebook { background: url("/resources/html/audio-assets/audio-player-sprite.png") no-repeat left -1000px; margin: 0px auto; width: 44px; height: 40px; text-indent: -9999px; display: block; } @media not all, not all { .hbraudio-headset { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-pause { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-play { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-replay { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-replay-holder { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-download { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-facebook { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-linkedin { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-open { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-tools li { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-share-twitter { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } .hbraudio-time-holder { background-image: url("/resources/html/audio-assets/[email protected]"); background-size: 44px 1200px; } } .popup-slider { padding: 0px; left: 0px; width: 100%; overflow: hidden; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; position: fixed; z-index: 10000; min-height: 100px; background-color: rgb(255, 255, 255); } .slider-promo { padding: 0px; left: 0px; width: 100%; overflow: hidden; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; position: fixed; z-index: 10000; min-height: 100px; background-color: rgb(255, 255, 255); } popup-slider { padding: 0px; left: 0px; width: 100%; overflow: hidden; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; position: fixed; z-index: 10000; min-height: 100px; background-color: rgb(255, 255, 255); } slider-promo { padding: 0px; left: 0px; width: 100%; overflow: hidden; border-top-color: rgb(213, 215, 216); border-top-width: 1px; border-top-style: solid; position: fixed; z-index: 10000; min-height: 100px; background-color: rgb(255, 255, 255); } @media only screen and (max-width:47.93rem) { .popup-slider h2 { font-size: 1.87rem; } .slider-promo h2 { font-size: 1.87rem; } popup-slider h2 { font-size: 1.87rem; } slider-promo h2 { font-size: 1.87rem; } } .popup-slider h5 { color: rgb(2, 138, 186); } .slider-promo h5 { color: rgb(2, 138, 186); } popup-slider h5 { color: rgb(2, 138, 186); } slider-promo h5 { color: rgb(2, 138, 186); } .popup-slider .big-idea-svg { width: 365px; height: 72px; background-image: url("/resources/css/images/big-idea/big-idea-logo-desktop.svg"); } .slider-promo .big-idea-svg { width: 365px; height: 72px; background-image: url("/resources/css/images/big-idea/big-idea-logo-desktop.svg"); } popup-slider .big-idea-svg { width: 365px; height: 72px; background-image: url("/resources/css/images/big-idea/big-idea-logo-desktop.svg"); } slider-promo .big-idea-svg { width: 365px; height: 72px; background-image: url("/resources/css/images/big-idea/big-idea-logo-desktop.svg"); } @media only screen and (max-width:47.93rem) { .popup-slider .big-idea-svg { width: 314px; height: 62px; background-image: url("/resources/css/images/big-idea/big-idea-logo-mobile.svg"); } .slider-promo .big-idea-svg { width: 314px; height: 62px; background-image: url("/resources/css/images/big-idea/big-idea-logo-mobile.svg"); } popup-slider .big-idea-svg { width: 314px; height: 62px; background-image: url("/resources/css/images/big-idea/big-idea-logo-mobile.svg"); } slider-promo .big-idea-svg { width: 314px; height: 62px; background-image: url("/resources/css/images/big-idea/big-idea-logo-mobile.svg"); } } .slider-promo { bottom: -300px; } slider-promo { bottom: -300px; } .slider-promo .personalization-placement { height: 100%; position: relative; } slider-promo .personalization-placement { height: 100%; position: relative; } .slider-promo .personalization-placement .subscription-reminder h2 { font-size: 2.06rem; } slider-promo .personalization-placement .subscription-reminder h2 { font-size: 2.06rem; } .slider-promo .personalization-placement .subscription-reminder button { width: 49%; } slider-promo .personalization-placement .subscription-reminder button { width: 49%; } .slider-promo .personalization-placement .subscription-reminder button.button--black { margin-left: 2%; } slider-promo .personalization-placement .subscription-reminder button.button--black { margin-left: 2%; } .popup-slider { bottom: -400px; } popup-slider { bottom: -400px; } .orange-flex-container { height: 100%; overflow: auto; display: flex; -webkit-overflow-scrolling: touch; } .orange-bar { transition:top 0.5s ease-in-out; top: calc(100% - 33px); width: 100%; border-bottom-color: rgb(255, 255, 255); border-bottom-width: 85px; border-bottom-style: solid; position: fixed; z-index: 1000; background-color: rgb(255, 255, 255); } .orange-bar #offer-msg::before { content: "VIEW "; } .orange-bar-on #offer-msg::before { content: "CLOSE "; } .orange-bar-on .icon-caret-up::before { content: "\e049"; } .orange-bar-header { width: 100%; text-align: center; padding-top: 7px; padding-bottom: 7px; max-height: 35px; background-color: rgb(254, 85, 2); } .orange-flex-item { margin: 0px 0px 0.75rem; flex:1 1 0px; width: 100%; -webkit-box-flex: 1; -webkit-flex: 1; } @media only screen and (max-width:1350px) { .orange-flex-item .product-thumb { margin-right: 70%; max-height: 85px; } .orange-flex-item .product-thumb img { width: auto; max-height: inherit; -o-object-fit: cover; object-fit: cover; } } @media only screen and (max-width:600px) { .orange-flex-item { min-width: 75%; } .orange-bar > .content-area { height: 100%; } .orange-bar > .content-area > .orange-flex-container { height: 60%; } } .parallax-image-wrapper { left: 0px; width: 100%; overflow: hidden; position: fixed; } .parallax-image { background-position: center; left: 0px; width: 100%; bottom: 0px; display: none; position: absolute; background-repeat: no-repeat; background-size: cover; } .parallax-cover-left-top { background-position: left top !important; } .parallax-cover-right-top { background-position: right top !important; } .parallax-cover-center-top { background-position: top !important; } .skrollable-between { display: block; } .parallax-image--full { top: -100%; height: 100%; } .parallax-image--full .parallax-image { top: 0px; height: 100%; } .skrollr .parallax-anchor--full > * { display: none; } #skrollr-body { height: 100%; overflow: visible; position: relative; } .no-skrollr .parallax-image-wrapper { display: none !important; } .skrollr .parallax-container { background: 0px 0px !important; } .parallax-container { background: no-repeat center / cover; } .lineup-container .lineup-content .future.lineup-item--label .lineup-label-arrow { -webkit-mask-image: url(/resources/css/images/dcs/arrow-pointing-right.svg); mask-image: url(/resources/css/images/dcs/arrow-pointing-right.svg); } .lineup-container .lineup-content .past.lineup-item--label .lineup-label-arrow { -webkit-mask-image: url(/resources/css/images/dcs/arrow-pointing-right.svg); mask-image: url(/resources/css/images/dcs/arrow-pointing-right.svg); } .arrow-pointing-diagonally { -webkit-mask-image: url(/resources/css/images/dcs/arrow-pointing-diagonally.svg); mask-image: url(/resources/css/images/dcs/arrow-pointing-diagonally.svg); } .arrow-pointing-diagonally--white { -webkit-mask-image: url(/resources/css/images/dcs/arrow-white.svg); mask-image: url(/resources/css/images/dcs/arrow-white.svg); } .flag--white { -webkit-mask-image: url(/resources/css/images/latest-white.svg); mask-image: url(/resources/css/images/latest-white.svg); } .flag { display: none; } .lineup-label-arrow { display: none; } .lineup--overlay { transition-duration: 0.55s; transition-timing-function: ease-out; } .lineup--overlay-off { transition-duration: 0.55s; transition-timing-function: ease-out; } .lineup--overlay-on { transition-duration: 0.55s; transition-timing-function: ease-out; } .lineup--overlay { left: 0px; visibility: hidden; position: fixed; transition-property: top; } .lineup--overlay > .row { height: 100%; } .lineup--overlay-on { top: 0px !important; visibility: visible; z-index: 2; transition-property: top; } .lineup--overlay-off { transition-property: top; } .lineup-container { width: 100%; height: calc(100% + 1px); } .lineup-container .lineup-content--area { height: 100%; -ms-overflow-y: hidden; background-color: rgb(234, 238, 246); } .lineup-container .lineup-content--area .faint-box-shadow { position: relative; z-index: 8001; box-shadow: 0px 0px 0.5rem 0px rgba(50,50,50,0.5); } .lineup-container .lineup-content--area .lineup-label-arrow__left { width: 16px; height: 14px; vertical-align: -20%; display: inline-block; transform: rotate(180deg); -webkit-transform: rotate(180deg); } .lineup-container .lineup-content--area .lineup-close .baseline-shift-down { top: 0.3em; } .lineup-container .lineup-content--area .lineup-header { padding: 1.25rem 1.25rem 0.62rem; width: 100%; height: 15%; color: rgb(255, 255, 255); display: flex; justify-content: space-between; align-items: flex-end; background-color: rgb(255, 64, 10); -webkit-box-pack: justify; -webkit-justify-content: space-between; -webkit-box-align: end; -webkit-align-items: flex-end; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content--area .lineup-header { padding: 0.93rem 1.25rem 0.31rem; height: 3.12rem; margin-bottom: 0px; } } .lineup-container .lineup-content--area .lineup--title { text-transform: uppercase; letter-spacing: 0px; font-size: 1.12rem; } .lineup-container .lineup-content--area .lineup--back { text-transform: uppercase; font-size: 0.81rem; cursor: pointer; } .lineup-container .lineup-content--area .lineup--timespan { text-transform: uppercase; padding-left: 0.62rem; font-size: 1.12rem; margin-left: 0.62rem; border-left-color: rgb(255, 255, 255); border-left-width: 0.12rem; border-left-style: solid; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content--area .lineup--timespan { display: none; } } .lineup-container .lineup-content--area .lineup--timespan::after { content: "Oct 24th - Nov 1st"; } .lineup-container .lineup-content--area .lineup--close { cursor: pointer; align-self: flex-start; -webkit-align-self: flex-start; } .lineup-container .lineup-content--area .lineup--close:hover { opacity: 0.7; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content--area .lineup--close { padding-bottom: 0.4rem; font-size: 120%; align-self: center; -webkit-align-self: center; } } .lineup-container .lineup-image { background-position: left top; height: 16.87rem; background-attachment: local; background-repeat: no-repeat; background-size: cover; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-image { height: 7.81rem; } } .lineup-container .lineup-content { height: 85%; margin-top: 0px; -ms-overflow-x: hidden; -ms-overflow-y: scroll; -webkit-overflow-scrolling: touch; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content { height: 100%; } } .lineup-container .lineup-content .arrow-pointing-diagonally { width: 0.62rem; height: 0.62rem; display: inline-block; fill: #ff400a; background-image: url("/resources/css/images/dcs/arrow-pointing-diagonally.png"); background-size: cover; -webkit-mask-image: url(/resources/css/images/dcs/arrow-pointing-diagonally.svg); mask-image: url(/resources/css/images/dcs/arrow-pointing-diagonally.svg); } .lineup-container .lineup-content .arrow-pointing-diagonally--white { width: 0.62rem; height: 0.62rem; display: inline-block; background-image: url("/resources/css/images/dcs/arrow-white.svg"); } .lineup-container .lineup-content .lineup-items { padding: 1.87rem 2.68rem; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content .lineup-items { padding: 0px 1.25rem; } } .lineup-container .lineup-content .lineup-item { padding: 1.87rem 0.43rem; width: 25%; float: left; } @media only screen and (max-width:64rem) { .lineup-container .lineup-content .lineup-item { width: 50%; } } @media only screen and (max-width:64rem) and (max-device-width:47.93rem) { .lineup-container .lineup-content .lineup-item { padding: 1.25rem 0px 0px; width: 100%; float: left; } } .lineup-container .lineup-content :nth-child(4n+1).lineup-item { clear: left; } .lineup-container .lineup-content .lineup-item--header-left { line-height: 4.18rem; display: inline-block; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content .lineup-item--header-left { width: 50%; line-height: 40px; vertical-align: baseline; } } .lineup-container .lineup-content .lineup-item--header-right { text-decoration: underline; display: inline; } @media only screen and (max-device-width:47.93rem) { .lineup-container .lineup-content .lineup-item--header-right { width: 50%; text-align: right; vertical-align: baseline; display: inline-block; } } .lineup-container .lineup-content .lineup-item--header-right a { color: rgb(255, 64, 10); } .lineup-container .lineup-content .lineup-item--label { color: rgb(255, 64, 10); } @media only screen and (min-width:48rem), print { .lineup-container .lineup-content .lineup-item--label { margin-top: -2.25rem; } } .lineup-container .lineup-content .lineup-item--label .label-text { display: inline-block; } .lineup-container .lineup-content .current.lineup-item--label .flag { width: 20px; height: 30px; display: inline-block; } .lineup-container .lineup-content .current.lineup-item--label .label-text { margin-left: -0.75rem; } .lineup-container .lineup-content .future.lineup-item--label { height: auto; } .lineup-container .lineup-content .past.lineup-item--label { height: auto; } @media only screen and (min-width:48rem), print { .lineup-container .lineup-content .future.lineup-item--label { margin-top: -1.37rem; } .lineup-container .lineup-content .past.lineup-item--label { margin-top: -1.37rem; } } .lineup-container .lineup-content .future.lineup-item--label .label-text { padding-right: 0.18rem; vertical-align: top; } .lineup-container .lineup-content .past.lineup-item--label .label-text { padding-right: 0.18rem; vertical-align: top; } .lineup-container .lineup-content .future.lineup-item--label .lineup-label-arrow { width: 12px; height: 10px; display: inline-block; transform: rotate(90deg); background-color: rgb(255, 64, 10); -webkit-transform: rotate(90deg); } .lineup-container .lineup-content .past.lineup-item--label .lineup-label-arrow { width: 12px; height: 10px; display: inline-block; transform: rotate(90deg); background-color: rgb(255, 64, 10); -webkit-transform: rotate(90deg); } @media only screen and (min-width:48rem), print { .lineup-container .lineup-content .future.lineup-item--label .lineup-label-arrow { width: 26px; height: 14px; transform: none; background-color: transparent; -webkit-transform: none; -webkit-mask-image: initial; mask-image: initial; } .lineup-container .lineup-content .past.lineup-item--label .lineup-label-arrow { width: 26px; height: 14px; transform: none; background-color: transparent; -webkit-transform: none; -webkit-mask-image: initial; mask-image: initial; } } .lineup-container .lineup-content .lineup-item--footer { padding-top: 0.93rem; text-decoration: underline; } .lineup-container .lineup-content .lineup-item--footer a { color: rgb(255, 64, 10); } .lineup-container .lineup-content .lineup-item--content { padding: 1.25rem; height: 19.68rem; position: relative; } .lineup-container .lineup-content .lineup-item--content .lineup-item--order { text-transform: uppercase; line-height: 1.87rem; font-size: 0.93rem; margin-bottom: 0.62rem; } .lineup-container .lineup-content .lineup-item--content .lineup-item--order > span.order-number { border-radius: 50%; width: 1.6rem; height: 1.6rem; text-align: center; color: rgb(255, 255, 255); font-size: 0.81rem; margin-right: 0.31rem; display: inline-block; background-clip: padding-box; background-color: rgb(0, 0, 0); } .lineup-container .lineup-content .lineup-item--content > h3 { line-height: 1.5rem; font-size: 1.5rem; margin-bottom: 0.37rem; } .lineup-container .lineup-content .lineup-item--content .content-type { color: rgb(0, 154, 202); text-transform: uppercase; font-size: 0.87rem; } .lineup-container .lineup-content .lineup-item--content > p { margin: 0.93rem 0px; height: 4.75rem; line-height: 1.18rem; overflow: hidden; font-size: 0.93rem; } .lineup-container .lineup-content .lineup-item--content .lineup-tools { padding: 1.25rem; left: 0px; width: 100%; bottom: 0px; position: absolute; } .lineup-container .lineup-content .lineup-item--content .lineup-tools .lineup-item--social > ul { margin: 0px; font-size: 1.5rem; float: right; } .lineup-container .lineup-content .lineup-item--content .lineup-tools .lineup-item--action { text-transform: uppercase; font-size: 0.93rem; float: left; } .lineup-container .lineup-content .lineup-item--content .lineup-tools a { color: rgb(255, 64, 10); } .lineup-container .lineup-content .current.lineup-item--content { background-color: rgb(255, 64, 10); } .lineup-container .lineup-content .current.lineup-item--content .arrow-pointing-diagonally { background-color: rgb(255, 255, 255); } .lineup-container .lineup-content .current.lineup-item--content .content-type { color: rgb(255, 255, 255) !important; } .lineup-container .lineup-content .current.lineup-item--content .lineup-item--action > a { color: rgb(255, 255, 255); } .lineup-container .lineup-content .current.lineup-item--content:hover { opacity: 0.8; } .lineup-container .lineup-content .past.lineup-item--content { background-color: rgb(213, 216, 229); } .lineup-container .lineup-content .past.lineup-item--content:hover { opacity: 0.8; } .lineup-container .lineup-content .future.lineup-item--content { border: 1px solid silver; border-image: none; background-color: rgb(234, 238, 246); } .lineup-container .lineup-content .future.lineup-item--content:hover { opacity: 0.8; } .lineup-container .lineup-content .future.lineup-item--content span.order-number { background: 0px 0px !important; border: 1px solid rgb(0, 0, 0); border-image: none; color: rgb(0, 0, 0) !important; line-height: 1.75rem !important; } .lineup--hero__item { background-position: right; background-image: url("/resources/css/images/dcs/tile-bg.jpg"); background-size: cover; } .lineup--hero { background-image: url("/resources/css/images/dcs/lineup-image.jpg"); } .lineup-item__signup .landing-sign-up-box input[type=email] { background-color: rgb(234, 238, 246); } .lineup-item__signup .arrow-circle-right { width: 2.5rem; height: 2.5rem; } @media only screen and (max-device-width:47.93rem) { .lineup-item__signup .arrow-circle-right { width: 2.18rem; height: 2.18rem; } } .lineup-item__signup .landing-input-email { width: 100%; } .lineup-item__signup .lineup-item--content { border-left-color: silver; border-left-width: 1px; border-left-style: solid; } .lineup-item__signup .signup-header { line-height: 2.37rem; letter-spacing: -1px; font-size: 2.25rem; } .lineup-item__signup .signup--content { line-height: 1.18rem; font-size: 0.93rem; } .lineup-label-arrow { stroke: #ff400a; } .theme--svg-fill { fill: #ff400a; } .wizard-wrapper { margin-bottom: 42px; } .wizard-indicator { width: 22px; height: 22px; display: inline-block; } .wizard-indicator-gift { width: 24px; height: 23px; } .wizard-indicator-divider { width: 45px; height: 22px; } .wizard-indicator-divider hr { border-color: rgb(213, 215, 216); } @media only screen and (max-width:47.93rem) { .wizard-indicator-divider { width: 20px; } } .wizard-indicator { margin-right: 0.75rem !important; } .wizard-indicator-divider { margin-right: 0.75rem !important; } @media only screen and (max-width:47.93rem) { .wizard-indicator { margin-right: 0.5rem !important; } .wizard-indicator-divider { margin-right: 0.5rem !important; } } subscriber-info .wizard-wrapper { margin-bottom: 0px; } @media only screen and (max-width:47.93rem) { .registration-complete .wizard-wrapper { margin-bottom: 12px; } } .spotlight-toc { margin: 0px 1.5rem; transition:top 0.5s ease-in-out; top: calc(100% - 71px); width: calc(100% - 3rem); text-transform: uppercase; display: block; position: fixed; z-index: 1; } .spotlight-toc .flex-row { background: rgb(255, 255, 255); padding: 0px 20px; font-family: National; display: flex; position: relative; z-index: 10; } .spotlight-toc .flex-row::after { left: 33%; width: 67%; height: 5px; position: absolute; content: ""; } .spotlight-toc .flex-item { margin: 20px 0px; padding: 0px 30px 0px 12px; line-height: 16px; font-size: 0.87rem; border-left-color: rgb(213, 215, 216); border-left-width: 1px; border-left-style: solid; position: relative; z-index: 10; min-height: 100%; background-color: rgb(255, 255, 255); } .spotlight-toc .flex-item a { color: rgb(0, 0, 0); } .spotlight-toc .flex-item a:hover { color: rgb(0, 0, 0); } .spotlight-toc .flex-item i { padding-left: 3px; } .spotlight-toc :first-child.flex-item a::before { color: rgb(200, 37, 2); content: "Start with: "; } @media screen and (max-height:500px) { .spotlight-toc .flex-item { margin-bottom: 35px; } } .spotlight-toc .gradient { background: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.1)); width: 100%; height: 25px; position: absolute; z-index: 20; } .spotlight-toc :first-child.gradient { left: 0px; top: 0px; } .spotlight-toc :last-child.gradient { background: linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.7)); left: 0px; bottom: 0px; } .toc-header { background: rgb(255, 255, 255); padding: 0px 12px; width: 33.33%; letter-spacing: 0.25px; font-family: "National Compressed"; font-size: 22px; font-weight: 700; margin-bottom: 0px; } .toc-header > .toc-header-title { height: 38px; display: flex; justify-content: space-between; align-items: center; -webkit-box-pack: justify; -webkit-justify-content: space-between; -webkit-box-align: center; -webkit-align-items: center; } .spotlight-toc-on { transition:top 0.5s ease-in-out; } .spotlight-toc-on .icon-caret-up::before { content: "\e049"; } .spotlight-toc-on > .flex-row > .shadow-box-2 { box-shadow: inset 0px 0px 32px 9px #fff, 9px -9px 39px 0px rgba(0,0,0,0.1); } @media only screen and (min-width:48rem), print { .spotlight-toc { margin: 0px 1.5rem; } .spotlight-toc .flex-item:hover { cursor: pointer; opacity: 0.4; } .spotlight-toc .toc-header-title:hover { cursor: pointer; opacity: 0.4; } .spotlight-toc .toc-header { box-shadow: 0px 0px 30px 8px rgba(0,0,0,0.1); } .spotlight-toc .flex-row { box-shadow: 1px 25px 30px 10px rgba(0,0,0,0.1); } .spotlight-toc .flex-row::after { box-shadow: 0px -8px 15px rgba(0,0,0,0.1); } .spotlight-toc .shadow-box-1 { left: 0px; top: -38px; width: 33.33%; height: calc(100% + 38px); position: absolute; z-index: 5; pointer-events: none; box-shadow: 0px 0px 32px 9px rgba(0,0,0,0.1); } .spotlight-toc .shadow-box-2 { left: 33.33%; width: calc(66.67%); height: 100%; position: absolute; z-index: 5; box-shadow: inset 0px 0px 32px 9px #fff; } .spotlight-toc .slick-prev { background: linear-gradient(to right, rgb(255, 255, 255), rgba(255, 255, 255, 0.5)); transition:0.5s ease-in-out; left: 0px; width: 70px; height: 70px; color: rgb(198, 39, 22); margin-top: -35px; margin-bottom: 0px; display: flex; justify-content: flex-start; align-items: flex-start; -webkit-box-pack: start; -webkit-justify-content: flex-start; -webkit-box-align: start; -webkit-align-items: flex-start; } .spotlight-toc .slick-disabled.slick-prev { background: 0px 0px; width: auto; visibility: hidden; } .spotlight-toc .slick-next { background: linear-gradient(to left, rgb(255, 255, 255), rgba(255, 255, 255, 0.5)); width: 70px; height: 70px; right: 0px; color: rgb(198, 39, 22); margin-top: -35px; margin-bottom: 0px; display: flex; justify-content: flex-end; align-items: flex-start; -webkit-box-pack: end; -webkit-justify-content: flex-end; -webkit-box-align: start; -webkit-align-items: flex-start; } .spotlight-toc .slick-disabled.slick-next { background: 0px 0px; width: auto; visibility: hidden; } .spotlight-toc .slick-next::before { font-size: 2.5rem; } .spotlight-toc .slick-prev::before { font-size: 2.5rem; } } @media only screen and (max-width:64rem) and (min-width:48rem) { .spotlight-toc { margin: 0px 0.62rem; width: calc(100% - 1.25rem); } .spotlight-toc .shadow-box-1 { width: 40%; } .spotlight-toc .toc-header { width: 40%; } .spotlight-toc .shadow-box-2 { left: 40%; width: 60%; } } @media only screen and (max-width:47.93rem) { .spotlight-toc { background: rgb(255, 255, 255); margin: 0px; border-radius: 5px 5px 0px 0px; border: 1px solid rgb(213, 215, 216); border-image: none; top: calc(100% - 93px); width: 100%; box-shadow: 2px -2px 16px 2px rgba(0,0,0,0.1); } .spotlight-toc .shadow-box-1 { display: none; } .spotlight-toc .shadow-box-2 { display: none; } .spotlight-toc > .flex-row { padding-top: 20px; padding-bottom: 10px; font-size: 18px; -ms-overflow-y: scroll; max-height: 215px; flex-direction: column; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; } .spotlight-toc > .flex-row > .flex-item { margin: 0px 0px 50px; padding: 0px; border: 0px currentColor; border-image: none; font-size: 18px; } .spotlight-toc > .toc-header { background: 0px 0px rgb(247, 247, 247); width: 100%; } .spotlight-toc > .toc-header > .toc-header-title { height: 70px; } } article-paywall-anonymous { left: 0px; width: 100%; padding-top: 30px; border-top-color: rgb(220, 220, 220); border-top-width: 1px; border-top-style: solid; position: absolute; z-index: 999; box-shadow: 0px -5px 10px 0px rgba(220,220,220,0.4); background-color: rgba(255, 255, 255, 0.97); } article-paywall-anonymous input[type=email] { background-color: transparent; } article-paywall-anonymous input[type=password] { background-color: transparent; } article-paywall-anonymous input[type=text] { background-color: transparent; } article-paywall-anonymous .paywall-existing-account input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-forgot-password input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-forgot-password-success input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-register input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-sign-in input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-subscription-details input.error { border: 1px solid rgb(200, 37, 2); border-image: none; } article-paywall-anonymous .paywall-existing-account .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-forgot-password .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-forgot-password-success .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-register .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-sign-in .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-subscription-details .full-name-info { margin-right: 46px; } article-paywall-anonymous .paywall-subscription-details button { margin-top: 0.5rem; } article-paywall-anonymous h1 { letter-spacing: -0.01em; clear: both; } article-paywall-anonymous .hasmargin { margin: 0.37rem 0px 34px; } article-paywall-anonymous .margin-top-link { margin-top: 0.75rem !important; } @media only screen and (max-width:64rem) { article-paywall-anonymous .margin-top-link { margin-top: 1.5rem !important; } } .fail.sign-in.guest article-paywall-anonymous sign-in .sign-in-error { display: block; } .fail.sign-in.guest article-paywall-anonymous sign-in input[type=email] { border: 1px solid rgb(200, 37, 2); border-image: none; } .fail.sign-in.guest article-paywall-anonymous sign-in input[type=password] { border: 1px solid rgb(200, 37, 2); border-image: none; } .fail.sign-in.guest article-paywall-anonymous sign-in input[type=text] { border: 1px solid rgb(200, 37, 2); border-image: none; } .fail.sign-in.guest article-paywall-anonymous .register-info { display: none; } .success-overlay { transition:visibility 0.2s, opacity 0.2s; left: 0px; top: 0px; right: 0px; bottom: 0px; position: fixed; z-index: 8001; background-color: rgba(0, 0, 0, 0.2); } @media only screen and (max-width:47.93rem) { .success-overlay { -webkit-box-pack: initial; -webkit-justify-content: initial; } } .success-box { background: rgb(255, 255, 255); width: 650px; border-top-color: rgb(220, 220, 220); border-top-width: 1px; border-top-style: solid; position: relative; box-shadow: 0px -5px 10px 0px rgba(220,220,220,0.4); } @media only screen and (max-width:47.93rem) { .success-box { top: 0px; width: 100%; bottom: 0px; position: fixed; } } .success-box .icon-success { width: 50px; height: 50px; color: rgb(16, 155, 2); } .success-box .icon-close { padding: 14px; color: rgb(171, 175, 176); } @media only screen and (max-width:47.93rem) { .success-box .icon-close { padding: 30px; } } .success-box-info { width: 100%; } @media only screen and (max-width:47.93rem) { .success-box-info { top: calc(50% - 8rem); position: fixed; } } .icon-close { right: 0px; color: rgb(179, 179, 179); } .issue-carousel img[src$='.png'] { transform: rotate(0.1deg); -webkit-transform: rotate(.1deg); } .nav-magazine-cover img[src$='.png'] { transform: rotate(0.1deg); -webkit-transform: rotate(.1deg); } .product-thumb img[src$='.png'] { transform: rotate(0.1deg); -webkit-transform: rotate(.1deg); } .stream-image img[src$='.png'] { transform: rotate(0.1deg); -webkit-transform: rotate(.1deg); }

!function e(t,a,i){function n(o,s){if(!a[o]){if(!t[o]){var l="function"==typeof require&&require;if(!s&&l)return l(o,!0);if(r)return r(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=a[o]={exports:{}};t[o][0].call(u.exports,function(e){var a=t[o][1][e];return n(a||e)},u,u.exports,e,t,a,i)}return a[o].exports}for(var r="function"==typeof require&&require,o=0;o<i.length;o++)n(i[o]);return n}({1:[function(e,t,a){(function(a){e("./utils/polyfills");var i=e("./strategies/LocalVisitor"),n=e("./strategies/ProxyVisitor"),r=e("./strategies/PlaceholderVisitor"),o=e("./utils/callbackRegistryFactory"),s=e("./Message"),l=e("./enums"),c=l.MESSAGES;t.exports=function(e,t,l,u){function d(e){Object.assign(D,e)}function g(e){Object.assign(D.state,e),D.callbackRegistry.executeAll(D.state)}function p(e){if(!V.isInvalid(e)){P=!1;var t=V.parse(e);D.setStateAndPublish(t.state)}}function f(e){!P&&S&&(P=!0,V.send(u,e))}function m(){d(new i(l._generateID)),D.getMarketingCloudVisitorID(),D.callbackRegistry.executeAll(D.state,!0),a.removeEventListener("message",h)}function h(e){if(!V.isInvalid(e)){var t=V.parse(e);P=!1,a.clearTimeout(this.timeout),a.removeEventListener("message",h),d(new n(D)),a.addEventListener("message",p),D.setStateAndPublish(t.state),D.callbackRegistry.hasCallbacks()&&f(c.GETSTATE)}}function v(){S&&postMessage?(a.addEventListener("message",h),f(c.HANDSHAKE),this.timeout=setTimeout(m,250)):m()}function b(){a.s_c_in||(a.s_c_il=[],a.s_c_in=0),D._c="Visitor",D._il=a.s_c_il,D._in=a.s_c_in,D._il[D._in]=D,a.s_c_in++}function y(){function e(e){0!==e.indexOf("_")&&"function"==typeof l[e]&&(D[e]=function(){})}Object.keys(l).forEach(e),D.getSupplementalDataID=l.getSupplementalDataID}var D=this,S=t.whitelistParentDomain;D.state={},D.version=l.version,D.marketingCloudOrgID=e;var P=!1,V=new s(e,S);D.callbackRegistry=o(),D.findField=function(e,t){return D.state[e]?(t(D.state[e]),D.state[e]):void 0},D.messageParent=f,D.setStateAndPublish=g,function(){b(),y(),d(new r(D)),v()}()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./Message":2,"./enums":4,"./strategies/LocalVisitor":5,"./strategies/PlaceholderVisitor":6,"./strategies/ProxyVisitor":7,"./utils/callbackRegistryFactory":8,"./utils/polyfills":10}],2:[function(e,t,a){var i=e("./enums"),n=i.MESSAGES,r={0:"prefix",1:"orgID",2:"state"};t.exports=function(e,t){this.parse=function(e){try{var t={};return e.data.split("|").forEach(function(e,a){void 0!==e&&(t[r[a]]=2!==a?e:JSON.parse(e))}),t}catch(e){}},this.isInvalid=function(a){var i=this.parse(a);if(!i||Object.keys(i).length<2)return!0;var r=e!==i.orgID,o=!t||a.origin!==t,s=-1===Object.keys(n).indexOf(i.prefix);return r||o||s},this.send=function(e,a,i){var n=a+"|"+r;i&&i===Object(i)&&(n+="|"+JSON.stringify(i));try{e.postMessage(n,t)}catch(r){}}}},{"./enums":4}],3:[function(e,t,i){(function(i){function n(){function e(){o.windowLoaded=!0}i.addEventListener?i.addEventListener("load",e):i.attachEvent&&i.attachEvent("onload",e),o.codeLoadEnd=(new Date).getTime()}/** @license ============== DO NOT ALTER ANYTHING BELOW THIS LINE ! ============ Adobe Visitor API for JavaScript version: 2.4.0 Copyright 1996-2015 Adobe, Inc. All Rights Reserved More info available at https://marketing.adobe.com/resources/help/en_US/mcvid/ */ var r=e("./ChildVisitor"),a=e("./Message"),s=e("./utils/makeChildMessageListener"),o=function(e,t){function n(e){var t=e;return function(e){var a=e||_.location.href;try{var i=g._extractParamFromUri(a,t);if(i)return R.parsePipeDelimetedKeyValues(i)}catch(e){}}}function r(e){function t(e,t){e&&e.match(h.VALID_VISITOR_ID_REGEX)&&t(e)}t(e[I],g.setMarketingCloudVisitorID),g._setFieldExpire(L,-1),t(e[O],g.setAnalyticsVisitorID)}function o(e){e=e||{},g._supplementalDataIDCurrent=e.supplementalDataIDCurrent||"",g._supplementalDataIDCurrentConsumed=e.supplementalDataIDCurrentConsumed||{},g._supplementalDataIDLast=e.supplementalDataIDLast||"",g._supplementalDataIDLastConsumed=e.supplementalDataIDLastConsumed||{}}function l(e){for(var t="",a=0,i=e.length;i>a;a++){var n=e[a],r=n[0],o=n[1];null!=o&&o!==P&&(t=function(e,t,a){return a=a?a+="|":a,a+=e+"="+encodeURIComponent(t)}(r,o,t))}return function(e){var t=R.getTimestampInSeconds();return e=e?e+="|":e,e+="TS="+t}(t)}function u(e){var t=e.minutesToLive,a="";return g.idSyncDisableSyncs&&(a=a||"Error: id syncs have been disabled"),"string"==typeof e.dpid&&e.dpid.length||(a=a||"Error: config.dpid is empty"),"string"==typeof e.url&&e.url.length||(a=a||"Error: config.url is empty"),void 0===t?t=20160:(t=parseInt(t,10),(isNaN(t)||0>=t)&&(a=a||"Error: config.minutesToLive needs to be a positive number")),{error:a,ttl:t}}function c(e){for(var t=0,a=e.length;a>t;t++)if(!h.POSITIVE_INT_REGEX.test(e[t]))return!1;return!0}function d(e,t){for(;e.length<t.length;)e.push("0");for(;t.length<e.length;)t.push("0")}function f(e,t){for(var a=0;a<e.length;a++){var i=parseInt(e[a],10),n=parseInt(t[a],10);if(i>n)return 1;if(n>i)return-1}return 0}if(!e)throw new Error("Visitor requires Adobe Marketing Cloud Org ID");var g=this;g.version="2.4.0";var _=i,m=_.Visitor;m.version=g.version,_.s_c_in||(_.s_c_il=[],_.s_c_in=0),g._c="Visitor",g._il=_.s_c_il,g._in=_.s_c_in,g._il[g._in]=g,_.s_c_in++,g._log={requests:[]};var p=_.document,h={POST_MESSAGE_ENABLED:!!_.postMessage,DAYS_BETWEEN_SYNC_ID_CALLS:1,MILLIS_PER_DAY:864e5,ADOBE_MC:"adobe_mc",ADOBE_MC_SDID:"adobe_mc_sdid",VALID_VISITOR_ID_REGEX:/^[0-9a-fA-F\-]+$/,ADOBE_MC_TTL_IN_MIN:5,POSITIVE_INT_REGEX:/^\d+$/,VERSION_REGEX:/vVersion\|((\d+\.)?(\d+\.)?(\*|\d+))(?=$|\|)/,HAS_JSON_STRINGIFY:window.JSON===Object(window.JSON)&&"function"==typeof window.JSON.stringify},S=function(e){return!Object.prototype[e]};g._hash=function(e){var t,a,i=0;if(e)for(t=0;t<e.length;t++)a=e.charCodeAt(t),i=(i<<5)-i+a,i&=i;return i},g._generateID=function(e,t){var a,i,n="0123456789",r="",o="",s=8,l=10,c=10;if(t===I&&(x.isClientSideMarketingCloudVisitorID=!0),1===e){for(n+="ABCDEF",a=0;16>a;a++)i=Math.floor(Math.random()*s),r+=n.substring(i,i+1),i=Math.floor(Math.random()*s),o+=n.substring(i,i+1),s=16;return r+"-"+o}for(a=0;19>a;a++)i=Math.floor(Math.random()*l),r+=n.substring(i,i+1),0===a&&9===i?l=3:(1===a||2===a)&&10!==l&&2>i?l=10:a>2&&(l=10),i=Math.floor(Math.random()*c),o+=n.substring(i,i+1),0===a&&9===i?c=3:(1===a||2===a)&&10!==c&&2>i?c=10:a>2&&(c=10);return r+o},g._getDomain=function(e){var t;if(!e&&_.location&&(e=_.location.hostname),t=e)if(/^[0-9.]+$/.test(t))t="";else{var a=",ac,ad,ae,af,ag,ai,al,am,an,ao,aq,ar,as,at,au,aw,ax,az,ba,bb,be,bf,bg,bh,bi,bj,bm,bo,br,bs,bt,bv,bw,by,bz,ca,cc,cd,cf,cg,ch,ci,cl,cm,cn,co,cr,cu,cv,cw,cx,cz,de,dj,dk,dm,do,dz,ec,ee,eg,es,et,eu,fi,fm,fo,fr,ga,gb,gd,ge,gf,gg,gh,gi,gl,gm,gn,gp,gq,gr,gs,gt,gw,gy,hk,hm,hn,hr,ht,hu,id,ie,im,in,io,iq,ir,is,it,je,jo,jp,kg,ki,km,kn,kp,kr,ky,kz,la,lb,lc,li,lk,lr,ls,lt,lu,lv,ly,ma,mc,md,me,mg,mh,mk,ml,mn,mo,mp,mq,mr,ms,mt,mu,mv,mw,mx,my,na,nc,ne,nf,ng,nl,no,nr,nu,nz,om,pa,pe,pf,ph,pk,pl,pm,pn,pr,ps,pt,pw,py,qa,re,ro,rs,ru,rw,sa,sb,sc,sd,se,sg,sh,si,sj,sk,sl,sm,sn,so,sr,st,su,sv,sx,sy,sz,tc,td,tf,tg,th,tj,tk,tl,tm,tn,to,tp,tr,tt,tv,tw,tz,ua,ug,uk,us,uy,uz,va,vc,ve,vg,vi,vn,vu,wf,ws,yt,",i=t.split("."),n=i.length-1,r=n-1;if(n>1&&i[n].length<=2&&(2===i[n-1].length||a.indexOf(","+i[n]+",")<0)&&r--,r>0)for(t="";n>=r;)t=i[n]+(t?".":"")+t,n--}return t},g.cookieRead=function(e){e=encodeURIComponent(e);var t=(";"+p.cookie).split(" ").join(";"),a=t.indexOf(";"+e+"="),i=0>a?a:t.indexOf(";",a+1);return 0>a?"":decodeURIComponent(t.substring(a+2+e.length,0>i?t.length:i))},g.cookieWrite=function(e,t,a){var i,n=g.cookieLifetime;if(t=""+t,n=n?(""+n).toUpperCase():"",a&&"SESSION"!==n&&"NONE"!==n){if(i=""!==t?parseInt(n||0,10):-60)a=new Date,a.setTime(a.getTime()+1e3*i);else if(1===a){a=new Date;var r=a.getYear();a.setYear(r+2+(1900>r?1900:0))}}else a=0;return e&&"NONE"!==n?(p.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+"; path=/;"+(a?" expires="+a.toGMTString()+";":"")+(g.cookieDomain?" domain="+g.cookieDomain+";":""),g.cookieRead(e)===t):0},g._callbackList=null,g._callCallback=function(e,t){try{"function"==typeof e?e.apply(_,t):e[1].apply(e[0],t)}catch(e){}},g._registerCallback=function(e,t){t&&(null==g._callbackList&&(g._callbackList={}),void 0==g._callbackList[e]&&(g._callbackList[e]=[]),g._callbackList[e].push(t))},g._callAllCallbacks=function(e,t){if(null!=g._callbackList){var a=g._callbackList[e];if(a)for(;a.length>0;)g._callCallback(a.shift(),t)}},g._addQuerystringParam=function(e,t,a,i){var n=encodeURIComponent(t)+"="+encodeURIComponent(a),r=R.parseHash(e),o=R.hashlessUrl(e);if(-1===o.indexOf("?"))return o+"?"+n+r;var s=o.split("?"),l=s[0]+"?",c=s[1];return l+R.addQueryParamAtLocation(c,n,i)+r},g._extractParamFromUri=function(e,t){var a=new RegExp("[\\?&#]"+t+"=([^&#]*)"),i=a.exec(e);return i&&i.length?decodeURIComponent(i[1]):void 0},g._parseAdobeMcFromUrl=n(h.ADOBE_MC),g._parseAdobeMcSdidFromUrl=n(h.ADOBE_MC_SDID),g._attemptToPopulateSdidFromUrl=function(t){var a=g._parseAdobeMcSdidFromUrl(t),i=1e9;a&&a.TS&&(i=R.getTimestampInSeconds()-a.TS),a&&a.SDID&&a[C]===e&&i<g.sdidParamExpiry&&(g._supplementalDataIDCurrent=a.SDID,g._supplementalDataIDCurrentConsumed.SDID_URL_PARAM=!0)},g._attemptToPopulateIdsFromUrl=function(){var t=g._parseAdobeMcFromUrl();if(t&&t.TS){var a=R.getTimestampInSeconds(),i=a-t.TS;if(Math.floor(i/60)>h.ADOBE_MC_TTL_IN_MIN||t[C]!==e)return;r(t)}},g.resetState=function(e){e?g._mergeServerState(e):o()},g._mergeServerState=function(e){if(e)try{if(e=function(e){return R.isObject(e)?e:R.parseJSON(e)}(e),e[g.marketingCloudOrgID]){var t=e[g.marketingCloudOrgID];!function(e){R.isObject(e)&&g.setCustomerIDs(e)}(t.customerIDs),o(t.sdid)}}catch(e){throw new Error("`serverState` has an invalid format.")}},g._timeout=null,g._loadData=function(e,t,a,i){t=g._addQuerystringParam(t,"d_fieldgroup",e,1),i.url=g._addQuerystringParam(i.url,"d_fieldgroup",e,1),i.corsUrl=g._addQuerystringParam(i.corsUrl,"d_fieldgroup",e,1),x.fieldGroupObj[e]=!0,i===Object(i)&&i.corsUrl&&"XMLHttpRequest"===g._requestProcs.corsMetadata.corsType?g._requestProcs.fireCORS(i,a,e):g.useCORSOnly||g._loadJSONP(e,t,a)},g._loadJSONP=function(e,t,a){var i,n=0,r=0;if(t&&p){for(i=0;!n&&2>i;){try{n=p.getElementsByTagName(i>0?"HEAD":"head"),n=n&&n.length>0?n[0]:0}catch(e){n=0}i++}if(!n)try{p.body&&(n=p.body)}catch(e){n=0}if(n)for(i=0;!r&&2>i;){try{r=p.createElement(i>0?"SCRIPT":"script")}catch(e){r=0}i++}}if(!t||!n||!r)return void(a&&a());r.type="text/javascript",r.src=t,n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r);var o=g.loadTimeout;a&&(null==g._timeout&&(g._timeout={}),g._timeout[e]=setTimeout(function(){a(!0)},o)),g._log.requests.push(t)},g._clearTimeout=function(e){null!=g._timeout&&g._timeout[e]&&(clearTimeout(g._timeout[e]),g._timeout[e]=0)},g._isAllowedDone=!1,g._isAllowedFlag=!1,g.isAllowed=function(){return g._isAllowedDone||(g._isAllowedDone=!0,(g.cookieRead(g.cookieName)||g.cookieWrite(g.cookieName,"T",1))&&(g._isAllowedFlag=!0)),g._isAllowedFlag},g._fields=null,g._fieldsExpired=null;var D="MC",I="MCMID",C="MCORGID",v="MCCIDH",A="MCSYNCS",y="MCSYNCSOP",M="MCIDTS",b="MCOPTOUT",E="A",O="MCAID",T="AAM",k="MCAAMLH",L="MCAAMB",P="NONE";g._settingsDigest=0,g._getSettingsDigest=function(){if(!g._settingsDigest){var e=g.version;g.audienceManagerServer&&(e+="|"+g.audienceManagerServer),g.audienceManagerServerSecure&&(e+="|"+g.audienceManagerServerSecure),g._settingsDigest=g._hash(e)}return g._settingsDigest},g._readVisitorDone=!1,g._readVisitor=function(){if(!g._readVisitorDone){g._readVisitorDone=!0;var e,t,a,i,n,r,o=g._getSettingsDigest(),s=!1,l=g.cookieRead(g.cookieName),c=new Date;if(null==g._fields&&(g._fields={}),l&&"T"!==l)for(l=l.split("|"),l[0].match(/^[\-0-9]+$/)&&(parseInt(l[0],10)!==o&&(s=!0),l.shift()),l.length%2==1&&l.pop(),e=0;e<l.length;e+=2)t=l[e].split("-"),a=t[0],i=l[e+1],t.length>1?(n=parseInt(t[1],10),r=t[1].indexOf("s")>0):(n=0,r=!1),s&&(a===v&&(i=""),n>0&&(n=c.getTime()/1e3-60)),a&&i&&(g._setField(a,i,1),n>0&&(g._fields["expire"+a]=n+(r?"s":""),(c.getTime()>=1e3*n||r&&!g.cookieRead(g.sessionCookieName))&&(g._fieldsExpired||(g._fieldsExpired={}),g._fieldsExpired[a]=!0)));!g._getField(O)&&R.isTrackingServerPopulated()&&(l=g.cookieRead("s_vi"))&&(l=l.split("|"),l.length>1&&l[0].indexOf("v1")>=0&&(i=l[1],e=i.indexOf("["),e>=0&&(i=i.substring(0,e)),i&&i.match(h.VALID_VISITOR_ID_REGEX)&&g._setField(O,i)))}},g._appendVersionTo=function(e){var t="vVersion|"+g.version,a=e?g._getCookieVersion(e):null;return a?R.areVersionsDifferent(a,g.version)&&(e=e.replace(h.VERSION_REGEX,t)):e+=(e?"|":"")+t,e},g._writeVisitor=function(){var e,t,a=g._getSettingsDigest();for(e in g._fields)S(e)&&g._fields[e]&&"expire"!==e.substring(0,6)&&(t=g._fields[e],a+=(a?"|":"")+e+(g._fields["expire"+e]?"-"+g._fields["expire"+e]:"")+"|"+t);a=g._appendVersionTo(a),g.cookieWrite(g.cookieName,a,1)},g._getField=function(e,t){return null==g._fields||!t&&g._fieldsExpired&&g._fieldsExpired[e]?null:g._fields[e]},g._setField=function(e,t,a){null==g._fields&&(g._fields={}),g._fields[e]=t,a||g._writeVisitor()},g._getFieldList=function(e,t){var a=g._getField(e,t);return a?a.split("*"):null},g._setFieldList=function(e,t,a){g._setField(e,t?t.join("*"):"",a)},g._getFieldMap=function(e,t){var a=g._getFieldList(e,t);if(a){var i,n={};for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];return n}return null},g._setFieldMap=function(e,t,a){var i,n=null;if(t){n=[];for(i in t)S(i)&&(n.push(i),n.push(t[i]))}g._setFieldList(e,n,a)},g._setFieldExpire=function(e,t,a){var i=new Date;i.setTime(i.getTime()+1e3*t),null==g._fields&&(g._fields={}),g._fields["expire"+e]=Math.floor(i.getTime()/1e3)+(a?"s":""),0>t?(g._fieldsExpired||(g._fieldsExpired={}),g._fieldsExpired[e]=!0):g._fieldsExpired&&(g._fieldsExpired[e]=!1),a&&(g.cookieRead(g.sessionCookieName)||g.cookieWrite(g.sessionCookieName,"1"))},g._findVisitorID=function(e){return e&&("object"==typeof e&&(e=e.d_mid?e.d_mid:e.visitorID?e.visitorID:e.id?e.id:e.uuid?e.uuid:""+e),e&&"NOTARGET"===(e=e.toUpperCase())&&(e=P),e&&(e===P||e.match(h.VALID_VISITOR_ID_REGEX))||(e="")),e},g._setFields=function(e,t){if(g._clearTimeout(e),null!=g._loading&&(g._loading[e]=!1),x.fieldGroupObj[e]&&x.setState(e,!1),e===D){!0!==x.isClientSideMarketingCloudVisitorID&&(x.isClientSideMarketingCloudVisitorID=!1);var a=g._getField(I);if(!a||g.overwriteCrossDomainMCIDAndAID){if(!(a="object"==typeof t&&t.mid?t.mid:g._findVisitorID(t))){if(g._use1stPartyMarketingCloudServer&&!g.tried1stPartyMarketingCloudServer)return g.tried1stPartyMarketingCloudServer=!0,void g.getAnalyticsVisitorID(null,!1,!0);a=g._generateID(0,I)}g._setField(I,a)}a&&a!==P||(a=""),"object"==typeof t&&((t.d_region||t.dcs_region||t.d_blob||t.blob)&&g._setFields(T,t),g._use1stPartyMarketingCloudServer&&t.mid&&g._setFields(E,{id:t.id})),g._callAllCallbacks(I,[a])}if(e===T&&"object"==typeof t){var i=604800;void 0!=t.id_sync_ttl&&t.id_sync_ttl&&(i=parseInt(t.id_sync_ttl,10));var n=g._getField(k);n||(n=t.d_region,n||(n=t.dcs_region),n&&(g._setFieldExpire(k,i),g._setField(k,n))),n||(n=""),g._callAllCallbacks(k,[n]);var r=g._getField(L);(t.d_blob||t.blob)&&(r=t.d_blob,r||(r=t.blob),g._setFieldExpire(L,i),g._setField(L,r)),r||(r=""),g._callAllCallbacks(L,[r]),!t.error_msg&&g._newCustomerIDsHash&&g._setField(v,g._newCustomerIDsHash)}if(e===E){var o=g._getField(O);o&&!g.overwriteCrossDomainMCIDAndAID||(o=g._findVisitorID(t),o?o!==P&&g._setFieldExpire(L,-1):o=P,g._setField(O,o)),o&&o!==P||(o=""),g._callAllCallbacks(O,[o])}if(g.idSyncDisableSyncs)F.idCallNotProcesssed=!0;else{F.idCallNotProcesssed=!1;var s={};s.ibs=t.ibs,s.subdomain=t.subdomain,F.processIDCallData(s)}if(t===Object(t)){var l,c;g.isAllowed()&&(l=g._getField(b)),l||(l=P,t.d_optout&&t.d_optout instanceof Array&&(l=t.d_optout.join(",")),c=parseInt(t.d_ottl,10),isNaN(c)&&(c=7200),g._setFieldExpire(b,c,!0),g._setField(b,l)),g._callAllCallbacks(b,[l])}},g._loading=null,g._getRemoteField=function(e,t,a,i,n){var r,o="",s=R.isFirstPartyAnalyticsVisitorIDCall(e);if(g.isAllowed())if(g._readVisitor(),o=g._getField(e,!0===V[e]),function(){return(!o||g._fieldsExpired&&g._fieldsExpired[e])&&(!g.disableThirdPartyCalls||s)}()){if(e===I||e===b?r=D:e===k||e===L?r=T:e===O&&(r=E),r)return!t||null!=g._loading&&g._loading[r]||(null==g._loading&&(g._loading={}),g._loading[r]=!0,g._loadData(r,t,function(t){if(!g._getField(e)){t&&x.setState(r,!0);var a="";e===I?a=g._generateID(0,I):r===T&&(a={error_msg:"timeout"}),g._setFields(r,a)}},n)),g._registerCallback(e,a),o||(t||g._setFields(r,{id:P}),"")}else o||(e===I?(g._registerCallback(e,a),o=g._generateID(0,I),g.setMarketingCloudVisitorID(o)):e===O?(g._registerCallback(e,a),o="",g.setAnalyticsVisitorID(o)):(o="",i=!0));return e!==I&&e!==O||o!==P||(o="",i=!0),a&&i&&g._callCallback(a,[o]),o},g._setMarketingCloudFields=function(e){g._readVisitor(),g._setFields(D,e)},g.setMarketingCloudVisitorID=function(e){g._setMarketingCloudFields(e)},g._use1stPartyMarketingCloudServer=!1,g.getMarketingCloudVisitorID=function(e,t){if(g.isAllowed()){g.marketingCloudServer&&g.marketingCloudServer.indexOf(".demdex.net")<0&&(g._use1stPartyMarketingCloudServer=!0);var a=g._getAudienceManagerURLData("_setMarketingCloudFields"),i=a.url;return g._getRemoteField(I,i,e,t,a)}return""},g._mapCustomerIDs=function(e){g.getAudienceManagerBlob(e,!0)},m.AuthState={UNKNOWN:0,AUTHENTICATED:1,LOGGED_OUT:2},g._currentCustomerIDs={},g._customerIDsHashChanged=!1,g._newCustomerIDsHash="",g.setCustomerIDs=function(e){function t(){g._customerIDsHashChanged=!1}if(g.isAllowed()&&e){g._readVisitor();var a,i;for(a in e)if(S(a)&&(i=e[a]))if("object"==typeof i){var n={};i.id&&(n.id=i.id),void 0!=i.authState&&(n.authState=i.authState),g._currentCustomerIDs[a]=n}else g._currentCustomerIDs[a]={id:i};var r=g.getCustomerIDs(),o=g._getField(v),s="";o||(o=0);for(a in r)S(a)&&(i=r[a],s+=(s?"|":"")+a+"|"+(i.id?i.id:"")+(i.authState?i.authState:""));g._newCustomerIDsHash=g._hash(s),g._newCustomerIDsHash!==o&&(g._customerIDsHashChanged=!0,g._mapCustomerIDs(t))}},g.getCustomerIDs=function(){g._readVisitor();var e,t,a={};for(e in g._currentCustomerIDs)S(e)&&(t=g._currentCustomerIDs[e],a[e]||(a[e]={}),t.id&&(a[e].id=t.id),void 0!=t.authState?a[e].authState=t.authState:a[e].authState=m.AuthState.UNKNOWN);return a},g._setAnalyticsFields=function(e){g._readVisitor(),g._setFields(E,e)},g.setAnalyticsVisitorID=function(e){g._setAnalyticsFields(e)},g.getAnalyticsVisitorID=function(e,t,a){if(!R.isTrackingServerPopulated()&&!a)return g._callCallback(e,[""]),"";if(g.isAllowed()){var i="";if(a||(i=g.getMarketingCloudVisitorID(function(t){g.getAnalyticsVisitorID(e,!0)})),i||a){var n=a?g.marketingCloudServer:g.trackingServer,r="";g.loadSSL&&(a?g.marketingCloudServerSecure&&(n=g.marketingCloudServerSecure):g.trackingServerSecure&&(n=g.trackingServerSecure));var o={};if(n){var s="http"+(g.loadSSL?"s":"")+"://"+n+"/id",l="d_visid_ver="+g.version+"&mcorgid="+encodeURIComponent(g.marketingCloudOrgID)+(i?"&mid="+encodeURIComponent(i):"")+(g.idSyncDisable3rdPartySyncing?"&d_coppa=true":""),c=["s_c_il",g._in,"_set"+(a?"MarketingCloud":"Analytics")+"Fields"];r=s+"?"+l+"&callback=s_c_il%5B"+g._in+"%5D._set"+(a?"MarketingCloud":"Analytics")+"Fields",o.corsUrl=s+"?"+l,o.callback=c}return o.url=r,g._getRemoteField(a?I:O,r,e,t,o)}}return""},g._setAudienceManagerFields=function(e){g._readVisitor(),g._setFields(T,e)},g._getAudienceManagerURLData=function(e){var t=g.audienceManagerServer,a="",i=g._getField(I),n=g._getField(L,!0),r=g._getField(O),o=r&&r!==P?"&d_cid_ic=AVID%01"+encodeURIComponent(r):"";if(g.loadSSL&&g.audienceManagerServerSecure&&(t=g.audienceManagerServerSecure),t){var s,l,c=g.getCustomerIDs();if(c)for(s in c)S(s)&&(l=c[s],o+="&d_cid_ic="+encodeURIComponent(s)+"%01"+encodeURIComponent(l.id?l.id:"")+(l.authState?"%01"+l.authState:""));e||(e="_setAudienceManagerFields");var u="http"+(g.loadSSL?"s":"")+"://"+t+"/id",d="d_visid_ver="+g.version+"&d_rtbd=json&d_ver=2"+(!i&&g._use1stPartyMarketingCloudServer?"&d_verify=1":"")+"&d_orgid="+encodeURIComponent(g.marketingCloudOrgID)+"&d_nsid="+(g.idSyncContainerID||0)+(i?"&d_mid="+encodeURIComponent(i):"")+(g.idSyncDisable3rdPartySyncing?"&d_coppa=true":"")+(!0===j?"&d_coop_safe=1":!1===j?"&d_coop_unsafe=1":"")+(n?"&d_blob="+encodeURIComponent(n):"")+o,p=["s_c_il",g._in,e];return a=u+"?"+d+"&d_cb=s_c_il%5B"+g._in+"%5D."+e,{url:a,corsUrl:u+"?"+d,callback:p}}return{url:a}},g.getAudienceManagerLocationHint=function(e,t){if(g.isAllowed()&&g.getMarketingCloudVisitorID(function(t){g.getAudienceManagerLocationHint(e,!0)})){var a=g._getField(O);if(!a&&R.isTrackingServerPopulated()&&(a=g.getAnalyticsVisitorID(function(t){g.getAudienceManagerLocationHint(e,!0)})),a||!R.isTrackingServerPopulated()){var i=g._getAudienceManagerURLData(),n=i.url;return g._getRemoteField(k,n,e,t,i)}}return""},g.getLocationHint=g.getAudienceManagerLocationHint,g.getAudienceManagerBlob=function(e,t){if(g.isAllowed()&&g.getMarketingCloudVisitorID(function(t){g.getAudienceManagerBlob(e,!0)})){var a=g._getField(O);if(!a&&R.isTrackingServerPopulated()&&(a=g.getAnalyticsVisitorID(function(t){g.getAudienceManagerBlob(e,!0)})),a||!R.isTrackingServerPopulated()){var i=g._getAudienceManagerURLData(),n=i.url;return g._customerIDsHashChanged&&g._setFieldExpire(L,-1),g._getRemoteField(L,n,e,t,i)}}return""},g._supplementalDataIDCurrent="",g._supplementalDataIDCurrentConsumed={},g._supplementalDataIDLast="",g._supplementalDataIDLastConsumed={},g.getSupplementalDataID=function(e,t){g._supplementalDataIDCurrent||t||(g._supplementalDataIDCurrent=g._generateID(1));var a=g._supplementalDataIDCurrent;return g._supplementalDataIDLast&&!g._supplementalDataIDLastConsumed[e]?(a=g._supplementalDataIDLast,g._supplementalDataIDLastConsumed[e]=!0):a&&(g._supplementalDataIDCurrentConsumed[e]&&(g._supplementalDataIDLast=g._supplementalDataIDCurrent,g._supplementalDataIDLastConsumed=g._supplementalDataIDCurrentConsumed,g._supplementalDataIDCurrent=a=t?"":g._generateID(1),g._supplementalDataIDCurrentConsumed={}),a&&(g._supplementalDataIDCurrentConsumed[e]=!0)),a},m.OptOut={GLOBAL:"global"},g.getOptOut=function(e,t){if(g.isAllowed()){var a=g._getAudienceManagerURLData("_setMarketingCloudFields"),i=a.url;return g._getRemoteField(b,i,e,t,a)}return""},g.isOptedOut=function(e,t,a){if(g.isAllowed()){t||(t=m.OptOut.GLOBAL);var i=g.getOptOut(function(a){var i=a===m.OptOut.GLOBAL||a.indexOf(t)>=0;g._callCallback(e,[i])},a);return i?i===m.OptOut.GLOBAL||i.indexOf(t)>=0:null}return!1},g.appendVisitorIDsTo=function(e){var t=h.ADOBE_MC,a=[[I,g._getField(I)],[O,g._getField(O)],[C,g.marketingCloudOrgID]],i=l(a);try{return g._addQuerystringParam(e,t,i)}catch(t){return e}},g.appendSupplementalDataIDTo=function(e,t){if(!(t=t||g.getSupplementalDataID(R.generateRandomString(),!0)))return e;var a=h.ADOBE_MC_SDID,i="SDID="+encodeURIComponent(t)+"|";i+=C+"="+encodeURIComponent(g.marketingCloudOrgID)+"|",i+="TS="+R.getTimestampInSeconds();try{return g._addQuerystringParam(e,a,i)}catch(t){return e}},g._xd={postMessage:function(e,t,a){var i=1;t&&(h.POST_MESSAGE_ENABLED?a.postMessage(e,t.replace(/([^:]+:\/\/[^\/]+).*/,"$1")):t&&(a.location=t.replace(/#.*$/,"")+"#"+ +new Date+i++ +"&"+e))},receiveMessage:function(e,t){var a;try{h.POST_MESSAGE_ENABLED&&(e&&(a=function(a){return"string"==typeof t&&a.origin!==t||"[object Function]"===Object.prototype.toString.call(t)&&!1===t(a.origin)?!1:void e(a)}),_.addEventListener?_[e?"addEventListener":"removeEventListener"]("message",a,!1):_[e?"attachEvent":"detachEvent"]("\xe5",a))}catch(e){}}};var R={addListener:function(){return p.addEventListener?function(e,t,a){e.addEventListener(t,function(e){"function"==typeof a&&a(e)},!1)}:p.attachEvent?function(e,t,a){e.attachEvent("on"+t,function(e){"function"==typeof a&&a(e)})}:void 0}(),map:function(e,t){if(Array.prototype.map)return e.map(t);if(void 0===e||null==e)throw new TypeError;var a=Object(e),i=a.length>>>0;if("function"!=typeof t)throw new TypeError;for(var n=new Array(i),r=arguments[1],o=0;i>o;o++)o in a&&(n[o]=t.call(r,a[o],o,a));return n},encodeAndBuildRequest:function(e,t){return this.map(e,function(e){return encodeURIComponent(e)}).join(t)},parseHash:function(e){var t=e.indexOf("#");return t>0?e.substr(t):""},hashlessUrl:function(e){var t=e.indexOf("#");return t>0?e.substr(0,t):e},addQueryParamAtLocation:function(e,t,a){var i=e.split("&");return a=null!=a?a:i.length,i.splice(a,0,t),i.join("&")},isFirstPartyAnalyticsVisitorIDCall:function(e,t,a){if(e!==O)return!1;var i;return t||(t=g.trackingServer),a||(a=g.trackingServerSecure),!("string"!=typeof(i=g.loadSSL?a:t)||!i.length)&&i.indexOf("2o7.net")<0&&i.indexOf("omtrdc.net")<0},isObject:function(e){return Boolean(e&&e===Object(e))},isLessThan:function(e,t){return g._compareVersions(e,t)<0},areVersionsDifferent:function(e,t){return 0!==g._compareVersions(e,t)},removeCookie:function(e){document.cookie=encodeURIComponent(e)+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;"},isTrackingServerPopulated:function(){return!!g.trackingServer||!!g.trackingServerSecure},parseJSON:function(e,t){function i(e,a){var n,r,o=e[a];if(o&&"object"==typeof o)for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(r=i(o,n),void 0!==r?o[n]=r:delete o[n]);return t.call(e,a,o)}if("object"==typeof JSON&&"function"==typeof JSON.parse)return JSON.parse(e,t);var n,r=/^[\],:{}\s]*$/,a=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,s=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,o=/(?:^|:|,)(?:\s*\[)+/g,l=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(e=String(e),l.lastIndex=0,l.test(e)&&(e=e.replace(l,function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})),r.test(e.replace(a,"@").replace(s,"]").replace(o,"")))return n=eval("("+e+")"),"function"==typeof t?i({"":n},""):n;throw new SyntaxError("JSON.parse")},getTimestampInSeconds:function(){return Math.round((new Date).getTime()/1e3)},parsePipeDelimetedKeyValues:function(e){for(var t={},a=e.split("|"),i=0,n=a.length;n>i;i++){var r=a[i].split("=");t[r[0]]=decodeURIComponent(r[1])}return t},generateRandomString:function(e){e=e||5;for(var t="",a="abcdefghijklmnopqrstuvwxyz0123456789";e--;)t+=a[Math.floor(Math.random()*a.length)];return t},parseBoolean:function(e){return"true"===e||"false"!==e&&null}};g._helpers=R;var w={corsMetadata:function(){var e="none",t=!0;return"undefined"!=typeof XMLHttpRequest&&XMLHttpRequest===Object(XMLHttpRequest)&&("withCredentials"in new XMLHttpRequest?e="XMLHttpRequest":"undefined"!=typeof XDomainRequest&&XDomainRequest===Object(XDomainRequest)&&(t=!1),Object.prototype.toString.call(_.HTMLElement).indexOf("Constructor")>0&&(t=!1)),{corsType:e,corsCookiesEnabled:t}}(),getCORSInstance:function(){return"none"===this.corsMetadata.corsType?null:new _[this.corsMetadata.corsType]},fireCORS:function(e,t,a){function i(t){var a;try{if((a=JSON.parse(t))!==Object(a))return void n.handleCORSError(e,null,"Response is not JSON")}catch(t){return void n.handleCORSError(e,t,"Error parsing response as JSON")}try{for(var i=e.callback,r=_,o=0;o<i.length;o++)r=r[i[o]];r(a)}catch(t){n.handleCORSError(e,t,"Error forming callback function")}}var n=this;t&&(e.loadErrorHandler=t);try{var r=this.getCORSInstance();r.open("get",e.corsUrl+"&ts="+(new Date).getTime(),!0),"XMLHttpRequest"===this.corsMetadata.corsType&&(r.withCredentials=!0,r.timeout=g.loadTimeout,r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.onreadystatechange=function(){4===this.readyState&&200===this.status&&i(this.responseText)}),r.onerror=function(t){n.handleCORSError(e,t,"onerror")},r.ontimeout=function(t){n.handleCORSError(e,t,"ontimeout")},r.send(),g._log.requests.push(e.corsUrl)}catch(t){this.handleCORSError(e,t,"try-catch")}},handleCORSError:function(e,t,a){g.CORSErrors.push({corsData:e,error:t,description:a}),e.loadErrorHandler&&("ontimeout"===a?e.loadErrorHandler(!0):e.loadErrorHandler(!1))}};g._requestProcs=w;var F={THROTTLE_START:3e4,MAX_SYNCS_LENGTH:649,throttleTimerSet:!1,id:null,onPagePixels:[],iframeHost:null,getIframeHost:function(e){if("string"==typeof e){var t=e.split("/");return t[0]+"//"+t[2]}},subdomain:null,url:null,getUrl:function(){var e,t="http://fast.",a="?d_nsid="+g.idSyncContainerID+"#"+encodeURIComponent(p.location.href);return this.subdomain||(this.subdomain="nosubdomainreturned"),g.loadSSL&&(t=g.idSyncSSLUseAkamai?"https://fast.":"https://"),e=t+this.subdomain+".demdex.net/dest5.html"+a,this.iframeHost=this.getIframeHost(e),this.id="destination_publishing_iframe_"+this.subdomain+"_"+g.idSyncContainerID,e},checkDPIframeSrc:function(){var e="?d_nsid="+g.idSyncContainerID+"#"+encodeURIComponent(p.location.href);"string"==typeof g.dpIframeSrc&&g.dpIframeSrc.length&&(this.id="destination_publishing_iframe_"+(g._subdomain||this.subdomain||(new Date).getTime())+"_"+g.idSyncContainerID,this.iframeHost=this.getIframeHost(g.dpIframeSrc),this.url=g.dpIframeSrc+e)},idCallNotProcesssed:null,doAttachIframe:!1,startedAttachingIframe:!1,iframeHasLoaded:null,iframeIdChanged:null,newIframeCreated:null,originalIframeHasLoadedAlready:null,sendingMessages:!1,messages:[],messagesPosted:[],messagesReceived:[],messageSendingInterval:h.POST_MESSAGE_ENABLED?null:100,jsonForComparison:[],jsonDuplicates:[],jsonWaiting:[],jsonProcessed:[],canSetThirdPartyCookies:!0,receivedThirdPartyCookiesNotification:!1,readyToAttachIframe:function(){return!g.idSyncDisable3rdPartySyncing&&(this.doAttachIframe||g._doAttachIframe)&&(this.subdomain&&"nosubdomainreturned"!==this.subdomain||g._subdomain)&&this.url&&!this.startedAttachingIframe},attachIframe:function(){function e(){i=document.createElement("iframe"),i.sandbox="allow-scripts allow-same-origin",i.title="Adobe ID Syncing iFrame",i.id=a.id,i.style.cssText="display: none; width: 0; height: 0;",i.src=a.url,a.newIframeCreated=!0,t(),document.body.appendChild(i)}function t(){R.addListener(i,"load",function(){i.className="aamIframeLoaded",a.iframeHasLoaded=!0,a.requestToProcess()})}this.startedAttachingIframe=!0;var a=this,i=document.getElementById(this.id);i?"IFRAME"!==i.nodeName?(this.id+="_2",this.iframeIdChanged=!0,e()):(this.newIframeCreated=!1,"aamIframeLoaded"!==i.className?(this.originalIframeHasLoadedAlready=!1,t()):(this.originalIframeHasLoadedAlready=!0,this.iframeHasLoaded=!0,this.iframe=i,this.requestToProcess())):e(),this.iframe=i},requestToProcess:function(e){function t(){i.jsonForComparison.push(e),i.jsonWaiting.push(e),i.processSyncOnPage(e)}var a,i=this;if(e===Object(e)&&e.ibs)if(h.HAS_JSON_STRINGIFY)if(a=JSON.stringify(e.ibs||[]),this.jsonForComparison.length){var n,r,o,s=!1;for(n=0,r=this.jsonForComparison.length;r>n;n++)if(o=this.jsonForComparison[n],a===JSON.stringify(o.ibs||[])){s=!0;break}s?this.jsonDuplicates.push(e):t()}else t();else t();if((this.receivedThirdPartyCookiesNotification||!h.POST_MESSAGE_ENABLED||this.iframeHasLoaded)&&this.jsonWaiting.length){var l=this.jsonWaiting.shift();this.process(l),this.requestToProcess()}!g.idSyncDisableSyncs&&this.iframeHasLoaded&&this.messages.length&&!this.sendingMessages&&(this.throttleTimerSet||(this.throttleTimerSet=!0,setTimeout(function(){i.messageSendingInterval=h.POST_MESSAGE_ENABLED?null:150},this.THROTTLE_START)),this.sendingMessages=!0,this.sendMessages())},processSyncOnPage:function(e){var t,a,i,n;if((t=e.ibs)&&t instanceof Array&&(a=t.length))for(i=0;a>i;i++)n=t[i],n.syncOnPage&&this.checkFirstPartyCookie(n,"","syncOnPage")},process:function(e){var t,a,i,n,r,o=encodeURIComponent,s=!1;if((t=e.ibs)&&t instanceof Array&&(a=t.length))for(s=!0,i=0;a>i;i++)n=t[i],r=[o("ibs"),o(n.id||""),o(n.tag||""),R.encodeAndBuildRequest(n.url||[],","),o(n.ttl||""),"","",n.fireURLSync?"true":"false"],n.syncOnPage||(this.canSetThirdPartyCookies?this.addMessage(r.join("|")):n.fireURLSync&&this.checkFirstPartyCookie(n,r.join("|")));s&&this.jsonProcessed.push(e)},checkFirstPartyCookie:function(e,t,a){var i="syncOnPage"===a,n=i?y:A;g._readVisitor();var r,o,s=g._getField(n),l=!1,c=!1,u=Math.ceil((new Date).getTime()/h.MILLIS_PER_DAY);s?(r=s.split("*"),o=this.pruneSyncData(r,e.id,u),l=o.dataPresent,c=o.dataValid,l&&c||this.fireSync(i,e,t,r,n,u)):(r=[],this.fireSync(i,e,t,r,n,u))},pruneSyncData:function(e,t,a){var i,n,r,o=!1,s=!1;for(n=0;n<e.length;n++)i=e[n],r=parseInt(i.split("-")[1],10),i.match("^"+t+"-")?(o=!0,r>a?s=!0:(e.splice(n,1),n--)):a>=r&&(e.splice(n,1),n--);return{dataPresent:o,dataValid:s}},manageSyncsSize:function(e){if(e.join("*").length>this.MAX_SYNCS_LENGTH)for(e.sort(function(e,t){return parseInt(e.split("-")[1],10)-parseInt(t.split("-")[1],10)});e.join("*").length>this.MAX_SYNCS_LENGTH;)e.shift()},fireSync:function(e,t,a,i,n,r){var o=this;if(e){if("img"===t.tag){var s,l,c,u,d=t.url,p=g.loadSSL?"https:":"http:";for(s=0,l=d.length;l>s;s++){c=d[s],u=/^\/\//.test(c);var f=new Image;R.addListener(f,"load",function(e,t,a,i){return function(){o.onPagePixels[e]=null,g._readVisitor();var r,s=g._getField(n),l=[];if(s){r=s.split("*");var c,u,d;for(c=0,u=r.length;u>c;c++)d=r[c],d.match("^"+t.id+"-")||l.push(d)}o.setSyncTrackingData(l,t,a,i)}}(this.onPagePixels.length,t,n,r)),f.src=(u?p:"")+c,this.onPagePixels.push(f)}}}else this.addMessage(a),this.setSyncTrackingData(i,t,n,r)},addMessage:function(e){var t=encodeURIComponent,a=t(g._enableErrorReporting?"---destpub-debug---":"---destpub---");this.messages.push((h.POST_MESSAGE_ENABLED?"":a)+e)},setSyncTrackingData:function(e,t,a,i){e.push(t.id+"-"+(i+Math.ceil(t.ttl/60/24))),this.manageSyncsSize(e),g._setField(a,e.join("*"))},sendMessages:function(){var e,t=this;this.messages.length?h.POST_MESSAGE_ENABLED?(e=encodeURIComponent("---destpub-combined---")+this.messages.join("%01"),this.postMessage(e),this.messages=[],this.sendingMessages=!1):(e=this.messages.shift(),this.postMessage(e),setTimeout(function(){t.sendMessages()},this.messageSendingInterval)):this.sendingMessages=!1},postMessage:function(e){g._xd.postMessage(e,this.url,this.iframe.contentWindow),this.messagesPosted.push(e)},receiveMessage:function(e){var t,a=/^---destpub-to-parent---/;"string"==typeof e&&a.test(e)&&(t=e.replace(a,"").split("|"),"canSetThirdPartyCookies"===t[0]&&(this.canSetThirdPartyCookies="true"===t[1],this.receivedThirdPartyCookiesNotification=!0,this.requestToProcess()),this.messagesReceived.push(e))},processIDCallData:function(e){(null==this.url||e.subdomain&&"nosubdomainreturned"===this.subdomain)&&("string"==typeof g._subdomain&&g._subdomain.length?this.subdomain=g._subdomain:this.subdomain=e.subdomain||"",this.url=this.getUrl()),e.ibs instanceof Array&&e.ibs.length&&(this.doAttachIframe=!0),this.readyToAttachIframe()&&(g.idSyncAttachIframeOnWindowLoad?(m.windowLoaded||"complete"===p.readyState||"loaded"===p.readyState)&&this.attachIframe():this.attachIframeASAP()),"function"==typeof g.idSyncIDCallResult?g.idSyncIDCallResult(e):this.requestToProcess(e),"function"==typeof g.idSyncAfterIDCallResult&&g.idSyncAfterIDCallResult(e)},canMakeSyncIDCall:function(e,t){return g._forceSyncIDCall||!e||t-e>h.DAYS_BETWEEN_SYNC_ID_CALLS},attachIframeASAP:function(){function e(){t.startedAttachingIframe||(document.body?t.attachIframe():setTimeout(e,30))}var t=this;e()}};g._destinationPublishing=F,g.timeoutMetricsLog=[];var N,x={isClientSideMarketingCloudVisitorID:null,MCIDCallTimedOut:null,AnalyticsIDCallTimedOut:null,AAMIDCallTimedOut:null,fieldGroupObj:{},setState:function(e,t){switch(e){case D:!1===t?!0!==this.MCIDCallTimedOut&&(this.MCIDCallTimedOut=!1):this.MCIDCallTimedOut=t;break;case E:!1===t?!0!==this.AnalyticsIDCallTimedOut&&(this.AnalyticsIDCallTimedOut=!1):this.AnalyticsIDCallTimedOut=t;break;case T:!1===t?!0!==this.AAMIDCallTimedOut&&(this.AAMIDCallTimedOut=!1):this.AAMIDCallTimedOut=t}}};g.isClientSideMarketingCloudVisitorID=function(){return x.isClientSideMarketingCloudVisitorID},g.MCIDCallTimedOut=function(){return x.MCIDCallTimedOut},g.AnalyticsIDCallTimedOut=function(){return x.AnalyticsIDCallTimedOut},g.AAMIDCallTimedOut=function(){return x.AAMIDCallTimedOut},g.idSyncGetOnPageSyncInfo=function(){return g._readVisitor(),g._getField(y)},g.idSyncByURL=function(e){var t=u(e||{});if(t.error)return t.error;var a,i,n=e.url,r=encodeURIComponent,o=F; return n=n.replace(/^https:/,"").replace(/^http:/,""),a=R.encodeAndBuildRequest(["",e.dpid,e.dpuuid||""],","),i=["ibs",r(e.dpid),"img",r(n),t.ttl,"",a],o.addMessage(i.join("|")),o.requestToProcess(),"Successfully queued"},g.idSyncByDataSource=function(e){return e===Object(e)&&"string"==typeof e.dpuuid&&e.dpuuid.length?(e.url="//dpm.demdex.net/ibs:dpid="+e.dpid+"&dpuuid="+e.dpuuid,g.idSyncByURL(e)):"Error: config or config.dpuuid is empty"},g._compareVersions=function(e,t){if(e===t)return 0;var a=e.toString().split("."),i=t.toString().split(".");return c(a.concat(i))?(d(a,i),f(a,i)):NaN},g._getCookieVersion=function(e){e=e||g.cookieRead(g.cookieName);var t=h.VERSION_REGEX.exec(e);return t&&t.length>1?t[1]:null},g._resetAmcvCookie=function(e){var t=g._getCookieVersion();t&&!R.isLessThan(t,e)||R.removeCookie(g.cookieName)},g.setAsCoopSafe=function(){j=!0},g.setAsCoopUnsafe=function(){j=!1},e.indexOf("@")<0&&(e+="@AdobeOrg"),g.marketingCloudOrgID=e,g.cookieName="AMCV_"+e,g.sessionCookieName="AMCVS_"+e,g.cookieDomain=g._getDomain(),g.cookieDomain===_.location.hostname&&(g.cookieDomain=""),g.loadSSL=_.location.protocol.toLowerCase().indexOf("https")>=0,g.loadTimeout=3e4,g.CORSErrors=[],g.marketingCloudServer=g.audienceManagerServer="dpm.demdex.net",g.sdidParamExpiry=30;var V={};V[k]=!0,V[L]=!0;var j=null;if(t&&"object"==typeof t){var U;for(U in t)S(U)&&(g[U]=t[U]);g.idSyncContainerID=g.idSyncContainerID||0,j="boolean"==typeof g.isCoopSafe?g.isCoopSafe:R.parseBoolean(g.isCoopSafe),g.resetBeforeVersion&&g._resetAmcvCookie(g.resetBeforeVersion),g._attemptToPopulateIdsFromUrl(),g._attemptToPopulateSdidFromUrl(),g._readVisitor();var H=g._getField(M),B=Math.ceil((new Date).getTime()/h.MILLIS_PER_DAY);!g.idSyncDisableSyncs&&F.canMakeSyncIDCall(H,B)&&(g._setFieldExpire(L,-1),g._setField(M,B)),g.getMarketingCloudVisitorID(),g.getAudienceManagerLocationHint(),g.getAudienceManagerBlob(),g._mergeServerState(g.serverState)}else g._attemptToPopulateIdsFromUrl(),g._attemptToPopulateSdidFromUrl();if(!g.idSyncDisableSyncs){F.checkDPIframeSrc();var G=function(){var e=F;e.readyToAttachIframe()&&e.attachIframe()};R.addListener(_,"load",function(){m.windowLoaded=!0,G()});try{g._xd.receiveMessage(function(e){F.receiveMessage(e.data)},F.iframeHost)}catch(e){}}g.whitelistIframeDomains&&h.POST_MESSAGE_ENABLED&&(g.whitelistIframeDomains=g.whitelistIframeDomains instanceof Array?g.whitelistIframeDomains:[g.whitelistIframeDomains],g.whitelistIframeDomains.forEach(function(t){var i=new a(e,t),n=s(g,i);g._xd.receiveMessage(n,t)}))};o.getInstance=function(e,t){if(!e)throw new Error("Visitor requires Adobe Marketing Cloud Org ID");e.indexOf("@")<0&&(e+="@AdobeOrg");var a=function(){var t=i.s_c_il;if(t)for(var a=0;a<t.length;a++){var n=t[a];if(n&&"Visitor"===n._c&&n.marketingCloudOrgID===e)return n}}();if(a)return a;var n=new o(e),s=n.isAllowed();return function(){i.s_c_il.splice(--i.s_c_in,1)}(),function(){try{return i.self!==i.parent}catch(e){return!0}}()&&!s&&i.parent?new r(e,t,n,i.parent):new o(e,t)},n(),i.Visitor=o,t.exports=o}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./ChildVisitor":1,"./Message":2,"./utils/makeChildMessageListener":9}],4:[function(e,t,a){a.MESSAGES={HANDSHAKE:"HANDSHAKE",GETSTATE:"GETSTATE",PARENTSTATE:"PARENTSTATE"},a.STATE_KEYS_MAP={MCMID:"MCMID",MCAID:"MCAID",MCAAMB:"MCAAMB",MCAAMLH:"MCAAMLH",MCOPTOUT:"MCOPTOUT",CUSTOMERIDS:"CUSTOMERIDS"},a.ASYNC_API_MAP={MCMID:"getMarketingCloudVisitorID",MCAID:"getAnalyticsVisitorID",MCAAMB:"getAudienceManagerBlob",MCAAMLH:"getAudienceManagerLocationHint",MCOPTOUT:"getOptOut"},a.SYNC_API_MAP={CUSTOMERIDS:"getCustomerIDs"},a.ALL_APIS={MCMID:"getMarketingCloudVisitorID",MCAAMB:"getAudienceManagerBlob",MCAAMLH:"getAudienceManagerLocationHint",MCOPTOUT:"getOptOut",MCAID:"getAnalyticsVisitorID",CUSTOMERIDS:"getCustomerIDs"},a.FIELDGROUP_TO_FIELD={MC:"MCMID",A:"MCAID",AAM:"MCAAMB"}},{}],5:[function(e,t,a){var i=e("../enums"),n=i.STATE_KEYS_MAP;t.exports=function(e){function t(){}function a(t,a){var i=this;return function(){var t=e(0,n.MCMID),r={};return r[n.MCMID]=t,i.setStateAndPublish(r),a(t),t}}this.getMarketingCloudVisitorID=function(e){e=e||t;var i=this.findField(n.MCMID,e),r=a.call(this,n.MCMID,e);return void 0!==i?i:r()}}},{"../enums":4}],6:[function(e,t,a){var i=e("../enums"),n=i.ASYNC_API_MAP;t.exports=function(){Object.keys(n).forEach(function(e){this[n[e]]=function(t){this.callbackRegistry.add(e,t)}},this)}},{"../enums":4}],7:[function(e,t,a){var i=e("../enums"),n=i.MESSAGES,r=i.ASYNC_API_MAP,o=i.SYNC_API_MAP;t.exports=function(){function e(){}function t(e,t){var a=this;return function(){return a.callbackRegistry.add(e,t),a.messageParent(n.GETSTATE),""}}function a(a){this[r[a]]=function(i){i=i||e;var n=this.findField(a,i),r=t.call(this,a,i);return void 0!==n?n:r()}}function i(t){this[o[t]]=function(){return this.findField(t,e)||{}}}Object.keys(r).forEach(a,this),Object.keys(o).forEach(i,this)}},{"../enums":4}],8:[function(e,t,a){function i(){return{callbacks:{},add:function(e,t){this.callbacks[e]=this.callbacks[e]||[];var a=this.callbacks[e].push(t)-1;return function(){this.callbacks[e].splice(a,1)}},execute:function(e,t){if(this.callbacks[e]){t=void 0===t?[]:t,t=t instanceof Array?t:[t];try{for(;this.callbacks[e].length;){var a=this.callbacks[e].shift();"function"==typeof a?a.apply(null,t):a instanceof Array&&a[1].apply(a[0],t)}delete this.callbacks[e]}catch(e){}}},executeAll:function(e,t){(t||e&&!n.isObjectEmpty(e))&&Object.keys(this.callbacks).forEach(function(t){var a=void 0!==e[t]?e[t]:"";this.execute(t,a)},this)},hasCallbacks:function(){return Boolean(Object.keys(this.callbacks).length)}}}var n=e("./utils");t.exports=i},{"./utils":11}],9:[function(e,t,a){var i=e("../enums"),n=e("./utils"),r=i.MESSAGES,o=i.ALL_APIS,s=i.ASYNC_API_MAP,l=i.FIELDGROUP_TO_FIELD;t.exports=function(e,t){function a(){var t={};return Object.keys(o).forEach(function(a){var i=o[a],r=e[i]();n.isValueEmpty(r)||(t[a]=r)}),t}function i(){var t=[];return e._loading&&Object.keys(e._loading).forEach(function(a){if(e._loading[a]){var i=l[a];t.push(i)}}),t.length?t:null}function c(t){return function a(n){var r=i();if(r){var o=s[r[0]];e[o](a,!0)}else t()}}function u(e,i){var n=a();t.send(e,i,n)}function d(e){p(e),u(e,r.HANDSHAKE)}function g(e){c(function(){u(e,r.PARENTSTATE)})()}function p(a){function i(i){n.call(e,i),t.send(a,r.PARENTSTATE,{CUSTOMERIDS:e.getCustomerIDs()})}var n=e.setCustomerIDs;e.setCustomerIDs=i}return function(e){t.isInvalid(e)||(t.parse(e).prefix===r.HANDSHAKE?d:g)(e.source)}}},{"../enums":4,"./utils":11}],10:[function(e,t,a){Object.keys=Object.keys||function(e){var t=[];for(var a in e)t.hasOwnProperty.call(e,a)&&t.push(a);return t},Array.prototype.forEach=Array.prototype.forEach||function(e,t){for(var a=this,i=0,n=a.length;n>i;i++)e.call(t,a[i],i,a)},Object.assign=Object.assign||function(e){for(var t,a,i=1;i<arguments.length;++i){a=arguments[i];for(t in a)Object.prototype.hasOwnProperty.call(a,t)&&(e[t]=a[t])}return e}},{}],11:[function(e,t,a){a.isObjectEmpty=function(e){return e===Object(e)&&0===Object.keys(e).length},a.isValueEmpty=function(e){return""===e||a.isObjectEmpty(e)}},{}]},{},[1,2,3,4]), // All code and conventions are protected by copyright function(e,t,a){function n(){var e=C.filter(C.rules,function(e){return 0===e.event.indexOf("dataelementchange")});this.dataElementsNames=C.map(e,function(e){var t=e.event.match(/dataelementchange\((.*)\)/i);return t[1]},this),this.initPolling()}function r(){C.addEventHandler(e,"orientationchange",r.orientationChange)}function o(){this.defineEvents(),this.visibilityApiHasPriority=!0,t.addEventListener?this.setVisibilityApiPriority(!1):this.attachDetachOlderEventListeners(!0,t,"focusout");C.bindEvent("aftertoolinit",function(){C.fireEvent(C.visibility.isHidden()?"tabblur":"tabfocus")})}function s(){this.rules=C.filter(C.rules,function(e){return"elementexists"===e.event})}function l(){this.rules=C.filter(C.rules,function(e){return"videoplayed"===e.event.substring(0,11)}),this.eventHandler=C.bind(this.onUpdateTime,this)}function c(t){t=t||C.rules,this.rules=C.filter(t,function(e){return"inview"===e.event}),this.elements=[],this.eventHandler=C.bind(this.track,this),C.addEventHandler(e,"scroll",this.eventHandler),C.addEventHandler(e,"load",this.eventHandler)}function u(){C.getToolsByType("nielsen").length>0&&C.domReady(C.bind(this.initialize,this))}function d(){var e=this.eventRegex=/^hover\(([0-9]+)\)$/,t=this.rules=[];C.each(C.rules,function(a){var i=a.event.match(e);i&&t.push([Number(a.event.match(e)[1]),a.selector])})}function g(e){this.delay=250,this.FB=e,C.domReady(C.bind(function(){C.poll(C.bind(this.initialize,this),this.delay,8)},this))}function p(t){C.domReady(C.bind(function(){this.twttr=t||e.twttr,this.initialize()},this))}function f(){this.lastURL=C.URL(),this._fireIfURIChanged=C.bind(this.fireIfURIChanged,this),this._onPopState=C.bind(this.onPopState,this),this._onHashChange=C.bind(this.onHashChange,this),this._pushState=C.bind(this.pushState,this),this._replaceState=C.bind(this.replaceState,this),this.initialize()}function m(e){C.BaseTool.call(this,e),this.defineListeners(),this.beaconMethod="plainBeacon",this.adapt=new m.DataAdapters,this.dataProvider=new m.DataProvider.Aggregate}function h(e){C.BaseTool.call(this,e),this.name=e.name||"VisitorID",this.initialize()}function v(e){C.BaseTool.call(this,e),this.varBindings={},this.events=[],this.products=[],this.customSetupFuns=[]}function b(){C.BaseTool.call(this),this.asyncScriptCallbackQueue=[],this.argsForBlockingScripts=[]}function y(e){C.BaseTool.call(this,e),this.styleElements={},this.targetPageParamsStore={}}function D(e){C.BaseTool.call(this,e),this.name=e.name||"Basic"}function S(e){C.BaseTool.call(this,e)}function P(e){C.BaseTool.call(this,e)}var V=Object.prototype.toString,I=e._satellite&&e._satellite.override,C={initialized:!1,$data:function(e,t,i){if(e){var n="__satellite__",r=C.dataCache,o=e[n];o||(o=e[n]=C.uuid++);var s=r[o];return s||(s=r[o]={}),i===a?s[t]:void(s[t]=i)}},uuid:1,dataCache:{},keys:function(e){var t=[];for(var a in e)e.hasOwnProperty(a)&&t.push(a);return t},values:function(e){var t=[];for(var a in e)e.hasOwnProperty(a)&&t.push(e[a]);return t},isArray:Array.isArray||function(e){return"[object Array]"===V.apply(e)},isObject:function(e){return null!=e&&!C.isArray(e)&&"object"==typeof e},isString:function(e){return"string"==typeof e},isNumber:function(e){return"[object Number]"===V.apply(e)&&!C.isNaN(e)},isNaN:function(e){return e!==e},isRegex:function(e){return e instanceof RegExp},isLinkTag:function(e){return!(!e||!e.nodeName||"a"!==e.nodeName.toLowerCase())},each:function(e,t,a){for(var i=0,n=e.length;n>i;i++)t.call(a,e[i],i,e)},map:function(e,t,a){for(var i=[],n=0,r=e.length;r>n;n++)i.push(t.call(a,e[n],n,e));return i},filter:function(e,t,a){for(var i=[],n=0,r=e.length;r>n;n++){var o=e[n];t.call(a,o,n,e)&&i.push(o)}return i},any:function(e,t,a){for(var i=0,n=e.length;n>i;i++){var r=e[i];if(t.call(a,r,i,e))return!0}return!1},every:function(e,t,a){for(var i=!0,n=0,r=e.length;r>n;n++){var o=e[n];i=i&&t.call(a,o,n,e)}return i},contains:function(e,t){return-1!==C.indexOf(e,t)},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var a=e.length;a--;)if(t===e[a])return a;return-1},find:function(e,t,a){if(!e)return null;for(var i=0,n=e.length;n>i;i++){var r=e[i];if(t.call(a,r,i,e))return r}return null},textMatch:function(e,t){if(null==t)throw new Error("Illegal Argument: Pattern is not present");return null==e?!1:"string"==typeof t?e===t:t instanceof RegExp?t.test(e):!1},stringify:function(e,t){if(t=t||[],C.isObject(e)){if(C.contains(t,e))return"<Cycle>";t.push(e)}if(C.isArray(e))return"["+C.map(e,function(e){return C.stringify(e,t)}).join(",")+"]";if(C.isString(e))return'"'+String(e)+'"';if(C.isObject(e)){var a=[];for(var i in e)e.hasOwnProperty(i)&&a.push(i+": "+C.stringify(e[i],t));return"{"+a.join(", ")+"}"}return String(e)},trim:function(e){return null==e?null:e.trim?e.trim():e.replace(/^ */,"").replace(/ *$/,"")},bind:function(e,t){return function(){return e.apply(t,arguments)}},throttle:function(e,t){var a=null;return function(){var i=this,n=arguments;clearTimeout(a),a=setTimeout(function(){e.apply(i,n)},t)}},domReady:function(e){function a(e){for(g=1;e=n.shift();)e()}var i,n=[],r=!1,o=t,s=o.documentElement,l=s.doScroll,c="DOMContentLoaded",u="addEventListener",d="onreadystatechange",g=/^loade|^c/.test(o.readyState);return o[u]&&o[u](c,i=function(){o.removeEventListener(c,i,r),a()},r),l&&o.attachEvent(d,i=function(){/^c/.test(o.readyState)&&(o.detachEvent(d,i),a())}),e=l?function(t){self!=top?g?t():n.push(t):function(){try{s.doScroll("left")}catch(a){return setTimeout(function(){e(t)},50)}t()}()}:function(e){g?e():n.push(e)}}(),loadScript:function(e,a){var i=t.createElement("script");C.scriptOnLoad(e,i,a),i.src=e,t.getElementsByTagName("head")[0].appendChild(i)},scriptOnLoad:function(e,t,a){function i(e){e&&C.logError(e),a&&a(e)}"onload"in t?(t.onload=function(){i()},t.onerror=function(){i(new Error("Failed to load script "+e))}):"readyState"in t&&(t.onreadystatechange=function(){var e=t.readyState;("loaded"===e||"complete"===e)&&(t.onreadystatechange=null,i())})},loadScriptOnce:function(e,t){C.loadedScriptRegistry[e]||C.loadScript(e,function(a){a||(C.loadedScriptRegistry[e]=!0),t&&t(a)})},loadedScriptRegistry:{},loadScriptSync:function(e){return t.write?C.domReadyFired?void C.notify('Cannot load sync the "'+e+'" script after DOM Ready.',1):(e.indexOf('"')>-1&&(e=encodeURI(e)),void t.write('<script src="'+e+'"></script>')):void C.notify('Cannot load sync the "'+e+'" script because "document.write" is not available',1)},pushAsyncScript:function(e){C.tools["default"].pushAsyncScript(e)},pushBlockingScript:function(e){C.tools["default"].pushBlockingScript(e)},addEventHandler:e.addEventListener?function(e,t,a){e.addEventListener(t,a,!1)}:function(e,t,a){e.attachEvent("on"+t,a)},removeEventHandler:e.removeEventListener?function(e,t,a){e.removeEventListener(t,a,!1)}:function(e,t,a){e.detachEvent("on"+t,a)},preventDefault:e.addEventListener?function(e){e.preventDefault()}:function(e){e.returnValue=!1},stopPropagation:function(e){e.cancelBubble=!0,e.stopPropagation&&e.stopPropagation()},containsElement:function(e,t){return e.contains?e.contains(t):!!(16&e.compareDocumentPosition(t))},matchesCss:function(a){function i(e,t){var a=t.tagName;return a?e.toLowerCase()===a.toLowerCase():!1}var n=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector||a.msMatchesSelector;return n?function(a,i){if(i===t||i===e)return!1;try{return n.call(i,a)}catch(r){return!1}}:a.querySelectorAll?function(e,t){var a=t.parentNode;if(!a)return!1;if(e.match(/^[a-z]+$/i))return i(e,t);try{for(var n=t.parentNode.querySelectorAll(e),r=n.length;r--;)if(n[r]===t)return!0}catch(o){}return!1}:function(e,t){if(e.match(/^[a-z]+$/i))return i(e,t);try{return C.Sizzle.matches(e,[t]).length>0}catch(a){return!1}}}(t.documentElement),cssQuery:function(e){return e.querySelectorAll?function(t,a){var i;try{i=e.querySelectorAll(t)}catch(n){i=[]}a(i)}:function(e,t){if(C.Sizzle){var a;try{a=C.Sizzle(e)}catch(i){a=[]}t(a)}else C.sizzleQueue.push([e,t])}}(t),hasAttr:function(e,t){return e.hasAttribute?e.hasAttribute(t):e[t]!==a},inherit:function(e,t){var a=function(){};a.prototype=t.prototype,e.prototype=new a,e.prototype.constructor=e},extend:function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])},toArray:function(){try{var e=Array.prototype.slice;return e.call(t.documentElement.childNodes,0)[0].nodeType,function(t){return e.call(t,0)}}catch(a){return function(e){for(var t=[],a=0,i=e.length;i>a;a++)t.push(e[a]);return t}}}(),equalsIgnoreCase:function(e,t){return null==e?null==t:null==t?!1:String(e).toLowerCase()===String(t).toLowerCase()},poll:function(e,t,a){function i(){C.isNumber(a)&&n++>=a||e()||setTimeout(i,t)}var n=0;t=t||1e3,i()},escapeForHtml:function(e){return e?String(e).replace(/\&/g,"&amp;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;").replace(/\"/g,"&quot;").replace(/\'/g,"&#x27;").replace(/\//g,"&#x2F;"):e}};C.availableTools={},C.availableEventEmitters=[],C.fireOnceEvents=["condition","elementexists"],C.initEventEmitters=function(){C.eventEmitters=C.map(C.availableEventEmitters,function(e){return new e})},C.eventEmitterBackgroundTasks=function(){C.each(C.eventEmitters,function(e){"backgroundTasks"in e&&e.backgroundTasks()})},C.initTools=function(e){var t={"default":new b},a=C.settings.euCookieName||"sat_track";for(var i in e)if(e.hasOwnProperty(i)){var n,r,o;if(n=e[i],n.euCookie){var s="true"!==C.readCookie(a);if(s)continue}if(r=C.availableTools[n.engine],!r){var l=[];for(var c in C.availableTools)C.availableTools.hasOwnProperty(c)&&l.push(c);throw new Error("No tool engine named "+n.engine+", available: "+l.join(",")+".")}o=new r(n),o.id=i,t[i]=o}return t},C.preprocessArguments=function(e,t,a,i,n){function r(e){return i&&C.isString(e)?e.toLowerCase():e}function o(e){var l={};for(var c in e)if(e.hasOwnProperty(c)){var u=e[c];C.isObject(u)?l[c]=o(u):C.isArray(u)?l[c]=s(u,i):l[c]=r(C.replace(u,t,a,n))}return l}function s(e,i){for(var n=[],s=0,l=e.length;l>s;s++){var c=e[s];C.isString(c)?c=r(C.replace(c,t,a)):c&&c.constructor===Object&&(c=o(c)),n.push(c)}return n}return e?s(e,i):e},C.execute=function(e,t,a,i){function n(n){var r=i[n||"default"];if(r)try{r.triggerCommand(e,t,a)}catch(o){C.logError(o)}}if(!_satellite.settings.hideActivity)if(i=i||C.tools,e.engine){var r=e.engine;for(var o in i)if(i.hasOwnProperty(o)){var s=i[o];s.settings&&s.settings.engine===r&&n(o)}}else e.tool instanceof Array?C.each(e.tool,function(e){n(e)}):n(e.tool)},C.Logger={outputEnabled:!1,messages:[],keepLimit:100,flushed:!1,LEVELS:[null,null,"log","info","warn","error"],message:function(e,t){var a=this.LEVELS[t]||"log";this.messages.push([a,e]),this.messages.length>this.keepLimit&&this.messages.shift(),this.outputEnabled&&this.echo(a,e)},getHistory:function(){return this.messages},clearHistory:function(){this.messages=[]},setOutputState:function(e){this.outputEnabled!=e&&(this.outputEnabled=e,e?this.flush():this.flushed=!1)},echo:function(t,a){e.console&&e.console[t]("SATELLITE: "+a)},flush:function(){this.flushed||(C.each(this.messages,function(e){e[2]!==!0&&(this.echo(e[0],e[1]),e[2]=!0)},this),this.flushed=!0)}},C.notify=C.bind(C.Logger.message,C.Logger),C.cleanText=function(e){return null==e?null:C.trim(e).replace(/\s+/g," ")},C.cleanText.legacy=function(e){return null==e?null:C.trim(e).replace(/\s{2,}/g," ").replace(/[^\000-\177]*/g,"")},C.text=function(e){return e.textContent||e.innerText},C.specialProperties={text:C.text,cleanText:function(e){return C.cleanText(C.text(e))}},C.getObjectProperty=function(e,t,i){for(var n,r=t.split("."),o=e,s=C.specialProperties,l=0,c=r.length;c>l;l++){if(null==o)return a;var u=r[l];if(i&&"@"===u.charAt(0)){var d=u.slice(1);o=s[d](o)}else if(o.getAttribute&&(n=u.match(/^getAttribute\((.+)\)$/))){var g=n[1];o=o.getAttribute(g)}else o=o[u]}return o},C.getToolsByType=function(e){if(!e)throw new Error("Tool type is missing");var t=[];for(var a in C.tools)if(C.tools.hasOwnProperty(a)){var i=C.tools[a];i.settings&&i.settings.engine===e&&t.push(i)}return t},C.setVar=function(){var e=C.data.customVars;if(null==e&&(C.data.customVars={},e=C.data.customVars),"string"==typeof arguments[0]){var t=arguments[0];e[t]=arguments[1]}else if(arguments[0]){var a=arguments[0];for(var i in a)a.hasOwnProperty(i)&&(e[i]=a[i])}},C.dataElementSafe=function(e,t){if(arguments.length>2){var a=arguments[2];"pageview"===t?C.dataElementSafe.pageviewCache[e]=a:"session"===t?C.setCookie("_sdsat_"+e,a):"visitor"===t&&C.setCookie("_sdsat_"+e,a,730)}else{if("pageview"===t)return C.dataElementSafe.pageviewCache[e];if("session"===t||"visitor"===t)return C.readCookie("_sdsat_"+e)}},C.dataElementSafe.pageviewCache={},C.realGetDataElement=function(t){var a;return t.selector?C.hasSelector&&C.cssQuery(t.selector,function(e){if(e.length>0){var i=e[0];"text"===t.property?a=i.innerText||i.textContent:t.property in i?a=i[t.property]:C.hasAttr(i,t.property)&&(a=i.getAttribute(t.property))}}):t.queryParam?a=t.ignoreCase?C.getQueryParamCaseInsensitive(t.queryParam):C.getQueryParam(t.queryParam):t.cookie?a=C.readCookie(t.cookie):t.jsVariable?a=C.getObjectProperty(e,t.jsVariable):t.customJS?a=t.customJS():t.contextHub&&(a=t.contextHub()),C.isString(a)&&t.cleanText&&(a=C.cleanText(a)),a},C.getDataElement=function(e,t,i){if(i=i||C.dataElements[e],null==i)return C.settings.undefinedVarsReturnEmpty?"":null;var n=C.realGetDataElement(i);return n===a&&i.storeLength?n=C.dataElementSafe(e,i.storeLength):n!==a&&i.storeLength&&C.dataElementSafe(e,i.storeLength,n),n||t||(n=i["default"]||""),C.isString(n)&&i.forceLowerCase&&(n=n.toLowerCase()),n},C.getVar=function(i,n,r){var o,s,l=C.data.customVars,c=r?r.target||r.srcElement:null,u={uri:C.URI(),protocol:t.location.protocol,hostname:t.location.hostname};if(C.dataElements&&i in C.dataElements)return C.getDataElement(i);if(s=u[i.toLowerCase()],s===a)if("this."===i.substring(0,5))i=i.slice(5),s=C.getObjectProperty(n,i,!0);else if("event."===i.substring(0,6))i=i.slice(6),s=C.getObjectProperty(r,i);else if("target."===i.substring(0,7))i=i.slice(7),s=C.getObjectProperty(c,i);else if("window."===i.substring(0,7))i=i.slice(7),s=C.getObjectProperty(e,i);else if("param."===i.substring(0,6))i=i.slice(6),s=C.getQueryParam(i);else if(o=i.match(/^rand([0-9]+)$/)){var d=Number(o[1]),g=(Math.random()*(Math.pow(10,d)-1)).toFixed(0);s=Array(d-g.length+1).join("0")+g}else s=C.getObjectProperty(l,i);return s},C.getVars=function(e,t,a){var i={};return C.each(e,function(e){i[e]=C.getVar(e,t,a)}),i},C.replace=function(e,t,a,i){return"string"!=typeof e?e:e.replace(/%(.*?)%/g,function(e,n){var r=C.getVar(n,t,a);return null==r?C.settings.undefinedVarsReturnEmpty?"":e:i?C.escapeForHtml(r):r})},C.escapeHtmlParams=function(e){return e.escapeHtml=!0,e},C.searchVariables=function(e,t,a){if(!e||0===e.length)return"";for(var i=[],n=0,r=e.length;r>n;n++){var o=e[n],s=C.getVar(o,t,a);i.push(o+"="+escape(s))}return"?"+i.join("&")},C.fireRule=function(e,t,a){var i=e.trigger;if(i){for(var n=0,r=i.length;r>n;n++){var o=i[n];C.execute(o,t,a)}C.contains(C.fireOnceEvents,e.event)&&(e.expired=!0)}},C.isLinked=function(e){for(var t=e;t;t=t.parentNode)if(C.isLinkTag(t))return!0;return!1},C.firePageLoadEvent=function(e){for(var a=t.location,i={type:e,target:a},n=C.pageLoadRules,r=C.evtHandlers[i.type],o=n.length;o--;){var s=n[o];C.ruleMatches(s,i,a)&&(C.notify('Rule "'+s.name+'" fired.',1),C.fireRule(s,a,i))}for(var l in C.tools)if(C.tools.hasOwnProperty(l)){var c=C.tools[l];c.endPLPhase&&c.endPLPhase(e)}r&&C.each(r,function(e){e(i)})},C.track=function(e){e=e.replace(/^\s*/,"").replace(/\s*$/,"");for(var t=0;t<C.directCallRules.length;t++){var a=C.directCallRules[t];if(a.name===e)return C.notify('Direct call Rule "'+e+'" fired.',1),void C.fireRule(a,location,{type:e})}C.notify('Direct call Rule "'+e+'" not found.',1)},C.basePath=function(){return C.data.host?("https:"===t.location.protocol?"https://"+C.data.host.https:"http://"+C.data.host.http)+"/":this.settings.basePath},C.setLocation=function(t){e.location=t},C.parseQueryParams=function(e){var t=function(e){var t=e;try{t=decodeURIComponent(e)}catch(a){}return t};if(""===e||C.isString(e)===!1)return{};0===e.indexOf("?")&&(e=e.substring(1));var a={},i=e.split("&");return C.each(i,function(e){e=e.split("="),e[1]&&(a[t(e[0])]=t(e[1]))}),a},C.getCaseSensitivityQueryParamsMap=function(e){var t=C.parseQueryParams(e),a={};for(var i in t)t.hasOwnProperty(i)&&(a[i.toLowerCase()]=t[i]);return{normal:t,caseInsensitive:a}},C.updateQueryParams=function(){C.QueryParams=C.getCaseSensitivityQueryParamsMap(e.location.search)},C.updateQueryParams(),C.getQueryParam=function(e){return C.QueryParams.normal[e]},C.getQueryParamCaseInsensitive=function(e){return C.QueryParams.caseInsensitive[e.toLowerCase()]},C.encodeObjectToURI=function(e){if(C.isObject(e)===!1)return"";var t=[];for(var a in e)e.hasOwnProperty(a)&&t.push(encodeURIComponent(a)+"="+encodeURIComponent(e[a]));return t.join("&")},C.readCookie=function(e){for(var i=e+"=",n=t.cookie.split(";"),r=0;r<n.length;r++){for(var o=n[r];" "==o.charAt(0);)o=o.substring(1,o.length);if(0===o.indexOf(i))return o.substring(i.length,o.length)}return a},C.setCookie=function(e,a,i){var n;if(i){var r=new Date;r.setTime(r.getTime()+24*i*60*60*1e3),n="; expires="+r.toGMTString()}else n="";t.cookie=e+"="+a+n+"; path=/"},C.removeCookie=function(e){C.setCookie(e,"",-1)},C.getElementProperty=function(e,t){if("@"===t.charAt(0)){var i=C.specialProperties[t.substring(1)];if(i)return i(e)}return"innerText"===t?C.text(e):t in e?e[t]:e.getAttribute?e.getAttribute(t):a},C.propertiesMatch=function(e,t){if(e)for(var a in e)if(e.hasOwnProperty(a)){var i=e[a],n=C.getElementProperty(t,a);if("string"==typeof i&&i!==n)return!1;if(i instanceof RegExp&&!i.test(n))return!1}return!0},C.isRightClick=function(e){var t;return e.which?t=3==e.which:e.button&&(t=2==e.button),t},C.ruleMatches=function(e,t,a,i){var n=e.condition,r=e.conditions,o=e.property,s=t.type,l=e.value,c=t.target||t.srcElement,u=a===c;if(e.event!==s&&("custom"!==e.event||e.customEvent!==s))return!1;if(!C.ruleInScope(e))return!1;if("click"===e.event&&C.isRightClick(t))return!1;if(e.isDefault&&i>0)return!1;if(e.expired)return!1;if("inview"===s&&t.inviewDelay!==e.inviewDelay)return!1;if(!u&&(e.bubbleFireIfParent===!1||0!==i&&e.bubbleFireIfChildFired===!1))return!1;if(e.selector&&!C.matchesCss(e.selector,a))return!1;if(!C.propertiesMatch(o,a))return!1;if(null!=l)if("string"==typeof l){if(l!==a.value)return!1}else if(!l.test(a.value))return!1;if(n)try{if(!n.call(a,t,c))return C.notify('Condition for rule "'+e.name+'" not met.',1),!1}catch(d){return C.notify('Condition for rule "'+e.name+'" not met. Error: '+d.message,1),!1}if(r){var g=C.find(r,function(i){try{return!i.call(a,t,c)}catch(n){return C.notify('Condition for rule "'+e.name+'" not met. Error: '+n.message,1),!0}});if(g)return C.notify("Condition "+g.toString()+' for rule "'+e.name+'" not met.',1),!1}return!0},C.evtHandlers={},C.bindEvent=function(e,t){var a=C.evtHandlers;a[e]||(a[e]=[]),a[e].push(t)},C.whenEvent=C.bindEvent,C.unbindEvent=function(e,t){var a=C.evtHandlers;if(a[e]){var i=C.indexOf(a[e],t);a[e].splice(i,1)}},C.bindEventOnce=function(e,t){var a=function(){C.unbindEvent(e,a),t.apply(null,arguments)};C.bindEvent(e,a)},C.isVMLPoisoned=function(e){if(!e)return!1;try{e.nodeName}catch(t){if("Attribute only valid on v:image"===t.message)return!0}return!1},C.handleEvent=function(e){if(!C.$data(e,"eventProcessed")){var t=e.type.toLowerCase(),a=e.target||e.srcElement,i=0,n=C.rules,r=(C.tools,C.evtHandlers[e.type]);if(C.isVMLPoisoned(a))return void C.notify("detected "+t+" on poisoned VML element, skipping.",1);r&&C.each(r,function(t){t(e)});var o=a&&a.nodeName;o?C.notify("detected "+t+" on "+a.nodeName,1):C.notify("detected "+t,1);for(var s=a;s;s=s.parentNode){var l=!1;if(C.each(n,function(t){C.ruleMatches(t,e,s,i)&&(C.notify('Rule "'+t.name+'" fired.',1),C.fireRule(t,s,e),i++,t.bubbleStop&&(l=!0))}),l)break}C.$data(e,"eventProcessed",!0)}},C.onEvent=t.querySelectorAll?function(e){C.handleEvent(e)}:function(){var e=[],t=function(t){t.selector?e.push(t):C.handleEvent(t)};return t.pendingEvents=e,t}(),C.fireEvent=function(e,t){C.onEvent({type:e,target:t})},C.registerEvents=function(e,t){for(var a=t.length-1;a>=0;a--){var i=t[a];C.$data(e,i+".tracked")||(C.addEventHandler(e,i,C.onEvent),C.$data(e,i+".tracked",!0))}},C.registerEventsForTags=function(e,a){for(var i=e.length-1;i>=0;i--)for(var n=e[i],r=t.getElementsByTagName(n),o=r.length-1;o>=0;o--)C.registerEvents(r[o],a)},C.setListeners=function(){var e=["click","submit"];C.each(C.rules,function(t){"custom"===t.event&&t.hasOwnProperty("customEvent")&&!C.contains(e,t.customEvent)&&e.push(t.customEvent)}),C.registerEvents(t,e)},C.getUniqueRuleEvents=function(){return C._uniqueRuleEvents||(C._uniqueRuleEvents=[],C.each(C.rules,function(e){-1===C.indexOf(C._uniqueRuleEvents,e.event)&&C._uniqueRuleEvents.push(e.event)})),C._uniqueRuleEvents},C.setFormListeners=function(){if(!C._relevantFormEvents){var e=["change","focus","blur","keypress"];C._relevantFormEvents=C.filter(C.getUniqueRuleEvents(),function(t){return-1!==C.indexOf(e,t)})}C._relevantFormEvents.length&&C.registerEventsForTags(["input","select","textarea","button"],C._relevantFormEvents)},C.setVideoListeners=function(){if(!C._relevantVideoEvents){var e=["play","pause","ended","volumechange","stalled","loadeddata"];C._relevantVideoEvents=C.filter(C.getUniqueRuleEvents(),function(t){return-1!==C.indexOf(e,t)})}C._relevantVideoEvents.length&&C.registerEventsForTags(["video"],C._relevantVideoEvents)},C.readStoredSetting=function(t){try{return t="sdsat_"+t,e.localStorage.getItem(t)}catch(a){return C.notify("Cannot read stored setting from localStorage: "+a.message,2),null}},C.loadStoredSettings=function(){var e=C.readStoredSetting("debug"),t=C.readStoredSetting("hide_activity");e&&(C.settings.notifications="true"===e),t&&(C.settings.hideActivity="true"===t)},C.isRuleActive=function(e,t){function a(e,t){return t=n(t,{hour:e[p](),minute:e[f]()}),Math.floor(Math.abs((e.getTime()-t.getTime())/864e5))}function i(e,t){function a(e){return 12*e[d]()+e[g]()}return Math.abs(a(e)-a(t))}function n(e,t){var a=new Date(e.getTime());for(var i in t)if(t.hasOwnProperty(i)){var n=t[i];switch(i){case"hour":a[m](n);break;case"minute":a[h](n);break;case"date":a[v](n)}}return a}function r(e,t){var a=e[p](),i=e[f](),n=t[p](),r=t[f]();return 60*a+i>60*n+r}function o(e,t){var a=e[p](),i=e[f](),n=t[p](),r=t[f]();return 60*n+r>60*a+i}var s=e.schedule;if(!s)return!0;var l=s.utc,c=l?"getUTCDate":"getDate",u=l?"getUTCDay":"getDay",d=l?"getUTCFullYear":"getFullYear",g=l?"getUTCMonth":"getMonth",p=l?"getUTCHours":"getHours",f=l?"getUTCMinutes":"getMinutes",m=l?"setUTCHours":"setHours",h=l?"setUTCMinutes":"setMinutes",v=l?"setUTCDate":"setDate";if(t=t||new Date,s.repeat){if(r(s.start,t))return!1;if(o(s.end,t))return!1;if(t<s.start)return!1;if(s.endRepeat&&t>=s.endRepeat)return!1;if("daily"===s.repeat){if(s.repeatEvery){var b=a(s.start,t);if(b%s.repeatEvery!==0)return!1}}else if("weekly"===s.repeat){if(s.days){if(!C.contains(s.days,t[u]()))return!1}else if(s.start[u]()!==t[u]())return!1;if(s.repeatEvery){var y=a(s.start,t);if(y%(7*s.repeatEvery)!==0)return!1}}else if("monthly"===s.repeat){if(s.repeatEvery){var D=i(s.start,t);if(D%s.repeatEvery!==0)return!1}if(s.nthWeek&&s.mthDay){if(s.mthDay!==t[u]())return!1;var S=Math.floor((t[c]()-t[u]()+1)/7);if(s.nthWeek!==S)return!1}else if(s.start[c]()!==t[c]())return!1}else if("yearly"===s.repeat){if(s.start[g]()!==t[g]())return!1;if(s.start[c]()!==t[c]())return!1;if(s.repeatEvery){var y=Math.abs(s.start[d]()-t[d]());if(y%s.repeatEvery!==0)return!1}}}else{if(s.start>t)return!1;if(s.end<t)return!1}return!0},C.isOutboundLink=function(e){if(!e.getAttribute("href"))return!1;var t=e.hostname,a=(e.href,e.protocol);if("http:"!==a&&"https:"!==a)return!1;var i=C.any(C.settings.domainList,function(e){return C.isSubdomainOf(t,e)});return i?!1:t!==location.hostname},C.isLinkerLink=function(e){return e.getAttribute&&e.getAttribute("href")?C.hasMultipleDomains()&&e.hostname!=location.hostname&&!e.href.match(/^javascript/i)&&!C.isOutboundLink(e):!1},C.isSubdomainOf=function(e,t){if(e===t)return!0;var a=e.length-t.length;return a>0?C.equalsIgnoreCase(e.substring(a),t):!1},C.getVisitorId=function(){var e=C.getToolsByType("visitor_id");return 0===e.length?null:e[0].getInstance()},C.URI=function(){var e=t.location.pathname+t.location.search;return C.settings.forceLowerCase&&(e=e.toLowerCase()),e},C.URL=function(){var e=t.location.href;return C.settings.forceLowerCase&&(e=e.toLowerCase()),e},C.filterRules=function(){function e(e){return C.isRuleActive(e)?!0:!1}C.rules=C.filter(C.rules,e),C.pageLoadRules=C.filter(C.pageLoadRules,e)},C.ruleInScope=function(e,a){function i(e,t){function a(e){return t.match(e)}var i=e.include,r=e.exclude;if(i&&n(i,t))return!0;if(r){if(C.isString(r)&&r===t)return!0;if(C.isArray(r)&&C.any(r,a))return!0;if(C.isRegex(r)&&a(r))return!0}return!1}function n(e,t){function a(e){return t.match(e)}return C.isString(e)&&e!==t?!0:C.isArray(e)&&!C.any(e,a)?!0:C.isRegex(e)&&!a(e)?!0:!1}a=a||t.location;var r=e.scope;if(!r)return!0;var o=r.URI,s=r.subdomains,l=r.domains,c=r.protocols,u=r.hashes;return o&&i(o,a.pathname+a.search)?!1:s&&i(s,a.hostname)?!1:l&&n(l,a.hostname)?!1:c&&n(c,a.protocol)?!1:u&&i(u,a.hash)?!1:!0},C.backgroundTasks=function(){+new Date;C.setFormListeners(),C.setVideoListeners(),C.loadStoredSettings(),C.registerNewElementsForDynamicRules(),C.eventEmitterBackgroundTasks();+new Date},C.registerNewElementsForDynamicRules=function(){function e(t,a){var i=e.cache[t];return i?a(i):void C.cssQuery(t,function(i){e.cache[t]=i,a(i)})}e.cache={},C.each(C.dynamicRules,function(t){e(t.selector,function(e){C.each(e,function(e){var a="custom"===t.event?t.customEvent:t.event;C.$data(e,"dynamicRules.seen."+a)||(C.$data(e,"dynamicRules.seen."+a,!0),C.propertiesMatch(t.property,e)&&C.registerEvents(e,[a]))})})})},C.ensureCSSSelector=function(){return t.querySelectorAll?void(C.hasSelector=!0):(C.loadingSizzle=!0,C.sizzleQueue=[],void C.loadScript(C.basePath()+"selector.js",function(){if(!C.Sizzle)return void C.logError(new Error("Failed to load selector.js"));var e=C.onEvent.pendingEvents;C.each(e,function(e){C.handleEvent(e)},this),C.onEvent=C.handleEvent,C.hasSelector=!0,delete C.loadingSizzle,C.each(C.sizzleQueue,function(e){C.cssQuery(e[0],e[1])}),delete C.sizzleQueue}))},C.errors=[],C.logError=function(e){C.errors.push(e),C.notify(e.name+" - "+e.message,5)},C.pageBottom=function(){C.initialized&&(C.pageBottomFired=!0,C.firePageLoadEvent("pagebottom"))},C.stagingLibraryOverride=function(){var e="true"===C.readStoredSetting("stagingLibrary");if(e){for(var a,i,n,r=t.getElementsByTagName("script"),o=/^(.*)satelliteLib-([a-f0-9]{40})\.js$/,s=/^(.*)satelliteLib-([a-f0-9]{40})-staging\.js$/,l=0,c=r.length;c>l&&(n=r[l].getAttribute("src"),!n||(a||(a=n.match(o)),i||(i=n.match(s)),!i));l++);if(a&&!i){var u=a[1]+"satelliteLib-"+a[2]+"-staging.js";if(t.write)t.write('<script src="'+u+'"></script>');else{var d=t.createElement("script");d.src=u,t.head.appendChild(d)}return!0}}return!1},C.checkAsyncInclude=function(){e.satellite_asyncLoad&&C.notify('You may be using the async installation of Satellite. In-page HTML and the "pagebottom" event will not work. Please update your Satellite installation for these features.',5)},C.hasMultipleDomains=function(){return!!C.settings.domainList&&C.settings.domainList.length>1},C.handleOverrides=function(){if(I)for(var e in I)I.hasOwnProperty(e)&&(C.data[e]=I[e])},C.privacyManagerParams=function(){var e={};C.extend(e,C.settings.privacyManagement);var t=[];for(var a in C.tools)if(C.tools.hasOwnProperty(a)){var i=C.tools[a],n=i.settings;if(!n)continue;"sc"===n.engine&&t.push(i)}var r=C.filter(C.map(t,function(e){return e.getTrackingServer()}),function(e){return null!=e});e.adobeAnalyticsTrackingServers=r;for(var o=["bannerText","headline","introductoryText","customCSS"],s=0;s<o.length;s++){var l=o[s],c=e[l];if(c)if("text"===c.type)e[l]=c.value;else{if("data"!==c.type)throw new Error("Invalid type: "+c.type);e[l]=C.getVar(c.value)}}return e},C.prepareLoadPrivacyManager=function(){function t(e){function t(){r++,r===n.length&&(a(),clearTimeout(o),e())}function a(){C.each(n,function(e){C.unbindEvent(e.id+".load",t)})}function i(){a(),e()}var n=C.filter(C.values(C.tools),function(e){return e.settings&&"sc"===e.settings.engine});if(0===n.length)return e();var r=0;C.each(n,function(e){C.bindEvent(e.id+".load",t)});var o=setTimeout(i,5e3)}C.addEventHandler(e,"load",function(){t(C.loadPrivacyManager)})},C.loadPrivacyManager=function(){var e=C.basePath()+"privacy_manager.js";C.loadScript(e,function(){var e=C.privacyManager;e.configure(C.privacyManagerParams()),e.openIfRequired()})},C.init=function(t){if(!C.stagingLibraryOverride()){C.configurationSettings=t;var i=t.tools;delete t.tools;for(var n in t)t.hasOwnProperty(n)&&(C[n]=t[n]);C.data.customVars===a&&(C.data.customVars={}),C.data.queryParams=C.QueryParams.normal,C.handleOverrides(),C.detectBrowserInfo(),C.trackVisitorInfo&&C.trackVisitorInfo(),C.loadStoredSettings(),C.Logger.setOutputState(C.settings.notifications),C.checkAsyncInclude(),C.ensureCSSSelector(),C.filterRules(),C.dynamicRules=C.filter(C.rules,function(e){return e.eventHandlerOnElement}),C.tools=C.initTools(i),C.initEventEmitters(),C.firePageLoadEvent("aftertoolinit"),C.settings.privacyManagement&&C.prepareLoadPrivacyManager(),C.hasSelector&&C.domReady(C.eventEmitterBackgroundTasks),C.setListeners(),C.domReady(function(){C.poll(function(){C.backgroundTasks()},C.settings.recheckEvery||3e3)}),C.domReady(function(){C.domReadyFired=!0,C.pageBottomFired||C.pageBottom(),C.firePageLoadEvent("domready")}),C.addEventHandler(e,"load",function(){C.firePageLoadEvent("windowload")}),C.firePageLoadEvent("pagetop"),C.initialized=!0}},C.pageLoadPhases=["aftertoolinit","pagetop","pagebottom","domready","windowload"],C.loadEventBefore=function(e,t){return C.indexOf(C.pageLoadPhases,e)<=C.indexOf(C.pageLoadPhases,t)},C.flushPendingCalls=function(e){e.pending&&(C.each(e.pending,function(t){var a=t[0],i=t[1],n=t[2],r=t[3];a in e?e[a].apply(e,[i,n].concat(r)):e.emit?e.emit(a,i,n,r):C.notify("Failed to trigger "+a+" for tool "+e.id,1)}),delete e.pending)},C.setDebug=function(t){try{e.localStorage.setItem("sdsat_debug",t)}catch(a){C.notify("Cannot set debug mode: "+a.message,2)}},C.getUserAgent=function(){return navigator.userAgent},C.detectBrowserInfo=function(){function e(e){return function(t){for(var a in e)if(e.hasOwnProperty(a)){var i=e[a],n=i.test(t);if(n)return a}return"Unknown"}}var t=e({"IE Edge Mobile":/Windows Phone.*Edge/,"IE Edge":/Edge/,OmniWeb:/OmniWeb/,"Opera Mini":/Opera Mini/,"Opera Mobile":/Opera Mobi/,Opera:/Opera/,Chrome:/Chrome|CriOS|CrMo/,Firefox:/Firefox|FxiOS/,"IE Mobile":/IEMobile/,IE:/MSIE|Trident/,"Mobile Safari":/Mobile(\/[0-9A-z]+)? Safari/,Safari:/Safari/}),a=e({Blackberry:/BlackBerry|BB10/,"Symbian OS":/Symbian|SymbOS/,Maemo:/Maemo/,Android:/Android/,Linux:/ Linux /,Unix:/FreeBSD|OpenBSD|CrOS/,Windows:/[\( ]Windows /,iOS:/iPhone|iPad|iPod/,MacOS:/Macintosh;/}),i=e({Nokia:/Symbian|SymbOS|Maemo/,"Windows Phone":/Windows Phone/,Blackberry:/BlackBerry|BB10/,Android:/Android/,iPad:/iPad/,iPod:/iPod/,iPhone:/iPhone/,Desktop:/.*/}),n=C.getUserAgent();C.browserInfo={browser:t(n),os:a(n),deviceType:i(n)}},C.isHttps=function(){return"https:"==t.location.protocol},C.BaseTool=function(e){this.settings=e||{},this.forceLowerCase=C.settings.forceLowerCase,"forceLowerCase"in this.settings&&(this.forceLowerCase=this.settings.forceLowerCase)},C.BaseTool.prototype={triggerCommand:function(e,t,a){var i=this.settings||{};if(this.initialize&&this.isQueueAvailable()&&this.isQueueable(e)&&a&&C.loadEventBefore(a.type,i.loadOn))return void this.queueCommand(e,t,a);var n=e.command,r=this["$"+n],o=r?r.escapeHtml:!1,s=C.preprocessArguments(e.arguments,t,a,this.forceLowerCase,o);r?r.apply(this,[t,a].concat(s)):this.$missing$?this.$missing$(n,t,a,s):C.notify("Failed to trigger "+n+" for tool "+this.id,1)},endPLPhase:function(e){},isQueueable:function(e){return"cancelToolInit"!==e.command},isQueueAvailable:function(){return!this.initialized&&!this.initializing},flushQueue:function(){this.pending&&(C.each(this.pending,function(e){this.triggerCommand.apply(this,e)},this),this.pending=[])},queueCommand:function(e,t,a){this.pending||(this.pending=[]),this.pending.push([e,t,a])},$cancelToolInit:function(){this._cancelToolInit=!0}},e._satellite=C,n.prototype.getStringifiedValue=e.JSON&&e.JSON.stringify||C.stringify,n.prototype.initPolling=function(){0!==this.dataElementsNames.length&&(this.dataElementsStore=this.getDataElementsValues(),C.poll(C.bind(this.checkDataElementValues,this),1e3))},n.prototype.getDataElementsValues=function(){ var e={};return C.each(this.dataElementsNames,function(t){var a=C.getVar(t);e[t]=this.getStringifiedValue(a)},this),e},n.prototype.checkDataElementValues=function(){C.each(this.dataElementsNames,C.bind(function(e){var a=this.getStringifiedValue(C.getVar(e)),i=this.dataElementsStore[e];a!==i&&(this.dataElementsStore[e]=a,C.onEvent({type:"dataelementchange("+e+")",target:t}))},this))},C.availableEventEmitters.push(n),r.orientationChange=function(t){var a=0===e.orientation?"portrait":"landscape";t.orientation=a,C.onEvent(t)},C.availableEventEmitters.push(r),o.prototype={defineEvents:function(){this.oldBlurClosure=function(){C.fireEvent("tabblur",t)},this.oldFocusClosure=C.bind(function(){this.visibilityApiHasPriority?C.fireEvent("tabfocus",t):null!=C.visibility.getHiddenProperty()?C.visibility.isHidden()||C.fireEvent("tabfocus",t):C.fireEvent("tabfocus",t)},this)},attachDetachModernEventListeners:function(e){var a=0==e?"removeEventHandler":"addEventHandler";C[a](t,C.visibility.getVisibilityEvent(),this.handleVisibilityChange)},attachDetachOlderEventListeners:function(t,a,i){var n=0==t?"removeEventHandler":"addEventHandler";C[n](a,i,this.oldBlurClosure),C[n](e,"focus",this.oldFocusClosure)},handleVisibilityChange:function(){C.visibility.isHidden()?C.fireEvent("tabblur",t):C.fireEvent("tabfocus",t)},setVisibilityApiPriority:function(t){this.visibilityApiHasPriority=t,this.attachDetachOlderEventListeners(!1,e,"blur"),this.attachDetachModernEventListeners(!1),t?null!=C.visibility.getHiddenProperty()?this.attachDetachModernEventListeners(!0):this.attachDetachOlderEventListeners(!0,e,"blur"):(this.attachDetachOlderEventListeners(!0,e,"blur"),null!=C.visibility.getHiddenProperty()&&this.attachDetachModernEventListeners(!0))},oldBlurClosure:null,oldFocusClosure:null,visibilityApiHasPriority:!0},C.availableEventEmitters.push(o),s.prototype.backgroundTasks=function(){C.each(this.rules,function(e){C.cssQuery(e.selector,function(e){if(e.length>0){var t=e[0];if(C.$data(t,"elementexists.seen"))return;C.$data(t,"elementexists.seen",!0),C.onEvent({type:"elementexists",target:t})}})})},C.availableEventEmitters.push(s),l.prototype={backgroundTasks:function(){var e=this.eventHandler;C.each(this.rules,function(t){C.cssQuery(t.selector||"video",function(t){C.each(t,function(t){C.$data(t,"videoplayed.tracked")||(C.addEventHandler(t,"timeupdate",C.throttle(e,100)),C.$data(t,"videoplayed.tracked",!0))})})})},evalRule:function(e,t){var a=t.event,i=e.seekable,n=i.start(0),r=i.end(0),o=e.currentTime,s=t.event.match(/^videoplayed\(([0-9]+)([s%])\)$/);if(s){var l=s[2],c=Number(s[1]),u="%"===l?function(){return 100*(o-n)/(r-n)>=c}:function(){return o-n>=c};!C.$data(e,a)&&u()&&(C.$data(e,a,!0),C.onEvent({type:a,target:e}))}},onUpdateTime:function(e){var t=this.rules,a=e.target;if(a.seekable&&0!==a.seekable.length)for(var i=0,n=t.length;n>i;i++)this.evalRule(a,t[i])}},C.availableEventEmitters.push(l),c.offset=function(a){var i=null,n=null;try{var r=a.getBoundingClientRect(),o=t,s=o.documentElement,l=o.body,c=e,u=s.clientTop||l.clientTop||0,d=s.clientLeft||l.clientLeft||0,g=c.pageYOffset||s.scrollTop||l.scrollTop,p=c.pageXOffset||s.scrollLeft||l.scrollLeft;i=r.top+g-u,n=r.left+p-d}catch(f){}return{top:i,left:n}},c.getViewportHeight=function(){var a=e.innerHeight,i=t.compatMode;return i&&(a="CSS1Compat"==i?t.documentElement.clientHeight:t.body.clientHeight),a},c.getScrollTop=function(){return t.documentElement.scrollTop?t.documentElement.scrollTop:t.body.scrollTop},c.isElementInDocument=function(e){return t.body.contains(e)},c.isElementInView=function(e){if(!c.isElementInDocument(e))return!1;var t=c.getViewportHeight(),a=c.getScrollTop(),i=c.offset(e).top,n=e.offsetHeight;return null!==i?!(a>i+n||i>a+t):!1},c.prototype={backgroundTasks:function(){var e=this.elements;C.each(this.rules,function(t){C.cssQuery(t.selector,function(a){var i=0;C.each(a,function(t){C.contains(e,t)||(e.push(t),i++)}),i&&C.notify(t.selector+" added "+i+" elements.",1)})}),this.track()},checkInView:function(e,t,a){var i=C.$data(e,"inview");if(c.isElementInView(e)){i||C.$data(e,"inview",!0);var n=this;this.processRules(e,function(a,i,r){if(t||!a.inviewDelay)C.$data(e,i,!0),C.onEvent({type:"inview",target:e,inviewDelay:a.inviewDelay});else if(a.inviewDelay){var o=C.$data(e,r);o||(o=setTimeout(function(){n.checkInView(e,!0,a.inviewDelay)},a.inviewDelay),C.$data(e,r,o))}},a)}else{if(!c.isElementInDocument(e)){var r=C.indexOf(this.elements,e);this.elements.splice(r,1)}i&&C.$data(e,"inview",!1),this.processRules(e,function(t,a,i){var n=C.$data(e,i);n&&clearTimeout(n)},a)}},track:function(){for(var e=this.elements.length-1;e>=0;e--)this.checkInView(this.elements[e])},processRules:function(e,t,a){var i=this.rules;a&&(i=C.filter(this.rules,function(e){return e.inviewDelay==a})),C.each(i,function(a,i){var n=a.inviewDelay?"viewed_"+a.inviewDelay:"viewed",r="inview_timeout_id_"+i;C.$data(e,n)||C.matchesCss(a.selector,e)&&t(a,n,r)})}},C.availableEventEmitters.push(c),u.prototype={obue:!1,initialize:function(){this.attachCloseListeners()},obuePrevUnload:function(){},obuePrevBeforeUnload:function(){},newObueListener:function(){this.obue||(this.obue=!0,this.triggerBeacons())},attachCloseListeners:function(){this.prevUnload=e.onunload,this.prevBeforeUnload=e.onbeforeunload,e.onunload=C.bind(function(t){this.prevUnload&&setTimeout(C.bind(function(){this.prevUnload.call(e,t)},this),1),this.newObueListener()},this),e.onbeforeunload=C.bind(function(t){this.prevBeforeUnload&&setTimeout(C.bind(function(){this.prevBeforeUnload.call(e,t)},this),1),this.newObueListener()},this)},triggerBeacons:function(){C.fireEvent("leave",t)}},C.availableEventEmitters.push(u),d.prototype={backgroundTasks:function(){var e=this;C.each(this.rules,function(t){var a=t[1],i=t[0];C.cssQuery(a,function(t){C.each(t,function(t){e.trackElement(t,i)})})},this)},trackElement:function(e,t){var a=this,i=C.$data(e,"hover.delays");i?C.contains(i,t)||i.push(t):(C.addEventHandler(e,"mouseover",function(t){a.onMouseOver(t,e)}),C.addEventHandler(e,"mouseout",function(t){a.onMouseOut(t,e)}),C.$data(e,"hover.delays",[t]))},onMouseOver:function(e,t){var a=e.target||e.srcElement,i=e.relatedTarget||e.fromElement,n=(t===a||C.containsElement(t,a))&&!C.containsElement(t,i);n&&this.onMouseEnter(t)},onMouseEnter:function(e){var t=C.$data(e,"hover.delays"),a=C.map(t,function(t){return setTimeout(function(){C.onEvent({type:"hover("+t+")",target:e})},t)});C.$data(e,"hover.delayTimers",a)},onMouseOut:function(e,t){var a=e.target||e.srcElement,i=e.relatedTarget||e.toElement,n=(t===a||C.containsElement(t,a))&&!C.containsElement(t,i);n&&this.onMouseLeave(t)},onMouseLeave:function(e){var t=C.$data(e,"hover.delayTimers");t&&C.each(t,function(e){clearTimeout(e)})}},C.availableEventEmitters.push(d),g.prototype={initialize:function(){return this.FB=this.FB||e.FB,this.FB&&this.FB.Event&&this.FB.Event.subscribe?(this.bind(),!0):void 0},bind:function(){this.FB.Event.subscribe("edge.create",function(){C.notify("tracking a facebook like",1),C.onEvent({type:"facebook.like",target:t})}),this.FB.Event.subscribe("edge.remove",function(){C.notify("tracking a facebook unlike",1),C.onEvent({type:"facebook.unlike",target:t})}),this.FB.Event.subscribe("message.send",function(){C.notify("tracking a facebook share",1),C.onEvent({type:"facebook.send",target:t})})}},C.availableEventEmitters.push(g),p.prototype={initialize:function(){var e=this.twttr;e&&"function"==typeof e.ready&&e.ready(C.bind(this.bind,this))},bind:function(){this.twttr.events.bind("tweet",function(e){e&&(C.notify("tracking a tweet button",1),C.onEvent({type:"twitter.tweet",target:t}))})}},C.availableEventEmitters.push(p),f.prototype={initialize:function(){this.setupHistoryAPI(),this.setupHashChange()},fireIfURIChanged:function(){var e=C.URL();this.lastURL!==e&&(this.fireEvent(),this.lastURL=e)},fireEvent:function(){C.updateQueryParams(),C.onEvent({type:"locationchange",target:t})},setupSPASupport:function(){this.setupHistoryAPI(),this.setupHashChange()},setupHistoryAPI:function(){var t=e.history;t&&(t.pushState&&(this.originalPushState=t.pushState,t.pushState=this._pushState),t.replaceState&&(this.originalReplaceState=t.replaceState,t.replaceState=this._replaceState)),C.addEventHandler(e,"popstate",this._onPopState)},pushState:function(){var e=this.originalPushState.apply(history,arguments);return this.onPushState(),e},replaceState:function(){var e=this.originalReplaceState.apply(history,arguments);return this.onReplaceState(),e},setupHashChange:function(){C.addEventHandler(e,"hashchange",this._onHashChange)},onReplaceState:function(){setTimeout(this._fireIfURIChanged,0)},onPushState:function(){setTimeout(this._fireIfURIChanged,0)},onPopState:function(){setTimeout(this._fireIfURIChanged,0)},onHashChange:function(){setTimeout(this._fireIfURIChanged,0)},uninitialize:function(){this.cleanUpHistoryAPI(),this.cleanUpHashChange()},cleanUpHistoryAPI:function(){history.pushState===this._pushState&&(history.pushState=this.originalPushState),history.replaceState===this._replaceState&&(history.replaceState=this.originalReplaceState),C.removeEventHandler(e,"popstate",this._onPopState)},cleanUpHashChange:function(){C.removeEventHandler(e,"hashchange",this._onHashChange)}},C.availableEventEmitters.push(f),C.ecommerce={addItem:function(){var e=[].slice.call(arguments);C.onEvent({type:"ecommerce.additem",target:e})},addTrans:function(){var e=[].slice.call(arguments);C.data.saleData.sale={orderId:e[0],revenue:e[2]},C.onEvent({type:"ecommerce.addtrans",target:e})},trackTrans:function(){C.onEvent({type:"ecommerce.tracktrans",target:[]})}},C.visibility={isHidden:function(){var e=this.getHiddenProperty();return e?t[e]:!1},isVisible:function(){return!this.isHidden()},getHiddenProperty:function(){var e=["webkit","moz","ms","o"];if("hidden"in t)return"hidden";for(var a=0;a<e.length;a++)if(e[a]+"Hidden"in t)return e[a]+"Hidden";return null},getVisibilityEvent:function(){var e=this.getHiddenProperty();return e?e.replace(/[H|h]idden/,"")+"visibilitychange":null}},C.inherit(m,C.BaseTool),C.extend(m.prototype,{name:"Nielsen",endPLPhase:function(e){switch(e){case"pagetop":this.initialize();break;case"pagebottom":this.enableTracking&&(this.queueCommand({command:"sendFirstBeacon",arguments:[]}),this.flushQueueWhenReady())}},defineListeners:function(){this.onTabFocus=C.bind(function(){this.notify("Tab visible, sending view beacon when ready",1),this.tabEverVisible=!0,this.flushQueueWhenReady()},this),this.onPageLeave=C.bind(function(){this.notify("isHuman? : "+this.isHuman(),1),this.isHuman()&&this.sendDurationBeacon()},this),this.onHumanDetectionChange=C.bind(function(e){this==e.target.target&&(this.human=e.target.isHuman)},this)},initialize:function(){this.initializeTracking(),this.initializeDataProviders(),this.initializeNonHumanDetection(),this.tabEverVisible=C.visibility.isVisible(),this.tabEverVisible?this.notify("Tab visible, sending view beacon when ready",1):C.bindEventOnce("tabfocus",this.onTabFocus),this.initialized=!0},initializeTracking:function(){this.initialized||(this.notify("Initializing tracking",1),this.addRemovePageLeaveEvent(this.enableTracking),this.addRemoveHumanDetectionChangeEvent(this.enableTracking),this.initialized=!0)},initializeDataProviders:function(){var e,t=this.getAnalyticsTool();this.dataProvider.register(new m.DataProvider.VisitorID(C.getVisitorId())),t?(e=new m.DataProvider.Generic("rsid",function(){return t.settings.account}),this.dataProvider.register(e)):this.notify("Missing integration with Analytics: rsid will not be sent.")},initializeNonHumanDetection:function(){C.nonhumandetection?(C.nonhumandetection.init(),this.setEnableNonHumanDetection(0==this.settings.enableNonHumanDetection?!1:!0),this.settings.nonHumanDetectionDelay>0&&this.setNonHumanDetectionDelay(1e3*parseInt(this.settings.nonHumanDetectionDelay))):this.notify("NHDM is not available.")},getAnalyticsTool:function(){return this.settings.integratesWith?C.tools[this.settings.integratesWith]:void 0},flushQueueWhenReady:function(){this.enableTracking&&this.tabEverVisible&&C.poll(C.bind(function(){return this.isReadyToTrack()?(this.flushQueue(),!0):void 0},this),100,20)},isReadyToTrack:function(){return this.tabEverVisible&&this.dataProvider.isReady()},$setVars:function(e,t,a){for(var i in a){var n=a[i];"function"==typeof n&&(n=n()),this.settings[i]=n}this.notify("Set variables done",2),this.prepareContextData()},$setEnableTracking:function(e,t,a){this.notify("Will"+(a?"":" not")+" track time on page",1),this.enableTracking!=a&&(this.addRemovePageLeaveEvent(a),this.addRemoveHumanDetectionChangeEvent(a),this.enableTracking=a)},$sendFirstBeacon:function(e,t,a){this.sendViewBeacon()},setEnableNonHumanDetection:function(e){e?C.nonhumandetection.register(this):C.nonhumandetection.unregister(this)},setNonHumanDetectionDelay:function(e){C.nonhumandetection.register(this,e)},addRemovePageLeaveEvent:function(e){this.notify((e?"Attach onto":"Detach from")+" page leave event",1);var t=0==e?"unbindEvent":"bindEvent";C[t]("leave",this.onPageLeave)},addRemoveHumanDetectionChangeEvent:function(e){this.notify((e?"Attach onto":"Detach from")+" human detection change event",1);var t=0==e?"unbindEvent":"bindEvent";C[t]("humandetection.change",this.onHumanDetectionChange)},sendViewBeacon:function(){this.notify("Tracked page view.",1),this.sendBeaconWith()},sendDurationBeacon:function(){if(!C.timetracking||"function"!=typeof C.timetracking.timeOnPage||null==C.timetracking.timeOnPage())return void this.notify("Could not track close due missing time on page",5);this.notify("Tracked close",1),this.sendBeaconWith({timeOnPage:Math.round(C.timetracking.timeOnPage()/1e3),duration:"D",timer:"timer"});var e,t="";for(e=0;e<this.magicConst;e++)t+="0"},sendBeaconWith:function(e){this.enableTracking&&this[this.beaconMethod].call(this,this.prepareUrl(e))},plainBeacon:function(e){var t=new Image;t.src=e,t.width=1,t.height=1,t.alt=""},navigatorSendBeacon:function(e){navigator.sendBeacon(e)},prepareUrl:function(e){var t=this.settings;return C.extend(t,this.dataProvider.provide()),C.extend(t,e),this.preparePrefix(this.settings.collectionServer)+this.adapt.convertToURI(this.adapt.toNielsen(this.substituteVariables(t)))},preparePrefix:function(e){return"//"+encodeURIComponent(e)+".imrworldwide.com/cgi-bin/gn?"},substituteVariables:function(e){var t={};for(var a in e)e.hasOwnProperty(a)&&(t[a]=C.replace(e[a]));return t},prepareContextData:function(){if(!this.getAnalyticsTool())return void this.notify("Adobe Analytics missing.");var e=this.settings;e.sdkVersion=_satellite.publishDate,this.getAnalyticsTool().$setVars(null,null,{contextData:this.adapt.toAnalytics(this.substituteVariables(e))})},isHuman:function(){return this.human},onTabFocus:function(){},onPageLeave:function(){},onHumanDetectionChange:function(){},notify:function(e,t){C.notify(this.logPrefix+e,t)},beaconMethod:"plainBeacon",adapt:null,enableTracking:!1,logPrefix:"Nielsen: ",tabEverVisible:!1,human:!0,magicConst:2e6}),m.DataProvider={},m.DataProvider.Generic=function(e,t){this.key=e,this.valueFn=t},C.extend(m.DataProvider.Generic.prototype,{isReady:function(){return!0},getValue:function(){return this.valueFn()},provide:function(){this.isReady()||m.prototype.notify("Not yet ready to provide value for: "+this.key,5);var e={};return e[this.key]=this.getValue(),e}}),m.DataProvider.VisitorID=function(e,t,a){this.key=t||"uuid",this.visitorInstance=e,this.visitorInstance&&(this.visitorId=e.getMarketingCloudVisitorID([this,this._visitorIdCallback])),this.fallbackProvider=a||new m.UUID},C.inherit(m.DataProvider.VisitorID,m.DataProvider.Generic),C.extend(m.DataProvider.VisitorID.prototype,{isReady:function(){return null===this.visitorInstance?!0:!!this.visitorId},getValue:function(){return this.visitorId||this.fallbackProvider.get()},_visitorIdCallback:function(e){this.visitorId=e}}),m.DataProvider.Aggregate=function(){this.providers=[];for(var e=0;e<arguments.length;e++)this.register(arguments[e])},C.extend(m.DataProvider.Aggregate.prototype,{register:function(e){this.providers.push(e)},isReady:function(){return C.every(this.providers,function(e){return e.isReady()})},provide:function(){var e={};return C.each(this.providers,function(t){C.extend(e,t.provide())}),e}}),m.UUID=function(){},C.extend(m.UUID.prototype,{generate:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0,a="x"==e?t:3&t|8;return a.toString(16)})},get:function(){var e=C.readCookie(this.key("uuid"));return e?e:(e=this.generate(),C.setCookie(this.key("uuid"),e),e)},key:function(e){return"_dtm_nielsen_"+e}}),m.DataAdapters=function(){},C.extend(m.DataAdapters.prototype,{toNielsen:function(e){var t=(new Date).getTime(),i={c6:"vc,",c13:"asid,",c15:"apn,",c27:"cln,",c32:"segA,",c33:"segB,",c34:"segC,",c35:"adrsid,",c29:"plid,",c30:"bldv,",c40:"adbid,"},n={ci:e.clientId,c6:e.vcid,c13:e.appId,c15:e.appName,prv:1,forward:0,ad:0,cr:e.duration||"V",rt:"text",st:"dcr",prd:"dcr",r:t,at:e.timer||"view",c16:e.sdkVersion,c27:e.timeOnPage||0,c40:e.uuid,c35:e.rsid,ti:t,sup:0,c32:e.segmentA,c33:e.segmentB,c34:e.segmentC,asn:e.assetName,c29:e.playerID,c30:e.buildVersion};for(key in n)if(n[key]!==a&&null!=n[key]&&n[key]!==a&&null!=n&&""!=n){var r=encodeURIComponent(n[key]);i.hasOwnProperty(key)&&r&&(r=i[key]+r),n[key]=r}return this.filterObject(n)},toAnalytics:function(e){return this.filterObject({"a.nielsen.clientid":e.clientId,"a.nielsen.vcid":e.vcid,"a.nielsen.appid":e.appId,"a.nielsen.appname":e.appName,"a.nielsen.accmethod":"0","a.nielsen.ctype":"text","a.nielsen.sega":e.segmentA,"a.nielsen.segb":e.segmentB,"a.nielsen.segc":e.segmentC,"a.nielsen.asset":e.assetName})},convertToURI:function(e){if(C.isObject(e)===!1)return"";var t=[];for(var a in e)e.hasOwnProperty(a)&&t.push(a+"="+e[a]);return t.join("&")},filterObject:function(e){for(var t in e)!e.hasOwnProperty(t)||null!=e[t]&&e[t]!==a||delete e[t];return e}}),C.availableTools.nielsen=m,C.extend(h.prototype,{getInstance:function(){return this.instance},initialize:function(){var e,t=this.settings;C.notify("Visitor ID: Initializing tool",1),e=this.createInstance(t.mcOrgId,t.initVars),null!==e&&(t.customerIDs&&this.applyCustomerIDs(e,t.customerIDs),t.autoRequest&&e.getMarketingCloudVisitorID(),this.instance=e)},createInstance:function(e,t){if(!C.isString(e))return C.notify('Visitor ID: Cannot create instance using mcOrgId: "'+e+'"',4),null;e=C.replace(e),C.notify('Visitor ID: Create instance using mcOrgId: "'+e+'"',1),t=this.parseValues(t);var a=Visitor.getInstance(e,t);return C.notify("Visitor ID: Set variables: "+C.stringify(t),1),a},applyCustomerIDs:function(e,t){var a=this.parseIds(t);e.setCustomerIDs(a),C.notify("Visitor ID: Set Customer IDs: "+C.stringify(a),1)},parseValues:function(e){if(C.isObject(e)===!1)return{};var t={};for(var a in e)e.hasOwnProperty(a)&&(t[a]=C.replace(e[a]));return t},parseIds:function(e){var t={};if(C.isObject(e)===!1)return{};for(var a in e)if(e.hasOwnProperty(a)){var i=C.replace(e[a].id);i!==e[a].id&&i&&(t[a]={},t[a].id=i,t[a].authState=Visitor.AuthState[e[a].authState])}return t}}),C.availableTools.visitor_id=h,C.inherit(v,C.BaseTool),C.extend(v.prototype,{name:"SC",endPLPhase:function(e){var t=this.settings.loadOn;e===t&&this.initialize(e)},initialize:function(t){if(!this._cancelToolInit)if(this.settings.initVars=this.substituteVariables(this.settings.initVars,{type:t}),this.settings.initTool!==!1){var a=this.settings.sCodeURL||C.basePath()+"s_code.js";"object"==typeof a&&(a="https:"===e.location.protocol?a.https:a.http),a.match(/^https?:/)||(a=C.basePath()+a),this.settings.initVars&&this.$setVars(null,null,this.settings.initVars),C.loadScript(a,C.bind(this.onSCodeLoaded,this)),this.initializing=!0}else this.initializing=!0,this.pollForSC()},getS:function(t,a){var i=a&&a.hostname||e.location.hostname,n=this.concatWithToolVarBindings(a&&a.setVars||this.varBindings),r=a&&a.addEvent||this.events,o=this.getAccount(i),s=e.s_gi;if(!s)return null;if(this.isValidSCInstance(t)||(t=null),!o&&!t)return C.notify("Adobe Analytics: tracker not initialized because account was not found",1),null;var t=t||s(o),l="D"+C.appVersion;"undefined"!=typeof t.tagContainerMarker?t.tagContainerMarker=l:"string"==typeof t.version&&t.version.substring(t.version.length-5)!=="-"+l&&(t.version+="-"+l),t.sa&&this.settings.skipSetAccount!==!0&&this.settings.initTool!==!1&&t.sa(this.settings.account),this.applyVarBindingsOnTracker(t,n),r.length>0&&(t.events=r.join(","));var c=C.getVisitorId();return c&&(t.visitor=C.getVisitorId()),t},onSCodeLoaded:function(e){this.initialized=!0,this.initializing=!1;var t=["Adobe Analytics: loaded",e?" (manual)":"","."];C.notify(t.join(""),1),C.fireEvent(this.id+".load",this.getS()),e||(this.flushQueueExceptTrackLink(),this.sendBeacon()),this.flushQueue()},getAccount:function(t){return e.s_account?e.s_account:t&&this.settings.accountByHost?this.settings.accountByHost[t]||this.settings.account:this.settings.account},getTrackingServer:function(){var t=this,a=t.getS();if(a){if(a.ssl&&a.trackingServerSecure)return a.trackingServerSecure;if(a.trackingServer)return a.trackingServer}var i=t.getAccount(e.location.hostname);if(!i)return null;var n,r,o,s="",l=a&&a.dc;return n=i,r=n.indexOf(","),r>=0&&(n=n.gb(0,r)),n=n.replace(/[^A-Za-z0-9]/g,""),s||(s="2o7.net"),l=l?(""+l).toLowerCase():"d1","2o7.net"==s&&("d1"==l?l="112":"d2"==l&&(l="122"),o=""),r=n+"."+l+"."+o+s},sendBeacon:function(){var t=this.getS(e[this.settings.renameS||"s"]);return t?this.settings.customInit&&this.settings.customInit(t)===!1?void C.notify("Adobe Analytics: custom init suppressed beacon",1):(this.settings.executeCustomPageCodeFirst&&this.applyVarBindingsOnTracker(t,this.varBindings),this.executeCustomSetupFuns(t),t.t(),this.clearVarBindings(),this.clearCustomSetup(),void C.notify("Adobe Analytics: tracked page view",1)):void C.notify("Adobe Analytics: page code not loaded",1)},pollForSC:function(){C.poll(C.bind(function(){return"function"==typeof e.s_gi?(this.onSCodeLoaded(!0),!0):void 0},this))},flushQueueExceptTrackLink:function(){if(this.pending){for(var e=[],t=0;t<this.pending.length;t++){var a=this.pending[t],i=a[0];"trackLink"===i.command?e.push(a):this.triggerCommand.apply(this,a)}this.pending=e}},isQueueAvailable:function(){return!this.initialized},substituteVariables:function(e,t){var a={};for(var i in e)if(e.hasOwnProperty(i)){var n=e[i];a[i]=C.replace(n,location,t)}return a},$setVars:function(e,t,a){for(var i in a)if(a.hasOwnProperty(i)){var n=a[i];"function"==typeof n&&(n=n()),this.varBindings[i]=n}C.notify("Adobe Analytics: set variables.",2)},$customSetup:function(e,t,a){this.customSetupFuns.push(function(i){a.call(e,t,i)})},isValidSCInstance:function(e){return!!e&&"function"==typeof e.t&&"function"==typeof e.tl},concatWithToolVarBindings:function(e){var t=this.settings.initVars||{};return C.map(["trackingServer","trackingServerSecure"],function(a){t[a]&&!e[a]&&(e[a]=t[a])}),e},applyVarBindingsOnTracker:function(e,t){for(var a in t)t.hasOwnProperty(a)&&(e[a]=t[a])},clearVarBindings:function(){this.varBindings={}},clearCustomSetup:function(){this.customSetupFuns=[]},executeCustomSetupFuns:function(t){C.each(this.customSetupFuns,function(a){a.call(e,t)})},$trackLink:function(e,t,a){a=a||{};var i=a.type,n=a.linkName;!n&&e&&e.nodeName&&"a"===e.nodeName.toLowerCase()&&(n=e.innerHTML),n||(n="link clicked");var r=a&&a.setVars,o=a&&a.addEvent||[],s=this.getS(null,{setVars:r,addEvent:o});if(!s)return void C.notify("Adobe Analytics: page code not loaded",1);var l=s.linkTrackVars,c=s.linkTrackEvents,u=this.definedVarNames(r);a&&a.customSetup&&a.customSetup.call(e,t,s),o.length>0&&u.push("events"),s.products&&u.push("products"),u=this.mergeTrackLinkVars(s.linkTrackVars,u),o=this.mergeTrackLinkVars(s.linkTrackEvents,o),s.linkTrackVars=this.getCustomLinkVarsList(u);var d=C.map(o,function(e){return e.split(":")[0]});s.linkTrackEvents=this.getCustomLinkVarsList(d),s.tl(!0,i||"o",n),C.notify(["Adobe Analytics: tracked link ","using: linkTrackVars=",C.stringify(s.linkTrackVars),"; linkTrackEvents=",C.stringify(s.linkTrackEvents)].join(""),1),s.linkTrackVars=l,s.linkTrackEvents=c},mergeTrackLinkVars:function(e,t){return e&&(t=e.split(",").concat(t)),t},getCustomLinkVarsList:function(e){var t=C.indexOf(e,"None");return t>-1&&e.length>1&&e.splice(t,1),e.join(",")},definedVarNames:function(e){e=e||this.varBindings;var t=[];for(var a in e)e.hasOwnProperty(a)&&/^(eVar[0-9]+)|(prop[0-9]+)|(hier[0-9]+)|campaign|purchaseID|channel|server|state|zip|pageType$/.test(a)&&t.push(a);return t},$trackPageView:function(e,t,a){var i=a&&a.setVars,n=a&&a.addEvent||[],r=this.getS(null,{setVars:i,addEvent:n});return r?(r.linkTrackVars="",r.linkTrackEvents="",this.executeCustomSetupFuns(r),a&&a.customSetup&&a.customSetup.call(e,t,r),r.t(),this.clearVarBindings(),this.clearCustomSetup(),void C.notify("Adobe Analytics: tracked page view",1)):void C.notify("Adobe Analytics: page code not loaded",1)},$postTransaction:function(t,a,i){var n=C.data.transaction=e[i],r=this.varBindings,o=this.settings.fieldVarMapping;if(C.each(n.items,function(e){this.products.push(e)},this),r.products=C.map(this.products,function(e){var t=[];if(o&&o.item)for(var a in o.item)if(o.item.hasOwnProperty(a)){var i=o.item[a];t.push(i+"="+e[a]),"event"===i.substring(0,5)&&this.events.push(i)}var n=["",e.product,e.quantity,e.unitPrice*e.quantity];return t.length>0&&n.push(t.join("|")),n.join(";")},this).join(","),o&&o.transaction){var s=[];for(var l in o.transaction)if(o.transaction.hasOwnProperty(l)){var i=o.transaction[l];s.push(i+"="+n[l]),"event"===i.substring(0,5)&&this.events.push(i)}r.products.length>0&&(r.products+=","),r.products+=";;;;"+s.join("|")}},$addEvent:function(e,t){for(var a=2,i=arguments.length;i>a;a++)this.events.push(arguments[a])},$addProduct:function(e,t){for(var a=2,i=arguments.length;i>a;a++)this.products.push(arguments[a])}}),C.availableTools.sc=v,C.inherit(b,C.BaseTool),C.extend(b.prototype,{name:"Default",$loadIframe:function(t,a,i){var n=i.pages,r=i.loadOn,o=C.bind(function(){C.each(n,function(e){this.loadIframe(t,a,e)},this)},this);r||o(),"domready"===r&&C.domReady(o),"load"===r&&C.addEventHandler(e,"load",o)},loadIframe:function(e,a,i){var n=t.createElement("iframe");n.style.display="none";var r=C.data.host,o=i.data,s=this.scriptURL(i.src),l=C.searchVariables(o,e,a);r&&(s=C.basePath()+s),s+=l,n.src=s;var c=t.getElementsByTagName("body")[0];c?c.appendChild(n):C.domReady(function(){t.getElementsByTagName("body")[0].appendChild(n)})},scriptURL:function(e){var t=C.settings.scriptDir||"";return t+e},$loadScript:function(t,a,i){var n=i.scripts,r=i.sequential,o=i.loadOn,s=C.bind(function(){r?this.loadScripts(t,a,n):C.each(n,function(e){this.loadScripts(t,a,[e])},this)},this);o?"domready"===o?C.domReady(s):"load"===o&&C.addEventHandler(e,"load",s):s()},loadScripts:function(e,t,a){function i(){if(r.length>0&&n){var l=r.shift();l.call(e,t,o)}var c=a.shift();if(c){var u=C.data.host,d=s.scriptURL(c.src);u&&(d=C.basePath()+d),n=c,C.loadScript(d,i)}}try{var n,a=a.slice(0),r=this.asyncScriptCallbackQueue,o=t.target||t.srcElement,s=this}catch(l){console.error("scripts is",C.stringify(a))}i()},$loadBlockingScript:function(e,t,a){var i=a.scripts,n=(a.loadOn,C.bind(function(){C.each(i,function(a){this.loadBlockingScript(e,t,a)},this)},this));n()},loadBlockingScript:function(e,t,a){var i=this.scriptURL(a.src),n=C.data.host,r=t.target||t.srcElement;n&&(i=C.basePath()+i),this.argsForBlockingScripts.push([e,t,r]),C.loadScriptSync(i)},pushAsyncScript:function(e){this.asyncScriptCallbackQueue.push(e)},pushBlockingScript:function(e){var t=this.argsForBlockingScripts.shift(),a=t[0];e.apply(a,t.slice(1))},$writeHTML:C.escapeHtmlParams(function(e,a){if(C.domReadyFired||!t.write)return void C.notify("Command writeHTML failed. You should try appending HTML using the async option.",1);if("pagebottom"!==a.type&&"pagetop"!==a.type)return void C.notify("You can only use writeHTML on the `pagetop` and `pagebottom` events.",1);for(var i=2,n=arguments.length;n>i;i++){var r=arguments[i].html;r=C.replace(r,e,a),t.write(r)}}),linkNeedsDelayActivate:function(t,a){a=a||e;var i=t.tagName,n=t.getAttribute("target"),r=t.getAttribute("href");return i&&"a"!==i.toLowerCase()?!1:r?n?"_blank"===n?!1:"_top"===n?a.top===a:"_parent"===n?!1:"_self"===n?!0:a.name?n===a.name:!0:!0:!1},$delayActivateLink:function(e,t){if(this.linkNeedsDelayActivate(e)){C.preventDefault(t);var a=C.settings.linkDelay||100;setTimeout(function(){C.setLocation(e.href)},a)}},isQueueable:function(e){return"writeHTML"!==e.command}}),C.availableTools["default"]=b,C.inherit(y,C.BaseTool),C.extend(y.prototype,{name:"tnt",endPLPhase:function(e){"aftertoolinit"===e&&this.initialize()},initialize:function(){C.notify("Test & Target: Initializing",1),this.initializeTargetPageParams(),this.load()},initializeTargetPageParams:function(){e.targetPageParams&&this.updateTargetPageParams(this.parseTargetPageParamsResult(e.targetPageParams())),this.updateTargetPageParams(this.settings.pageParams),this.setTargetPageParamsFunction()},load:function(){var e=this.getMboxURL(this.settings.mboxURL);this.settings.initTool!==!1?this.settings.loadSync?(C.loadScriptSync(e),this.onScriptLoaded()):(C.loadScript(e,C.bind(this.onScriptLoaded,this)),this.initializing=!0):this.initialized=!0},getMboxURL:function(t){var a=t;return C.isObject(t)&&(a="https:"===e.location.protocol?t.https:t.http),a.match(/^https?:/)?a:C.basePath()+a},onScriptLoaded:function(){C.notify("Test & Target: loaded.",1),this.flushQueue(),this.initialized=!0,this.initializing=!1},$addMbox:function(e,t,a){var i=a.mboxGoesAround,n=i+"{visibility: hidden;}",r=this.appendStyle(n);i in this.styleElements||(this.styleElements[i]=r),this.initialized?this.$addMBoxStep2(null,null,a):this.initializing&&this.queueCommand({command:"addMBoxStep2",arguments:[a]},e,t)},$addMBoxStep2:function(a,i,n){var r=this.generateID(),o=this;C.addEventHandler(e,"load",C.bind(function(){C.cssQuery(n.mboxGoesAround,function(a){var i=a[0];if(i){var s=t.createElement("div");s.id=r,i.parentNode.replaceChild(s,i),s.appendChild(i),e.mboxDefine(r,n.mboxName);var l=[n.mboxName];n.arguments&&(l=l.concat(n.arguments)),e.mboxUpdate.apply(null,l),o.reappearWhenCallComesBack(i,r,n.timeout,n)}})},this)),this.lastMboxID=r},$addTargetPageParams:function(e,t,a){this.updateTargetPageParams(a)},generateID:function(){var e="_sdsat_mbox_"+String(Math.random()).substring(2)+"_";return e},appendStyle:function(e){var a=t.getElementsByTagName("head")[0],i=t.createElement("style");return i.type="text/css",i.styleSheet?i.styleSheet.cssText=e:i.appendChild(t.createTextNode(e)),a.appendChild(i),i},reappearWhenCallComesBack:function(e,t,a,i){function n(){var e=r.styleElements[i.mboxGoesAround];e&&(e.parentNode.removeChild(e),delete r.styleElements[i.mboxGoesAround])}var r=this;C.cssQuery('script[src*="omtrdc.net"]',function(e){var t=e[0];if(t){C.scriptOnLoad(t.src,t,function(){C.notify("Test & Target: request complete",1),n(),clearTimeout(i)});var i=setTimeout(function(){C.notify("Test & Target: bailing after "+a+"ms",1),n()},a)}else C.notify("Test & Target: failed to find T&T ajax call, bailing",1),n()})},updateTargetPageParams:function(e){var t={};for(var a in e)e.hasOwnProperty(a)&&(t[C.replace(a)]=C.replace(e[a]));C.extend(this.targetPageParamsStore,t)},getTargetPageParams:function(){return this.targetPageParamsStore},setTargetPageParamsFunction:function(){e.targetPageParams=C.bind(this.getTargetPageParams,this)},parseTargetPageParamsResult:function(e){var t=e;return C.isArray(e)&&(e=e.join("&")),C.isString(e)&&(t=C.parseQueryParams(e)),t}}),C.availableTools.tnt=y,C.inherit(D,C.BaseTool),C.extend(D.prototype,{initialize:function(){var e=this.settings;if(this.settings.initTool!==!1){var t=e.url;t="string"==typeof t?C.basePath()+t:C.isHttps()?t.https:t.http,C.loadScript(t,C.bind(this.onLoad,this)),this.initializing=!0}else this.initialized=!0},isQueueAvailable:function(){return!this.initialized},onLoad:function(){this.initialized=!0,this.initializing=!1,this.settings.initialBeacon&&this.settings.initialBeacon(),this.flushQueue()},endPLPhase:function(e){var t=this.settings.loadOn;e===t&&(C.notify(this.name+": Initializing at "+e,1),this.initialize())},$fire:function(e,t,a){return this.initializing?void this.queueCommand({command:"fire",arguments:[a]},e,t):void a.call(this.settings,e,t)}}),C.availableTools.am=D,C.availableTools.adlens=D,C.availableTools.aem=D,C.availableTools.__basic=D;var _={allowLinker:function(){return C.hasMultipleDomains()},cookieDomain:function(){var t=C.settings.domainList,a=C.find(t,function(t){var a=e.location.hostname;return C.equalsIgnoreCase(a.slice(a.length-t.length),t)}),i=a?"."+a:"auto";return i; }};C.inherit(S,C.BaseTool),C.extend(S.prototype,{name:"GAUniversal",endPLPhase:function(e){var t=this.settings,a=t.loadOn;e===a&&(C.notify("GAU: Initializing at "+e,1),this.initialize(),this.flushQueue(),this.trackInitialPageView())},getTrackerName:function(){return this.settings.trackerSettings.name||""},isPageCodeLoadSuppressed:function(){return this.settings.initTool===!1||this._cancelToolInit===!0},initialize:function(){if(this.isPageCodeLoadSuppressed())return this.initialized=!0,void C.notify("GAU: Page code not loaded (suppressed).",1);var t="ga";e[t]=e[t]||this.createGAObject(),e.GoogleAnalyticsObject=t,C.notify("GAU: Page code loaded.",1),C.loadScriptOnce(this.getToolUrl());var a=this.settings;if(_.allowLinker()&&a.allowLinker!==!1?this.createAccountForLinker():this.createAccount(),this.executeInitCommands(),a.customInit){var i=a.customInit,n=i(e[t],this.getTrackerName());n===!1&&(this.suppressInitialPageView=!0)}this.initialized=!0},createGAObject:function(){var e=function(){e.q.push(arguments)};return e.q=[],e.l=1*new Date,e},createAccount:function(){this.create()},createAccountForLinker:function(){var e={};_.allowLinker()&&(e.allowLinker=!0),this.create(e),this.call("require","linker"),this.call("linker:autoLink",this.autoLinkDomains(),!1,!0)},create:function(e){var t=this.settings.trackerSettings;t=C.preprocessArguments([t],location,null,this.forceLowerCase)[0],t.trackingId=C.replace(this.settings.trackerSettings.trackingId,location),t.cookieDomain||(t.cookieDomain=_.cookieDomain()),C.extend(t,e||{}),this.call("create",t)},autoLinkDomains:function(){var e=location.hostname;return C.filter(C.settings.domainList,function(t){return t!==e})},executeInitCommands:function(){var e=this.settings;e.initCommands&&C.each(e.initCommands,function(e){var t=e.splice(2,e.length-2);e=e.concat(C.preprocessArguments(t,location,null,this.forceLowerCase)),this.call.apply(this,e)},this)},trackInitialPageView:function(){this.suppressInitialPageView||this.isPageCodeLoadSuppressed()||this.call("send","pageview")},call:function(){return"function"!=typeof ga?void C.notify("GA Universal function not found!",4):void(this.isCallSuppressed()||(arguments[0]=this.cmd(arguments[0]),this.log(C.toArray(arguments)),ga.apply(e,arguments)))},isCallSuppressed:function(){return this._cancelToolInit===!0},$missing$:function(e,t,a,i){i=i||[],i=[e].concat(i),this.call.apply(this,i)},getToolUrl:function(){var e=this.settings,t=C.isHttps();return e.url?t?e.url.https:e.url.http:(t?"https://ssl":"http://www")+".google-analytics.com/analytics.js"},cmd:function(e){var t=["send","set","get"],a=this.getTrackerName();return a&&-1!==C.indexOf(t,e)?a+"."+e:e},log:function(e){var t=e[0],a=this.getTrackerName()||"default",i="GA Universal: sent command "+t+" to tracker "+a;if(e.length>1){C.stringify(e.slice(1));i+=" with parameters "+C.stringify(e.slice(1))}i+=".",C.notify(i,1)}}),C.availableTools.ga_universal=S,C.inherit(P,C.BaseTool),C.extend(P.prototype,{name:"GA",initialize:function(){var t=this.settings,a=e._gaq,i=t.initCommands||[],n=t.customInit;if(a||(_gaq=[]),this.isSuppressed())C.notify("GA: page code not loaded(suppressed).",1);else{if(!a&&!P.scriptLoaded){var r=C.isHttps(),o=(r?"https://ssl":"http://www")+".google-analytics.com/ga.js";t.url&&(o=r?t.url.https:t.url.http),C.loadScript(o),P.scriptLoaded=!0,C.notify("GA: page code loaded.",1)}var s=(t.domain,t.trackerName),l=_.allowLinker(),c=C.replace(t.account,location);C.settings.domainList||[];_gaq.push([this.cmd("setAccount"),c]),l&&_gaq.push([this.cmd("setAllowLinker"),l]),_gaq.push([this.cmd("setDomainName"),_.cookieDomain()]),C.each(i,function(e){var t=[this.cmd(e[0])].concat(C.preprocessArguments(e.slice(1),location,null,this.forceLowerCase));_gaq.push(t)},this),n&&(this.suppressInitialPageView=!1===n(_gaq,s)),t.pageName&&this.$overrideInitialPageView(null,null,t.pageName)}this.initialized=!0,C.fireEvent(this.id+".configure",_gaq,s)},isSuppressed:function(){return this._cancelToolInit||this.settings.initTool===!1},tracker:function(){return this.settings.trackerName},cmd:function(e){var t=this.tracker();return t?t+"._"+e:"_"+e},$overrideInitialPageView:function(e,t,a){this.urlOverride=a},trackInitialPageView:function(){if(!this.isSuppressed()&&!this.suppressInitialPageView)if(this.urlOverride){var e=C.preprocessArguments([this.urlOverride],location,null,this.forceLowerCase);this.$missing$("trackPageview",null,null,e)}else this.$missing$("trackPageview")},endPLPhase:function(e){var t=this.settings.loadOn;e===t&&(C.notify("GA: Initializing at "+e,1),this.initialize(),this.flushQueue(),this.trackInitialPageView())},call:function(e,t,a,i){if(!this._cancelToolInit){var n=(this.settings,this.tracker()),r=this.cmd(e),i=i?[r].concat(i):[r];_gaq.push(i),n?C.notify("GA: sent command "+e+" to tracker "+n+(i.length>1?" with parameters ["+i.slice(1).join(", ")+"]":"")+".",1):C.notify("GA: sent command "+e+(i.length>1?" with parameters ["+i.slice(1).join(", ")+"]":"")+".",1)}},$missing$:function(e,t,a,i){this.call(e,t,a,i)},$postTransaction:function(t,a,i){var n=C.data.customVars.transaction=e[i];this.call("addTrans",t,a,[n.orderID,n.affiliation,n.total,n.tax,n.shipping,n.city,n.state,n.country]),C.each(n.items,function(e){this.call("addItem",t,a,[e.orderID,e.sku,e.product,e.category,e.unitPrice,e.quantity])},this),this.call("trackTrans",t,a)},delayLink:function(e,t){var a=this;if(_.allowLinker()&&e.hostname.match(this.settings.linkerDomains)&&!C.isSubdomainOf(e.hostname,location.hostname)){C.preventDefault(t);var i=C.settings.linkDelay||100;setTimeout(function(){a.call("link",e,t,[e.href])},i)}},popupLink:function(t,a){if(e._gat){C.preventDefault(a);var i=this.settings.account,n=e._gat._createTracker(i),r=n._getLinkerUrl(t.href);e.open(r)}},$link:function(e,t){"_blank"===e.getAttribute("target")?this.popupLink(e,t):this.delayLink(e,t)},$trackEvent:function(e,t){var a=Array.prototype.slice.call(arguments,2);if(a.length>=4&&null!=a[3]){var i=parseInt(a[3],10);C.isNaN(i)&&(i=1),a[3]=i}this.call("trackEvent",e,t,a)}}),C.availableTools.ga=P,_satellite.init({tools:{"2627ed8a59a02e1d9cd65652cb633058":{engine:"ga_universal",pageName:"%URI%",forceLowerCase:!0,euCookie:!1,loadOn:"pagebottom",initCommands:[],customInit:function(t,a){return t("2627ed8a59a02e1d9cd65652cb633058.set","dimension1",_satellite.getVar("userState")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension2",_satellite.getVar("categoryID")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension3",_satellite.getVar("mainAuthor")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension5",_satellite.getVar("publicationDate")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension6",_satellite.getVar("mainTopic")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension7",_satellite.getVar("cmCategoryID")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension8",_satellite.getVar("articlesRemaining")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension9",_satellite.getVar("cartTotal")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension10",_satellite.getVar("cartItemVolume")),t("2627ed8a59a02e1d9cd65652cb633058.set","contentGroup1",_satellite.getVar("mainTopic")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension14",_satellite.getVar("articleName")),e.optimizely=e.optimizely||[],e.optimizely.push("activateUniversalAnalytics"),"article"===_satellite.getVar("articleType")&&(t("2627ed8a59a02e1d9cd65652cb633058.set","dimension12",_satellite.getVar("articleContentType")),t("2627ed8a59a02e1d9cd65652cb633058.set","dimension17",_satellite.getVar("Editor_primary")),t("2627ed8a59a02e1d9cd65652cb633058.set","metric1",1)),"guest"!=_satellite.getVar("userState")&&t("2627ed8a59a02e1d9cd65652cb633058.set","userId",_satellite.readCookie("_sdsat_userID")),!0},trackerSettings:{trackingId:"UA-4541888-8",name:"2627ed8a59a02e1d9cd65652cb633058",allowAnchor:!1}},eb85bd9ec5ada97d6ae12ef8e0711091:{engine:"sc",loadOn:"pagebottom",account:"hbrmain",euCookie:!1,sCodeURL:"9146204dcdccfe9dc3405fbec7e2354ec4405ec3/s-code-contents-21cc71f6dc17bc87b4e987c274fa772d690984ac.js",initVars:{charSet:"UTF-8",currencyCode:"USD",trackingServer:"hbr.sc.omtrdc.net",trackingServerSecure:"hbr.sc.omtrdc.net",pageName:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",pageURL:"%digitalData - Pages - Full Page URL%",channel:"%digitalData - Pages - Page Type%",trackInlineStats:!0,trackDownloadLinks:!0,linkDownloadFileTypes:"avi,css,csv,doc,docx,eps,exe,jpg,js,m4v,mov,mp3,pdf,png,ppt,pptx,rar,svg,tab,txt,vsd,vxd,wav,wma,wmv,xls,xlsx,xml,zip",trackExternalLinks:!0,linkExternalFilters:"adamgrant.net,amazon.com,amzn.com,facebook.com,linkedin.com,nytimes.com,plus.google.com,sagepub.com,ted.com,theonion.com,twitter.com,webeventpro.com",linkInternalFilters:"buysub.com,hbr.org,javascript:,mailto:,recs.richrelevance.com,tel:",linkLeaveQueryString:!0,dynamicVariablePrefix:"D=",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar45:"%digitalData - Pages - Page URL%",eVar48:"%digitalData - Profile - Registration Date%",eVar17:"%digitalData - Profile - Subscriber ID%",eVar18:"%digitalData - Profile - Industry%",eVar19:"%digitalData - Profile - Job Title%",eVar20:"%digitalData - Profile - Company Size%",eVar33:"%Meta - Subscription Type%",eVar49:"%digitalData - Profile - Days Since Last Visit%",eVar50:"%digitalData - Profile - Subscription Status%",eVar60:"%digitalData - Profile - Topics Followed%",prop3:"%pageID%",prop14:"%digitalData - Profile - User State%",prop1:"%digitalData - Pages - Page Type%",prop2:"%digitalData - Pages - Page URL%",prop18:"Global Variables",prop13:"%digitalData - Event - Time%",prop24:"%digitalData - Cookie - Subscriber%",prop32:"%digitalData - Profile - Article Quota Limit%",prop33:"%digitalData - Profile - Article Quota Remaining%",prop34:"%digitalData - Profile - Days Since Registration%",prop4:"%digitalData - Pages - Page Category ID%"},customInit:function(t){var a=e.location.host;a.indexOf("qa")>-1?s_account="hbrmaindev":a.indexOf("dev")>-1?s_account="hbrmaindev":s_account="hbrmain",t.account=s_account;var i=_satellite.getVar("digitalData - Marketing - UTM_MEDIUM"),n=encodeURIComponent(i),r=_satellite.getVar("digitalData - Marketing - UTM_CAMPAIGN"),o=encodeURIComponent(r),s=_satellite.getVar("digitalData - Marketing - UTM_SOURCE"),l=encodeURIComponent(s),c=_satellite.getVar("digitalData - Marketing - UTM_CONTENT"),u=encodeURIComponent(c),d=_satellite.getVar("digitalData - Marketing - UTM_TERM"),g=encodeURIComponent(d),p=_satellite.getVar("digitalData - Marketing - CM_MMC"),f=encodeURIComponent(p);i.length>1?t.campaign=n+" | "+l+" | "+o+" | "+u+" | "+g:p.length>1?t.campaign=f:t.campaign="";var m="",h="",v="",m=_satellite.getVar("digitalData - Links - CM_SP"),h=_satellite.getVar("digitalData - Links - AB"),v=_satellite.getVar("digitalData - Rich Relevance - CM_VC");m.length>1?t.eVar1=m:h.length>1?t.eVar1=h:v.length>1?t.eVar1=v:t.eVar1="";var b=_satellite.getVar("digitalData - Profile - Topics Followed"),y=_satellite.getVar("digitalData - Profile - Newsletters Subscribed");t.list1=b,t.list2=y;var D=e.digitalData.users[0].profile.userState;"Subscriber"==D&&localStorage.setItem("HBRSubscriber","Sub"),"Registered"==D&&localStorage.setItem("HBRSubscriber","Reg"),t.usePlugins=!0,t.doPlugins=function(e){e.prop15=e.getDaysSinceLastVisit("s_dslv"),e.prop16=e.getPreviousValue(e.pageName,"s_ppn"),e.prop17=e.getPercentPageViewed(),e.eVar32=e.getNewRepeat(30,"s_getnewRepeat")},t.loadModule("Media"),t.Media.autoTrack=!0,t.Media.trackVars="events,prop11,eVar29,eVar35,eVar36",t.Media.trackEvents="event25,event26,event27,event28,event29,event30,event31",t.Media.trackMilestones="25,50,75",t.Media.playerName="Media Player",t.Media.segmentByMilestones=!0,t.Media.trackUsingContextData=!0,t.Media.contextDataMapping={"a.media.name":"eVar29,prop11","a.media.segment":"eVar35","a.contentType":"eVar36","a.media.timePlayed":"event25","a.media.view":"event26","a.media.segmentView":"event28","a.media.complete":"event27","a.media.milestones":{25:"event29",50:"event30",75:"event31"}},t.Media.monitor=function(e,t){},t.vpr=new Function("vs","v","if(typeof(v)!='undefined' && vs){var s=this; eval('s.'+vs+'=\"'+v+'\"')}"),t.split=new Function("l","d","var i,x=0,a=new Array;while(l){i=l.indexOf(d);i=i>-1?i:l.length;a[x++]=l.substring(0,i);l=l.substring(i+d.length);}return a"),t.join=new Function("v","p","var s=this;var f,b,d,w;if(p){f=p.front?p.front:'';b=p.back?p.back:'';d=p.delim?p.delim:'';w=p.wrap?p.wrap:'';}var str='';for(var x=0;x<v.length;x++){if(typeof(v[x])=='object' )str+=s.join( v[x],p);else str+=w+v[x]+w;if(x<v.length-1)str+=d;}return f+str+b;"),t.repl=new Function("x","o","n","var i=x.indexOf(o),l=n.length;while(x&&i>=0){x=x.substring(0,i)+n+x.substring(i+o.length);i=x.indexOf(o,i+l)}return x"),t.getNewRepeat=new Function("d","cn","var s=this,e=new Date(),cval,sval,ct=e.getTime();d=d?d:30;cn=cn?cn:'s_nr';e.setTime(ct+d*24*60*60*1000);cval=s.c_r(cn);if(cval.length==0){s.c_w(cn,ct+'-New',e);return'New';}sval=s.split(cval,'-');if(ct-sval[0]<30*60*1000&&sval[1]=='New'){s.c_w(cn,ct+'-New',e);return'New';}else{s.c_w(cn,ct+'-Repeat',e);return'Repeat';}"),t.getPercentPageViewed=new Function("n","var s=this,W=window,EL=W.addEventListener,AE=W.attachEvent,E=['load','unload','scroll','resize','zoom','keyup','mouseup','touchend','orientationchange','pan'];W.s_Obj=s;s_PPVid=(n=='-'?s.pageName:n)||s.pageName||location.href;if(!W.s_PPVevent){s.s_PPVg=function(n,r){var k='s_ppv',p=k+'l',c=s.c_r(n||r?k:p),a=c.indexOf(',')>-1?c.split(',',10):[''],l=a.length,i;a[0]=unescape(a[0]);r=r||(n&&n!=a[0])||0;a.length=10;if(typeof a[0]!='string')a[0]='';for(i=1;i<10;i++)a[i]=!r&&i<l?parseInt(a[i])||0:0;if(l<10||typeof a[9]!='string')a[9]='';if(r){s.c_w(p,c);s.c_w(k,'?')}return a};W.s_PPVevent=function(e){var W=window,D=document,B=D.body,E=D.documentElement,S=window.screen||0,Ho='offsetHeight',Hs='scrollHeight',Ts='scrollTop',Wc='clientWidth',Hc='clientHeight',C=100,M=Math,J='object',N='number',s=W.s_Obj||W.s||0;e=e&&typeof e==J?e.type||'':'';if(!e.indexOf('on'))e=e.substring(2);s_PPVi=W.s_PPVi||0;if(W.s_PPVt&&!e){clearTimeout(s_PPVt);s_PPVt=0;if(s_PPVi<2)s_PPVi++}if(typeof s==J){var h=M.max(B[Hs]||E[Hs],B[Ho]||E[Ho],B[Hc]||E[Hc]),X=W.innerWidth||E[Wc]||B[Wc]||0,Y=W.innerHeight||E[Hc]||B[Hc]||0,x=S?S.width:0,y=S?S.height:0,r=M.round(C*(W.devicePixelRatio||1))/C,b=(D.pageYOffset||E[Ts]||B[Ts]||0)+Y,p=h>0&&b>0?M.round(C*b/h):0,O=W.orientation,o=!isNaN(O)?M.abs(o)%180:Y>X?0:90,L=e=='load'||s_PPVi<1,a=s.s_PPVg(s_PPVid,L),V=function(i,v,f,n){i=parseInt(typeof a==J&&a.length>i?a[i]:'0')||0;v=typeof v!=N?i:v;v=f||v>i?v:i;return n?v:v>C?C:v<0?0:v};if(new RegExp('(iPod|iPad|iPhone)').exec(navigator.userAgent||'')&&o){o=x;x=y;y=o}o=o?'P':'L';a[9]=L?'':a[9].substring(0,1);s.c_w('s_ppv',escape(W.s_PPVid)+','+V(1,p,L)+','+(L||!V(2)?p:V(2))+','+V(3,b,L,1)+','+X+','+Y+','+x+','+y+','+r+','+a[9]+(a[9]==o?'':o))}if(!W.s_PPVt&&e!='unload')W.s_PPVt=setTimeout(W.s_PPVevent,333)};for(var f=W.s_PPVevent,i=0;i<E.length;i++)if(EL)EL(E[i],f,false);else if(AE)AE('on'+E[i],f);f()};var a=s.s_PPVg();return!n||n=='-'?a[1]:a"),t.getPreviousValue=new Function("v","c","el","var s=this,t=new Date,i,j,r='';t.setTime(t.getTime()+1800000);if(el){if(s.events){i=s.split(el,',');j=s.split(s.events,',');for(x in i){for(y in j){if(i[x]==j[y]){if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t):s.c_w(c,'no value',t);return r}}}}}else{if(s.c_r(c)) r=s.c_r(c);v?s.c_w(c,v,t):s.c_w(c,'no value',t);return r}"),t.getDaysSinceLastVisit=new Function("c","var s=this,e=new Date(),es=new Date(),cval,cval_s,cval_ss,ct=e.getTime(),day=24*60*60*1000,f1,f2,f3,f4,f5;e.setTime(ct+3*365*day);es.setTime(ct+30*60*1000);f0='Cookies Not Supported';f1='First Visit';f2='More than 30 days';f3='More than 7 days';f4='Less than 7 days';f5='Less than 1 day';cval=s.c_r(c);if(cval.length==0){s.c_w(c,ct,e);s.c_w(c+'_s',f1,es);}else{var d=ct-cval;if(d>30*60*1000){if(d>30*day){s.c_w(c,ct,e);s.c_w(c+'_s',f2,es);}else if(d<30*day+1 && d>7*day){s.c_w(c,ct,e);s.c_w(c+'_s',f3,es);}else if(d<7*day+1 && d>day){s.c_w(c,ct,e);s.c_w(c+'_s',f4,es);}else if(d<day+1){s.c_w(c,ct,e);s.c_w(c+'_s',f5,es);}}else{s.c_w(c,ct,e);cval_ss=s.c_r(c+'_s');s.c_w(c+'_s',cval_ss,es);}}cval_s=s.c_r(c+'_s');if(cval_s.length==0) return f0;else if(cval_s!=f1&&cval_s!=f2&&cval_s!=f3&&cval_s!=f4&&cval_s!=f5) return '';else return cval_s;"),t.getTimeToComplete=new Function("v","cn","e","var s=this,d=new Date,x=d,k;if(!s.ttcr){e=e?e:0;if(v=='start'||v=='stop')s.ttcr=1;x.setTime(x.getTime()+e*86400000);if(v=='start'){s.c_w(cn,d.getTime(),e?x:0);return '';}if(v=='stop'){k=s.c_r(cn);if(!s.c_w(cn,'',d)||!k)return '';v=(d.getTime()-k)/1000;var td=86400,th=3600,tm=60,r=5,u,un;if(v>td){u=td;un='days';}else if(v>th){u=th;un='hours';}else if(v>tm){r=2;u=tm;un='minutes';}else{r=.2;u=1;un='seconds';}v=v*r/u;return (Math.round(v)/r)+' '+un;}}return '';")}},"91ba1c89a2c9e1da1b85c190be314eef6cfd6435":{engine:"tnt",mboxURL:"9146204dcdccfe9dc3405fbec7e2354ec4405ec3/mbox-contents-91ba1c89a2c9e1da1b85c190be314eef6cfd6435.js",loadSync:!0,pageParams:{userState:"%digitalData - Profile - User State%",articlesRemaining:"%digitalData - Profile - Article Quota Remaining%"}},f0c883d5dbecc6dab28db594124d2de20f71b90a:{engine:"visitor_id",loadOn:"pagetop",name:"VisitorID",mcOrgId:"7801965A577503E87F000101@AdobeOrg",autoRequest:!0,initVars:{trackingServer:"hbr.sc.omtrdc.net",trackingServerSecure:"hbr.sc.omtrdc.net"},customerIDs:{adobe_id:{id:"%digitalData - Profile - Visitor ID%",authState:"UNKNOWN"}}}},pageLoadRules:[{name:"Adblock Detect - Bottom",trigger:[{command:"writeHTML",arguments:[{html:"<div class=\"afs_ads\">&nbsp;</div>\n<script>\n(function() {\n // Define a function for showing the message.\n // Set a timeout of 2 seconds to give adblocker\n // a chance to do its thing\n var tryMessage = function() {\n setTimeout(function() {\n if(!document.getElementsByClassName) return;\n var ads = document.getElementsByClassName('afs_ads'),\n ad = ads[ads.length - 1];\n\n if(!ad\n || ad.innerHTML.length == 0\n || ad.clientHeight === 0) {\n //fire event.\n ga('2627ed8a59a02e1d9cd65652cb633058.send', 'event', 'user actions', 'adblock', 'enabled', {nonInteraction: true});\n } else {\n ad.style.display = 'none';\n }\n\n }, 2000);\n }\n\n /* Attach a listener for page load ... then show the message */\n if(window.addEventListener) {\n window.addEventListener('load', tryMessage, false);\n } else {\n window.attachEvent('onload', tryMessage); //IE\n }\n})();\n</script>"}]}],event:"pagebottom"},{name:"Advertising - DFP Loader",trigger:[{command:"writeHTML",arguments:[{html:'<script async type="text/javascript" src="//www.googletagservices.com/tag/js/gpt.js"></script>\n<script>\n var googletag = googletag || {};\n googletag.cmd = googletag.cmd || [];\n</script>'}]},{command:"loadBlockingScript",arguments:[{sequential:!0,scripts:[{src:"satellite-582dd1e664746d066000516b.js"},{src:"satellite-58d486e064746d16620035af.js"}]}]}],event:"pagetop"},{name:"Analytics - Archive Pages",trigger:[{engine:"sc",command:"setVars",arguments:[{pageName:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%: %digitalData - Archive - Date%"}]}],scope:{URI:{include:["/archive-toc/"]}},event:"pagebottom"},{name:"Analytics - Article Pages",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar12:"%digitalData - Content - Main Author%",eVar22:"Content Interaction",eVar23:"Article Started",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar38:"%digitalData - Content - Article Topics%",eVar47:"%digitalData - Content - Primary Editor%",eVar58:"%digitalData - Content - Article Finding Method%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Article Pages",prop19:"D=v26",prop20:"D=v27",prop21:"D=v28",prop22:"D=v38",prop28:"%digitalData - Content - Main Author%",prop29:"%digitalData - Content - Primary Editor%",prop6:"D=v22",prop7:"D=v23",prop9:"D=v25"}]},{engine:"sc",command:"addEvent",arguments:["event10","event36","event6"]},{engine:"sc",command:"customSetup",arguments:[function(e,a){var i=_satellite.getVar("digitalData - Content - Editorial Distinction"),n=_satellite.getVar("digitalData - Content - Article Title"),r=t.location.pathname,o=a.events,s=$(".lineup-content__title").text();"Big Idea"==i&&-1==r.indexOf("cover-story")?(a.eVar25=s,a.prop21=s,a.pageName="Article: "+s,a.events=o+",event52"):(a.eVar25=n,a.prop21=n,a.pageName="Article: "+n,a.events=o)}]}],scope:{URI:{include:["[0-9]{4}\\/[0-9]{2}"],exclude:["assessment"]}},event:"pagebottom"},{name:"Analytics - Content - Topic Page",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Content Interaction",eVar23:"Topic Viewed",eVar28:"%digitalData - Topic Page - Topic Name%",prop10:"D=v28",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Content - Topic Page",prop6:"D=v22",prop7:"D=v23"}]},{engine:"sc",command:"addEvent",arguments:["event12"]}],scope:{URI:{include:["/topic/"]}},event:"pagebottom"},{name:"Analytics - Registration Start - Full Page Load",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Registration Interaction",eVar23:"Registration Start",prop6:"D=v22",prop7:"D=v23"}]},{engine:"sc",command:"addEvent",arguments:["event18","event6"]}],scope:{URI:{include:["/register"]}},conditions:[function(e,t){return localStorage.setItem("_analytics_Reg_Location","Registration: My Account"),True}],event:"pagebottom"},{name:"Analytics - Registration Success - Full Page Load",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Registration Interaction",eVar23:"Registration Success",eVar39:"%digitalData - Cookie - Registration Location%",prop18:"Analytics - Registration Success - Full Page Load",prop6:"D=v22",prop7:"D=v23"}]},{engine:"sc",command:"customSetup",arguments:[function(e,t){var a=_satellite.getVar("digitalData - Profile - User State"),i="";i="Subscriber"==a?"event7,event19,event68":"event7,event19",t.events=i}]}],scope:{URI:{include:["/registration-complete"]}},event:"pagebottom"},{name:"Analytics - Rich Relevance Placements",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Content Interaction",eVar23:"Rich Relevance Link Click",eVar55:"%digitalData - Rich Relevance - CM_VC%",prop18:"Analytics - Rich Relevance Placements",prop30:"%digitalData - Rich Relevance - CM_VC%",prop6:"D=v22",prop7:"D=v23"}]},{engine:"sc",command:"addEvent",arguments:["event83"]}],conditions:[function(){return _satellite.textMatch(_satellite.getVar("digitalData - Rich Relevance - CM_VC"),/./i)}],event:"pagebottom"},{name:"Analytics - Search Refinement Page",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar2:"%digitalData - Event - On-Site Search Term%",eVar22:"On-Site Action",eVar23:"On-Site Search Refinement",eVar3:"%digitalData - Event - On-Site Search Type%",eVar37:"%digitalData - Event - On-Site Search Refinement Values%",eVar51:"%digitalData - Event - On-Site Search Refinement Attributes%",eVar52:"%digitalData - Event - On-Site Search Sort%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Search Refinement Page",prop25:"%digitalData - Event - On-Site Search Refinement Attributes%",prop26:"%digitalData - Event - On-Site Search Refinement Values%",prop27:"%digitalData - Event - On-Site Search Sort%",prop5:"%digitalData - Event - On-Site Search Term%",prop6:"D=v22",prop7:"D=v23",pageName:"%digitalData - Pages - Page Type%: Refined Search Results"}]},{engine:"sc",command:"addEvent",arguments:["event1:%digitalData - Event - On-Site Search Term%","event39"]}],scope:{URI:{include:[/^\/search/i]}},conditions:[function(e,t){var a=_satellite.getVar("digitalData - Event - On-Site Search Refinement Values");return a.length>0?!0:!1}],event:"pagebottom"},{name:"Analytics - Search Results Page",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar2:"%digitalData - Event - On-Site Search Term%",eVar22:"On-Site Action",eVar23:"On-Site Search",eVar3:"%digitalData - Event - On-Site Search Type%",eVar52:"%digitalData - Event - On-Site Search Sort%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Search Results Page",prop27:"%digitalData - Event - On-Site Search Sort%",prop5:"%digitalData - Event - On-Site Search Term%",prop6:"D=v22",prop7:"D=v23",pageName:"%digitalData - Pages - Page Type%: Search Results"}]},{engine:"sc",command:"customSetup",arguments:[function(e,t){var a=_satellite.getVar("digitalData - Event - # of On-Site Search Results");0==a?t.events="event1,event2,event3=0":t.events="event1,event3="+a}]}],scope:{URI:{include:[/^\/search/i]}},conditions:[function(e,t){var a=_satellite.getVar("digitalData - Event - On-Site Search Refinement Values");return a.length<1?!0:!1}],event:"pagebottom"},{name:"Analytics - Store - Checkout - Review Order",trigger:[{engine:"sc",command:"setVars",arguments:[{prop18:"Analytics - Store - Checkout - Review Order"}]},{engine:"sc",command:"addEvent",arguments:["event44"]}],scope:{URI:{include:["/review-order"]}},event:"pagebottom"},{name:"Analytics - Store - Checkout - Shipping and Payment",trigger:[{engine:"sc",command:"setVars",arguments:[{prop18:"Analytics - Store - Checkout - Shipping and Payment"}]},{engine:"sc",command:"addEvent",arguments:["event43"]}],scope:{URI:{include:["/shipping-payment"]}},event:"pagebottom"},{name:"Analytics - Store - Checkout Error Page",trigger:[{engine:"sc",command:"setVars",arguments:[{pageName:"%digitalData - Pages - Page Name% - Error"}]},{engine:"sc",command:"addEvent",arguments:["event86"]}],conditions:[function(e,t){var a=_satellite.getVar("digitalData - Query String - Error Page");return"0"==a?!0:!1}],event:"pagebottom"},{name:"Analytics - Store - IDP",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Product Interaction",eVar23:"Product View",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Store - IDP",prop6:"D=v22",prop7:"D=v23"}]},{engine:"sc",command:"customSetup",arguments:[function(t,a){a.events=a.events;var i="";a.eVar12="",a.eVar25="";var n=_satellite.getVar("digitalData - IDP - SKU"),r=_satellite.getVar("digitalData - IDP - Product Category"),o=_satellite.getVar("digitalData - IDP - Product ID"),s=_satellite.getVar("digitalData - IDP - Product Name"),l=s.replace(",",""),c=_satellite.getVar("digitalData - IDP - Product Kind"),u=_satellite.getVar("digitalData - IDP - Product Format"),d=_satellite.getVar("digitalData - IDP - Product Base Price"),g=_satellite.getVar("digitalData - IDP - Product Type"),p=_satellite.getVar("digitalData - IDP - Product Author"),f=e.digitalData.product[0].attributes.publicationDate,m=new Date(f),h=new Date,v=Math.round((h-m)/1e3/60/60/24),f=e.digitalData.product[0].attributes.publicationDate;a.products=";"+n+";;;;eVar4="+r+"|eVar5="+o+"|eVar6="+l+"|eVar7="+c+"|eVar8="+u+"|eVar10="+d+"|eVar34="+g+"|eVar56="+v+"|eVar59="+f,"Magazine Article"==g?a.eVar25=l:"Digital Article"==g?a.eVar25=l:s=s,a.eVar12=p;var f=e.digitalData.product[0].attributes.publicationDate,m=new Date(f),h=new Date,v=Math.round((h-m)/1e3/60/60/24);i="Magazine Article"==g?"prodView,event4,event36":"Digital Article"==g?"prodView,event4,event36":"prodView,event4","undefined"!=a.events?a.events=i+","+a.events:a.events=i}]}],scope:{URI:{include:[/\/product\//i]}},event:"pagebottom"},{name:"Analytics - Store - Order Confirmation Page",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar21:"%digitalData - Orders - Order Number%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - Store - Order Confirmation Page",state:"%digitalData - Orders - Billing State%",transactionID:"%digitalData - Orders - Order Number%",zip:"%digitalData - Orders - Billing Zip%"}]},{engine:"sc",command:"addEvent",arguments:["event45","purchase"]},{engine:"sc",command:"customSetup",arguments:[function(t,a){a.events="purchase,event21,event22,event23,event45,event48,event59";for(var i="",n="",r=0;r<e.digitalData.transaction.item.length;r++){var o=e.digitalData.transaction.item[r],s=o.productInfo.productSKU,l=o.quantity.productQuantity,c=o.price.totalPrice,u=o.category.subCategory,d=(o.productInfo.productId,o.productInfo.productName),g=d.replace(",",""),p=o.productInfo.productKind,f=o.productInfo.format,m=o.price.basePrice,h=m*l,v=o.productInfo.type,b=digitalData.transaction.total.orderLevelPromoTotal,y=digitalData.transaction.total.shipping,D=digitalData.transaction.total.taxAmount,S=digitalData.transaction.total.orderLevelPromoCode,P=o.attributes.publicationDate,V=new Date(P),I=new Date,C=Math.round((I-V)/1e3/60/60/24),P=o.attributes.publicationDate;if(i=0==r?";"+s+";"+l+";"+c+";event59="+h+";eVar4="+u+"|eVar6="+g+"|eVar7="+p+"|eVar8="+f+"|eVar10="+h+"|eVar34="+v+"|eVar56="+C+"|eVar59="+P:",;"+s+";"+l+";"+c+";event59="+h+";eVar4="+u+"|eVar6="+g+"|eVar7="+p+"|eVar8="+f+"|eVar10="+h+"|eVar34="+v+"|eVar56="+C+"|eVar59="+P,"0"!=b)var _=",;Order Level Discounts;;;event21="+b+";";else var _="";if("0"!=y)var T=",;Shipping;;;event23="+y+";";else var T="";if("0"!=D)var A=",;Tax;;;event48="+D+";";else var A="";n+=i}!function(){var t=[];for(r=0;r<e.digitalData.transaction.item.length;r++){var i=e.digitalData.transaction.item[r];if("Magazine Article"==i.productInfo.type)var n=i.productInfo.productName;else{if("Digital Article"!=i.productInfo.type)continue;var n=i.productInfo.productName}t.push(n)}var o=t.join("|");a.eVar25=o}(),a.eVar41=S,a.products="",a.products=n+A+T+_}]}],scope:{URI:{include:["/order/thank-you/"]}},conditions:[function(e,t){var a=localStorage.getItem("cart"),i=JSON.parse(a),n=i.promo;return _satellite.setVar("promo_code",n),!0}],event:"pagebottom"},{name:"Analytics - Store - Shopping Cart",trigger:[{engine:"sc",command:"setVars",arguments:[{eVar22:"Cart Interaction",eVar23:"View Cart",prop18:"Analytics - Store - Shopping Cart",prop6:"D=v22",prop7:"D=v23",channel:"Cart"}]},{engine:"sc",command:"addEvent",arguments:["scView"]},{engine:"sc",command:"customSetup",arguments:[function(t,a){a.eVar25="";for(var i="",n="",r=0;r<e.digitalData.cart.item.length;r++){var o=e.digitalData.cart.item[r],s=o.productInfo.productSKU,l=o.category.subCategory,c=o.productInfo.productSKU,u=o.productInfo.productName,d=u.replace(",",""),g=o.productInfo.productKind,p=o.productInfo.format,f=o.price.basePrice,m=o.productInfo.type,h=o.attributes.publicationDate,v=new Date(h),b=new Date,y=Math.round((b-v)/1e3/60/60/24),h=o.attributes.publicationDate;i=0==r?";"+s+";;;;eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m+"|eVar56="+y+"|eVar59="+h:",;"+s+";;;;eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m+"|eVar56="+y+"|eVar59="+h,n+=i}!function(){var t=[];for(r=0;r<e.digitalData.cart.item.length;r++){var i=e.digitalData.cart.item[r];if("Magazine Article"==i.productInfo.type)var n=i.productInfo.productName;else{if("Digital Article"!=i.productInfo.type)continue;var n=i.productInfo.productName}t.push(n)}var o=t.join("|");a.eVar25=o}(),a.products="",a.products=n}]}],scope:{URI:{include:["/shopping-cart"]}},event:"pagebottom"},{name:"Article Loads - Bottom",trigger:[{command:"loadBlockingScript",arguments:[{sequential:!0,scripts:[{src:"satellite-556fe6496237620014eb0500.js"}]}]}],conditions:[function(){return _satellite.textMatch(_satellite.getVar("articleType"),"article")}],event:"pagebottom"},{name:"CM SP Plugin",trigger:[{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-55941cde306261001700084f.js"}]}]}],event:"pagetop"},{name:"Cart Logger Supreme",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547641b16661360015570500.js"}]}]}],event:"windowload"},{name:"Checkout Confirmation Page",scope:{URI:{include:["/order/thank-you"]}},conditions:[function(e,t){return _satellite.track("_order_confirmation"),!0}],event:"pagebottom"},{name:"Experiment: Update Account",trigger:[{command:"writeHTML",arguments:[{html:"<!-- Google Analytics Content Experiment code -->\n<script>function utmx_section(){}function utmx(){}(function(){var\nk='15902347-81',d=document,l=d.location,c=d.cookie;\nif(l.search.indexOf('utm_expid='+k)>0)return;\nfunction f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.\nindexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.\nlength:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write(\n'<sc'+'ript src=\"'+'http'+(l.protocol=='https:'?'s://ssl':\n'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+\n'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().\nvalueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+\n'\" type=\"text/javascript\" charset=\"utf-8\"><\\/sc'+'ript>')})();\n</script><script>utmx('url','A/B');</script>\n<!-- End of Google Analytics Content Experiment code -->" }]}],scope:{URI:{include:[/\/update-account*/i]}},event:"pagetop"},{name:"Load jQuery",trigger:[{command:"loadBlockingScript",arguments:[{sequential:!0,scripts:[{src:"satellite-5466a3876232650015010600.js"}]}]}],conditions:[function(e,t){return"undefined"==typeof jQuery?!0:!1}],event:"pagetop"},{name:"New Relic Header",trigger:[{command:"writeHTML",arguments:[{html:'<script type="text/javascript">\nwindow.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({QJf3ax:[function(t,e){function n(t){function e(e,n,a){t&&t(e,n,a),a||(a={});for(var c=s(e),f=c.length,u=i(a,o,r),d=0;f>d;d++)c[d].apply(u,n);return u}function a(t,e){f[t]=s(t).concat(e)}function s(t){return f[t]||[]}function c(){return n(e)}var f={};return{on:a,emit:e,create:c,listeners:s,_events:f}}function r(){return{}}var o="nr@context",i=t("gos");e.exports=n()},{gos:"7eSDFh"}],ee:[function(t,e){e.exports=t("QJf3ax")},{}],3:[function(t){function e(t){try{i.console&&console.log(t)}catch(e){}}var n,r=t("ee"),o=t(1),i={};try{n=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(i.console=!0,-1!==n.indexOf("dev")&&(i.dev=!0),-1!==n.indexOf("nr_dev")&&(i.nrDev=!0))}catch(a){}i.nrDev&&r.on("internal-error",function(t){e(t.stack)}),i.dev&&r.on("fn-err",function(t,n,r){e(r.stack)}),i.dev&&(e("NR AGENT IN DEVELOPMENT MODE"),e("flags: "+o(i,function(t){return t}).join(", ")))},{1:22,ee:"QJf3ax"}],4:[function(t){function e(t,e,n,i,s){try{c?c-=1:r("err",[s||new UncaughtException(t,e,n)])}catch(f){try{r("ierr",[f,(new Date).getTime(),!0])}catch(u){}}return"function"==typeof a?a.apply(this,o(arguments)):!1}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function n(t){r("err",[t,(new Date).getTime()])}var r=t("handle"),o=t(6),i=t("ee"),a=window.onerror,s=!1,c=0;t("loader").features.err=!0,t(5),window.onerror=e;try{throw new Error}catch(f){"stack"in f&&(t(1),t(2),"addEventListener"in window&&t(3),window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&!/CriOS/.test(navigator.userAgent)&&t(4),s=!0)}i.on("fn-start",function(){s&&(c+=1)}),i.on("fn-err",function(t,e,r){s&&(this.thrown=!0,n(r))}),i.on("fn-end",function(){s&&!this.thrown&&c>0&&(c-=1)}),i.on("internal-error",function(t){r("ierr",[t,(new Date).getTime(),!0])})},{1:9,2:8,3:6,4:10,5:3,6:23,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],5:[function(t){function e(){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var n=t("ee"),r=t("handle"),o=t(1),i=t(2);t("loader").features.stn=!0,t(3);var a=Event;n.on("fn-start",function(t){var e=t[0];e instanceof a&&(this.bstStart=Date.now())}),n.on("fn-end",function(t,e){var n=t[0];n instanceof a&&r("bst",[n,e,this.bstStart,Date.now()])}),o.on("fn-start",function(t,e,n){this.bstStart=Date.now(),this.bstType=n}),o.on("fn-end",function(t,e){r("bstTimer",[e,this.bstStart,Date.now(),this.bstType])}),i.on("fn-start",function(){this.bstStart=Date.now()}),i.on("fn-end",function(t,e){r("bstTimer",[e,this.bstStart,Date.now(),"requestAnimationFrame"])}),n.on("pushState-start",function(){this.time=Date.now(),this.startPath=location.pathname+location.hash}),n.on("pushState-end",function(){r("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),"addEventListener"in window.performance&&(window.performance.addEventListener("webkitresourcetimingbufferfull",function(){r("bstResource",[window.performance.getEntriesByType("resource")]),window.performance.webkitClearResourceTimings()},!1),window.performance.addEventListener("resourcetimingbufferfull",function(){r("bstResource",[window.performance.getEntriesByType("resource")]),window.performance.clearResourceTimings()},!1)),document.addEventListener("scroll",e,!1),document.addEventListener("keypress",e,!1),document.addEventListener("click",e,!1)}},{1:9,2:8,3:7,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],6:[function(t,e){function n(t){i.inPlace(t,["addEventListener","removeEventListener"],"-",r)}function r(t){return t[1]}var o=t("ee").create(),i=t(1)(o),a=t("gos");if(e.exports=o,n(window),"getPrototypeOf"in Object){for(var s=document;s&&!s.hasOwnProperty("addEventListener");)s=Object.getPrototypeOf(s);s&&n(s);for(var c=XMLHttpRequest.prototype;c&&!c.hasOwnProperty("addEventListener");)c=Object.getPrototypeOf(c);c&&n(c)}else XMLHttpRequest.prototype.hasOwnProperty("addEventListener")&&n(XMLHttpRequest.prototype);o.on("addEventListener-start",function(t,e){function n(){return s}if(t[1]){var r=t[1];if("function"==typeof r){var s=a(r,"nr@wrapped",function(){return i(r,"fn-",n,r.name||"anonymous")});this.wrapped=t[1]=s,o.emit("initEventContext",[t,e],this.wrapped)}else"function"==typeof r.handleEvent&&i.inPlace(r,["handleEvent"],"fn-")}}),o.on("removeEventListener-start",function(t){var e=this.wrapped;e&&(t[1]=e)})},{1:24,ee:"QJf3ax",gos:"7eSDFh"}],7:[function(t,e){var n=t("ee").create(),r=t(1)(n);e.exports=n,r.inPlace(window.history,["pushState","replaceState"],"-")},{1:24,ee:"QJf3ax"}],8:[function(t,e){var n=t("ee").create(),r=t(1)(n);e.exports=n,r.inPlace(window,["requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame"],"raf-"),n.on("raf-start",function(t){t[0]=r(t[0],"fn-")})},{1:24,ee:"QJf3ax"}],9:[function(t,e){function n(t,e,n){t[0]=i(t[0],"fn-",null,n)}function r(t,e,n){function r(){return a}this.ctx={};var a={"nr@context":this.ctx};o.emit("initTimerContext",[t,n],a),t[0]=i(t[0],"fn-",r,n)}var o=t("ee").create(),i=t(1)(o);e.exports=o,i.inPlace(window,["setTimeout","setImmediate"],"setTimer-"),i.inPlace(window,["setInterval"],"setInterval-"),i.inPlace(window,["clearTimeout","clearImmediate"],"clearTimeout-"),o.on("setInterval-start",n),o.on("setTimer-start",r)},{1:24,ee:"QJf3ax"}],10:[function(t,e){function n(){f.inPlace(this,p,"fn-",o)}function r(t,e){f.inPlace(e,["onreadystatechange"],"fn-")}function o(t,e){return e}function i(t,e){for(var n in t)e[n]=t[n];return e}var a=t("ee").create(),s=t(1),c=t(2),f=c(a),u=c(s),d=window.XMLHttpRequest,p=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"];e.exports=a,window.XMLHttpRequest=function(t){var e=new d(t);try{a.emit("new-xhr",[],e),e.hasOwnProperty("addEventListener")&&u.inPlace(e,["addEventListener","removeEventListener"],"-",o),e.addEventListener("readystatechange",n,!1)}catch(r){try{a.emit("internal-error",[r])}catch(i){}}return e},i(d,XMLHttpRequest),XMLHttpRequest.prototype=d.prototype,f.inPlace(XMLHttpRequest.prototype,["open","send"],"-xhr-",o),a.on("send-xhr-start",r),a.on("open-xhr-start",r)},{1:6,2:24,ee:"QJf3ax"}],11:[function(t){function e(t){var e=this.params,r=this.metrics;if(!this.ended){this.ended=!0;for(var i=0;c>i;i++)t.removeEventListener(s[i],this.listener,!1);if(!e.aborted){if(r.duration=(new Date).getTime()-this.startTime,4===t.readyState){e.status=t.status;var a=t.responseType,f="arraybuffer"===a||"blob"===a||"json"===a?t.response:t.responseText,u=n(f);if(u&&(r.rxSize=u),this.sameOrigin){var d=t.getResponseHeader("X-NewRelic-App-Data");d&&(e.cat=d.split(", ").pop())}}else e.status=0;r.cbTime=this.cbTime,o("xhr",[e,r,this.startTime])}}}function n(t){if("string"==typeof t&&t.length)return t.length;if("object"!=typeof t)return void 0;if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if("undefined"!=typeof FormData&&t instanceof FormData)return void 0;try{return JSON.stringify(t).length}catch(e){return void 0}}function r(t,e){var n=i(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.sameOrigin=n.sameOrigin}if(window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&!/CriOS/.test(navigator.userAgent)){t("loader").features.xhr=!0;var o=t("handle"),i=t(2),a=t("ee"),s=["load","error","abort","timeout"],c=s.length,f=t(1),u=window.XMLHttpRequest;t(4),t(3),a.on("new-xhr",function(){this.totalCbs=0,this.called=0,this.cbTime=0,this.end=e,this.ended=!1,this.xhrGuids={}}),a.on("open-xhr-start",function(t){this.params={method:t[0]},r(this,t[1]),this.metrics={}}),a.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid)}),a.on("send-xhr-start",function(t,e){var r=this.metrics,o=t[0],i=this;if(r&&o){var f=n(o);f&&(r.txSize=f)}this.startTime=(new Date).getTime(),this.listener=function(t){try{"abort"===t.type&&(i.params.aborted=!0),("load"!==t.type||i.called===i.totalCbs&&(i.onloadCalled||"function"!=typeof e.onload))&&i.end(e)}catch(n){try{a.emit("internal-error",[n])}catch(r){}}};for(var u=0;c>u;u++)e.addEventListener(s[u],this.listener,!1)}),a.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),a.on("xhr-load-added",function(t,e){var n=""+f(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),a.on("xhr-load-removed",function(t,e){var n=""+f(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),a.on("addEventListener-end",function(t,e){e instanceof u&&"load"===t[0]&&a.emit("xhr-load-added",[t[1],t[2]],e)}),a.on("removeEventListener-end",function(t,e){e instanceof u&&"load"===t[0]&&a.emit("xhr-load-removed",[t[1],t[2]],e)}),a.on("fn-start",function(t,e,n){e instanceof u&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=(new Date).getTime()))}),a.on("fn-end",function(t,e){this.xhrCbStart&&a.emit("xhr-cb-time",[(new Date).getTime()-this.xhrCbStart,this.onload,e],e)})}},{1:"XL7HBI",2:12,3:10,4:6,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],12:[function(t,e){e.exports=function(t){var e=document.createElement("a"),n=window.location,r={};e.href=t,r.port=e.port;var o=e.href.split("://");return!r.port&&o[1]&&(r.port=o[1].split("/")[0].split("@").pop().split(":")[1]),r.port&&"0"!==r.port||(r.port="https"===o[0]?"443":"80"),r.hostname=e.hostname||n.hostname,r.pathname=e.pathname,r.protocol=o[0],"/"!==r.pathname.charAt(0)&&(r.pathname="/"+r.pathname),r.sameOrigin=!e.hostname||e.hostname===document.domain&&e.port===n.port&&e.protocol===n.protocol,r}},{}],13:[function(t,e){function n(t){return function(){r(t,[(new Date).getTime()].concat(i(arguments)))}}var r=t("handle"),o=t(1),i=t(2);"undefined"==typeof window.newrelic&&(newrelic=window.NREUM);var a=["setPageViewName","addPageAction","setCustomAttribute","finished","addToTrace","inlineHit","noticeError"];o(a,function(t,e){window.NREUM[e]=n("api-"+e)}),e.exports=window.NREUM},{1:22,2:23,handle:"D5DuLP"}],gos:[function(t,e){e.exports=t("7eSDFh")},{}],"7eSDFh":[function(t,e){function n(t,e,n){if(r.call(t,e))return t[e];var o=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:o,writable:!0,enumerable:!1}),o}catch(i){}return t[e]=o,o}var r=Object.prototype.hasOwnProperty;e.exports=n},{}],D5DuLP:[function(t,e){function n(t,e,n){return r.listeners(t).length?r.emit(t,e,n):void(r.q&&(r.q[t]||(r.q[t]=[]),r.q[t].push(e)))}var r=t("ee").create();e.exports=n,n.ee=r,r.q={}},{ee:"QJf3ax"}],handle:[function(t,e){e.exports=t("D5DuLP")},{}],XL7HBI:[function(t,e){function n(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:i(t,o,function(){return r++})}var r=1,o="nr@id",i=t("gos");e.exports=n},{gos:"7eSDFh"}],id:[function(t,e){e.exports=t("XL7HBI")},{}],G9z0Bl:[function(t,e){function n(){var t=p.info=NREUM.info,e=f.getElementsByTagName("script")[0];if(t&&t.licenseKey&&t.applicationID&&e){s(d,function(e,n){e in t||(t[e]=n)});var n="https"===u.split(":")[0]||t.sslForHttp;p.proto=n?"https://":"http://",a("mark",["onload",i()]);var r=f.createElement("script");r.src=p.proto+t.agent,e.parentNode.insertBefore(r,e)}}function r(){"complete"===f.readyState&&o()}function o(){a("mark",["domContent",i()])}function i(){return(new Date).getTime()}var a=t("handle"),s=t(1),c=window,f=c.document;t(2);var u=(""+location).split("?")[0],d={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-768.min.js"},p=e.exports={offset:i(),origin:u,features:{}};f.addEventListener?(f.addEventListener("DOMContentLoaded",o,!1),c.addEventListener("load",n,!1)):(f.attachEvent("onreadystatechange",r),c.attachEvent("onload",n)),a("mark",["firstbyte",i()])},{1:22,2:13,handle:"D5DuLP"}],loader:[function(t,e){e.exports=t("G9z0Bl")},{}],22:[function(t,e){function n(t,e){var n=[],o="",i=0;for(o in t)r.call(t,o)&&(n[i]=e(o,t[o]),i+=1);return n}var r=Object.prototype.hasOwnProperty;e.exports=n},{}],23:[function(t,e){function n(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(0>o?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=n},{}],24:[function(t,e){function n(t){return!(t&&"function"==typeof t&&t.apply&&!t[i])}var r=t("ee"),o=t(1),i="nr@original",a=Object.prototype.hasOwnProperty;e.exports=function(t){function e(t,e,r,a){function nrWrapper(){var n,i,s,f;try{i=this,n=o(arguments),s=r&&r(n,i)||{}}catch(d){u([d,"",[n,i,a],s])}c(e+"start",[n,i,a],s);try{return f=t.apply(i,n)}catch(p){throw c(e+"err",[n,i,p],s),p}finally{c(e+"end",[n,i,f],s)}}return n(t)?t:(e||(e=""),nrWrapper[i]=t,f(t,nrWrapper),nrWrapper)}function s(t,r,o,i){o||(o="");var a,s,c,f="-"===o.charAt(0);for(c=0;c<r.length;c++)s=r[c],a=t[s],n(a)||(t[s]=e(a,f?s+o:o,i,s))}function c(e,n,r){try{t.emit(e,n,r)}catch(o){u([o,e,n,r])}}function f(t,e){if(Object.defineProperty&&Object.keys)try{var n=Object.keys(t);return n.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(r){u([r])}for(var o in t)a.call(t,o)&&(e[o]=t[o]);return e}function u(e){try{t.emit("internal-error",e)}catch(n){}}return t||(t=r),e.inPlace=s,e.flag=i,e}},{1:23,ee:"QJf3ax"}]},{},["G9z0Bl",4,11,5]);\n;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"e93df31780",applicationID:"8171118",sa:1,agent:"js-agent.newrelic.com/nr-768.min.js"}\n</script>'}]}],event:"pagetop"},{name:"Page Path",trigger:[{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-546ec7f43636320018880400.js"}]}]}],event:"pagetop"},{name:"Pathing",trigger:[{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-54766ad36136310015ea0b00.js"}]}]}],event:"pagetop"},{name:"Review Order",trigger:[{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-5466694637306300155b0400.js"}]}]}],scope:{URI:{include:["/review-order"]}},event:"pagebottom"},{name:"Silverpop Tracking",trigger:[{command:"writeHTML",arguments:[{html:'<meta name="com.silverpop.brandeddomains" content="www.pages05.net,email.hbr.org,hbr.org" />\n<script async src="https://www.sc.pages05.net/lp/static/js/iMAWebCookie.js?1ddc99b-12a57f1d7e9-c6f842ded9e6d11c5ffebd715e129037&h=www.pages05.net" type="text/javascript"></script>\n'}]}],event:"pagetop"},{name:"Site Manipulation - (Prod) Qualtrics Loader",trigger:[{command:"writeHTML",arguments:[{html:"<div id='ZN_4PzX5r5aUU7W4rX'><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>"}]},{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-58121efb64746d492100acf6.js"}]}]}],scope:{domains:[/buysub\.com$/i,/hbr\.org$/i,/hbrsubscribe\.org$/i,/subscription\.co\.uk$/i]},event:"pagebottom"},{name:"Tracking - Chacka, Order Tracking",trigger:[{command:"writeHTML",arguments:[{html:"<!-- Facebook Pixel Code -->\n<script>\nvar t = _satellite.getVar(\"digitalData - Transaction - Cart Total\");\n!function(f,b,e,v,n,t,s)\n{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\nn.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\nt.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\ndocument,'script', 'https://connect.facebook.net/en_US/fbevents.js');\nfbq('init', '173481989821205'); // Insert your pixel ID here.\nfbq('track', 'PageView');\nfbq('track', 'Purchase', {value: t, currency: 'USD'});\n</script>\n<noscript>\n<img height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=173481989821205&ev=PageView&noscript=1\"/></noscript>\n<!-- End Facebook Pixel Code -->\n"}]}],scope:{URI:{include:["/order/thank-you"]}},event:"pagebottom"},{name:"Tracking - Chacka, Page View",trigger:[{command:"writeHTML",arguments:[{html:"<!-- Facebook Pixel Code -->\n<script>\n!function(f,b,e,v,n,t,s)\n{if(f.fbq)return;n=f.fbq=function(){n.callMethod?\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\nn.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\nt.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\ndocument,'script', 'https://connect.facebook.net/en_US/fbevents.js');\nfbq('init', '173481989821205'); // Insert your pixel ID here.\nfbq('track', 'PageView');\n</script>\n<noscript>\n<img height=\"1\" width=\"1\" src=\"https://www.facebook.com/tr?id=173481989821205&ev=PageView&noscript=1\"/></noscript>\n<!-- End Facebook Pixel Code -->\n"}]}],scope:{URI:{exclude:["/order/thank-you"]}},event:"pagebottom"},{name:"Tracking - Chartbeat Footer",trigger:[{command:"writeHTML",arguments:[{html:"<script type='text/javascript'>\n var _sf_async_config={};\n /** CONFIGURATION START **/\n _sf_async_config.uid = 50184;\n _sf_async_config.domain = 'hbr.org';\n _sf_async_config.playerdomain = 'hbr.org' ;\n _sf_async_config.useCanonical = true;\n _sf_async_config.noCookies = true;\n _sf_async_config.sections = 'Change this to your Section name'; //CHANGE THIS\n _sf_async_config.authors = 'Change this to your Author name'; //CHANGE THIS\n /** CONFIGURATION END **/\n (function(){\n function loadChartbeat() {\n window._sf_endpt=(new Date()).getTime();\n var e = document.createElement('script');\n e.setAttribute('language', 'javascript');\n e.setAttribute('type', 'text/javascript');\n e.setAttribute('src', '//static.chartbeat.com/js/chartbeat.js');\n document.body.appendChild(e);\n }\n var oldonload = window.onload;\n window.onload = (typeof window.onload != 'function') ?\n loadChartbeat : function() { oldonload(); loadChartbeat(); };\n })();\n</script>"}]}],event:"pagebottom"},{name:"Tracking - Chartbeat Header",trigger:[{command:"writeHTML",arguments:[{html:"<script type='text/javascript'>var _sf_startpt=(new Date()).getTime()</script>"}]}],event:"pagetop"},{name:"Tracking - RealDecoy, Hotjar",trigger:[{command:"writeHTML",arguments:[{html:"<!-- Hotjar Tracking Code for https://hbr.org/ -->\n<script>\n(function(h,o,t,j,a,r){\n h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n h._hjSettings={hjid:548757,hjsv:5};\n a=o.getElementsByTagName('head')[0];\n r=o.createElement('script');r.async=1;\n r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n a.appendChild(r);\n})(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');\n</script>"}]}],scope:{URI:{exclude:["/shopping-cart","/shipping-payment","/review-order","/order/thank-you/"]}},event:"pagebottom"},{name:"Tracking - The Trade Desk",trigger:[{command:"writeHTML",arguments:[{html:'<div id="ttdUniversalPixelTag725ec8c6b5b44bf1bbabdc65fba0a872" style="display:none">\n <script src="https://js.adsrvr.org/up_loader.1.1.0.js" type="text/javascript"></script>\n <script type="text/javascript">\n (function(global) {\n if (typeof TTDUniversalPixelApi === \'function\') {\n var universalPixelApi = new TTDUniversalPixelApi();\n universalPixelApi.init("a7s17mo", ["x64pkxj"],\n "https://insight.adsrvr.org/track/up",\n "ttdUniversalPixelTag725ec8c6b5b44bf1bbabdc65fba0a872");\n }\n })(this);\n </script>\n</div>\n'}]}],event:"pagebottom"},{name:"Tracking - Ve Interactive Ecommerce Tracker",trigger:[{command:"loadIframe",arguments:[{pages:[{src:"satellite-59568c6e64746d0b950053e5.html",data:[]}]}]}],scope:{URI:{include:["/order/thank-you"]}},event:"pagebottom"},{name:"Tracking - Ve Interactive Page Tracker",trigger:[{command:"loadIframe",arguments:[{pages:[{src:"satellite-59568b3f64746d0b920054dc.html",data:[]}]}]}],event:"pagebottom"},{name:"Twitter Campaign - Footer",trigger:[{command:"writeHTML",arguments:[{html:'<script src="//platform.twitter.com/oct.js" type="text/javascript"></script>\n<script type="text/javascript">twttr.conversion.trackPid(\'nuuc9\', { tw_sale_amount: 0, tw_order_quantity: 0 });</script>\n<noscript>\n<img height="1" width="1" style="display:none;" alt="" src="https://analytics.twitter.com/i/adsct?txn_id=nuuc9&p_id=Twitter&tw_sale_amount=0&tw_order_quantity=0" />\n<img height="1" width="1" style="display:none;" alt="" src="//t.co/i/adsct?txn_id=nuuc9&p_id=Twitter&tw_sale_amount=0&tw_order_quantity=0" />\n</noscript>\n'}]}],event:"pagebottom"},{name:"brightcove API",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-54ff59bc3533320016030200.js"}]}]}],scope:{URI:{include:["^/video/"]}},event:"domready"}],rules:[{name:" Articles - Interaction Bar - Share Item",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"share platform",eventLabel:"%shareType%",eventValue:null}]}],conditions:[function(e,t){var a=this.parentElement.parentElement.getElementsByClassName("flyout-share-title")[0].textContent,i=$("ul.flyout-share-chooser li.active")[0].getAttribute("data-share-network");return _satellite.setVar("l_articleTitle",a),_satellite.setVar("l_shareType",i),_satellite.notify("articleTitle :"+a,1),_satellite.notify("shareType :"+i,1),!0}],selector:'[js-target="share-post"], [data-js-target="share-post"]',eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Change Text Size",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Change Text Size",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Change Text Size",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Change Text Size",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event64"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:'[js-target="text-size"]',eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Comment Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Comment Initiation",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Comment Initiation",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Comment Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event62"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:".icon-lg.icon-comment-o",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Completed",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Read",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Completed",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar38:"%digitalData - Content - Article Topics%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Completed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event35","event36","event7"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:"section.authors.mvl,p.mb-large3",event:"inview",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article PDF Download",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article PDF Download",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article PDF Downloaded",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article PDF Download",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event66"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:'[js-target="pdf-download-link"], a.dcsReprint__link--download.hide-for-non-subscriber',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Post Comment",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Post Comment",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Post Comment",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Post Comment",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event63"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:'[js-target="comment-post"]',eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Printed",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Print Article",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Printed",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Printed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event65"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:'[js-target="print-article"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Read Full Text",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Read Full Text",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Read Full Text",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Read Full Text",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event61"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:".icon.icon-lg.icon-full-article",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Read Summary",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Read Summary",setVars:{eVar12:"%digitalData - Content - Main Author%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Read Summary",eVar25:"%digitalData - Content - Article Title%",eVar26:"%digitalData - Content - Article Publish Date%",eVar27:"%digitalData - Content - Article Type%",eVar28:"%digitalData - Content - Article Main Topic%",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Read Summary",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%", pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event60"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:".icon.icon-lg.icon-executive-summary",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Saved - Completion",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Saved",setVars:{eVar12:"%mainAuthor%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Save Completion",eVar25:"%Article Name%",eVar26:"%articlePublishDate%",eVar27:"%articleContentType%",eVar28:"%mainTopic%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Saved - Completion",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event11","event36","event7"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:'[js-target="save-submit"], [data-js-target="save-submit"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Saved - Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Saved Initiation",setVars:{eVar12:"%mainAuthor%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Save Initiation",eVar25:"%Article Name%",eVar26:"%articlePublishDate%",eVar27:"%articleType%",eVar28:"%mainTopic%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Saved - Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event34","event36","event6"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,a){var i=_satellite.getToolsByType("sc")[0].getS();i.clearVars();for(var n=this,r=n.parentNode;"STREAM-ITEM"!==r.tagName&&r!==t;)r=r.parentNode;var o=r===t?null:r;if(!o)return!1;var s=o.querySelector("h3")||o.querySelector("div div:nth-child(2) h4")||o.querySelector("h2")||null,l=s?s.textContent.trim():_satellite.getVar("articleName"),c=n.textContent.trim();null!==c.match(/buy copies/i)&&(c="buy copies"),_satellite.setVar("Action Type",c),_satellite.setVar("Article Name",l);var u="";return 0===t.location.pathname.indexOf("/visual-library")?u="visual library | ":0===t.location.pathname.indexOf("/video")&&(u="video | "),_satellite.setVar("articleLocation",u),!0}],selector:'[js-target="save-flyout"], [data-js-target="save-flyout"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Shared - Completion",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Shared",setVars:{eVar12:"%mainAuthor%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Share Completion",eVar25:"%Article Name%",eVar26:"%articlePublishDate%",eVar27:"%articleContentType%",eVar28:"%mainTopic%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Shared - Completion",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event33","event36","event7"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();a.clearVars();var i=this.parentElement.parentElement.getElementsByClassName("flyout-share-title")[0].textContent,n=$("ul.flyout-share-chooser li.active")[0].getAttribute("data-share-network");return _satellite.setVar("l_articleTitle",i),_satellite.setVar("l_shareType",n),_satellite.notify("articleTitle :"+i,1),_satellite.notify("shareType :"+n,1),!0}],selector:'[js-target="share-post"], [data-js-target="share-post"]',event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Shared - Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Article Shared Initiation",setVars:{eVar12:"%mainAuthor%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Share Initiation",eVar25:"%Article Name%",eVar26:"%articlePublishDate%",eVar27:"%articleType%",eVar28:"%mainTopic%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",eVar47:"%digitalData - Content - Primary Editor%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Shared - Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event32","event36","event6"]}]}],scope:{URI:{exclude:["/video/"]}},conditions:[function(e,a){var i=_satellite.getToolsByType("sc")[0].getS();i.clearVars();for(var n=this,r=n.parentNode;"STREAM-ITEM"!==r.tagName&&r!==t;)r=r.parentNode;var o=r===t?null:r;if(!o)return!1;var s=o.querySelector("h3")||o.querySelector("div div:nth-child(2) h4")||o.querySelector("h2")||null,l=s?s.textContent.trim():_satellite.getVar("articleName"),c=n.textContent.trim();null!==c.match(/buy copies/i)&&(c="buy copies"),_satellite.setVar("Action Type",c),_satellite.setVar("Article Name",l);var u="";return 0===t.location.pathname.indexOf("/visual-library")?u="visual library | ":0===t.location.pathname.indexOf("/video")&&(u="video | "),_satellite.setVar("articleLocation",u),!0}],selector:'[js-target="share-flyout"], [data-js-target="share-flyout"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Article Viewed - TOC Click",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"%Article Title%",setVars:{eVar12:"%Article Title%",eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Article Viewed",eVar31:"%digitalData - Profile - User State%",eVar47:"%digitalData - Content - Primary Editor%",prop1:"Article",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Article Viewed - TOC Click",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",prop29:"%digitalData - Content - Primary Editor%",prop6:"D=v22",prop7:"D=v23",prop9:"%Article Title%",pageName:"Article: %Article Title%",channel:"Article",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event10","event36","event6","event82"]}]}],scope:{URI:{include:["[0-9]{4}\\/[0-9]{2}"],exclude:["assessment"]}},conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();a.clearVars();var i=$(this).parent().attr("class"),n=$(this).parent().text(),r=n.trim();return _satellite.setVar("Article Title",r),"flex-item"==i?!0:!1}],selector:"a",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Assessment Taken",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Assessment Taken",addEvent:["event15"]}]}],selector:"#report",event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Authenticate Subscription Look Up",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Authenticate Subscription - Look Up",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Subscription Interaction",eVar23:"Subscription Look Up",eVar31:"%digitalData - Profile - User State%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Authenticate Subscription Look Up",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23"},addEvent:["event6","event67"]}]}],selector:'[js-target="lookup-subscriber"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Checkout Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Checkout Initiation",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Cart Interaction",eVar23:"Checkout Initiation",eVar31:"%digitalData - Profile - User State%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Checkout Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(t,a){a.eVar25="";for(var i="",n="",r=0;r<e.digitalData.cart.item.length;r++){var o=e.digitalData.cart.item[r],s=o.productInfo.productSKU,l=o.category.subCategory,c=o.productInfo.productSKU,u=o.productInfo.productName,d=u.replace(",",""),g=o.productInfo.productKind,p=o.productInfo.format,f=o.price.basePrice,m=o.productInfo.type,h=o.attributes.publicationDate,v=new Date(h),b=new Date,y=Math.round((b-v)/1e3/60/60/24);i=0==r?";"+s+";;;;eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m+"|eVar56="+y:",;"+s+";;;;eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m+"|eVar56="+y,n+=i}!function(){var t=[];for(r=0;r<e.digitalData.cart.item.length;r++){var i=e.digitalData.cart.item[r];if("Magazine Article"==i.productInfo.type)var n=i.productInfo.productName;else{if("Digital Article"!=i.productInfo.type)continue;var n=i.productInfo.productName}t.push(n)}var o=t.join("|");a.eVar25=o}(),a.products="",a.products=n},addEvent:["scCheckout"]}]}],selector:'[js-target="cart-submit-checkout"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - DCS - Email Sign Up",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"DCS - Email Sign Up",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"DCS Interaction",eVar23:"DCS Email Sign Up",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - DCS - Email Sign Up",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event51","event6","event7"]}]},{command:"delayActivateLink"}],selector:"body",eventHandlerOnElement:!0,event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:dcs_email_update_signup"},{name:"Analytics - DCS - Item Viewed",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"DCS - Article Read",setVars:{eVar22:"Content Interaction",eVar23:"Big Idea Item Viewed",eVar25:"%DCS Article Title%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - DCS - Article Viewed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",prop9:"%DCS Article Title%",pageName:"Article: %DCS Article Title%",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event10","event36","event52","event6","event7"]}]}],scope:{URI:{include:["/cover-story/"]}},conditions:[function(e,t){var a=$(this).parent().parent().parent().children("h3").text();_satellite.setVar("DCS Article Title",a);var i=_satellite.getToolsByType("sc")[0].getS();return i.clearVars(),!0}],selector:'[js-target="item-view"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:dcs_lineup_item_view"},{name:"Analytics - DCS - See The Full Lineup ",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"DC",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"DCS Interaction",eVar23:"DCS See the Full Lineup",eVar24:"%digitalData - Cookie - Subscriber%",eVar31:"%digitalData - Profile - User State%",eVar39:"Landing: DCS Full Lineup",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - DCS - See The Full Lineup",prop6:"D=v22",prop7:"D=v23",pageName:"Landing: DCS Full Lineup",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event54","event6","event7"]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:dcs_lineup_view"},{name:"Analytics - Dead Link Clicks",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Dead Link Click",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Dead Link Click",eVar31:"%digitalData - Profile - User State%",eVar45:"%digitalData - Pages - Page URL%",eVar46:"%Link Text%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Dead Link Clicks",prop24:"%digitalData - Cookie - Subscriber%",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event57"]}]}],conditions:[function(e,t){var a=$(this).text();return _satellite.setVar("Link Text",a),!_satellite.isLinked(this)},function(e,t){return null===this.innerHTML.match("href")?!0:!1}],selector:"h1,h2,h3,h4,h5",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - IDP - Engagements",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"IDP - Engagements",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"IDP Engagement",eVar23:"IDP - %Overlay Name%",eVar31:"%digitalData - Profile - User State%",eVar40:"%Overlay Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - IDP - Engagements",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event56"]}]}],scope:{URI:{include:["/product/"]}},conditions:[function(e,t){var a="IDP: "+$(this).text();return _satellite.setVar("Overlay Name",a),!0}],selector:".flyout-header",eventHandlerOnElement:!0,event:"inview",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,inviewDelay:500},{name:"Analytics - Link Tracking Parameters - Archive TOC - Browse Issues",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-5476129c3431370018130300.js"}]}]}],scope:{URI:{include:[/^\/archive-toc/i]}},selector:'div.component[data-params="document=toc-bottom-browse-all"] a[href^="/archive-toc/"]',eventHandlerOnElement:!0,event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Popular Topics - Links",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547646303431370015030500.js"}]}]}],selector:'div.component[data-params="document=popular-topics"] a[href^="/topic/"]',eventHandlerOnElement:!0,event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Related Product",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547ca8b93738610018660000.js"}]}]}],selector:'personalization-placement[data-placement-id="articles"] a[href^="http://recs.richrelevance.com"]',eventHandlerOnElement:!0,event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Store Links",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547d75dc6464300018e60200.js"}]}]}],selector:'div.component[data-params="document=looking-for"] .clearfix a[href^="/store"]',eventHandlerOnElement:!0,event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Store Carousel",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547d78253563360015b10000.js"}]}]}],selector:'div.component[data-params="document=store-carousel"] a[href^="http://recs.richrelevance.com"]',eventHandlerOnElement:!0,event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Store Special Offers",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547d7c3e6464300015900300.js"}]}]}],selector:'div.component[data-params="document=top-deals"] a[href^="http://recs.richrelevance.com/"]',event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Link Tracking Parameters - Top of Page Recirculation",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-547ca0586135620015f90000.js"}]}]}],selector:'aside.sidebar--circulator ul li a[href^="http://recs.richrelevance.com"]',event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - My Library - Gift Download",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"My Library - HBR Gift Download (Image or Download Link)",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"My Library Interaction",eVar23:"HBR Gift Download",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - My Library - HBR Gift Download",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(e,t){var a=_satellite.getVar("Product ID"),i=_satellite.getVar("Product SKU");t.products=";"+a+";;;;eVar5="+i},addEvent:["event55","event6","event7"]}]}],scope:{URI:{include:["/my-library/library"]}},conditions:[function(e,t){var a=$(this).parent().attr("href"),i=a.length,n=a.substring(i-14,i-8),r=a.substring(i-14,i);return _satellite.setVar("Product ID",r),_satellite.setVar("Product SKU",n),!0}],selector:".text-gray.font-size-small, .icon-PDF",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - My Library - Tab Change",trigger:[{engine:"sc",command:"trackPageView",arguments:[{setVars:{eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop1:"%digitalData - Pages - Page Type%",prop18:"Analytics - My Library - Tab Change",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",pageName:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"}}]}],scope:{URI:{include:["/my-library/"]}},conditions:[function(e,t){var a=$(this).text();_satellite.setVar("Tab Name",a);var i=_satellite.getToolsByType("sc")[0].getS();return i.clearVars(),!0}],event:"locationchange",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Newsletter Subscription",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Newsletter Subscription",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Newsletter Interaction",eVar23:"Newsletter Subscription",eVar28:"%Topic Name%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Newsletter Subscription",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event49"]}]}],scope:{URI:{include:[/\/email\-newsletters|^\/(\?.*|$)|\/registration\-complete|my\-library\/settings|my\-library\/preferences/i]}},conditions:[function(e,t){var a=$(this).parents("follow-subscribe").siblings("div").children("h3").text();return _satellite.setVar("Topic Name",a),!0}],selector:'a[data-method="subscribe"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Newsletter Unsubscription",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Newsletter Unsubscription",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Newsletter Interaction",eVar23:"Newsletter Unsubscription",eVar28:"%Topic Name%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Newsletter Unsubscription",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event50"]}]}],scope:{URI:{include:[/\/email\-newsletters|^\/(\?.*|$)|\/registration\-complete|my\-library\/settings|my\-library\/preferences/i]}},conditions:[function(e,t){var a=$(this).parents("follow-subscribe").siblings("div").children("h3").text();return _satellite.setVar("Topic Name",a),!0}],selector:'a[data-method="unsubscribe"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - On-Site Search Result Click (Spotlight)",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"On-Site Search Result Click",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar2:"%digitalData - Event - On-Site Search Term%",eVar22:"On-Site Action",eVar23:"On-Site Search Result Click",eVar3:"%digitalData - Event - On-Site Search Type%",eVar53:"%Result Title%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - On-Site Search Result Click (Spotlight)",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",prop5:"%digitalData - Event - On-Site Search Term%",prop6:"On-Site Action",prop7:"On-Site Search Result Click",channel:"Search",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event41","event87"]}]}],scope:{URI:{include:["/search"]}},conditions:[function(e,t){var a=$(this).text();_satellite.setVar("Result Title",a);var i=$(this).children().attr("id");return"ta-search-highlight"==i?!0:!1}],selector:".hed",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - On-Site Search Result Click (Standard)",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"On-Site Search Result Click",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar2:"%digitalData - Event - On-Site Search Term%",eVar22:"On-Site Action",eVar23:"On-Site Search Result Click",eVar3:"%digitalData - Event - On-Site Search Type%",eVar53:"%Result Title%",prop13:"%digitalData - Event - Time%",prop18:"Analytics - On-Site Search Result Click (Standard)",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",prop5:"%digitalData - Event - On-Site Search Term%",prop6:"D=v22",prop7:"D=v23",channel:"Search",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event41","event88"]}]}],scope:{URI:{include:["/search"]}},conditions:[function(e,t){var a=$(this).text();_satellite.setVar("Result Title",a);var i=$(this).children().attr("id");return"ta-search-highlight"==i?!1:!0}],selector:".hed",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Paywall Viewed",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"Paywall Viewed",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Paywall Viewed",eVar31:"%digitalData - Profile - User State%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Paywall Viewed",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",pageName:"Registration: Paywall",channel:"Paywall",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(e,t){var a=_satellite.getVar("digitalData - Profile - User State");"Guest"==a?t.pageName="Registration Paywall":t.pageName="Subscription Paywall"}}]},{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-57e9989664746d3cd4000aa1.js"}]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:".article-paywall",event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Product Added to Cart",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"Add to Cart New",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Product Interaction",eVar23:"Product Added to Cart",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Product Added to Cart",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",pageName:"Shopping Cart: Add to Cart Overlay",channel:"Shopping Cart",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(t,a){a.events="",a.eVar25="";for(var i=localStorage.getItem("cart"),n=JSON.parse(i),r=n.items,o="",s="",l=0;l<e.digitalData.cart.addItem.length;l++){var c=e.digitalData.cart.addItem[l],u=c.productInfo.productSKU,d=c.category.subCategory,g=c.productInfo.productId,p=c.productInfo.productName,f=p.replace(",",""),m=c.productInfo.productKind,h=c.productInfo.format,v=c.price.basePrice,b=c.productInfo.type,y=c.attributes.additionSource,D=c.quantity.productQuantity,S=v*D,D=c.quantity.productQuantity;o=0==l?";"+u+";;;event85="+S+"|event89="+D+";eVar4="+d+"|eVar5="+g+"|eVar6="+f+"|eVar7="+m+"|eVar8="+h+"|eVar10="+v+"|eVar34="+b+"|eVar54="+y:",;"+u+";;;event85="+S+"|event89="+D+";eVar4="+d+"|eVar5="+g+"|eVar6="+f+"|eVar7="+m+"|eVar8="+h+"|eVar10="+v+"|eVar34="+b+"|eVar54="+y,s+=o}"Magazine Article"==b?a.eVar25=f:"Digital Article"==b?a.eVar25=f:f=f,r.length<1?a.events="scAdd,scOpen,event85":a.events="scAdd,event85",a.products="",a.products=s}}]}],conditions:[function(e,t){var a=_satellite.getVar("digitalData - Event - Event Action");return"Add to Cart"==a?!0:!1}],event:"dataelementchange(digitalData - Event - Event Action)",bubbleFireIfParent:!1,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Product Removed from Cart",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Product Removed from Cart",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Product Interaction",eVar23:"Product Removed from Cart",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Remove from Cart",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(t,a){for(var i="",n="",r=0;r<e.digitalData.cart.removeItem.length;r++){var o=e.digitalData.cart.removeItem[r],s=o.productInfo.productSKU,l=o.category.subCategory,c=o.productInfo.productId,u=o.productInfo.productName,d=u.replace(",",""),g=o.productInfo.productKind,p=o.productInfo.format,f=o.price.basePrice,m=o.productInfo.type,h=o.quantity.productQuantity,v=f*h,h=o.quantity.productQuantity;i=0==r?";"+s+";;;event85=-"+v+"|event89="+h+";eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m:",;"+s+";;;event85="+v+"|event89="+h+";eVar4="+l+"|eVar5="+c+"|eVar6="+d+"|eVar7="+g+"|eVar8="+p+"|eVar10="+f+"|eVar34="+m,n+=i}a.products="",a.products=n,"Magazine Article"==m?a.eVar25=d:a.eVar25="";for(var r=0;r<e.digitalData.event.length;r++)e.digitalData.event[r].eventInfo.eventAction="",e.digitalData.event[r].eventInfo.eventName=""},addEvent:["event85","scRemove"]}]},{command:"delayActivateLink"}],conditions:[function(e,t){var a=_satellite.getVar("digitalData - Event - Event Action");return"Remove from Cart"==a?!0:!1}],event:"dataelementchange(digitalData - Event - Event Action)",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Registration - Inline Paywall Viewed",trigger:[{engine:"sc",command:"trackPageView",arguments:[{setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Inline paywall viewed",eVar31:"%digitalData - Profile - User State%",eVar39:"Registration: Inline Registration Paywall",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Registration - Inline Paywall Viewed",prop2:"%digitalData - Pages - Page URL%",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",pageName:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%", channel:"Paywall",pageURL:"%digitalData - Pages - Page URL%"},customSetup:function(e,t){var a=_satellite.getVar("digitalData - Profile - User State");"Guest"==a?t.pageName="Registration: Inline Registration Paywall":t.pageName="Subscription: Inline Subscription Paywall"},addEvent:["event18","event6"]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),localStorage.setItem("_analytics_Reg_Location","Registration: Inline Registration Paywall"),!0}],selector:".paywall-register",event:"inview",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Registration Failure - Modal",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Registration Failure",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Registration Interaction",eVar23:"Registration Failure",eVar31:"%digitalData - Profile - User State%",eVar39:"Registration: Modal",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Registration Failure - Modal",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event47"]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:registration_failure"},{name:"Analytics - Registration Start - Modal",trigger:[{engine:"sc",command:"trackPageView",arguments:[{type:"o",linkName:"Registration Start",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Registration Interaction",eVar23:"Registration Start",eVar31:"%digitalData - Profile - User State%",eVar39:"Registration: Modal",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Registration Start - Modal",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",pageName:"Registration - Registration Modal",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event18","event6"]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),localStorage.setItem("_analytics_Reg_Location","Registration: Modal"),!0}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:registration_start"},{name:"Analytics - Registration Success - Modal",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Registration Success",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Registration Interaction",eVar23:"Registration Success",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Cookie - Registration Location%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Registration Success - Modal",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event19","event7"]}]}],conditions:[function(e,t){var a=_satellite.getToolsByType("sc")[0].getS();return a.clearVars(),!0}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:registration_success"},{name:"Analytics - Sign-In - Full Page",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Sign-In - Full Page",setVars:{eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop24:"%digitalData - Cookie - Subscriber%",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event46"]}]}],scope:{URI:{include:["/sign-in"]}},selector:".button.expand",eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Sign-In - Modal",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Sign-In",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Sign-In Interaction",eVar23:"Sign-In Success",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Sign-In - Modal",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event46"]}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:signin_success"},{name:"Analytics - Topic Followed",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Follow Topic",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Topic Followed",eVar28:"%Topic Name%",eVar31:"%digitalData - Profile - User State%",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Topic Followed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event13","event6","event7"]}]}],conditions:[function(e,t){var a=this.parentNode.parentNode.getAttribute("data-name");return _satellite.setVar("Topic Name",a),!0}],selector:'a[data-method="follow"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Topic Unfollowed",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Topic Unfollowed",setVars:{eVar22:"Content Interaction",eVar23:"Topic Unfollowed",eVar28:"%Topic Name%",eVar31:"%digitalData - Profile - User State%",prop13:"%digitalData - Event - Time%",prop14:"D=v31",prop18:"Analytics - Topic Unfollowed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event58","event6","event7"]}]}],conditions:[function(e,t){var a=this.parentNode.parentNode.getAttribute("data-name");return _satellite.setVar("Topic Name",a),!0}],selector:'a[data-method="unfollow"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Complete",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Complete",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Complete",eVar29:"%event.detail.video.name%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop11:"%event.detail.video.name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Complete",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event27","event7","event73"]}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:video_complete"},{name:"Analytics - Video Embed",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Embed",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Embed",eVar29:"%Video Title%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%Video Title%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Embed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event6","event73","event76"]}]}],scope:{URI:{include:["/video/"]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");return _satellite.setVar("Video Title",o),!0}],selector:'[data-js-target="embed-flyout"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Play/Pause",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Play",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Play",eVar29:"%articleName%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%articleName%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Play",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event6","event7","event73","event79"]}]}],selector:"div",property:{className:/vjs\-play\-control/i},event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Replay",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Replay",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Replay",eVar29:"%articleName%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%articleName%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Replay",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event6","event7","event73","event80"]}]}],selector:"#the-video .text-center>a.is-block.link--white",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Save Completion",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Save Completion",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Save Completion",eVar29:"%Video Title%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%Video Title%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Save Completion",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event7","event73","event78"]}]}],scope:{URI:{include:["/video/"]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");return _satellite.setVar("Video Title",o),!0}],selector:'[js-target="save-submit"], [data-js-target="save-submit"]',eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Save Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Save Initiation",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Save",eVar29:"%Video Title%",eVar36:"Video",prop11:"%Video Title%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Save Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event6","event73","event75"]}]}],scope:{URI:{include:["/video/"]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");return _satellite.setVar("Video Title",o),!0}],selector:'[data-js-target="save-flyout"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Share Completion",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Share Completion",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Share Completion",eVar29:"%Video Title%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%Video Title%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Share Completion",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event7","event73","event77"]}]}],scope:{URI:{include:["/video/"]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");return _satellite.setVar("Video Title",o),!0}],selector:'[js-target="share-post"], [data-js-target="share-post"]',eventHandlerOnElement:!0,event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Share Initiation",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Share Initiation",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Share",eVar29:"%Video Title%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",prop11:"%Video Title%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Share Initiation",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"Video",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event6","event73","event74"]}]}],scope:{URI:{include:["/video/"]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");return _satellite.setVar("Video Title",o),!0}],selector:'[data-js-target="share-flyout"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Analytics - Video Start",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"o",linkName:"Video Start",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Video Interaction",eVar23:"Video Started",eVar29:"%event.detail.video.name%",eVar31:"%digitalData - Profile - User State%",eVar36:"Video",eVar39:"%digitalData - Pages - Page Type%: %digitalData - Pages - Page Name%",prop11:"%event.detail.video.name%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Video Viewed",prop24:"%digitalData - Cookie - Subscriber%",prop6:"D=v22",prop7:"D=v23",channel:"%digitalData - Pages - Page Type%",pageURL:"%digitalData - Pages - Page URL%"},addEvent:["event26","event6","event73"]}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:video_start"},{name:"Analytics - Visual Library Downloads",trigger:[{engine:"sc",command:"trackLink",arguments:[{type:"d",linkName:"%Download Title%",setVars:{eVar13:"%digitalData - Profile - Session ID%",eVar14:"%digitalData - Profile - Visitor ID%",eVar15:"%digitalData - Profile - Registration ID%",eVar16:"%digitalData - Profile - Account ID%",eVar22:"Content Interaction",eVar23:"Visual Library Download",eVar31:"%digitalData - Profile - User State%",prop13:"%digitalData - Event - Time%",prop14:"%digitalData - Profile - User State%",prop18:"Analytics - Visual Library Downloads",prop24:"%digitalData - Cookie - Subscriber%",prop31:"%Download Title%",prop6:"D=v22",prop7:"D=v23"},addEvent:["event84"]}]}],scope:{URI:{include:["/visual-library"]}},conditions:[function(e,t){var a=$(this).children().attr("href"),i=$(this).parent().parent().prev().text();return _satellite.setVar("Link URL",a),_satellite.setVar("Download Title",i),!0}],selector:"li.utility.text-center",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Articles - Comments - Post Comment",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"post comment",eventLabel:"%articleName%",eventValue:null}]}],selector:'[js-target="comment-post"]',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Checkout - Errors",conditions:[function(e,i){var n=_satellite.getVar("templateType"),r=_satellite.getVar("pageID"),o=t.querySelectorAll('.error[aria-required="true"]');if(o.length>0)for(var s=(_satellite.getVar("cmElementString"),0);s<o.length;s++){var l=o[s],c=l.getAttribute("id")==a?l.getAttribute("name"):l.getAttribute("id");cmCreateElementTag("ERROR:"+c,"CHECKOUT:SHIPPING/PAYMENT",n+"-_-"+r)}return!0}],selector:'[js-target="cart-submit-shipping-payment"]',eventHandlerOnElement:!0,event:"blur",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Checkout - Speed Pay Cart",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-5501e64b3361390016a80000.js"}]}]}],scope:{URI:{include:["/shopping-cart"]}},selector:'[js-target="cart-submit-speedpay"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Checkout - Speed Pay Product",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-546b598536346600153a0100.js"}]}]}],selector:'[js-target="speed-pay"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Content Interactions - Article Read",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"article read",eventLabel:"%articleName%",eventValue:null,nonInteraction:!0}]}],selector:"section.authors.mvl",event:"inview",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Cross-Domain Clicks",trigger:[{command:"delayActivateLink"}],conditions:[function(e,t){var a=ga.getAll()[0].get("linkerParam").replace("=","%3D"),i=$(this);return i.attr("href",i.attr("href")+"%26"+a),!0}],selector:'a[href*="rrserver"][href*="buysub"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Customer Service FAQ: Yes",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"FAQ-YES",eventAction:"click",eventLabel:"Customer Service FAQ Page",eventValue:null}]}],selector:"#faq-yes-no > p:nth-child(2) > a > b",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Dead Header Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"dead content",eventAction:"dead header click: %this.innerHTML%",eventLabel:"from: %URI%",eventValue:null}]}],conditions:[function(e,t){return!_satellite.isLinked(this)},function(e,t){return null===this.innerHTML.match("href")?!0:!1}],selector:"h1,h2,h3,h4,h5",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Dead Image Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"dead content",eventAction:"dead image click: %this.src%",eventLabel:"from: %URI%",eventValue:null}]}],conditions:[function(e,t){return!_satellite.isLinked(this)}],selector:"img",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Download Link Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"file download",eventAction:"%this.href%",eventLabel:"",eventValue:null}]}],selector:"a",property:{href:/\.(?:doc|docx|png|eps|xls|ppt|pptx|pdf|xlsx|tab|csv|zip|txt|vsd|vxd|xml|js|css|rar|exe|wma|mov|avi|wmv|mp3|wav|m4v)($|\&|\?)/i},event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Download/Save/Share Clicks",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"%Action Type%",eventLabel:"%articleLocation%%Article Name%",eventValue:null}]}],conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.querySelector("h3")||r.querySelector("div div:nth-child(2) h4")||r.querySelector("h2")||null,s=o?o.textContent.trim():_satellite.getVar("articleName"),l=i.textContent.trim();null!==l.match(/buy copies/i)&&(l="buy copies"),_satellite.setVar("Action Type",l),_satellite.setVar("Article Name",s);var c="";return 0===t.location.pathname.indexOf("/visual-library")?c="visual library | ":0===t.location.pathname.indexOf("/video")&&(c="video | "),_satellite.setVar("articleLocation",c),!0}],selector:"ul.stream-utility li a, ul.stream-utility.plain-inline-list li a, div.article-tools.mbm.has-no-border ul li a, div.article-tools ul li a",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Email Link Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"communication",eventAction:"email",eventLabel:"%this.href%",eventValue:null}]}],selector:"a",property:{href:/^mailto/i},event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Experiment: Update Account clickthrough",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"Account",eventAction:"Click",eventLabel:"Update My Account",eventValue:null}]}],scope:{URI:{include:[/\/update-account*/i]}},selector:'[js-target="update-account"] ',event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Global Nav - Footer Link Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"global nav",eventAction:"%Menu Text%",eventLabel:"footer",eventValue:null}]}],conditions:[function(e,t){var a=this.textContent;return""===a?_satellite.setVar("Menu Text","logo"):_satellite.setVar("Menu Text",a.trim()),!0}],selector:"footer a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Global Nav - Header Links",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"global nav",eventAction:"%navName%",eventLabel:"header",eventValue:null}]}],conditions:[function(e,t){var a=this;return"/shopping-cart"===a.getAttribute("href")?_satellite.setVar("navName","cart"):"/sign-in"===a.getAttribute("href")?_satellite.setVar("navName","sign in/register"):_satellite.setVar("navName",a.textContent),!0}],selector:"header a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Global Nav - Left Nav Clicks",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"global nav",eventAction:"%Menu Text%",eventLabel:"left nav",eventValue:null}]}],conditions:[function(e,t){return""===jQuery(this).text()?_satellite.setVar("Menu Text","logo"):_satellite.setVar("Menu Text",jQuery(this).text().trim()),!0}],selector:".global-nav.is-contained.hide-for-print a, .global-nav.is-contained.hide-for-print button",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Global Nav - Panel Ad - Subscribe",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"global nav",eventAction:"subscribe",eventLabel:"panel ad",eventValue:null}]}],selector:"personalization-placement[data-placement-id='get_more'] a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Global Nav - Red Strip - Subscribe & Save",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"global nav",eventAction:"subscribe",eventLabel:"red strip",eventValue:null}]}],selector:"personalization-placement[data-placement-id='red_strip'] a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Help Box Close",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"help box close",eventLabel:"%event.detail.helpbox%",eventValue:null,nonInteraction:!0}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:helpbox_closed"},{name:"Help Box Shown",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"help box shown",eventLabel:"%event.detail.helpbox%",eventValue:null,nonInteraction:!0}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:helpbox_shown"},{name:"Home Page - Tab Clicks",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"home page",eventLabel:"%this.@cleanText%",eventValue:null}]}],scope:{URI:{include:[/^\/(\?.*|$)/i]}},selector:"#home tab-bar a",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Login Success (Modal)",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"sign in",eventLabel:"modal",eventValue:null}]},{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-56eade4564746d05500055a0.js"}]}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:signin_success"},{name:"My Library - Tab Change",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"pageview",page:"%URI%"}]}],scope:{URI:{include:[/\/my\-library\//i]}},event:"locationchange",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Newsletters - Subscribe",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"newsletter: %Subscribe%",eventLabel:"%Topic Name%",eventValue:null}]}],scope:{URI:{include:[/\/email\-newsletters|^\/(\?.*|$)|\/registration\-complete|my\-library\/settings/i]}},conditions:[function(e,t){var a=$(this).parents("follow-subscribe").siblings("div").children("h3").text(),i=$(this).attr("data-method");return _satellite.setVar("Topic Name",a),_satellite.setVar("Subscribe",i),!0}],selector:'a[data-method="subscribe"], a[data-method="unsubscribe"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Outbound Link Clicks",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"outbound links",eventAction:"%this.href%",eventLabel:"",eventValue:null}]}],conditions:[function(e,t){return _satellite.isOutboundLink(this)}],selector:"a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Product - Add to Cart",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"checkout",eventAction:"add to cart",eventLabel:"%cart type%",eventValue:null}]}],conditions:[function(e,t){return _satellite.setVar("cart type",$(this).attr("js-target")),!0}],selector:'[js-target="speed-pay"],[js-target="add"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Question of The Week - Download PDF",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"Question of the Week",eventAction:"PDF Download",eventLabel:"",eventValue:null}]}],scope:{URI:{include:[/\/question-of-the-week*/i]}},selector:"a",property:{href:/\/resources\/pdfs\/question-of-the-week\/*/i},event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Registration Form - Errors",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"forms",eventAction:"registration",eventLabel:"errors: %error message%",eventValue:null}]}],conditions:[function(e,a){for(var i=t.querySelectorAll('.error[aria-required="true"]'),n=new Array,r=0;r<i.length;r++)n.push(i[r].getAttribute("id"));return _satellite.setVar("error message",n.join("|")),!0}],selector:"#main > div:nth-child(4) > section > div > div > register > form > div:nth-child(6) > div > div > div.small-12.medium-6.medium-text-right.columns > button",event:"focus",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Registration Form - Form Field Change",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"forms",eventAction:"registration",eventLabel:"field: %this.id%",eventValue:null}]}],selector:"[data-metric-tag='registration-form'] input",event:"change",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Registration Form - Registration Type",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"forms",eventAction:"registration",eventLabel:"register click: %register type%",eventValue:null}]}],conditions:[function(e,t){var i,n=this;return i=n.getAttirbute("js-target")===a?"subscribe":"social-login"===n.getAttribute("js-target")?n.textContent.trim():"register",_satellite.setVar("register type",i),!0}],selector:"a[js-target='social-login'],a[href='/subscriber-registration'],button[js-target='register-user']",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Registration Start",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"pageview",page:"/register-popup"}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:registration_start"},{name:"Registration Success",trigger:[{engine:"ga_universal",command:"set",arguments:[{dimension1:"registered"}]},{engine:"ga_universal",command:"send",arguments:[{hitType:"pageview",page:"/registration-popup-complete"}]},{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-56e6caa064746d0534003a28.js"}]}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:registration_success"},{name:"Save Item Flyout",conditions:[function(e,t){var a=this.parentNode.parentNode.parentNode.getAttribute("data-title");return _satellite.setVar("saveItemTitle",a),_satellite.notify("saveItemTitle "+a,1),!0}],selector:'[js-target="save-flyout"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Search Form Input Blur",selector:'form[js-target="search-form"] input[type="search"]',eventHandlerOnElement:!0,event:"blur",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Search Popular Suggestions",conditions:[function(e,t){return this.href+="&ps=1",!0}],selector:"div.suggestions-popular ul li a",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0, bubbleStop:!1},{name:"Site Manipulation: Big Idea, Hide signup",trigger:[{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-59ca7ce864746d520501084a.js"}]}]}],scope:{URI:{include:["/2017/09/work-and-the-loneliness-epidemic"]}},selector:"button",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Stream Choice Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"Tab Choice",eventAction:"click",eventLabel:"",eventValue:null}]}],selector:"a.stream-chooser-button, a.stream-chooser--button",eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Create New Folder",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"content",eventLabel:"create folder",eventValue:null}]},{command:"delayActivateLink"}],selector:'button[js-target="create-new-list"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Follow",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"follow",eventLabel:"%l_articleTopicName%",eventValue:null}]}],conditions:[function(e,t){var a=this.parentNode.parentNode.getAttribute("data-name");return _satellite.setVar("l_articleTopicName",a),!0}],selector:'a[data-method="follow"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Interstitial - Buy/Subscribe",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"interstitial",eventLabel:"%this.innerHTML% click",eventValue:null}]}],selector:"div[js-target='subscriber-only-message'] .small-12.medium-6.columns a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Interstitial Viewed",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"interstitial",eventLabel:"%userState%",eventValue:null,nonInteraction:!0}]}],selector:'div[js-target="subscriber-only-message"]',event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Name Folder",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"name folder",eventLabel:"%this.value%",eventValue:null}]}],scope:{URI:{include:[/my\-library/i]}},selector:'input[placeholder="Folder Title"]',event:"change",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions - Paywall Viewed",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"paywall",eventLabel:"%userState%",eventValue:null,nonInteraction:!0}]},{command:"loadScript",arguments:[{sequential:!1,scripts:[{src:"satellite-55d569b7656661001400006b.js"}]}]}],selector:".article-paywall",event:"elementexists",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"User Actions: Unfollow",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"user actions",eventAction:"unfollow",eventLabel:"%l_articleTopicName%",eventValue:null}]}],conditions:[function(e,t){var a=this.parentNode.parentNode.getAttribute("data-name");return _satellite.setVar("l_articleTopicName",a),!0}],selector:'a[data-method="unfollow"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Video - In-Video Share",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"share",eventLabel:"video | %videoName%",eventValue:null}]}],selector:"div.vjs-share-control.vjs-control",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Video - Play/Pause",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"play/pause video",eventLabel:"video | %articleName%",eventValue:null}]}],selector:"div",property:{className:/vjs\-play\-control/i},event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Video - Replay",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"replay video",eventLabel:"video | %articleName%",eventValue:null}]}],selector:"#the-video .text-center>a.is-block.link--white",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Video - Save/Share/Embed",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"%Interaction Type%",eventLabel:"video | %Video Title%",eventValue:null}]}],scope:{URI:{include:[/^\/video/i]}},conditions:[function(e,a){for(var i=this,n=i.parentNode;"STREAM-ITEM"!==n.tagName&&n!==t;)n=n.parentNode;var r=n===t?null:n;if(!r)return!1;var o=r.getAttribute("data-title");_satellite.setVar("Video Title",o);var s=i.getAttribute("data-js-target").match(/save|share|embed/);return _satellite.setVar("Interaction Type",s),""===s?!1:!0}],selector:'[data-js-target="save-flyout"], [data-js-target="share-flyout"], [data-js-target="embed-flyout"]',eventHandlerOnElement:!0,event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Video - Video Completed",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"video complete",eventLabel:"video | %event.detail.video.name%",eventValue:null,nonInteraction:!0}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:video_complete"},{name:"Video - Video Started",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"video start",eventLabel:"video | %event.detail.video.name%",eventValue:null,nonInteraction:!0,metric2:"1"}]}],selector:"body",event:"custom",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1,customEvent:"metrics:video_start"},{name:"Video - Watch Next",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"content interactions",eventAction:"watch next",eventLabel:"%videoWatchNext%",eventValue:null}]}],selector:'select[data-track-target="video-playlist-selector"]',event:"change",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"Visual Library - Article Info Section Click",trigger:[{engine:"ga_universal",command:"send",arguments:[{hitType:"event",eventCategory:"articles",eventAction:"visual library",eventLabel:"from: %this.href%",eventValue:null}]}],scope:{URI:{include:["/visual-library"]}},selector:".column.medium-6 a",event:"click",bubbleFireIfParent:!0,bubbleFireIfChildFired:!0,bubbleStop:!1},{name:"facebook like",event:"facebook.like",trigger:[{command:"send",arguments:[{hitType:"social",socialNetwork:"facebook",socialAction:"like",socialTarget:t.location.href}],tool:["2627ed8a59a02e1d9cd65652cb633058"]}]},{name:"facebook unlike",event:"facebook.unlike",trigger:[{command:"send",arguments:[{hitType:"social",socialNetwork:"facebook",socialAction:"unlike",socialTarget:t.location.href}],tool:["2627ed8a59a02e1d9cd65652cb633058"]}]},{name:"facebook send",event:"facebook.send",trigger:[{command:"send",arguments:[{hitType:"social",socialNetwork:"facebook",socialAction:"send",socialTarget:t.location.href}],tool:["2627ed8a59a02e1d9cd65652cb633058"]}]},{name:"twitter tweet",event:"twitter.tweet",trigger:[{command:"send",arguments:[{hitType:"social",socialNetwork:"twitter",socialAction:"tweet",socialTarget:t.location.href}],tool:["2627ed8a59a02e1d9cd65652cb633058"]}]}],directCallRules:[{name:"_order_confirmation",trigger:[{command:"loadScript",arguments:[{sequential:!0,scripts:[{src:"satellite-5466a1c462326500188a0600.js"}]}]}]}],settings:{trackInternalLinks:!0,libraryName:"satelliteLib-71f6756d9ddcfd5530c44d483635a8363cb244a3",isStaging:!1,allowGATTcalls:!1,downloadExtensions:/\.(?:doc|docx|eps|jpg|png|svg|xls|ppt|pptx|pdf|xlsx|tab|csv|zip|txt|vsd|vxd|xml|js|css|rar|exe|wma|mov|avi|wmv|mp3|wav|m4v)($|\&|\?)/i,notifications:!1,utilVisible:!1,domainList:["buysub.com","hbr.org","hbrsubscribe.org","subscription.co.uk"],scriptDir:"9146204dcdccfe9dc3405fbec7e2354ec4405ec3/scripts/",tagTimeout:3e3},data:{URI:t.location.pathname+t.location.search,browser:{},cartItems:[],revenue:"",host:{http:"assets.adobedtm.com",https:"assets.adobedtm.com"}},dataElements:{allAuthors:{customJS:function(){var e=[];return $("meta[property='article:author']").each(function(){e.push($(this).attr("content"))}),e.join("|")},"default":"Unidentified",storeLength:"pageview"},allTopics:{customJS:function(){var e=$("meta[property='article:tag']").map(function(){return $(this).attr("content")}).get().join("|");return e},"default":'""',storeLength:"pageview"},articleComments:{selector:".icon icon-lg icon-comment-o",property:"data-comment-badge","default":'""',storeLength:"pageview"},articleContentType:{selector:'meta[name="article-content-type"]',property:"content","default":"n/a",storeLength:"pageview",forceLowerCase:!0},articleName:{selector:'meta[property="og:title"]',property:"content",storeLength:"pageview"},articlePiece:{"default":"Article",storeLength:"pageview"},articlePublishDate:{selector:'meta[property="article:published_time"]',property:"content",storeLength:"pageview"},articleSource:{selector:'meta[name="article-type"]',property:"content","default":'""',storeLength:"pageview"},articlesRemaining:{selector:"span.quota-remaining",property:"text","default":"unavailable",storeLength:"pageview",cleanText:!0},articleTaxonomy:{customJS:function(){var e=[],a=t.querySelectorAll('[property="article:tag"]');Array.prototype.map.call(a,function(){e.push(this.content)});var i=e.join("|");return i},storeLength:"pageview"},articleType:{selector:'meta[property="og:type"]',property:"content","default":'""',storeLength:"pageview"},"attributeString-cmPageView":{customJS:function(){var e=[];e[0]="",e[1]=_satellite.getVar("templateType"),e[2]=_satellite.getVar("tabName"),e[3]="",e[4]="",e[5]="",e[6]="",e[7]="",e[8]="",e[9]="",e[10]="",e[11]="",e[12]=_satellite.getVar("articleContentType"),e[13]="",e[14]=_satellite.getVar("postID"),e[15]=_satellite.getVar("mainAuthor"),e[16]=_satellite.getVar("allAuthors"),e[17]=_satellite.getVar("mainTopic"),e[18]=_satellite.getVar("articleTaxonomy"),e[19]=_satellite.getVar("publicationDate"),e[20]=_satellite.getVar("comments"),e[21]="",e[22]=_satellite.getVar("userState"),e.shift();var t=e.join("-_-").replace(/\"/g,"");return t},storeLength:"pageview"},"attributeString-registration":{customJS:function(){return function(){var e;try{var a,i,n,r="-_-",o=JSON.parse(localStorage.user),s=o.emailAddress,l=t.querySelector("head meta[name=shopper-attributes]").getAttribute("content"),c=l.replace(/,/g,'","');c=c.replace(/-/g,"_"),c='["'+c+'"]',i=JSON.parse(c).reduce(function(e,t){return e[t.split(":")[0]]=t.split(":")[1],e},{}),/.+@.+/.test(s)&&(a=[o.firstName,o.lastName,_satellite.getVar("regStatus")].join(r),""!==l&&(n=["","","",i.job_title,i.company_size,i.industry].join(r),a=a+r+n),e=a)}catch(u){_satellite.notify("ISSUE with cmAttributeString: "+u)}return e}()},storeLength:"pageview"},"attributeString-regPersonalization":{customJS:function(){var e=[];e[0]="",e[1]=_satellite.getVar("registrantFirstName"),e[2]=_satellite.getVar("registrantLastName"),e[3]=_satellite.getVar("regStatus"),e[4]="",e[5]="",e[6]="",e[7]=_satellite.getVar("regTitle"),e[8]=_satellite.getVar("regCompanySize"),e[9]=_satellite.getVar("regIndustry"),e.shift();var t=e.join("-_-").replace(/\"/g,"");return t},storeLength:"pageview"},"attributeString-search":{customJS:function(){var e=[];e[0]="",e[1]=_satellite.getVar("templateType"),e[2]=_satellite.getVar("tabName"),e[3]=_satellite.getVar("searchFacetCount"),e[4]=_satellite.getVar("searchFormatType"),e[5]=_satellite.getVar("searchFormatTypeSeq"),e[6]=_satellite.getVar("searchIndustryType"),e[7]=_satellite.getVar("searchIndustryTypeSeq"),e[8]=_satellite.getVar("searchPublicationDate"),e[9]=_satellite.getVar("searchPublicationDateSeq"),e[10]=_satellite.getVar("searchSubjectType"),e[11]=_satellite.getVar("searchSubjectTypeSeq"),e[12]=_satellite.getVar("searchGeoType"),e[13]=_satellite.getVar("searchGeoTypeSeq"),e[14]="",e[15]="",e[16]="",e[17]="",e[18]="",e[19]="",e[20]="",e[21]="",e[22]=_satellite.getVar("userState"),e.shift();var t=e.join("-_-").replace(/\"/g,"");return t},storeLength:"pageview"},author:{selector:'meta[property="article:author"]',property:"content","default":'""',storeLength:"pageview"},authorSeq:{"default":'""',storeLength:"pageview"},cartItems:{customJS:function(){if(t.querySelectorAll('meta[name="cart-items"]')[0]!=a)for(var e=new Array,i=t.querySelectorAll('meta[name="cart-items"]')[0].getAttribute("content"),n=i.split(","),r=0;r<n.length;r++)cartItem=new Object,cartItemArray=n[r].split("|"),cartItem.productID=cartItemArray[0],cartItem.producePrice=cartItemArray[1],cartItem.productQuantity=cartItemArray[2],e.push(cartItem);return e},"default":'""',storeLength:"session"},cartItemVolume:{customJS:function(){return _satellite.getVar("cartLS").items!=a?_satellite.getVar("cartLS").items.length:void 0},storeLength:"pageview"},cartLS:{customJS:function(){var e=localStorage.getItem("cart"),t=JSON.parse(e);return t},storeLength:"pageview"},cartReview:{customJS:function(){var e=sessionStorage.getItem("cartString")||"{}",t=JSON.parse(e);return t},storeLength:"pageview"},cartTotal:{selector:'meta[name="cart-total"]',property:"content","default":"0.00",storeLength:"session"},categoryID:{selector:'meta[name="page-type"]',property:"content","default":'""',storeLength:"pageview"},chartBeatDomain:{customJS:function(){var e="hbr.org";return _satellite.settings.isStaging&&(e="dev.hbr.org"),e},storeLength:"pageview"},cmCategoryID:{customJS:function(){function e(e,t){for(j=0;j<t.length;j++){var a=t[j],i=a.regex.test(e);if(i)return"archive-toc"===a.cdfValue&&(a.cdfValue=e.match(/BR[0-9]{4}/)),a.cdfValue}return"0-0-0-0-0"}var a=[{regex:/^\/about-hbr/,cdfValue:"1-0-0-0-0"},{regex:/^\/accesscode-registration$/,cdfValue:"1-6-0-0-0"},{regex:/^\/advisory-council/,cdfValue:"1-0-0-0-0"},{regex:/^\/archive-toc\//,cdfValue:"archive-toc"},{regex:/^\/big-ideas$/,cdfValue:"1-0-0-0-0"},{regex:/^\/booksellers-retailers/,cdfValue:"1-0-0-0-0"},{regex:/^\/$/,cdfValue:"1-5-0-0-0"},{regex:/^\/chapters/,cdfValue:"6-1-3-1-0"},{regex:/^\/contact-us/,cdfValue:"1-0-0-0-0"},{regex:/^\/corporate/,cdfValue:"1-0-0-0-0"},{regex:/^\/ebooks/,cdfValue:"1-0-0-0-0"},{regex:/^\/email-newsletters/,cdfValue:"1-0-0-0-0"},{regex:/^\/error/,cdfValue:"1-0-0-0-0"},{regex:/^\/global-editions/,cdfValue:"1-0-0-0-0"},{regex:/^\/guidelines-for-authors/,cdfValue:"1-0-0-0-0"},{regex:/^\/harvardmanagementor/,cdfValue:"6-1-4-0-0"},{regex:/^\/hbr-advertising-sales/,cdfValue:"1-0-0-0-0"},{regex:/^\/hbr-analytic-services/,cdfValue:"1-0-0-0-0"},{regex:/^\/help-customer-service-home/,cdfValue:"1-0-0-0-0"},{regex:/^\/insight-center\//,cdfValue:"1-2-0-0-0"},{regex:/^\/leadership$/,cdfValue:"1-0-0-0-0"},{regex:/^\/magazine/,cdfValue:"1-7-0-0-0"},{regex:/^\/media-inquiries$/,cdfValue:"1-0-0-0-0"},{regex:/^\/multimedia\/webinars/,cdfValue:"2-6-0-0-0"},{regex:/^\/my-hbr$/,cdfValue:"1-8-0-0-0"},{regex:/^\/my-library/,cdfValue:"1-8-0-0-0"},{regex:/^\/visual-library/,cdfValue:"2-7-0-0-0"},{regex:/^\/order/,cdfValue:"6-3-0-0-0"},{regex:/^\/permissions/,cdfValue:"1-0-0-0-0"},{regex:/^\/product\//,cdfValue:"6-1-0-0-0"},{regex:/^\/reading-list/,cdfValue:"1-6-0-0-0"},{regex:/^\/register/,cdfValue:"1-6-0-0-0"},{regex:/^\/registration-complete/,cdfValue:"1-6-0-0-0"},{regex:/^\/registration-details/,cdfValue:"1-6-0-0-0"},{regex:/^\/reset-password/,cdfValue:"1-6-0-0-0"},{regex:/^\/review-order/,cdfValue:"6-3-0-0-0"},{regex:/^\/search/,cdfValue:"1-9-0-0-0"},{regex:/^\/shipping-payment/,cdfValue:"6-3-0-0-0"},{regex:/^\/shopping-cart/,cdfValue:"6-2-0-0-0"},{regex:/^\/sign-in$/,cdfValue:"1-6-0-0-0"},{regex:/^\/store$/,cdfValue:"6-0-0-0-0"},{regex:/^\/store\/articles/,cdfValue:"6-1-1-1-0"},{regex:/^\/store\/books/,cdfValue:"6-1-3-0-0"},{regex:/^\/store\/case-studies/,cdfValue:"6-1-2-0-0"},{regex:/^\/store\/collections/,cdfValue:"6-1-6-6-0"},{regex:/^\/store\/landing\/guides/,cdfValue:"6-1-3-0-0"},{regex:/^\/store\/landing\/mustreads/,cdfValue:"6-1-3-0-0"},{regex:/^\/store\/magazine-issues/,cdfValue:"6-1-1-2-0"},{regex:/^\/store\/tools/,cdfValue:"6-1-3-4-0"},{regex:/^\/strategy-innovation$/,cdfValue:"1-0-0-0-0"},{regex:/^\/subscriber-registration$/,cdfValue:"1-6-0-0-0"},{regex:/^\/topic/,cdfValue:"1-1-0-0-0"},{regex:/^\/topics/,cdfValue:"1-0-0-0-0"},{regex:/^\/update-account/,cdfValue:"1-6-0-0-0"},{regex:/^\/video/,cdfValue:"2-1-0-0-0"},{regex:/^\/web\/assessment\//,cdfValue:"2-5-0-0-0"},{regex:/^\/[0-9]{4}\/[0-9]{2}\/(survey|assessment|quiz)-/,cdfValue:"2-5-0-0-0"},{regex:/^\/sponsor/,cdfValue:"2-7-0-0-0"},{regex:/^\/web\/comm\//,cdfValue:"1-0-0-0-0"},{regex:/^\/web\/infographic\//,cdfValue:"2-0-0-0-0"},{regex:/^\/sponsored\/[0-9]{4}\/[0-9]{2}\//,cdfValue:"2-7-0-0-0"},{regex:/^\/[0-9]{4}\/[0-9]{2}\//,cdfValue:"2-3-0-0-0"}],i=e(t.location.pathname,a);return i},"default":'"0-0-0-0-0"',storeLength:"pageview"},cmElementString:{customJS:function(){var e=_satellite.getVar("templateType"),t=_satellite.getVar("pageID"),a=_satellite.getVar("articleTopicName"),i=new Array(6);i[1]=e,i[2]="",i[3]=t,i[4]="",i[5]=a,i.shift();var n=i.join("-_-").replace(/\"/g,"");return n},storeLength:"pageview"},comments:{customJS:function(){var e;return _satellite.cssQuery('span[js-target="comment-count"]',function(t){t.length>0&&(e=t[0].textContent.replace(/^\s+|\s+$/gm,""))}),e},"default":'""',storeLength:"pageview"},"digitalData - Archive - Date":{selector:"h1.font-heavy.mt-large3",property:"text",storeLength:"pageview"},"digitalData - Content - Article Finding Method":{customJS:function(){var t=e.digitalData.page.attributes,i="";if(t!=a)var i=e.digitalData.page.attributes.articleFindingMethod;else var i="";return i},storeLength:"pageview"},"digitalData - Content - Article Main Topic":{jsVariable:"digitalData.page.attributes.articlePrimaryTopic",storeLength:"pageview"},"digitalData - Content - Article Publish Date":{jsVariable:"digitalData.page.attributes.articlePublishDate",storeLength:"pageview"},"digitalData - Content - Article Title":{customJS:function(){var e=digitalData.page.attributes.articleTitle;return e},storeLength:"pageview"},"digitalData - Content - Article Topics":{jsVariable:"digitalData.page.attributes.articleTags",storeLength:"pageview"},"digitalData - Content - Article Type":{jsVariable:"digitalData.page.attributes.articleContentType",storeLength:"pageview"},"digitalData - Content - Content Type":{customJS:function(){var t=e.digitalData.page.attributes,i="";return i=t==a?"":e.digitalData.page.attributes.articleContentType},storeLength:"pageview"},"digitalData - Content - Editorial Distinction":{customJS:function(){var t=e.digitalData.page.attributes,i="";if(t!=a)var i=e.digitalData.page.attributes.articleEditorialDistinction;else var i="";return i},storeLength:"pageview"},"digitalData - Content - Main Author":{jsVariable:"digitalData.page.attributes.primaryAuthor",storeLength:"pageview"},"digitalData - Content - Primary Editor":{jsVariable:"digitalData.page.attributes.articlePrimaryEditor","default":"Unidentified",storeLength:"pageview"},"digitalData - Cookie - Registration Location":{customJS:function(){var e=localStorage._analytics_Reg_Location;return e},storeLength:"pageview"},"digitalData - Cookie - Subscriber":{customJS:function(){var e="";return"undefined"==typeof localStorage.HBRSubscriber?e="Guest":"Reg"==localStorage.HBRSubscriber?e="Registered":"Sub"==localStorage.HBRSubscriber&&(e="Subscriber"),e},storeLength:"pageview"},"digitalData - Event - Event Action":{customJS:function(){try{var t="",a="",i="",n=typeof e.digitalData.event;if("undefined"!=n)for(var r=0;r<e.digitalData.event.length;r++){var i=e.digitalData.event[r].eventInfo.eventAction;t=0==r?i:"|"+i,a+=t}else a=""}catch(o){_satellite.notify("Event array not defined in data layer.",4)}return a},"default":"null",storeLength:"pageview"},"digitalData - Event - # of On-Site Search Results":{jsVariable:"window.digitalData.page.pageInfo.onsiteSearchResults",storeLength:"pageview"},"digitalData - Event - On-Site Search Refinement Attributes":{customJS:function(){for(var t="",a="",i="",n=0;n<e.digitalData.page.attributes.searchRefinementAttribute.length;n++){var i=e.digitalData.page.attributes.searchRefinementAttribute[n].name;t=0==n?i:"|"+i,a+=t}return a},storeLength:"pageview"},"digitalData - Event - On-Site Search Refinement Values":{customJS:function(){var t="",i="",n="",r=e.digitalData.page.attributes.searchRefinementAttribute;if(r==a)i="";else for(var o=0;o<e.digitalData.page.attributes.searchRefinementAttribute.length;o++){var n=e.digitalData.page.attributes.searchRefinementAttribute[o].value;t=0==o?n:"|"+n,i+=t}return i},storeLength:"pageview"},"digitalData - Event - On-Site Search Sort":{jsVariable:"window.digitalData.page.attributes.searchSort",storeLength:"pageview"},"digitalData - Event - On-Site Search Term":{jsVariable:"window.digitalData.page.pageInfo.onsiteSearchTerm",storeLength:"pageview"},"digitalData - Event - On-Site Search Type":{jsVariable:"window.digitalData.page.pageInfo.onsiteSearchType",storeLength:"pageview"},"digitalData - Event - Time":{customJS:function(){var e=new Date,t=e.getMonth()+1;if(10>t)var t="0"+t;else t=t;var a=e.getDate();a=10>a?"0"+a:a;var i=e.getFullYear(),n=e.getUTCHours();n=10>n?"0"+n:n;var r=e.getMinutes();r=10>r?"0"+r:r;var o=e.getSeconds();o=10>o?"0"+o:o;var s=i+"-"+t+"-"+a+" "+n+":"+r+":"+o;return s},storeLength:"pageview"},"digitalData - IDP - Product Author":{customJS:function(){var t=e.digitalData.product[0].attributes.primaryAuthor;return t},storeLength:"pageview"},"digitalData - IDP - Product Base Price":{customJS:function(){var t=e.digitalData.product[0].productInfo.defaultPrice;return t},storeLength:"pageview"},"digitalData - IDP - Product Category":{customJS:function(){var t=e.digitalData.product[0].category.subCategory;return t},storeLength:"pageview"},"digitalData - IDP - Product Format":{customJS:function(){var t=e.digitalData.product[0].productInfo.defaultFormat;return t},storeLength:"pageview"},"digitalData - IDP - Product ID":{customJS:function(){var t=e.digitalData.product[0].productInfo.productId;return t},storeLength:"pageview"},"digitalData - IDP - Product Kind":{customJS:function(){var t=e.digitalData.product[0].productInfo.productKind;return t},storeLength:"pageview"},"digitalData - IDP - Product Name":{customJS:function(){var t=e.digitalData.product[0].productInfo.productName;return t},storeLength:"pageview"},"digitalData - IDP - Product Type":{customJS:function(){var t=e.digitalData.product[0].productInfo.defaultType;return t},storeLength:"pageview"},"digitalData - IDP - SKU":{customJS:function(){var t=e.digitalData.product[0].productInfo.productSKU;return t},storeLength:"pageview"},"digitalData - Links - AB":{queryParam:"ab",storeLength:"pageview",ignoreCase:1},"digitalData - Links - CM_SP":{queryParam:"cm_sp",storeLength:"pageview",ignoreCase:1},"digitalData - Marketing - CM_MMC":{queryParam:"cm_mmc",storeLength:"pageview",ignoreCase:1},"digitalData - Marketing - UTM_CAMPAIGN":{queryParam:"utm_campaign","default":".",storeLength:"pageview",forceLowerCase:!0,ignoreCase:1},"digitalData - Marketing - UTM_CONTENT":{queryParam:"utm_content","default":".",storeLength:"pageview",forceLowerCase:!0,ignoreCase:1},"digitalData - Marketing - UTM_MEDIUM":{queryParam:"utm_medium","default":".",storeLength:"pageview",forceLowerCase:!0,ignoreCase:1},"digitalData - Marketing - UTM_SOURCE":{queryParam:"utm_source","default":".",storeLength:"pageview",forceLowerCase:!0,ignoreCase:1},"digitalData - Marketing - UTM_TERM":{queryParam:"utm_term","default":".",storeLength:"pageview",forceLowerCase:!0,ignoreCase:1},"digitalData - Orders - Billing State":{jsVariable:"digitalData.transaction.profile.address.stateProvince",storeLength:"pageview"},"digitalData - Orders - Billing Zip":{jsVariable:"digitalData.transaction.profile.address.postalCode",storeLength:"pageview"},"digitalData - Orders - Order Number":{jsVariable:"digitalData.transaction.transactionID",storeLength:"pageview"},"digitalData - Orders - Shipping Amount":{jsVariable:"digitalData.transaction.total.shipping",storeLength:"pageview"},"digitalData - Orders - Tax":{jsVariable:"digitalData.transaction.total.taxAmount",storeLength:"pageview"},"digitalData - Other - Product Base Price":{selector:"add-to-cart",property:"data-product-price",storeLength:"pageview"},"digitalData - Other - Product Category":{selector:"add-to-cart",property:"data-product-major-topic",storeLength:"pageview"},"digitalData - Other - Product Name":{selector:"add-to-cart.add-to-cart.is-inline-block",property:"data-product-title",storeLength:"pageview"},"digitalData - Other - Product Type":{selector:"add-to-cart",property:"data-product-content-type",storeLength:"pageview"},"digitalData - Other - SKU":{selector:"add-to-cart",property:"data-product-id",storeLength:"pageview"},"digitalData - Pages - Full Page URL":{customJS:function(){var t=e.location.protocol,a=e.location.hostname,i=e.location.pathname,n=e.location.search,r=t+"//"+a+i+n;return r},storeLength:"pageview"},"digitalData - Pages - Page Category ID":{jsVariable:"window.digitalData.page.pageInfo.pageCategoryID",storeLength:"pageview"},"digitalData - Pages - Page Name":{customJS:function(){var t=e.location.pathname,i="",n="";return i="/my-library/library"==t?"My Library":"/my-library/topics"==t?"Topic Feeds":"/my-library/purchases"==t?"Purchases":"/my-library/activity"==t?"Activity":"/my-library/settings"==t?"Account Settings":e.digitalData.page.pageInfo.pageName,n=i!=a?i.replace(" - HBR",""):"Page Name Not Defined in Data Layer"},storeLength:"pageview"},"digitalData - Pages - Page Type":{customJS:function(){var t=e.location.protocol+"//"+e.location.host+e.location.pathname,a=_satellite.getVar("digitalData - Content - Content Type"),i="";return i=t.match(/\/product\//)?"IDP":t.match(/\/[0-9]{4}\/[0-9]{2}\/(survey|assessment|quiz)-/)?"Assessments":t.match(/\/web\/assessment\//)?"Assessments":t.match(/\/sign-in/)?"My Library":t.match(/\/reset-password/)?"My Library":t.match(/\/reset-password-complete/)?"My Library":t.match(/\/my-library/)?"My Library":t.match(/\/my-library\/topics/)?"My Library":t.match(/\/generosity/)?"Big Idea":t.match(/\/rebel/)?"Big Idea":t.match(/\/cover-story\//)?"Big Idea":t.match(/\/dcs-landing/)?"Big Idea":t.match(/\/visual-library/)?"Visual":t.match(/\/[0-9]{4}\/[0-9]{2}\//)&&"Audio"==a?"Audio":t.match(/\/[0-9]{4}\/[0-9]{2}\//)&&"Webinar"==a?"Webinar":t.match(/\/[0-9]{4}\/[0-9]{2}\//)&&"Sponsor Content"==a?"Sponsored Content":t.match(/\/[0-9]{4}\/[0-9]{2}\//)?"Article":t.match(/\/topic\//)?"Topic":t.match(/\/topics/)?"Topic Landing Page":t.match(/\/insight-center\//)?"Insight Center":t.match(/\/register/)?"Registration":t.match(/\/registration-complete/)?"Registration":t.match(/\/subscriber-registration/)?"Registration":t.match(/\/magazine/)?"Magazine Index":t.match(/\/email-newsletters/)?"Newsletters":t.match(/\/search/)?"Search":t.match(/\/video/)?"Video":t.match(/\/multimedia\/webinars/)?"Webinar":t.match(/\/webinars/)?"Webinar":t.match(/\/archive/)?"Magazine Issue":t.match(/\/shopping-cart/)?"Shopping Cart":t.match(/\/shipping-payment/)?"Checkout":t.match(/\/review-order/)?"Checkout":t.match(/\/thank-you/)?"Checkout":t.match(/\/store(\/?)$/)?"Store":t.match(/\/store\/articles/)?"HBR Reprints":t.match(/\/store\/magazine-issues/)?"HBR Issues":t.match(/\/store\/case-studies/)?"Case Studies":t.match(/\/store\/collections/)?"Bundles":t.match(/\/store\/books/)?"Books":t.match(/\/books\//)?"Books":t.match(/\/store\/tools/)?"Toolkits":t.match(/\/harvardmanagementor/)?"Harvard ManageMentor":t.match(/\/landing\//)?"Landing":t.match(/\/top5/)?"Landing":t.match(/\/the-latest/)?"Landing":t.match(/\/most-popular/)?"Landing":t.match(/\/hbr-bot-for-slack/)?"Landing":t.match(/\/hbr-bot-for-slack-installed/)?"Landing":t.match(/\/hbr-analytic-services/)?"Landing":t.match(/\/permissions/)?"Corporate":t.match(/\/guidelines-for-authors/)?"Corporate":t.match(/\/hbr-advertising-sales/)?"Corporate":t.match(/\/corporate\//)?"Corporate":t.match(/\/about-hbr/)?"Corporate":t.match(/\/contact-us/)?"Corporate":t.match(/\/big-ideas/)?"Landing":t.match(/\/order\/[0-9]{9}/)?"Order":t.match(/\/$/)?"Homepage":"Other"},storeLength:"pageview"},"digitalData - Pages - Page URL":{customJS:function(){var t=e.digitalData.page.pageInfo.pageUrl,a=e.digitalData.page.pageInfo.pageURL,i="";return i=null!=t?t:a},storeLength:"pageview"},"digitalData - Pages - Previous Page Name":{cookie:"s_ppn",storeLength:"pageview"},"digitalData - Profile - Account ID":{customJS:function(){var t="",a=e.digitalData.users[0].profile.userState;return t="Guest"==a?"":e.digitalData.users[0].profile.username},storeLength:"pageview"},"digitalData - Profile - Article Quota Limit":{customJS:function(){var e="",t=digitalData.users[0].profile.quota;return e=t!=a?digitalData.users[0].profile.quota.limit:""},storeLength:"pageview"},"digitalData - Profile - Article Quota Remaining":{customJS:function(){var e="",t=digitalData.users[0].profile.quota;return e=t!=a?digitalData.users[0].profile.quota.remaining:""},storeLength:"pageview"},"digitalData - Profile - Company Size":{customJS:function(){var t="";return t="undefined"!=typeof e.digitalData.users[0].profile.attributes?e.digitalData.users[0].profile.attributes["company-size"]:""},storeLength:"pageview"},"digitalData - Profile - Days Since Last Visit":{customJS:function(){return secondsLastVisit=e.digitalData.users[0].profile.secondsSinceLastVisit,daysLastVisit=secondsLastVisit/86400,daysLastVisitRound=daysLastVisit.toFixed(0),secondsLastVisit>0&&secondsLastVisit<86400?daysLastVisitFinal="Less Than One Day":0==secondsLastVisit?daysLastVisitFinal="First Time Visit":daysLastVisitFinal=daysLastVisitRound,daysLastVisitFinal},storeLength:"pageview"},"digitalData - Profile - Days Since Registration":{customJS:function(){var t="",a=e.digitalData.users[0].profile.userState;if("Guest"!=a){var i=e.digitalData.users[0].profile.registrationDate,n=new Date(i),r=new Date;t=Math.round((r-n)/1e3/60/60/24)}else t="";return t},storeLength:"pageview"},"digitalData - Profile - Industry":{customJS:function(){var t="";return t="undefined"!=typeof e.digitalData.users[0].profile.attributes?e.digitalData.users[0].profile.attributes.industry:""},storeLength:"pageview"},"digitalData - Profile - Job Title":{customJS:function(){var t="";return t="undefined"!=typeof e.digitalData.users[0].profile.attributes?e.digitalData.users[0].profile.attributes["job-title"]:""},storeLength:"pageview"},"digitalData - Profile - Newsletters Subscribed":{customJS:function(){var t="",n=e.digitalData.users[0].profile.newsletters;return t=n==a?"":function(){var t=[];for(i=0;i<e.digitalData.users[0].profile.newsletters.length;i++){var a=e.digitalData.users[0].profile.newsletters[i].newsletterSubscribed;t.push(a)}return t.join("|")}()},storeLength:"pageview"},"digitalData - Profile - Registration Date":{customJS:function(){var t="",a=e.digitalData.users[0].profile.userState;return t="Guest"==a?"":e.digitalData.users[0].profile.registrationDate},storeLength:"pageview"},"digitalData - Profile - Registration ID":{customJS:function(){var t="",a=e.digitalData.users[0].profile.userState;return t="Guest"==a?"":e.digitalData.users[0].profile.accountID},storeLength:"pageview"},"digitalData - Profile - Session ID":{customJS:function(){var t=e.digitalData.users[0].profile.sessionID;return t},storeLength:"pageview"},"digitalData - Profile - Subscriber ID":{customJS:function(){var t=e.digitalData.users[0].profile.subscriberID;return t},storeLength:"pageview"},"digitalData - Profile - Subscription Status":{customJS:function(){var t=e.digitalData.users[0].profile.attributes;if(t!=a){var i="",n=e.digitalData.users[0].profile.userState;i="Subscriber"==n?e.digitalData.users[0].profile.attributes.RR_SUBSCRIPTION_STATUS:""}else i="";return i},storeLength:"pageview"},"digitalData - Profile - Topics Followed":{customJS:function(){var t="",n=e.digitalData.users[0].profile.feeds;return t=n==a?"":function(){var t=[];for(i=0;i<e.digitalData.users[0].profile.feeds.length;i++){var a=e.digitalData.users[0].profile.feeds[i].topicName;t.push(a)}return t.join("|")}()},storeLength:"pageview"},"digitalData - Profile - User State":{ customJS:function(){var t=e.digitalData.users[0].profile.userState;return t},storeLength:"pageview"},"digitalData - Profile - Visitor ID":{customJS:function(){var e=_satellite.readCookie("AMCV_7801965A577503E87F000101%40AdobeOrg"),t=decodeURIComponent(e),a=t.search("MCMID"),i=a+6,n=i+38,r=t.substring(i,n);return r},storeLength:"pageview"},"digitalData - Query String - Error Page":{queryParam:"error",storeLength:"pageview",ignoreCase:1},"digitalData - Rich Relevance - CM_VC":{queryParam:"cm_vc",storeLength:"pageview",ignoreCase:1},"digitalData - Rich Relevance Page Type - PTI":{queryParam:"pti",storeLength:"pageview",ignoreCase:1},"digitalData - Rich Relevance Placement Name - PA":{queryParam:"pa",storeLength:"pageview",ignoreCase:1},"digitalData - Topic Page - Topic Name":{customJS:function(){var t=e.digitalData.page.attributes.articleBrowseTopic;return t},storeLength:"pageview"},"digitalData - Transaction - Cart Total":{jsVariable:"digitalData.transaction.total.cartTotal",storeLength:"pageview"},Editor_primary:{selector:'meta[name="primary-editor"]',property:"content","default":"unidentified",storeLength:"pageview"},folderName:{selector:"#list-form-name",property:"value",storeLength:"pageview"},idpProductCategory:{selector:"stream-item",property:"data-content-type",storeLength:"pageview"},idpProductID:{selector:"stream-item",property:"data-id","default":'""',storeLength:"pageview"},idpProductTitle:{selector:"title",property:"text","default":'""',storeLength:"pageview"},idpProductType:{selector:"meta[page-type]",property:"content","default":'""',storeLength:"pageview"},loginTracked:{cookie:"loginTracked",storeLength:"session"},mainAuthor:{customJS:function(){for(var e=t.getElementsByTagName("meta"),a="false",i=0;i<e.length;i++)if("og:type"==e[i].getAttribute("property")&&"article"==e[i].getAttribute("content")){a="true";break}if("true"==a){var n=t.getElementsByTagName("stream-item");if(n.length>0){var r=t.getElementsByTagName("stream-item")[0].getAttribute("data-authors");if(null!==r&&r.length>0)return r=r.split(";"),r[0]}}},"default":"Unidentified",storeLength:"pageview"},mainTopic:{customJS:function(){return $("meta[property='article:tag']").map(function(){return $(this).attr("content")}).get()[0]},"default":'""',storeLength:"pageview"},"Meta - Subscription Type":{selector:'meta[name="subscription-type"]',property:"content",storeLength:"pageview"},navigationPath:{property:"id","default":'""',storeLength:"pageview"},orderNumber:{customJS:function(){return function(){var e="";try{e=t.getElementsByName("order-id")[0].content}catch(a){}return e}()},storeLength:"pageview",forceLowerCase:!0,cleanText:!0},orderShipping:{customJS:function(){var e=t.querySelectorAll('[js-target="cart-shipping-cost"]')[0].innerHTML;return e},"default":"0.00",storeLength:"session"},orderSubtotal:{customJS:function(){var e=t.querySelectorAll('[js-target="cart-subtotal"]')[0].innerHTML;return e},"default":"0.00",storeLength:"pageview"},orderTax:{customJS:function(){var e=localStorage.getItem("cartDetails").split(";")[2];return e},"default":"0.00",storeLength:"pageview"},orderTotal:{customJS:function(){var e=localStorage.getItem("cartDetails").split(";")[3];return e},"default":"0.00",storeLength:"pageview"},pageID:{customJS:function(){var e=t.location.pathname,a="";return a="/error/page-not-found"==e?"Error:Page Not Found":_satellite.getVar("templateType")+":"+_satellite.getVar("pageTitle"),a.replace(/\"/g,"")},"default":'""',storeLength:"pageview"},pagePath:{customJS:function(){var e=sessionStorage.getItem("pagePath")==a?"|":sessionStorage.getItem("pagePath"),t=e.split("|"),i=t[1];return i},storeLength:"session"},pageTitle:{selector:'meta[property="og:title"]',property:"content","default":'""',storeLength:"pageview"},postID:{selector:'meta[property="article:author"]',property:"content","default":'""',storeLength:"pageview"},productCopyrightPermissionsMainPanel:{selector:'#main > div:nth-child(4) > div.row > div > div.row > div:nth-child(2) > div > add-to-cart > div:nth-child(4) > div > div.permission-quantity.small-5.medium-5.columns > input[type="number"]',property:"value","default":"0",storeLength:"pageview"},productId:{customJS:function(){var e=t.URL,a=e.split("?").slice()[0],i=a.split("/").slice(-1)[0];return i},"default":'""',storeLength:"pageview"},productIdMainPanel:{customJS:function(){var e=t.querySelectorAll("#main > div:nth-child(4) > div.row > div > div.is-centered-list.mbl > stream-item")[0].getAttribute("data-id");return e},"default":'""',storeLength:"pageview"},productName:{selector:".stream-item",property:"data-title","default":'""',storeLength:"pageview"},productPriceMainPanel:{selector:'[checked="checked"]',property:"data-product-price","default":"0.00",storeLength:"pageview"},productQuantityMainPanel:{selector:'#main > div:nth-child(4) > div.row > div > div.row > div:nth-child(2) > div > add-to-cart > div:nth-child(3) > div > div.item-quantity.small-5.medium-5.columns > input[type="number"]',property:"value","default":"1",storeLength:"pageview"},productTitleMainPanel:{customJS:function(){},"default":'""',storeLength:"pageview"},publicationDate:{customJS:function(){var e;return _satellite.cssQuery('meta[property="article:published_time"]',function(t){if(t.length>0){var a=t[0].getAttribute("content"),i=a.match(/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/);null!=i&&(e=i[0].replace(/-/g,"/"))}}),e},"default":'""',storeLength:"pageview"},regCompanySize:{customJS:function(){return $("select#size-select").val()},storeLength:"pageview"},regEmail:{customJS:function(){var e=localStorage.getItem("user"),t=JSON.parse(e);return t.emailAddress},storeLength:"pageview"},regIndustry:{customJS:function(){return $("select#industry-select").val()},storeLength:"pageview"},registrantCity:{property:"id","default":'""',storeLength:"pageview"},registrantFirstName:{customJS:function(){var e=localStorage.getItem("user"),t=JSON.parse(e);return t.firstName},storeLength:"pageview"},registrantLastName:{customJS:function(){var e=localStorage.getItem("user"),t=JSON.parse(e);return t.lastName},storeLength:"pageview"},registrantState:{property:"id","default":'""',storeLength:"pageview"},registrationId:{customJS:function(){},"default":'""',storeLength:"pageview"},regStatus:{customJS:function(){var e="GUEST",t=localStorage.getItem("user"),a=JSON.parse(t);return"subscribers"==a.status&&(e="SUBSCRIBER"),e},storeLength:"pageview"},regTitle:{customJS:function(){return $("select#job-select").val()},storeLength:"pageview"},searchFacetCount:{customJS:function(){var e=$("div.filter-crumbs-container ul.filter-crumbs li");return e.length},storeLength:"pageview"},searchFormatType:{customJS:function(){var e,t=["Article","Audio","Book","Case study","Special Offer","Tool","Video"],a=[],i=[];for(r=0;r<t.length;r++)a[r]=t[r].toLowerCase().replace(/^\s+|\s+$/gm,"");var n,r,o=$("div.filter-crumbs-container ul.filter-crumbs li a");for(n=0;n<o.length;n++){var s=o[n].textContent.toLowerCase().replace(/^\s+|\s+$/gm,"");for(r=0;r<a.length;r++)if(s===a[r]){i.push(t[r]);break}}return i.length>0&&(e="FORMAT TYPE",_satellite.setVar("searchFormatTypeSeq",i.join("|"))),e},"default":'""',storeLength:"pageview"},searchGeoType:{customJS:function(){var e,t=["Africa","Asia","Central Asia","South Asia","East & Southeast Asia","Europe","Middle East","North America","Australia & Oceania","Central & South America"],a=[],i=[];for(r=0;r<t.length;r++)a[r]=t[r].toLowerCase().replace(/^\s+|\s+$/gm,"");var n,r,o=$("div.filter-crumbs-container ul.filter-crumbs li a");for(n=0;n<o.length;n++){var s=o[n].textContent.toLowerCase().replace(/^\s+|\s+$/gm,"");for(r=0;r<a.length;r++)if(s===a[r]){i.push(t[r]);break}}return i.length>0&&(e="GEOGRAPHY TYPE",_satellite.setVar("searchGeoTypeSeq",i.join("|"))),e},storeLength:"pageview"},searchIndustryType:{customJS:function(){var e,t=["Administrative & Support Services","Advertising, Marketing & Public Relations","Aerospace & Defense","Agriculture","Arts & Culture","Educational Institutions","Energy & Natural Resources","Engineering, Construction & Infrastructure","Financial Services","Food & Beverage","Government","Healthcare","Hospitality","Manufacturing","Media","Pharmaceuticals","Professional Services","Consulting","Law","Human Resources","Real Estate","Retail & Consumer Goods","Sports","Technology","Telecommunications","Travel","Transportation"],a=[],i=[];for(r=0;r<t.length;r++)a[r]=t[r].toLowerCase().replace(/^\s+|\s+$/gm,"");var n,r,o=$("div.filter-crumbs-container ul.filter-crumbs li a");for(n=0;n<o.length;n++){var s=o[n].textContent.toLowerCase().replace(/^\s+|\s+$/gm,"");for(r=0;r<a.length;r++)if(s===a[r]){i.push(t[r]);break}}return i.length>0&&(e="INDUSTRY TYPE",_satellite.setVar("searchIndustryTypeSeq",i.join("|"))),e},"default":'""',storeLength:"pageview"},searchPageID:{customJS:function(){var e;if(-1!=t.location.search.indexOf("&ps=1"))e="SUGGESTED POPULAR SEARCH:"+_satellite.getVar("searchTerm");else{var a=t.querySelectorAll('div.mbl:contains("No results matching")');a.length>0?e="Search Unsuccessful":(e="Search Successful :",filterNodes=t.querySelectorAll("div.filter-crumbs-container ul.filter-crumbs li a"),filterNodes.length>0&&(e+=" Content Refinement :"))}return e},storeLength:"pageview"},searchPublicationDate:{customJS:function(){var e,t=["Last 6 Months","Last 12 Months","Last 24 Months","Older Than 24 Months"],a=[],i=[];for(r=0;r<t.length;r++)a[r]=t[r].toLowerCase().replace(/^\s+|\s+$/gm,"");var n,r,o=$("div.filter-crumbs-container ul.filter-crumbs li a");for(n=0;n<o.length;n++){var s=o[n].textContent.toLowerCase().replace(/^\s+|\s+$/gm,"");for(r=0;r<a.length;r++)if(s===a[r]){i.push(t[r]);break}}return i.length>0&&(e="PUBLICATION DATE",_satellite.setVar("searchPublicationDateSeq",i.join("|"))),e},"default":'""',storeLength:"pageview"},searchRefinements:{"default":'""',storeLength:"pageview"},searchResults:{customJS:function(){var e,a=t.querySelectorAll('h3.mbn:contains("Results")');if(a.length>0){var i=a[0].textContent.match(/\d/g);e=i.join("")}return e},"default":'""',storeLength:"pageview"},searchSubjectType:{customJS:function(){var e,t=["Economics & Society","Economy","Education","Demographics","Government","Business history","Business law","Economics","Social responsibility","Sustainability","International Business","Emerging markets","Globalization","Cross-Cultural management","Global strategy","Finance & Accounting","Accounting","Financial analysis","Financial management","Performance measurement","Innovation","Disruptive innovation","Research & Development","Design","Product development","Experimentation","Entrepreneurship","Entrepreneurial management","Founders","Entrepreneurial finance","Venture capital","IPO","Social enterprise","Leadership & Managing People","Leadership","Leadership transitions","Managing people","Assessing performance","Leading teams","Coaching","Conflict","Collaboration","Delegation","Developing employees","Employee retention","Giving feedback","Motivating people","Firing","Hiring","Managing up","Managing Organizations","Compensation","Executive compensation","Corporate governance","Boards","Succession planning","Corporate communications","Public relations","Crisis communication","Negotiations","Human resource management","Leadership development","Personnel policies","Talent management","Change management","Crisis management","Downsizing","Reorganization","Knowledge management","Organizational culture","Ethics","Diversity","Transparency","Workspaces","Organizational structure","Analytics","Data","Managing Yourself","Creativity","Emotional intelligence","Influence","Informal leadership","Work-life balance","Health","Stress","Psychology","Communication","Business writing","Difficult conversations","Presentations","Receiving feedback","Meetings","Networking","Career planning","Job Search","Retirement","Professional transitions","Decision making","Productivity","Time management","Strategic thinking","Sales & Marketing","Marketing","Market research","Branding","Customers","Sales","Pricing","Strategy","Competition","Shared Value","Competitive strategy","Business models","Joint ventures","Strategy execution","Mergers & Acquisitions","Growth strategy","Managing uncertainty","Risk management","Strategic planning","Operations","Operations management","Business processes","Manufacturing","Supply chain","Project management","Customer service","Technology","Social platforms","Mobile","Internet","Security & privacy","IT"],a=[],i=[];for(r=0;r<t.length;r++)a[r]=t[r].toLowerCase().replace(/^\s+|\s+$/gm,"");var n,r,o=$("div.filter-crumbs-container ul.filter-crumbs li a");for(n=0;n<o.length;n++){var s=o[n].textContent.toLowerCase().replace(/^\s+|\s+$/gm,"");for(r=0;r<a.length;r++)if(s===a[r]){i.push(t[r]);break}}return i.length>0&&(e="SUBJECT TYPE",_satellite.setVar("searchSubjectTypeSeq",i.join("|"))),e},storeLength:"pageview"},searchTerm:{selector:'meta[name="search-term"]',property:"content","default":'""',storeLength:"pageview"},sharePiece:{"default":'""',storeLength:"pageview"},shareType:{selector:"ul.flyout-share-chooser li.active",property:"text","default":'""',storeLength:"pageview"},sitePromotion:{queryParam:"cm_sp","default":'""',storeLength:"session",ignoreCase:1},subscriberStatus:{customJS:function(){var e="GUEST",t=localStorage.getItem("user"),a=JSON.parse(t);return"subscribers"==a.status&&(e="SUBSCRIBER"),e},storeLength:"pageview"},tabName:{selector:"stream-chooser.stream-chooser.active",property:"data-stream-name","default":'""',storeLength:"pageview"},templatePath:{customJS:function(){var e=sessionStorage.getItem("templatePath"),t=e.split("|"),a=t[1];return a},storeLength:"pageview"},templateType:{selector:'meta[name="page-type"]',property:"content","default":"LANDING",storeLength:"pageview"},userEmail:{customJS:function(){var e=localStorage.getItem("user"),t=JSON.parse(e),a=t.emailAddress;return a},"default":'""',storeLength:"pageview"},userID:{customJS:function(){var e=localStorage.getItem("user"),t=JSON.parse(e),a=t.id;return a},"default":'""',storeLength:"session"},userState:{selector:".global-nav",property:"data-state",storeLength:"pageview"},userStateMeta:{selector:'meta[name="shopper-attributes"]',property:"content",storeLength:"pageview",forceLowerCase:!0},videoId:{customJS:function(){var e="";return"video"===t.URL.split("/")[3]&&(e=t.URL.split("/")[4]),e},storeLength:"pageview"},videoName:{selector:"h2",property:"text","default":"n/a",storeLength:"pageview"},videoWatchNext:{customJS:function(){return $('select[data-track-target="video-playlist-selector"]').find(":selected").text()},"default":"n/a",storeLength:"pageview"}},appVersion:"7QN",buildDate:"2017-09-29 12:15:40 UTC",publishDate:"2017-09-29 12:15:39 UTC"})}(window,document);

/*! p13n.js Copyright 2007-2017 RichRelevance, Inc. All Rights Reserved. Build V1.2.3.20170406 */ function r3_generic(){this.createScript=function(a){return a}}function rr_addLoadEvent(a){RR.ol(a)}function r3_item(){this.setId=function(a){RR.set.call(this,a,"id")},this.setName=function(a){RR.set.call(this,a,"name")},this.setRecommendable=function(a){RR.set.call(this,a,"recommendable")},this.setPrice=function(a){RR.set.call(this,a,"price")},this.setSalePrice=function(a){RR.set.call(this,a,"salePrice")},this.setBrand=function(a){RR.set.call(this,a,"brand")},this.addAttribute=function(a,b){var c=a+":"+b;RR.add.call(this,c,"attributes")},this.setEndDate=function(a){RR.set.call(this,a,"endDate")},this.setImageId=function(a){RR.set.call(this,a,"imageId")},this.setLinkId=function(a){RR.set.call(this,a,"linkId")},this.setRating=function(a){RR.set.call(this,a,"rating")},this.setReleaseDate=function(a){RR.set.call(this,a,"releaseDate")},this.addCategory=function(a,b){var c=a+":"+b;RR.add.call(this,c,"categories")},this.addCategoryId=function(a){RR.add.call(this,a,"categoryIds")},this.createScript=function(a){return this.categories&&(a+="&cs="+encodeURIComponent(this.categories)),this.categoryIds&&(a+="&cis="+encodeURIComponent(this.categoryIds)),this.id&&(a+="&p="+encodeURIComponent(this.id)),this.name&&(a+="&n="+encodeURIComponent(this.name)),this.imageId&&(a+="&ii="+encodeURIComponent(this.imageId)),this.linkId&&(a+="&li="+encodeURIComponent(this.linkId)),this.releaseDate&&(a+="&rd="+encodeURIComponent(this.releaseDate)),this.price&&(a+="&np="+encodeURIComponent(this.price)),this.salePrice&&(a+="&sp="+encodeURIComponent(this.salePrice)),this.endDate&&(a+="&ed="+encodeURIComponent(this.endDate)),this.rating&&(a+="&r="+encodeURIComponent(this.rating)),typeof this.recommendable!=RR.U&&(a+="&re="+encodeURIComponent(this.recommendable)),this.brand&&(a+="&b="+encodeURIComponent(this.brand)),this.attributes&&(a+="&at="+encodeURIComponent(this.attributes)),a}}function r3_category(){this.setId=function(a){RR.set.call(this,a,"id")},this.setName=function(a){RR.set.call(this,a,"name")},this.setParentId=function(a){RR.set.call(this,a,"parentId")},this.setTopName=function(a){RR.set.call(this,a,"topName")},this.addItemId=RR.addItemId,this.createScript=function(a){return this.name&&(a+="&cn="+encodeURIComponent(this.name)),this.id&&(a+="&c="+encodeURIComponent(this.id)),this.parentId&&(a+="&pc="+encodeURIComponent(this.parentId)),this.topName&&(a+="&tcn="+encodeURIComponent(this.topName)),a}}function r3_cart(){this.addItemId=RR.addItemId,this.addItemIdCentsQuantity=RR.addItemIdCentsQuantity,this.addItemIdDollarsAndCentsQuantity=RR.addItemIdDollarsAndCentsQuantity,this.addItemIdPriceQuantity=RR.addItemIdPriceQuantity,this.createScript=function(a){return this.purchasesCents&&(a+="&ppc="+encodeURIComponent(this.purchasesCents)),this.purchasesDollarsAndCents&&(a+="&pp="+encodeURIComponent(this.purchasesDollarsAndCents)),this.quantities&&(a+="&q="+encodeURIComponent(this.quantities)),this.purchasesPrice&&(a+="&pp="+encodeURIComponent(this.purchasesPrice)),a}}function r3_addtocart(){this.addItemIdToCart=RR.addItemIdToCart,this.createScript=function(a){return this.addedToCartItemIds&&(a+="&atcid="+encodeURIComponent(this.addedToCartItemIds)),a}}function r3_purchased(){this.addItemId=RR.addItemIdCentsQuantity,this.addItemIdCentsQuantity=RR.addItemIdCentsQuantity,this.addItemIdDollarsAndCentsQuantity=RR.addItemIdDollarsAndCentsQuantity,this.addItemIdPriceQuantity=RR.addItemIdPriceQuantity,this.setOrderNumber=function(a){this.orderNumber=a},this.createScript=function(a){return this.orderNumber&&(a+="&o="+encodeURIComponent(this.orderNumber)),this.purchasesCents&&(a+="&ppc="+encodeURIComponent(this.purchasesCents)),this.purchasesDollarsAndCents&&(a+="&pp="+encodeURIComponent(this.purchasesDollarsAndCents)),this.quantities&&(a+="&q="+encodeURIComponent(this.quantities)),this.purchasesPrice&&(a+="&pp="+encodeURIComponent(this.purchasesPrice)),a}}function r3_search(){this.addItemId=RR.addItemId,this.setTerms=RR.addSearchTerm,this.createScript=function(a){return a}}function r3_wishlist(){this.addItemId=RR.addItemId,this.createScript=function(a){return a}}function r3_addtoregistry(){this.addItemIdCentsQuantity=RR.addItemIdCentsQuantity,this.createScript=function(a){return a}}function r3_common(){function a(a,b){rr_placement_place_holders.push({elementId:a,placementType:b})}var b={startRow:-1,count:-1,priceRanges:[],filterAttributes:{}};this.baseUrl="http://recs.richrelevance.com/rrserver/",this.jsFileName="p13n_generated.js",this.addCategoryHintId=function(a){RR.add.call(this,a,"categoryHintIds")},this.addClickthruParams=function(a,b){var c=encodeURIComponent(a)+":"+encodeURIComponent(b);RR.add.call(this,c,"clickthruParams")},this.addContext=function(a,b){RR.addObject.call(this,a,"context",b)},this.addFilter=function(a){RR.add.call(this,a,"filters")},this.addFilterBrand=function(a){RR.add.call(this,a,"filterBrands")},this.addFilterCategory=function(a){RR.add.call(this,a,"filterCategories")},this.addItemId=RR.addItemId,this.addItemIdToCart=RR.addItemIdToCart,this.addPlacementType=function(b,c){RR.add.call(this,b,"placementTypes"),c&&a(c,b)},this.addRefinement=function(a,b){var c=a+":"+b;RR.add.call(this,c,"refinements")},this.setRefinementFallback=function(a){var b=Boolean(a)?"t":"f";RR.set.call(this,b,"doRefinementsFallback")},this.addSearchTerm=RR.addSearchTerm,this.addSegment=function(a,b){var c;c=void 0===b?a:a+":"+b,RR.add.call(this,c,"segments")},this.blockItemId=function(a){RR.add.call(this,a,"blockeditemIds")},this.forceDisplayMode=function(){RR.set.call(this,!0,"displayModeForced")},this.forceDevMode=function(){RR.set.call(this,!0,"devModeForced")},this.setApiKey=function(a){RR.set.call(this,a,"apiKey")},this.setBaseUrl=function(a){RR.set.call(this,a,"baseUrl")},this.setCartValue=function(a){RR.set.call(this,a,"cartValue")},this.setChannel=function(a){RR.set.call(this,a,"channel")},this.setClickthruServer=function(a){RR.set.call(this,a,"clickthruServer")},this.setFilterBrandsIncludeMatchingElements=function(a){RR.set.call(this,a,"filterBrandsInclude")},this.setForcedTreatment=function(a){RR.set.call(this,a,"forcedTreatment")},this.setMVTForcedTreatment=function(a){RR.set.call(this,a,"mvtforcedTreatment")},this.setPageBrand=function(a){RR.set.call(this,a,"brand")},this.setImageServer=function(a){RR.set.call(this,a,"imageServer")},this.setRegionId=function(a){RR.set.call(this,a,"regionId")},this.setLanguage=function(a){RR.set.call(this,a,"language")},this.setCurrency=function(a){RR.set.call(this,a,"currency")},this.setRegistryId=function(a){RR.set.call(this,a,"registryId")},this.setRegistryType=function(a){RR.set.call(this,a,"registryType")},this.setSessionId=function(a){RR.set.call(this,a,"sessionId")},this.setUserId=function(a){RR.set.call(this,a,"userId")},this.useDummyData=function(){RR.set.call(this,!0,"dummyDataUsed"),RR.set.call(this,!0,"displayModeForced")},this.RICHSORT={paginate:function(a,c){b.startRow=a,b.count=c},filterPrice:function(a){b.priceRanges=a||[]},filterAttribute:function(a,c){b.filterAttributes[a]=c}},this.initFromParams=function(){var a=RR.checkParamCookieValue("RR Environment","r3_env","r3_envCookie","r3_env");if(a&&""!==a){var b=(0===this.baseUrl.toLowerCase().indexOf("https://")?"https://":"http://")+a+".richrelevance.com/rrserver/";RR.set.call(this,b,"baseUrl")}if(RR.lc("r3_forceDisplay=true")&&(RR.set.call(this,!0,"debugMode"),RR.set.call(this,!0,"displayModeForced")),RR.lc("r3_forceDev=true")&&(RR.set.call(this,!0,"debugMode"),RR.set.call(this,!0,"devModeForced")),RR.lc("r3_rad=true")){RR.set.call(this,!0,"debugMode"),RR.set.call(this,!0,"devModeForced"),RR.set.call(this,!0,"rad");var c=RR.pq("r3_radLevel");""!==c&&RR.set.call(this,c,"radLevel")}RR.lc("r3_useDummyData=true")&&(RR.set.call(this,!0,"debugMode"),RR.set.call(this,!0,"dummyDataUsed"),RR.set.call(this,!0,"devModeForced"));var d=RR.pq("r3_forcedTreatment");d&&""!==d&&RR.set.call(this,d,"forcedTreatment");var e=RR.checkParamCookieValue("RR MVT Treatment","r3_mvtTreatmentId","r3_mvtCookie","r3_mvtTreatmentId");e&&""!==e&&RR.set.call(this,e,"mvtforcedTreatment");var f=RR.pq("r3_ftp");f&&""!==f&&RR.set.call(this,f,"forcedFtp");var g=RR.pq("r3_responseDetails");g&&""!==g&&RR.set.call(this,g,"rap"),RR.lc("r3_debugMode=true")?RR.set.call(this,!0,"debugMode"):RR.lc("r3_debugMode=false")&&RR.set.call(this,!1,"debugMode"),RR.lc("rr_vg=")&&RR.set.call(this,RR.pq("rr_vg"),"viewGuid"),RR.lc("rm=")&&RR.set.call(this,RR.pq("rm"),"fromRichMail"),RR.lc("rr_u=")&&RR.set.call(this,RR.pq("rr_u"),"userId")},this.createScript=function(a,c,d){var e,f,g,h,i,j,k,l,m="",n=[],o=[],p=0,q=new Date;if(this.initFromParams(),a=this.baseUrl+this.jsFileName+"?a="+encodeURIComponent(this.apiKey)+"&ts="+q.getTime()+"&v="+rr_v+(0===this.baseUrl.toLowerCase().indexOf("https://")?"&ssl=t":"")+a,this.placementTypes?a+="&pt="+encodeURIComponent(this.placementTypes):d&&(this.addPlacementType(d),a+="&pt="+encodeURIComponent(d),a+="&pte=t"),this.userId&&(a+="&u="+encodeURIComponent(this.userId)),this.sessionId&&(a+="&s="+encodeURIComponent(this.sessionId)),this.viewGuid&&""!==this.viewGuid&&(a+="&vg="+encodeURIComponent(this.viewGuid)),this.segments&&(a+="&sgs="+encodeURIComponent(this.segments)),this.channel&&(a+="&channelId="+encodeURIComponent(this.channel)),this.clickthruServer&&(a+="&cts="+encodeURIComponent(this.clickthruServer)),this.imageServer&&(a+="&imgsrv="+encodeURIComponent(this.imageServer)),this.addedToCartItemIds&&(a+="&atcid="+encodeURIComponent(this.addedToCartItemIds)),this.cartValue&&(a+="&cv="+encodeURIComponent(this.cartValue)),this.forcedTreatment&&""!==this.forcedTreatment&&(a+="&ftr="+encodeURIComponent(this.forcedTreatment)),this.mvtforcedTreatment&&""!==this.mvtforcedTreatment&&(a+="&mvt_ftr="+encodeURIComponent(this.mvtforcedTreatment)),this.forcedFtp&&""!==this.forcedFtp&&(a+="&ftp="+encodeURIComponent(this.forcedFtp)),this.rap&&""!==this.rap&&(a+="&rap="+encodeURIComponent(this.rap)),this.fromRichMail&&""!==this.fromRichMail&&(a+="&rm="+encodeURIComponent(this.fromRichMail)),this.categoryHintIds&&(a+="&chi="+encodeURIComponent(this.categoryHintIds)),this.brand&&(a+="&fpb="+encodeURIComponent(this.brand)),this.filterBrands&&(a+="&filbr="+encodeURIComponent(this.filterBrands)),this.filterBrandsInclude&&(a+="&filbrinc="+encodeURIComponent(this.filterBrandsInclude)),this.filterCategories&&(a+="&filcat="+encodeURIComponent(this.filterCategories)),this.filterCategoriesInclude&&(a+="&filcatinc="+encodeURIComponent(this.filterCategoriesInclude)),this.clickthruParams&&(a+="&ctp="+encodeURIComponent(this.clickthruParams)),this.regionId&&(a+="&rid="+encodeURIComponent(this.regionId)),this.language&&(a+="&language="+encodeURIComponent(this.language)),this.currency&&(a+="&currency="+encodeURIComponent(this.currency)),this.filters&&(a+="&if="+encodeURIComponent(this.filters)),this.refinements&&(a+="&rfm="+encodeURIComponent(this.refinements),this.doRefinementsFallback&&(a+="&rfb="+encodeURIComponent(this.doRefinementsFallback))),typeof this.rad!=RR.U&&(a+="&rad=t"),typeof this.radLevel!=RR.U&&(a+="&radl="+encodeURIComponent(this.radLevel)),typeof this.context!=RR.U)for(e in this.context)if(f=this.context[e],a+="&"+e+"=",RR.isArray(f))a+=encodeURIComponent(f.join("|"));else if(f===Object(f)){g=[],h="";for(i in f)h=i+":",h+=RR.isArray(f[i])?f[i].join(";"):f[i],g.push(h);a+=encodeURIComponent(g.join("|"))}else a+=encodeURIComponent(f);if(this.registryId&&(a+="&rg="+encodeURIComponent(this.registryId)),this.registryType&&(a+="&rgt="+encodeURIComponent(this.registryType)),typeof this.searchTerms!=RR.U&&(a+="&st="+encodeURIComponent(this.searchTerms)),this.jsonCallback&&(a+="&jcb="+encodeURIComponent(this.jsonCallback)),this.blockeditemIds&&(a+="&bi="+encodeURIComponent(this.blockeditemIds)),this.itemIds&&(a+="&p="+encodeURIComponent(this.itemIds)),b.startRow>0&&(a+="&rssr="+encodeURIComponent(b.startRow)),b.count>0&&(a+="&rsrc="+encodeURIComponent(b.count)),"undefined"!=typeof b.priceRanges&&b.priceRanges.length>0){for(j=b.priceRanges.length;p<j;p+=1)o.push(b.priceRanges[p].join(";"));a+="&rspr="+encodeURIComponent(o.join("|"))}for(k in b.filterAttributes)n.push(k+":"+b.filterAttributes[k].join(";"));return n.length>0&&(a+="&rsfoa="+encodeURIComponent(n.join("|"))),this.debugMode&&(this.displayModeForced&&this.displayModeForced===!0&&(a+="&fdm=t"),this.devModeForced&&this.devModeForced===!0&&(a+="&dev=t"),this.dummyDataUsed&&this.dummyDataUsed===!0&&(a+="&udd=t")),""!==RR.d.referrer&&typeof RR.d.referrer!=RR.U?m=RR.d.referrer:""!==RR.d.referer&&typeof RR.d.referer!=RR.U&&(m=RR.d.referer),""!==m&&(a+="&pref="+encodeURIComponent(m)),l=RR.c("rr_rcs"),l.length&&(a+="&rcs="+l),a+="&l=1"}}function r3_placement(a){var b="rr_placement_"+rr_placement_place_holders.length;document.write('<div id="'+b+'"></div>'),rr_placement_place_holders.push({elementId:b,placementType:a})}function r3(a,b,c){typeof c!=RR.U&&c||RR.js()}function rr_flush_onload(){RR.onloadCalled||(RR.onloadCalled=!0,rr_onload_called=!0,rr_flush())}function rr_flush(){}function rr_insert_placement(a,b){RR.insert(a,b,rr_placements)}var rr_v="1.2.3.20170406",rr_onload_called=!1,rr_placements=[],rr_placement_place_holders=[],RR,r3_home,r3_error,r3_personal,r3_brand,R3_COMMON;r3_home=r3_generic,r3_error=r3_generic,r3_personal=r3_generic,r3_brand=r3_generic,RR=function(){function a(b,c){var d,e=b.cloneNode(!1);if("SCRIPT"===e.nodeName)e.text=b.innerHTML,c.appendChild(e);else if("#text"===e.nodeName)c.appendChild(e);else for(c.appendChild(e),d=0;d<b.childNodes.length;d++)a(b.childNodes[d],e)}function b(a){var b=document.createElement("script");b.type="text/javascript",b.charset=RR.charset,b.src=a,b.async=!0,document.getElementsByTagName("head")[0].appendChild(b)}function c(a){var b=a.split(".").reverse(),c=b.length;return c>=3&&b[1].match(/^(com|edu|gov|net|mil|org|nom|co|name|info|biz)$/i)?b[2]+"."+b[1]+"."+b[0]:b[1]+"."+b[0]}return{U:"undefined",charset:"UTF-8",rcsCookieDefaultDuration:730,setCharset:function(a){RR.charset=a},isArray:function(a){return"[object Array]"==Object.prototype.toString.call(a)},fixName:function(a){var b=String(a);return b.indexOf("&amp;")>-1&&(b=b.replace(/&amp;/g,"&")),b.indexOf("&#039;")>-1&&(b=b.replace(/&#039;/g,"'")),b},l:location.href,d:document,c:function(a,b,d,e){if(typeof b==RR.U||null===b){if(d!=-1){if(RR.d.cookie.length>0)for(var f=RR.d.cookie.split(";").reverse(),g=0,h=f.length;g<h;g++){var i=f[g];i="function"==typeof i.trim?i.trim():i.replace(/^\s+|\s+$/g,"");var j=i.indexOf(a+"=");if(0===j){j=j+a.length+1;var k=i.length;return unescape(i.substring(j,k))}}return""}RR.d.cookie=a+"=;path=/;expires=Thu, 01-Jan-1970 00:00:01 GMT"}else if(d){var l=new Date,m=e?c(window.location.hostname):"";l=new Date(l.getTime()+1e3*d*60*60*24),RR.d.cookie=a+"="+escape(b)+";path=/;domain="+m+";expires="+l.toUTCString()}else RR.d.cookie=a+"="+escape(b)},id:function(a){return RR.d.getElementById(a)},lc:function(a){if(a.indexOf("=")===-1&&(a+="="),a.indexOf("?")===-1&&a.indexOf("&")===-1){var b=RR.l.indexOf("?"+a);return b===-1&&(b=RR.l.indexOf("&"+a)),b!==-1}return RR.l.indexOf(a)!==-1},ol:function(a){if("function"!=typeof window.onload)window.onload=a;else{if(typeof window.rr_onloads==RR.U){var b=window.onload;window.rr_onloads=[b],window.onload=function(a){for(;window.rr_onloads.length>0;){var b=window.rr_onloads.shift();b&&"function"==typeof b&&b.call(window,a)}}}window.rr_onloads.push(a)}},pq:function(a){var b=RR.l.indexOf("?"+a+"=");b==-1&&(b=RR.l.indexOf("&"+a+"="));var c;if(b!==-1){b++;var d=RR.l.indexOf("&",b);c=d!=-1?RR.l.substring(b+a.length+1,d):RR.l.substring(b+a.length+1,RR.l.length)}else c="";return c},debugWindow:function(a){var b=RR.d.createElement("DIV");b.innerHTML=a,b.style.position="absolute",b.style.top="0px",b.style.right="0px",b.style.zIndex="10000",b.style.width="200px",b.style.border="2px solid black",b.style.padding="5px",b.style.background="#DDD",RR.d.body.insertBefore(b,RR.d.body.firstChild)},jsonCallback:function(a){},defaultCallback:function(b){var c,d,e,f,g,h,i,j,k=b.placements,l=rr_placement_place_holders;for(h=0;h<l.length;h++)if(g=!1,c=RR.id(l[h].elementId),c&&typeof c!=RR.U)for(i=0;i<k.length;i++)if(!k[i].used&&k[i].placementType==l[h].placementType){if(k[i].placeholderIndex=h,k[i].used=!0,k[i].html.indexOf("<script")==-1?(c.innerHTML=k[i].html,g=!0):RR.d.implementation.hasFeature("Range","2.0")&&RR.d.createRange&&(e=RR.d.createRange(),e.selectNodeContents&&e.createContextualFragment&&e.detach&&(e.selectNodeContents(c),f=e.createContextualFragment(k[i].html),c.appendChild(f),e.detach(),g=!0)),!g)for(d=RR.d.createElement("div"),d.innerHTML=k[i].html,j=0;j<d.childNodes.length;j++)a(d.childNodes[j],c);break}for(rr_placements=[],i=0;i<k.length;i++)rr_placements[i]=[k[i].used?1:0,k[i].placementType,k[i].html];if(typeof rr_remote_data!==RR.U&&rr_remote_data.length){var m=RR.rcsCookieDuration||RR.rcsCookieDefaultDuration;RR.c("rr_rcs",rr_remote_data.toString(),m,!0)}},onloadCalled:!1,js:function(a){var c="",d=!1,e="";if(typeof R3_COMMON!=RR.U&&typeof R3_COMMON.baseUrl!=RR.U&&typeof R3_COMMON.apiKey!=RR.U)return typeof R3_COMMON.placementTypes!==RR.U&&""!==R3_COMMON.placementTypes||(d=!0),typeof R3_PURCHASED!==RR.U?(e="purchase_complete_page",c=R3_PURCHASED.createScript(c)):typeof R3_CART!==RR.U?(e="cart_page",c=R3_CART.createScript(c)):typeof R3_ADDTOCART!==RR.U?(e="add_to_cart_page",c=R3_ADDTOCART.createScript(c)):typeof R3_ADDTOREGISTRY!==RR.U?(e="add_to_registry_page",c=R3_ADDTOREGISTRY.createScript(c)):typeof R3_ITEM!==RR.U?(e="item_page",c=R3_ITEM.createScript(c)):typeof R3_BRAND!==RR.U?(e="brand_page",c=R3_BRAND.createScript(c)):typeof R3_CATEGORY!==RR.U?(e="category_page",c=R3_CATEGORY.createScript(c)):typeof R3_SEARCH!==RR.U?(e="search_page",c=R3_SEARCH.createScript(c)):typeof R3_WISHLIST!==RR.U?(e="cart_page",c=R3_WISHLIST.createScript(c)):typeof R3_HOME!==RR.U?(e="home_page",c=R3_HOME.createScript(c)):typeof R3_PERSONAL!==RR.U?(e="personal_page",c=R3_PERSONAL.createScript(c)):typeof R3_GENERIC!==RR.U?(e="generic_page",c=R3_GENERIC.createScript(c)):typeof R3_ERROR!==RR.U&&(e="error_page",c=R3_ERROR.createScript(c)),c=R3_COMMON.createScript(c,d,e),a||(setTimeout(function(){b(c)},10),RR.ol(rr_flush_onload)),c},insert:function(b,c,d){var e,f,g,h,j,k;for(j=0;j<d.length;j++)if(e=!1,0===d[j][0]&&d[j][1]==c){if(d[j][0]=1,d[j][2].indexOf("<script")==-1?(b.innerHTML=d[j][2],e=!0):RR.d.implementation.hasFeature("Range","2.0")&&RR.d.createRange&&(g=RR.d.createRange(),g.selectNodeContents&&g.createContextualFragment&&g.detach&&(g.selectNodeContents(b),h=g.createContextualFragment(d[j][2]),b.appendChild(h),g.detach(),e=!0)),!e)for(f=RR.d.createElement("div"),f.innerHTML=d[i][2],k=0;k<f.childNodes.length;k++)a(f.childNodes[k],b);return}},get:function(a){return this[a]},set:function(a,b){return this[b]=RR.fixName(a),this[b]},add:function(a,b){return typeof this[b]==RR.U&&(this[b]=""),this[b]+="|"+RR.fixName(a),this[b]},addObject:function(a,b,c){var d,e,f;(typeof this[b]==RR.U||c)&&(this[b]={});for(d in a)if(e=a[d],void 0===this[b][d])this[b][d]=e;else if(this[b][d]===Object(this[b][d])&&e===Object(e))for(f in e)this[b][d][f]=e[f];else{var g=this[b][d],h=e;RR.isArray(g)||(g=[g]),RR.isArray(e)||(h=[e]),this[b][d]=g.concat(h)}},addItemId:function(a,b){var c=a;typeof b!=RR.U&&(c=c+"~"+b),RR.add.call(window.R3_COMMON,c,"itemIds")},addItemIdToCart:function(a,b){var c=a;typeof b!=RR.U&&(c=c+"~"+b),RR.add.call(this,c,"addedToCartItemIds")},addSearchTerm:function(a){RR.add.call(window.R3_COMMON,a,"searchTerms")},genericAddItemPriceQuantity:function(a,b,c,d,e){typeof c==RR.U&&(c=0),typeof e==RR.U&&(e=-1),e=String(e),e.indexOf(".")!=-1&&(e=e.substring(0,e.indexOf("."))),RR.addItemId.call(this,a,b),RR.add.call(this,c,d),RR.add.call(this,e,"quantities")},addItemIdCentsQuantity:function(a,b,c,d){RR.genericAddItemPriceQuantity.call(this,a,d,b,"purchasesCents",c)},addItemIdDollarsAndCentsQuantity:function(a,b,c,d){RR.genericAddItemPriceQuantity.call(this,a,d,b,"purchasesDollarsAndCents",c)},addItemIdPriceQuantity:function(a,b,c,d){RR.genericAddItemPriceQuantity.call(this,a,d,b,"purchasesPrice",c)},checkParamCookieValue:function(a,b,c,d){var e=RR.pq(b),f=RR.pq(c),g=new RegExp("^\\w+$");if(g.test(e))return"session"===f?RR.c(d,e):isNaN(parseInt(f))?RR.c(d,null,-1):RR.c(d,e,f),RR.debugWindow(a+' set to "'+e+'".'),e;if(e=RR.c(d),e&&g.test(e)){if("remove"!==mvtCookie)return RR.debugWindow(a+' set to "'+e+'". To remove from cookie, add '+c+"=remove to your query parameters."),e;RR.c(d,null,-1)}return null}}}();

function whichTransitionEndEvent(){var a,b=document.createElement("fakeelement"),c={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in c)if(void 0!==b.style[a])return c[a]}function isMobileBrowser(a){return Math.max(document.documentElement.clientWidth,window.innerWidth||0)<=(a||767)}function readCookie(a){for(var b=a+"=",c=document.cookie.split(";"),d=0;d<c.length;d++){for(var e=c[d];" "===e.charAt(0);)e=e.substring(1,e.length);if(0===e.indexOf(b))return e.substring(b.length,e.length)}return null}function createCookie(a,b,c){var d="";if(c){var e=new Date;e.setTime(e.getTime()+24*c*60*60*1e3),d="; expires="+e.toGMTString()}document.cookie=a+"="+b+d+"; domain=hbr.org; path=/"}function dismissIntromercial(){var a=document.getElementById("intromercial-handle"),b=whichTransitionEndEvent(),c=function(){a.removeEventListener(b,c),a.style.display="none",document.getElementsByTagName("body")[0].style.overflow="auto"};a.addEventListener(b,c),a.style.opacity=0,void 0===b&&setTimeout(c,100)}function showIntromercial(){document.getElementsByTagName("body")[0].style.overflow="hidden";var a=isMobileBrowser()?"/resources/html/marketing/intromercial/overlay.mobile.html":"/resources/html/marketing/intromercial/overlay.html";document.write('<section id="intromercial-handle" class="backdrop-darker window-block" onClick="javascript:dismissIntromercial();">\t<div class="intromercial-container">\t\t<div class="row collapse intromercial-header">\t\t\t<div class="small-5 column">\t\t\t\t<img src="/resources/css/images/hbr_logo_shield_white.svg" alt="Harvard Business Review" class="logo"/>\t\t\t</div>\t\t\t<div class="small-7 column skip-container">\t\t\t\t<a title="Close" href="javascript:dismissIntromercial();">Go to HBR.org <i class="icon icon-caret-right"></i></a>\t\t\t</div>\t\t</div>\t\t<div>\t\t\t<div class="intromercial-close" onClick="javascript:dismissIntromercial();"></div>\t\t\t<iframe class="intromercial-iframe" style="overflow:hidden;" scrolling="no" frameborder="0" src="'+a+'"></iframe>\t\t</div>\t</div></section>'),setTimeout(dismissIntromercial,3e4),createCookie("marketing_interruption","overlay",.5)}function displayPopup(){showIntromercial()}window.generateIntromercial=function(){var a=-1===document.location.href.indexOf("cm_mmc=email-_-rtb")&&-1===document.location.href.indexOf("cm_mmc=email-_-so")&&-1===document.location.href.indexOf("cm_mmc=cpc")&&-1===document.location.href.indexOf("hideIntromercial=true"),b=document.querySelector("meta[name='intromercial']");if((!b||"protected"!==b.content)&&a){readCookie("marketing_interruption")||displayPopup()}};

// ### server injected code ### /* Debug info: {"server":"US1A-WEB702","utc_time":"2017-09-29T11:58:38.893Z","method":"HTTPS","api_key":"2_DGuCTo4P8ts08o-9k7vrnlREmzgK-D2xVOrYmspM4SPv9awRLJui0F50QEcF8BMI","site_found":true} */ if (typeof gigya == 'undefined' || !gigya.isGigya) { gigya = { isGigya: true } }; if (!gigya.__initialized) { gigya.__initialized = true; gigya.env='prod'; gigya.gaeDomain='chat.gigya.com'; gigya.defaultApiDomain='gigya.com'; gigya.dataCenter='US1'; gigya.build={version:'develop-6605',time:'Monday 2017-09-18 17:38:30'}; if (typeof gigya.partnerSettings == 'undefined') { gigya.partnerSettings={"authMode":"cookie","baseDomains":"hbr.org"}; gigya.partnerSettings.plugins={"apiDomain":"US1.gigya.com"}; } gigya.providersConfig = {"facebook":{"appID":"1761258887507575","version":"v2.0"}}; gigya.abTesting = null; gigya.samlConfig = null; // ### end server injected code ### // API adapters var gigya;!function(e){var t;!function(t){var i;!function(t){var i;!function(t){var i;!function(t){function i(t,i){if(!e.partnerSettings.ssoKey)return void(i&&i.callback&&i.callback({}));var n;n=i?e.utils.object.clone(i):{};var r,s=function(o){r.parentNode.removeChild(r),o&&(o.errorCode&&"string"==typeof o.errorCode&&(o.errorCode=Number(o.errorCode)),o.expires_in&&"string"==typeof o.expires_in&&(o.expires_in=Number(o.expires_in))),e.log.addLog("SSO: About to invoke callback for "+t+" with this response",o),i&&i.callback&&i.callback(o)};n.m=t,n.d=e.localInfo.protocol+"://"+document.location.hostname,document.location.port&&(n.d+=":"+document.location.port),n.lid=e.utils.xd._flashListenerID,"string"==typeof e.thisScript.globalConf.legacyCrossSiteMethod&&"localstorage"!==e.thisScript.globalConf.legacyCrossSiteMethod.toLowerCase()&&(n.lid=e.thisScript.globalConf.legacyCrossSiteMethod+":"+e.utils.xd._flashListenerID),n.callbackID="gig_sso_cb"+(new Date).getTime()+"_"+l++,e.utils.xd.addMessageListener(n.callbackID,{},!1,s),n.sAPIKey=e.thisScript.APIKey;var a=e.utils.keyValue.serialize(n);r=o(n.callbackID);var c=function(){var t=e.utils.keyValue.serialize({APIKey:e.partnerSettings.ssoKey,ssoSegment:e.partnerSettings.ssoSegment||"",version:3});r.src="https://"+(e.thisScript.globalConf.storageDomainOverride||e._.getGigyaDomain("cdns"))+"/gs/sso.htm?"+t+"#"+a,e.utils.DOM.removeEventListener(r,"load",c)};e.utils.DOM.addEventListener(r,"load",c),e.log.addLog("SSO: Calling "+t,{SSOKey:e.partnerSettings.ssoKey,params:n}),document.body?e.utils.DOM.appendToBody(r):e.utils.functions.invokeOnPageLoad(function(){return e.utils.DOM.appendToBody(r)})}function o(t){var i=document.getElementById("gig_sso");return i=document.createElement("iframe"),e.localInfo.isIOS||e.localInfo.isIOSChrome||e.localInfo.isAndroid?(i.style.width="0px",i.style.height="0px",i.style.display="none"):(i.style.width="30px",i.style.height="10px",i.style.position="absolute",i.style.top="-1000px",i.style.left="-1000px"),i.id="gig_sso_"+t,i}function n(e){t._request("getToken",{callback:function(i){t._storedLoginTokenExp=i.gltexp,e&&e.callback&&e.callback(i)}})}function r(e,i){e.sessionInfo&&(e=e.sessionInfo);var o,n="string"==typeof e.expires_in&&e.expires_in?Number(e.expires_in):e.expires_in;if(0===n)o=0;else{var r=void 0;r=n?1e3*n:47304e7,o=Date.now()+r}t.setGroupToken({lt:e.login_token,expiration:o,callback:i})}function s(i){i.gltexp||(i.gltexp=e.utils.cookie.get("gltexp_"+e.thisScript.APIKey)),t._request("setToken",i)}function a(e){t._request("logout",e)}function c(e){t._request("removeToken",e)}function u(e){return t._storedLoginTokenExp&&e.loginTokenExp===t._storedLoginTokenExp?void(e.callback&&e.callback()):(t._storedLoginTokenExp=e.loginTokenExp,void t._request("setLoginTokenExp",e))}var l=0;t._request=i,t.getGroupToken=n,t.setGroupTokenFromResponse=r,t.setGroupToken=s,t.logout=a,t.removeGroupToken=c,t.setLoginTokenExp=u}(i=t.sso||(t.sso={}))}(i=t.web||(t.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(i){var o;!function(i){var o;!function(i){function o(t){return void 0===t&&(t=e.thisScript.APIKey),t?"glt_"+t:"_gig_lt"}function n(t){void 0===t&&(t=e.thisScript.APIKey);var i=e.utils.cookie.get(o(t));return i?i.split("|")[0]:null}function r(t,i,o){e.utils.localStorage.removeItem("gigyaSettings"),t||(t=e.thisScript.APIKey),t?(e.utils.cookie.set("glt_"+t,i,o),e.utils.cookie.remove("gac_"+t)):e.utils.cookie.set("_gig_lt",i,o)}function s(t,i){if(e.thisScript.APIKey){var o=e.utils.cookie.get("gac_"+e.thisScript.APIKey);if(o&&!t.neverTryGAC){if('"'===o.charAt(0)&&'"'===o.charAt(o.length-1)&&(o=o.substring(1,o.length-1)),d[o])return void i();d[o]=!0,e.socialize.updateRefUID(),e.socialize.notifyLogin({ignoreApiQueue:!0,neverTryGAC:!0,authCode:o,APIKey:e.thisScript.APIKey,client_id:e.thisScript.APIKey},{callback:function(){e.utils.cookie.remove("gac_"+e.thisScript.APIKey),i(),e.socialize.refreshUI({neverTryGAC:!0})}})}else i()}else i()}function a(o,n){if(void 0===n&&(n=e.thisScript.APIKey),0==o.errorCode){if(!p()){var r="gltexp_"+n;i.set(n,o.login_token,o.gltexp?e.utils.cookie.getInfiniteExpirationTimeInSeconds():o.expires_in),o.gltexp&&!e.utils.cookie.get(r)&&e.utils.cookie.set(r,o.gltexp)}e.accounts.verifyLogin({include:"profile,data",extraProfileFields:"samlData",callback:function(i){e.events.global.dispatchWhenHandlerAdded({eventName:"socialize.login"},null,function(o,n){e.socialize.getUserInfo({signIDs:!0,extraFields:"samlData",callback:function(r){o||(o={}),0==i.errorCode&&0==r.errorCode?(e._.apiAdapters.isSessionFromSso=!0,o=t.addUserInfoToEvent(r,{eventName:"login"},!0),e.external.backplane.executeOnInit(function(){var t=e.external.backplane.getChannelId();t&&e.socialize.notifySSOLogin({bp_channel_url:t})})):o.cancel=!0,n(o)}})}),e.events.global.dispatchWhenHandlerAdded({eventName:"accounts.login"},null,function(t,o){t||(t={}),0==i.errorCode?(t.eventName="accounts.login",e.utils.object.extractProperties(i,t,"signature|UIDSig|timestamp|UIDSignature|signatureTimestamp|UID|profile|data")):t.cancel=!0,o(t)})}})}}function c(t){void 0===t&&(t=e.thisScript.APIKey),e._.apiAdapters.web.sso.removeGroupToken(),e.utils.cookie.remove("glt_"+t),e.utils.cookie.remove("_gig_lt"),e.utils.cookie.remove("gltexp_"+t)}function u(){var t=e.utils.cookie.get("_gig_lt");t&&e.thisScript.APIKey&&!i.get(e.thisScript.APIKey)&&(e.utils.cookie.remove("_gig_lt"),i.set(e.thisScript.APIKey,t))}function l(t,i){var n=e.utils.cookie.get(o(t));if(n){var r=n.split("|");return r.length>1?e.utils.keyValue.deserialize(r[1])[i]:null}}function p(){var t=e.utils.cookie.getDefaultDomain();return e.utils.stringUtils.endsWith(t,e.defaultApiDomain)}var d={};i.activeNamespaces={},i.get=n,i.set=r,i.setFromGAC=s,i.setFromSsoResponse=a,i.remove=c,i.migrateExisting=u,i.getTokenParam=l}(o=i.tokenStore||(i.tokenStore={}))}(o=i.web||(i.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){var i;!function(t){var i=5,o=function(){function o(t,o,n,r,s){void 0===r&&(r={}),void 0===s&&(s=i),this.baseUrl=t,this.methodName=o,this.params=n,this.settings=r,this._maxTries=s,this._tries=0,this.params.sdk="js_"+e.build.version}return o.prototype.getUrl=function(){return this.baseUrl+"/"+this.methodName},o.prototype.send=function(e){this._tries++,this._tries<=this._maxTries?this.sendAction():e&&e()},o.prototype.getAuthParams=function(){var i={};if(this.params.oauth_token)this.params.authMode="token";else if(!this.params.noAuth&&!this.params.regToken){var o=t.tokenStore.get(this.params.APIKey);if(o){this.sentLoginToken=o;var n=e.utils.cookie.get("gltexp_"+this.params.APIKey);null!=n&&(i.loginTokenExp=n),i.login_token=o}i.authMode="cookie"}return delete this.params.noAuth,e.localInfo.isAndroidBrowser&&(delete this.params.login_token,delete this.params.loginTokenExp,delete this.params.authMode),i},o}();t.BaseRequest=o}(i=t.web||(t.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var __extends=this&&this.__extends||function(e,t){function i(){this.constructor=e}for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o]);e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)},gigya;!function(e){var t;!function(t){var i;!function(t){var i;!function(t){var i=function(i){function o(t,o,n,r){void 0===r&&(r={});var s=i.call(this,e.defaultApiDomain,t,o,r)||this;return s.methodName=t,s.params=o,s.callback=n,s.settings=r,s}return __extends(o,i),o.prototype.sendAction=function(i){e.utils.object.add(this.params,this.getAuthParams()),t.apiService.sendRequest(this.json()).then(this.callback).catch(function(e){return console.error(e)})},o.prototype.json=function(){return{methodName:this.methodName,params:this.params,settings:this.settings}},o}(t.BaseRequest);t.ApiRequest=i}(i=t.web||(t.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(i){var o;!function(i){var o=function(i){function o(e,t,o,n,r,s){void 0===s&&(s={});var a=i.call(this,t,o,n,s)||this;return a.id=e,a.baseUrl=t,a.methodName=o,a.params=n,a.callback=r,a.settings=s,a.windowName=a.methodName.replace(/\./g,"_").replace(/\//g,"")+"_"+(new Date).getTime(),a.requestID=a.windowName+(new Date).getTime(),a}return __extends(o,i),o.prototype.beforeRequest=function(){},o.prototype.afterResponse=function(t){t.dontClose&&"false"!==t.dontClose||e.utils.win.close(this.windowName),this.callback(t)},o.prototype.getAuthFlow=function(){return e.localInfo.isWindowsPhone||e.localInfo.isFacebookBrowser?"redirect":this.params.authFlow?this.params.authFlow:"popup"},o.prototype.getStateString=function(){var i=e.utils.xd._flashListenerID;(e.thisScript.globalConf.legacyCrossSiteMethod&&"localstorage"!==e.thisScript.globalConf.legacyCrossSiteMethod.toLowerCase()||e.localInfo.isIE&&window.navigator.msDoNotTrack)&&(i=e.thisScript.globalConf.legacyCrossSiteMethod+":"+e.utils.xd._flashListenerID);var o=this.getAuthFlow(),n={domain:document.location.href.split("?")[0].split("#")[0],id:this.requestID,lid:i,messaging:e.localInfo.messagingMethod};e.localInfo.isIE11&&window.indexedDB&&(n.messaging=t.MessagingMethod.LocalStorageListener),"redirect"===o&&(n.sourceURL=window.top.document.location.href,this.params.redirectURL?(n.redirectURL=e.utils.URL.addParamsToURL(this.params.redirectURL,{gig_events:e.events.global.getEventsForOperation(this.methodName)}),this.params.redirectMethod&&(n.redirectMethod=this.params.redirectMethod),n.addUserInfo=!0):n.sourceURL=e.utils.URL.addParamsToURL(n.sourceURL,{gig_events:e.events.global.getEventsForOperation(this.methodName)})),this.params.provider&&"facebook"==this.params.provider.toLowerCase()&&(n.invite=this.params.invite);var r=e.external.backplane.getChannelId();return r&&(n.bp_channel_url=r),e.utils.keyValue.serialize(n)},o.prototype.getServerParamsString=function(){var t={};for(var i in this.params)0!==i.indexOf("x_")&&null!=this.params[i]&&(t["x_"+i]=this.params[i],delete t[i]);t.x_APIKey&&(t.client_id=t.x_APIKey,delete t.x_APIKey),t.x_oauth_token&&(t.oauth_token=t.x_oauth_token,delete t.x_oauth_token),t.redirect_uri="/GS/AfterLogin.aspx",t.response_type=this.params.authCodeOnly?"code":"server_token",t.format="jsonp",t.x_sdk="js_"+e.build.version;var o=e.utils.cookie.get("_gigRefUid_"+this.params.APIKey);return o&&(t.x_refUID=o),t.state=this.getStateString(),e.utils.object.add(t,this.getAuthParams()),e._.apiAdapters.gmidTicket&&(t.gmidTicket=e._.apiAdapters.gmidTicket),delete t.redirectURL,this.sentLoginToken=t.login_token,e.utils.keyValue.serialize(t)},o.prototype.sendAction=function(){var t=this;this.beforeRequest();var i,o=this.getServerParamsString();this.params.provider&&(i=e.socialize._getProviderByName(this.params.provider));var n={menubar:0,resizable:1,scrollbars:1,width:i?i.width:void 0,height:i?i.height:void 0};this.params.enablePopupLocation?(n.location=1,n.toolbar=1):n.toolbar=0;var r=this.methodName.split("."),s=this.params.originalMethodName||r[r.length-1];e.reports.report(s,this.params.APIKey,this.params.cid,this.params.source,this.params.sourceData,{sn:i?i.toString():null});var a=this.getUrl()+"?"+o;"redirect"===this.getAuthFlow()?window.top.document.location.href=a:(e.utils.xd.addMessageListener(this.requestID,this.params,!0,function(e){t.afterResponse(e)}),e.utils.win.open(a,this.windowName,n))},o}(i.BaseRequest);i.OauthRequest=o}(o=i.web||(i.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){var i;!function(t){t.getParentUrl=function(e,t){return void 0===e&&(e=window),void 0===t&&(t=document),e.location!=e.parent.location?t.referrer:t.location.href},t.getBodyElement=function(t){return void 0===t&&(t=document),new e.Promise(function(e){t.body?e(t.body):t.addEventListener("DOMContentLoaded",function(){return e(t.body)})})},t.validateOrigin=function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())},t.createIframe=function(e){void 0===e&&(e=document);var t=e.createElement("iframe");return t.style.position="absolute",t.style.height="0px",t.style.width="0px",t.style.visibility="hidden",t};var i=1;t.generateId=function(){return String(i++)},t.getAllClassMethodsNames=function(e){var t=[],i=e.prototype;do try{var o=Object.getOwnPropertyNames(i).map(function(e){return e.toString()}).sort().filter(function(e,o,n){return"function"==typeof i[e]&&"constructor"!==e&&(0==o||e!==n[o-1])&&t.indexOf(e)===-1});t=t.concat(o)}catch(e){for(var n=Object.getOwnPropertyNames(i).map(function(e){return e.toString()}).sort(),o=[],r=0;r<n.length;r++){var s=n[r];"function"!=typeof i[s]||"constructor"===s||0!=r&&s===n[r-1]||t.indexOf(s)!==-1||o.push(s)}t=t.concat(o)}while((i=Object.getPrototypeOf(i))&&Object.getPrototypeOf(i));return t}}(i=t.utils||(t.utils={}))}(i=t.proxy||(t.proxy={}))}(t=e.services||(e.services={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e){return Boolean(e.signal)}e.isSignalRequest=t}(t=e.proxy||(e.proxy={}))}(t=e.services||(e.services={}))}(gigya||(gigya={})),!function(e,t){e.ES6Promise=t()}(this,function(){"use strict";function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function t(e){return"function"==typeof e}function i(e){W=e}function o(e){J=e}function n(){return function(){return process.nextTick(u)}}function r(){return"undefined"!=typeof H?function(){H(u)}:c()}function s(){var e=0,t=new Y(u),i=document.createTextNode("");return t.observe(i,{characterData:!0}),function(){i.data=e=++e%2}}function a(){var e=new MessageChannel;return e.port1.onmessage=u,function(){return e.port2.postMessage(0)}}function c(){var e=setTimeout;return function(){return e(u,1)}}function u(){for(var e=0;e<B;e+=2){var t=$[e],i=$[e+1];t(i),$[e]=void 0,$[e+1]=void 0}B=0}function l(){try{var e=require,t=e("vertx");return H=t.runOnLoop||t.runOnContext,r()}catch(e){return c()}}function p(e,t){var i=arguments,o=this,n=new this.constructor(g);void 0===n[te]&&E(n);var r=o._state;return r?!function(){var e=i[r-1];J(function(){return P(r,n,e,o._result)})}():w(o,n,e,t),n}function d(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var i=new t(g);return b(i,e),i}function g(){}function h(){return new TypeError("You cannot resolve a promise with itself")}function f(){return new TypeError("A promises callback cannot return that same promise.")}function m(e){try{return e.then}catch(e){return re.error=e,re}}function v(e,t,i,o){try{e.call(t,i,o)}catch(e){return e}}function _(e,t,i){J(function(e){var o=!1,n=v(i,t,function(i){o||(o=!0,t!==i?b(e,i):I(e,i))},function(t){o||(o=!0,S(e,t))},"Settle: "+(e._label||" unknown promise"));!o&&n&&(o=!0,S(e,n))},e)}function y(e,t){t._state===oe?I(e,t._result):t._state===ne?S(e,t._result):w(t,void 0,function(t){return b(e,t)},function(t){return S(e,t)})}function k(e,i,o){i.constructor===e.constructor&&o===p&&i.constructor.resolve===d?y(e,i):o===re?S(e,re.error):void 0===o?I(e,i):t(o)?_(e,i,o):I(e,i)}function b(t,i){t===i?S(t,h()):e(i)?k(t,i,m(i)):I(t,i)}function T(e){e._onerror&&e._onerror(e._result),A(e)}function I(e,t){e._state===ie&&(e._result=t,e._state=oe,0!==e._subscribers.length&&J(A,e))}function S(e,t){e._state===ie&&(e._state=ne,e._result=t,J(T,e))}function w(e,t,i,o){var n=e._subscribers,r=n.length;e._onerror=null,n[r]=t,n[r+oe]=i,n[r+ne]=o,0===r&&e._state&&J(A,e)}function A(e){var t=e._subscribers,i=e._state;if(0!==t.length){for(var o=void 0,n=void 0,r=e._result,s=0;s<t.length;s+=3)o=t[s],n=t[s+i],o?P(i,o,n,r):n(r);e._subscribers.length=0}}function x(){this.error=null}function D(e,t){try{return e(t)}catch(e){return se.error=e,se}}function P(e,i,o,n){var r=t(o),s=void 0,a=void 0,c=void 0,u=void 0;if(r){if(s=D(o,n),s===se?(u=!0,a=s.error,s=null):c=!0,i===s)return void S(i,f())}else s=n,c=!0;i._state!==ie||(r&&c?b(i,s):u?S(i,a):e===oe?I(i,s):e===ne&&S(i,s))}function C(e,t){try{t(function(t){b(e,t)},function(t){S(e,t)})}catch(t){S(e,t)}}function R(){return ae++}function E(e){e[te]=ae++,e._state=void 0,e._result=void 0,e._subscribers=[]}function K(e,t){this._instanceConstructor=e,this.promise=new e(g),this.promise[te]||E(this.promise),z(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?I(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&I(this.promise,this._result))):S(this.promise,L())}function L(){return new Error("Array Methods must be provided an Array")}function O(e){return new K(this,e).promise}function M(e){var t=this;return new t(z(e)?function(i,o){for(var n=e.length,r=0;r<n;r++)t.resolve(e[r]).then(i,o)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function N(e){var t=this,i=new t(g);return S(i,e),i}function G(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function U(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(e){this[te]=R(),this._result=this._state=void 0,this._subscribers=[],g!==e&&("function"!=typeof e&&G(),this instanceof F?C(this,e):U())}function q(){var e=void 0;if("undefined"!=typeof global)e=global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var i=null;try{i=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===i&&!t.cast)return}e.Promise=F}var j=void 0;j=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var z=j,B=0,H=void 0,W=void 0,J=function(e,t){$[B]=e,$[B+1]=t,B+=2,2===B&&(W?W(u):ee())},V="undefined"!=typeof window?window:void 0,X=V||{},Y=X.MutationObserver||X.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),Z="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,$=new Array(1e3),ee=void 0;ee=Q?n():Y?s():Z?a():void 0===V&&"function"==typeof require?l():c();var te=Math.random().toString(36).substring(16),ie=void 0,oe=1,ne=2,re=new x,se=new x,ae=0;return K.prototype._enumerate=function(){for(var e=this.length,t=this._input,i=0;this._state===ie&&i<e;i++)this._eachEntry(t[i],i)},K.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,o=i.resolve;if(o===d){var n=m(e);if(n===p&&e._state!==ie)this._settledAt(e._state,t,e._result);else if("function"!=typeof n)this._remaining--,this._result[t]=e;else if(i===F){var r=new i(g);k(r,e,n),this._willSettleAt(r,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(o(e),t)},K.prototype._settledAt=function(e,t,i){var o=this.promise;o._state===ie&&(this._remaining--,e===ne?S(o,i):this._result[t]=i),0===this._remaining&&I(o,this._result)},K.prototype._willSettleAt=function(e,t){var i=this;w(e,void 0,function(e){return i._settledAt(oe,t,e)},function(e){return i._settledAt(ne,t,e)})},F.all=O,F.race=M,F.resolve=d,F.reject=N,F._setScheduler=i,F._setAsap=o,F._asap=J,F.prototype={constructor:F,then:p,catch:function(e){return this.then(null,e)}},F.polyfill=q,F.Promise=F,F});var gigya;!function(e){e.Promise=window.ES6Promise}(gigya||(gigya={}));var __gig_awaiter=this&&this.__gig_awaiter||function(e,t,i,o){return new(i||(i=Promise))(function(n,r){function s(e){try{c(o.next(e))}catch(e){r(e)}}function a(e){try{c(o.throw(e))}catch(e){r(e)}}function c(e){e.done?n(e.value):new i(function(t){t(e.value)}).then(s,a)}c((o=o.apply(e,t)).next())})},__gig_generator=this&&this.__gig_generator||function(e,t){function i(e){return function(t){return o([e,t])}}function o(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(s=r[2&i[0]?"return":i[0]?"throw":"next"])&&!(s=s.call(r,i[1])).done)return s;switch(r=0,s&&(i=[0,s.value]),i[0]){case 0:case 1:s=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(s=a.trys,!(s=s.length>0&&s[s.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!s||i[1]>s[0]&&i[1]<s[3])){a.label=i[1];break}if(6===i[0]&&a.label<s[1]){a.label=s[1],s=i;break}if(s&&a.label<s[2]){a.label=s[2],a.ops.push(i);break}s[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=s=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}var n,r,s,a={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return{next:i(0),throw:i(1),return:i(2)}},gigya;!function(e){var t;!function(t){var i;!function(t){var i=function(){function i(i,o,n,r,s,a){void 0===o&&(o=6e4),void 0===n&&(n=t.utils.generateId),void 0===r&&(r=t.utils.createIframe),void 0===s&&(s=function(){return new e.Promise(function(e){document.body?e(document.body):document.addEventListener("DOMContentLoaded",function(){return e(document.body)})})}),void 0===a&&(a=window);var c=this;this.url=i,this.timeout=o,this._idCreator=n,this._iframeCreator=r,this.getIframeHost=s,this._win=a,this._pendingReqs=[],this.onResponse=function(t){var i=e.utils.JSON.parse(t.data);c.validateOrigin(t.origin)&&i&&c._pendingReqs[i.id]&&(c._pendingReqs[i.id](i),delete c._pendingReqs[i.id])}}return Object.defineProperty(i.prototype,"isInit",{get:function(){return Boolean(this._iframe)},enumerable:!0,configurable:!0}),i.prototype.init=function(){var t=this;return this.isInit?e.Promise.reject("proxy already initialized"):new e.Promise(function(e,i){t._iframe=t._iframeCreator(),t._iframe.src=t.url,t.getIframeHost().then(function(o){t._iframeHost=o,t._iframeHost.appendChild(t._iframe),t._win.addEventListener("message",t.onResponse,!0);var n=t._win.setTimeout(function(){return i("proxy init timeout")},t.timeout),r=function(o){if(t.validateOrigin(o.origin)){var s=JSON.parse(o.data);if(s.signal)switch(t._win.clearTimeout(n),t._win.removeEventListener("message",r,!0),s.signal){case"listening":t._win.addEventListener("message",t.onResponse,!0),e(s.res);break;case"error":case"stop":i(s.res);break;default:i("unsupported response")}}};t._win.addEventListener("message",r,!0)})})},i.prototype.validateOrigin=function(e){return t.utils.validateOrigin(this._iframe.src,e)},i.prototype.postToIFrame=function(e){var t=this.registerMessage(e),i="object"==typeof e?JSON.stringify(e):e;return this._iframe.contentWindow.postMessage(i,this._iframe.src),t},i.prototype.registerMessage=function(t,i){var o=this;return void 0===i&&(i=this.timeout),new e.Promise(function(e,n){var r=o._win.setTimeout(function(){n("proxy request timeout")},i);o._pendingReqs[t.id]=function(t){o._win.clearTimeout(r),"error"===t.signal?n(t.res):e(t.res)}})},i.prototype.sendRequest=function(e,t){return this.postToIFrame({id:this._idCreator(),methodName:e,params:t})},i.prototype.stop=function(t){return void 0===t&&(t=!1),__gig_awaiter(this,void 0,e.Promise,function(){var e,i;return __gig_generator(this,function(o){switch(o.label){case 0:if(this.isInit)return[3,1];throw"proxy is not active";case 1:e=void 0,o.label=2;case 2:return o.trys.push([2,4,5,6]),[4,this.postToIFrame({id:this._idCreator(),signal:"stop"})];case 3:return[2,o.sent()];case 4:throw i=o.sent(),e=i,i;case 5:return e&&!t||(this._win.removeEventListener("message",this.onResponse,!0),this._iframeHost.removeChild(this._iframe),delete this._iframe),[7];case 6:return[2]}})})},i.prototype.wrapWith=function(e){var i;if("function"==typeof e)i=t.utils.getAllClassMethodsNames(e);else if(e instanceof Array)i=e;else{if("object"!=typeof e)throw"unsupported type for wrapper";i=Object.keys(e)}return this.proxyFromKeys(i)},i.prototype.proxyFromKeys=function(e){var t=this,i={};return e.forEach(function(e){return i[e]=function(){for(var i=[],o=0;o<arguments.length;o++)i[o]=arguments[o];return t.sendRequest(e,i)}}),i},i}();t.ServiceProxy=i}(i=t.proxy||(t.proxy={}))}(t=e.services||(e.services={}))}(gigya||(gigya={}));var gigya;!function(e){function t(e,t){if(!t&&e&&(t=e.context),t){var i=o[t];i&&i.handleResponse(e)}}function i(t,i,o){var n=o.jsSdkRequestId;if(n)return n;if(o.disableCache||e.localInfo.isSafari||e.localInfo.isIE10&&t.indexOf("accounts.getAccountInfo")>-1)return"R"+(new Date).getTime()+"_"+Math.random();var r=e.utils.object.clone(i);for(var s in r)r.hasOwnProperty(s)&&(0!==s.indexOf("fb_")&&"source"!==s&&"sourceData"!==s||delete r[s]);return"R"+e.utils.object.getMurmurHash(Math.random().toString()+t+e.utils.object.getHash(r))}e.callback=t;var o={},n=function(){function t(e,t,o,n,r,s){void 0===r&&(r={}),void 0===s&&(s=i(t,o,r));var a=this;this.baseDomain=e,this.method=t,this.params=o,this.callback=n,this.settings=r,this.id=s,this.getUrl=function(){return a.baseDomain+"/"+a.method},this.ifrName="gigyaPostIframe_"+(new Date).getTime(),this.retry=0}return t.prototype.send=function(t){var i=this;if(!this.inProgress){o[this.id]=this,this.inProgress=!0,this.addDefaultParams();var n=e.utils.keyValue.serialize(this.params);if(!t&&this.settings.cacheTimeout){var r=this.getCacheKey();return void e.utils.sessionCache.get(r,this.settings.cacheTimeout,function(t){t?(delete i.settings.cacheTimeout,e.callback(t,i.id)):(i.inProgress=!1,i.send(!0))})}var s=0,a=4096;e.localInfo.isIE&&(s=2048);var c=this.getUrl()+"?"+n;c.length+s<=a&&!this.settings.forcePost?e.utils.script.load(c,function(){e.callback({context:i.id,errorCode:500026,errorMessage:"Network_error"})}):e.utils.functions.invokeOnPageLoad(function(){var t=document.getElementById("gigyaRequestForms");null==t&&(t=document.createElement("span"),t.id="gigyaRequestForms",t.style.display="none",e.utils.DOM.appendToBody(t));var o=i.getPostContainer();t.appendChild(o)})}},t.prototype.handleResponse=function(t){var i=this;if(this.settings.cacheTimeout&&e.utils.sessionCache.set(this.getCacheKey(),0==t.errorCode?t:null),null!=this.retryTimerID&&window.clearTimeout(this.retryTimerID),this.inProgress=!1,100001==t.errorCode){var o=this.getDataPendingTimeout(this.retry++);if(o>0)return void window.setTimeout(function(){i.send()},o)}else this.dispose(),this.callback(t)},t.prototype.addDefaultParams=function(){this.params.format="jsonp",this.params.callback="gigya.callback",this.params.context=this.id},t.prototype.getCacheKey=function(){return this.method+"_"+e.utils.keyValue.serialize(this.params)},t.prototype.createParamFormElements=function(){var t=[];for(var i in this.params)t=t.concat(['<textarea name="',i,'">']),"object"==typeof this.params[i]?t.push(e.utils.URL.URLEncode(e.utils.JSON.serialize(this.params[i]))):t.push(this.params[i]),t.push("</textarea>");return t.join("")},t.prototype.getPostContainer=function(){var t,i=this;if(!this.postContainerElem){t=document.createElement("span");var o=this.ifrName+"form",n=this.id;t.innerHTML=['<form accept-charset="UTF-8" id="',o,'" method="post"',' action="',this.getUrl(),"?context="+this.id+"&saveResponseID="+this.id+'" target="',this.ifrName,'">',this.createParamFormElements(),'<input name="utf8" type="hidden" value="&#x2713;" />','<input type="submit" value="" /></form>'].join("");var r,s=e.utils.DOM.createElement("iframe",this.ifrName);s.setAttribute("id",this.ifrName),e.utils.DOM.addEventListener(s,"load",function(){r?i.getSavedFormResponse(n):(window.setTimeout(function(){var e=document.getElementById(o);e&&e.submit()},10),r=!0)}),t.appendChild(s),this.postContainerElem=t}return t},t.prototype.getSavedFormResponse=function(i){var o=this;new t(this.baseDomain,"socialize.getSavedResponse",{APIKey:this.params.APIKey,saveResponseID:this.id,ucid:this.params.ucid,noAuth:!0,sdk:"js_"+e.build.version},function(e){o.handleResponse(e)},(void 0),i).send()},t.prototype.getDataPendingTimeout=function(e){return e<=4?500:e<=8?1e3:e<=21?2e3:e<=39?5e3:-1},t.prototype.dispose=function(){delete o[this.id],this.postContainerElem&&e.utils.DOM.removeElement(this.postContainerElem),delete this.postContainerElem},t}();e.JsonpRequest=n}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i="apiDomain",o=function(){function t(t,o){void 0===t&&(t=e.partnerSettings.ssoKey),void 0===o&&(o=e.utils.localStorage.initializeAdapter(e.utils.localStorage.CookieStorageAdapter)),this._ssoKey=t,this._storage=o,this._cookieName=i+"_"+this._ssoKey}return t.prototype.get=function(){return this._ssoKey?this._storage.getItem(this._cookieName):void 0},t.prototype.set=function(e){this._ssoKey&&this._storage.setItem(this._cookieName,e)},t}();t.GroupApiDomainService=o}(t=e.services||(e.services={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i=1;t.TokenKeys={GMID:"gig_gmid",UCID:"gig_ucid",GMID_TICKET:"gmidTicket",GMID_TICKET_EXPIRATION_TIME:"gmidTicketExpiration"};var o=function(){function o(t,i,o,n,r,s){void 0===n&&(n=new e.services.GroupApiDomainService),void 0===r&&(r=e.JsonpRequest),this._apiKey=t,this._hasGmid=i,this._domainResolver=o,this._groupApiDomainService=n,this._requestClass=r,s&&(this._storage=s)}return o.prototype.getApiDomain=function(t){return __gig_awaiter(this,void 0,e.Promise,function(){return __gig_generator(this,function(e){return[2,this._domainResolver.getApiDomain(t)]})})},o.prototype.bootstrap=function(){return __gig_awaiter(this,void 0,e.Promise,function(){var t,i,o;return __gig_generator(this,function(n){switch(n.label){case 0:return this._storage?[3,2]:(t=this,[4,new e.Promise(function(t){e.utils.localStorage.waitForService(function(e){t(e)})})]);case 1:t._storage=n.sent(),n.label=2;case 2:return this._hasGmid?[3,6]:this.canSaveGmidAsCookie()?[4,this.sendRequest({methodName:"accounts.webSdkBootstrap",params:{apiKey:this._apiKey},settings:{forceHttps:!0}})]:[3,4];case 3:if(i=n.sent(),0!=i.errorCode)throw"error bootstrapping sdk\n"+JSON.stringify(i,null,4);return[3,6];case 4:return[4,this.setupWithStorage()];case 5:n.sent(),this._useStorage=!0,n.label=6;case 6:return this._useStorage?[4,this.getGmidTicket()]:[3,8];case 7:return o=n.sent(),[3,9];case 8:this.cleanStorage(),n.label=9;case 9:return[2,{ticketInfo:o}]}})})},o.prototype.setGroupApiDomain=function(t){return __gig_awaiter(this,void 0,e.Promise,function(){return __gig_generator(this,function(e){return this._groupApiDomainService.set(t),[2]})})},o.prototype.canSaveGmidAsCookie=function(){return this._domainResolver.isApiDomainFirstParty||e.utils.cookie.canSaveCookie()},o.prototype.sendRequest=function(i){var o=this;return new e.Promise(function(n,r){if(!i)return r("ApiService: request data must has methodName and params");var s=i.methodName,a=e.utils.object.clone(i.params,!0,!0);a.pageURL=o._domainResolver.originDomain,o._useStorage&&(a.gmid=o._storage.getItem(t.TokenKeys.GMID),a.ucid=o._storage.getItem(t.TokenKeys.UCID)),o.getApiDomain(s).then(function(t){var r=new o._requestClass("https://"+t,s,a,function(t){var i=e.utils.JSON.serialize(t);e.utils.JSON.deserialize(i,void 0)||(t={errorCode:400004,errorMessage:"Invalid parameter format.\nOne of the parameters of this request has been set with a value which is not in the expected format."}),n(t)},i.settings);r.send()})})},o.prototype.setupWithStorage=function(){return __gig_awaiter(this,void 0,e.Promise,function(){var i,o,n,r;return __gig_generator(this,function(s){switch(s.label){case 0:return i=Boolean(this._storage.getItem(t.TokenKeys.GMID)),o=parseInt(this._storage.getItem(t.TokenKeys.GMID_TICKET_EXPIRATION_TIME)),i?[3,2]:[4,this.getIds()];case 1:if(n=s.sent(),!n.gcid||!n.ucid)throw"ApiService getIDs: the request to the endpoint failed";return this._storage.setItem(t.TokenKeys.GMID,n.gcid),this._storage.setItem(t.TokenKeys.UCID,n.ucid),r=this.createTicketResponse(n.gmidTicket),this.updateGmidTicket(r),[3,3];case 2:e.utils.validation.isLaterThanNow(o)||this.refreshGmidTicketFromServer(),s.label=3;case 3:return[2]}})})},o.prototype.getGmidTicket=function(i){return void 0===i&&(i=!1),__gig_awaiter(this,void 0,e.Promise,function(){ var o,n;return __gig_generator(this,function(r){switch(r.label){case 0:return o=this._storage.getItem(t.TokenKeys.GMID_TICKET),o||i?[3,1]:[2,void 0];case 1:return n=parseInt(this._storage.getItem(t.TokenKeys.GMID_TICKET_EXPIRATION_TIME)),o&&e.utils.validation.isLaterThanNow(n)?[2,{gmidTicket:o,expirationTime:parseInt(this._storage.getItem(t.TokenKeys.GMID_TICKET_EXPIRATION_TIME))}]:[3,2];case 2:return this.deleteGmidTicket(),[4,this.refreshGmidTicketFromServer()];case 3:return[2,r.sent()]}})})},o.prototype.refreshGmidTicketFromServer=function(){return __gig_awaiter(this,void 0,e.Promise,function(){var e;return __gig_generator(this,function(i){switch(i.label){case 0:return[4,this.createGmidTicket(this._storage.getItem(t.TokenKeys.GMID))];case 1:return e=i.sent(),this.updateGmidTicket(e),[2,e]}})})},o.prototype.updateGmidTicket=function(e){this._storage.setItem(t.TokenKeys.GMID_TICKET,e.gmidTicket),this._storage.setItem(t.TokenKeys.GMID_TICKET_EXPIRATION_TIME,String(e.expirationTime))},o.prototype.deleteGmidTicket=function(){this._storage.removeItem(t.TokenKeys.GMID_TICKET),this._storage.removeItem(t.TokenKeys.GMID_TICKET_EXPIRATION_TIME)},o.prototype.cleanStorage=function(){this._storage.removeItem(t.TokenKeys.GMID),this._storage.removeItem(t.TokenKeys.UCID),this.deleteGmidTicket()},o.prototype.getIds=function(){return this.sendRequest({methodName:"socialize.getIDs",params:{APIKey:this._apiKey,includeTicket:!0},settings:{forceHttps:!0}})},o.prototype.createGmidTicket=function(t,i){var o=this;void 0===i&&(i=e.gmidTicketExpiration);var n={apiKey:this._apiKey,expires:i};return t&&(n.gmid=t),this.sendRequest({methodName:"socialize.getGmidTicket",params:n,settings:{forceHttps:!0}}).then(function(e){return o.createTicketResponse(e.gmidTicket)})},o.prototype.createTicketResponse=function(e){var t=new Date;t.setHours(t.getHours()+i);var o=t.getTime();return{gmidTicket:e,expirationTime:o}},o}();t.ApiService=o}(t=e.services||(e.services={}))}(gigya||(gigya={})),gigya.isGigya||(gigya.isGigya=!0);var gigya;!function(e){var t;!function(t){var i;!function(i){var o;!function(o){function n(e){return new s(e)}var r="gig_hasGmid";e._.apiAdapters.gmidTicket="",o.newApiAdapter=n;var s=function(){function n(e){this.adapterSettings=e,this.name="Web"}return n.prototype.init=function(t){return __gig_awaiter(this,void 0,e.Promise,function(){var i,n,s,a,c=this;return __gig_generator(this,function(u){switch(u.label){case 0:return u.trys.push([0,3,,4]),i="ver2"===e.utils.cookie.get(r),n=o,[4,this.createApiService(i)];case 1:return n.apiService=u.sent(),[4,o.apiService.bootstrap()];case 2:return s=u.sent(),s.ticketInfo?this.setGmidTicketRefreshTime(s.ticketInfo):e.utils.cookie.set(r,"ver2"),e.utils.functions.createAlias("gigya.auth.loginToken.get",o.tokenStore.get),this.isSessionValid(void 0,function(i){c.checkReturnFromURL(),!i&&e.partnerSettings.ssoKey?o.sso.getGroupToken({callback:function(e){e&&o.tokenStore.setFromSsoResponse(e),t()}}):t()}),[3,4];case 3:return a=u.sent(),e.events.dispatchErrorFromResponse({eventName:"init"},{status:"FAIL_TO_BOOTSTRAP",statusMessage:"Web SDK failed to not bootstrap",errorCode:500026,errorMessage:"Web SDK failed to bootstrap: "+(a.message||a)}),t(),[3,4];case 4:return[2]}})})},n.prototype.createApiService=function(i){return __gig_awaiter(this,void 0,e.Promise,function(){var o,n,r,s,a,c;return __gig_generator(this,function(u){switch(u.label){case 0:return o=e.thisScript.globalConf.storageDomainOverride||"cdns."+e.dataCenter+"."+e.defaultApiDomain,n="https://"+o+"/gs/webSdk/Api.aspx?apiKey="+encodeURIComponent(e.thisScript.APIKey)+"#origin="+document.location.href+"&hasGmid="+i,r=new e.services.proxy.ServiceProxy(n),[4,r.init()];case 1:return s=u.sent(),e.partnerSettings.plugins.apiDomain=s.apiDomain,e._.getApiDomain=e._.apiDomainFactory(s.apiDomain,e.defaultApiDomain),a=t.Uri.parse(s.apiDomain),c="false"===e.thisScript.URLParams.bootstrap,a.isBaseOf(n)&&!c?[2,r.wrapWith(e.services.ApiService)]:(r.stop(!0),c&&(i=!0),[2,new e.services.ApiService(e.thisScript.APIKey,i,{originDomain:location.href,isGroupApiDomain:s.isGroupApiDomain,getApiDomain:e._.getApiDomain,isApiDomainFirstParty:!0})])}})})},n.prototype.isSessionValid=function(e,t){void 0===e&&(e={}),o.tokenStore.setFromGAC(e,function(){if(t){var i=null!=o.tokenStore.get(e.APIKey)||null!=e.oauth_token;t(i)}})},n.prototype.registerForNamespaceEvents=function(e){},n.prototype.onPluginEvent=function(e){},n.prototype.onJSLog=function(e,t){},n.prototype.sendRequest=function(i,n,r,s){var a=this;void 0===s&&(s={}),this.beforeRequest(i,n,s);var c=function(t,i){a.afterResponse(l,t,function(){"function"==typeof i&&i(e.utils.object.clone(t,!0))})},u=function(e){c(e,r)},l=new o.ApiRequest(i,n,u,s);l.send(),t.logoutMethods[i]&&t.logoutBehaviour.logoutBeforeServerResponse&&this.clearSession(n)},n.prototype.clearSession=function(e,t){o.tokenStore.remove(e.APIKey),t&&t()},n.prototype.sendOauthRequest=function(t,i,n,r){var s=this;this.beforeRequest(t,i,r);var a=(r.forceHttps?"https":"http")+"://"+e._.getApiDomain("socialize"),c=new o.OauthRequest("",a,t,i,function(e){s.afterResponse(c,e,function(e){"0"==e.errorCode?o.apiService.bootstrap().then(function(){n(e)}):n(e)})},r);c.send()},n.prototype.beforeRequest=function(i,n,r){void 0===r&&(r={}),(r.clearSession||r.clearSessionCondition&&r.clearSessionCondition(n))&&o.tokenStore.remove(n.APIKey),!e.utils.localStorage.getItem("_gig_3pc_enabled")&&e.thisScript.globalConf.enableSSOToken&&t.loginMethods[i]&&(n.includeSSOToken=!0),r.forceHttps=this.useHttps(n,r)},n.prototype.afterResponse=function(e,t,i){var o=this;this.handleTokenResponse(e,t,function(){o.logoutSsoIfNeeded(e,t,function(){i(t)})})},n.prototype.useHttps=function(t,i){void 0===i&&(i={});var n=t&&(o.tokenStore.get()||t.regToken||t.oauth_token)&&!t.noAuth||i.forceHttps||"https"===e.thisScript.protocol;return n},n.prototype.onSDKEvent=function(e){},n.prototype.getTokenParam=function(e,t){return o.tokenStore.getTokenParam(e,t)},n.prototype.checkReturnFromURL=function(){var i=e.utils.URL.getParamsFromURL(document.location.href);i.gig_events&&0==i.errorCode&&null!=o.tokenStore.get()&&o.sso.setGroupTokenFromResponse({errorCode:0,login_token:o.tokenStore.get(),expires_in:i.expires_in},function(o){var n=i.gig_events.split(",");e.utils.array.indexOf(n,"accounts.login")!==-1?e.accounts.getAccountInfo({extraProfileFields:"samlData",include:"profile,data,userinfo",callback:function(i){var o={errorCode:0,eventName:"accounts.login"};if(e.utils.object.extractProperties(i,o,"signature|UIDSig|timestamp|UIDSignature|signatureTimestamp|UID|profile|data"),e.events.global.dispatchWhenHandlerAdded(o),e.utils.array.indexOf(n,"socialize.login")!==-1){var r=t.addUserInfoToEvent(i,{errorCode:0,eventName:"socialize.login"},!0);e.events.global.dispatchWhenHandlerAdded(r)}}}):e.socialize.getUserInfo({signIDs:!0,extraFields:"samlData",callback:function(t){for(var i=0;i<n.length;i++){var o=e._.addUserInfoToEvent(t,{errorCode:0,eventName:n[i]},!0);e.events.global.dispatchWhenHandlerAdded(o)}}})})},n.prototype.setNewLoginTokenFromResponse=function(t,i,n){var r=i.sessionInfo?i.sessionInfo.login_token:i.login_token;if(r){var s=null!=i.sessionInfo?i.sessionInfo.expires_in:i.expires_in;(!s||0==s)&&t.params.sessionExpiration<0&&(s=e.utils.cookie.getInfiniteExpirationTimeInSeconds()),o.tokenStore.set(t.params.APIKey,r,s),e.utils.cookie.remove("gltexp_"+t.params.APIKey),e.reports.trackAddressBarShares(),o.sso.setGroupTokenFromResponse(i,n)}else n()},n.prototype.onInvalidTokenResponse=function(e,t){return e.paramsLoginToken?void t():void o.sso.getGroupToken({callback:function(i){i&&i.login_token&&i.login_token.split("|")[0]!==e.sentLoginToken&&!e.paramsLoginToken?o.apiService.bootstrap().then(function(t){o.tokenStore.setFromSsoResponse(i,e.params.APIKey),e.params.login_token=void 0,e.send()},function(e){}):(o.tokenStore.remove(e.params.APIKey),e.settings.requiresSession()?t():(delete e.params.login_token,delete e.sentLoginToken,e.send(t)))}})},n.prototype.handleTokenResponse=function(n,r,s){var a=this;if(r=e.utils.object.clone(r),403030==r.errorCode){if(this.shouldWaitForService(n,r))return}else 409012==r.errorCode&&(i.gmidTicket=null,e.utils.localStorage.removeItem("_gig_gmidt"));n.sentLoginToken&&t.logoutMethods[n.methodName]&&0==r.errorCode&&r.logoutActiveSession&&this.clearSession(n.params),e.partnerSettings.ssoKey&&n.sentLoginToken&&0==r.errorCode&&n.params.loginTokenExp&&o.sso.setLoginTokenExp({loginTokenExp:n.params.loginTokenExp}),this.setNewLoginTokenFromResponse(n,r,function(){n.sentLoginToken&&403005==r.errorCode?a.onInvalidTokenResponse(n,s):s()})},n.prototype.logoutSsoIfNeeded=function(i,n,r){var s=this;e.partnerSettings.ssoKey&&t.logoutMethods[i.methodName]&&0==n.errorCode&&n.logoutActiveSession&&document.location.href!=e.partnerSettings.ssoLogoutUrl?o.sso.logout({callback:function(e){var t;void 0!==i.params.sustainLogoutURLs&&(t=!i.params.sustainLogoutURLs),s.loadLogoutUrls(e.logoutURLs,r,{UID:n.UID,UIDSignature:n.UIDSignature,signatureTimestamp:n.signatureTimestamp},t)}}):r()},n.prototype.loadLogoutUrls=function(t,i,o,n){for(var r=0,s=t?t.split(","):[],a=function(){r++,r>s.length&&i()},c=0;c<s.length;c++)if(s[c]){var u=e.utils.URL.addParamsToURL(s[c],o);this.loadLogoutUrl(u,a,n)}else a();a()},n.prototype.loadLogoutUrl=function(t,i,o){void 0===o&&(o=5e3);var n=document.createElement("iframe");n.src=t,n.style.position="absolute",n.style.top="-1000px",n.style.left="-1000px";var r=!1,s=function(){r=!0,o!==!1&&n.parentElement.removeChild(n),i()};window.setTimeout(function(){r||s()},o),n.onload=function(){s()},e.utils.DOM.appendToBody(n)},n.prototype.shouldWaitForService=function(t,i){return!!t.params.retryPossible&&(t.params.retryPossible=!1,e.external.facebook.runWhenLoaded(function(){t.send()}),!0)},n.prototype.setGmidTicketRefreshTime=function(t){var i=this;e._.apiAdapters.gmidTicket=t.gmidTicket;var n=this.calculateGmidTicketNextRun(t.expirationTime);setTimeout(function(){o.apiService.getGmidTicket().then(function(e){return i.setGmidTicketRefreshTime(e)})},n)},n.prototype.calculateGmidTicketNextRun=function(e){var t=new Date(e).getTime();return t-(new Date).getTime()},n}();o.WebAdapter=s}(o=i.web||(i.web={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){e.isSessionFromSso=!1}(t=e.apiAdapters||(e.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(i){var n;!function(i){function n(e){return new m(e)}i.newApiAdapter=n,i.mobileCallbacks={};var o="gsapi://",s="is_session_valid",a="send_request",r="send_oauth_request",l="get_ids",p="on_plugin_event",u="on_custom_event",c="register_for_namespace_events",d="clear_session",g="on_js_log",f=[s,a,r,l,p,u,c],v={logLevel:[]},m=function(){function n(e){this.adapterSettings=e,this.name="Mobile"}return n.prototype.init=function(t){var i=this;this.adapterSettings&&"function"==typeof this.adapterSettings.getFeatures?this.features=e.utils.JSON.deserialize(this.adapterSettings.getFeatures()):this.features=f,this.adapterSettings&&"function"==typeof this.adapterSettings.getSettings?(this.settings=e.utils.JSON.deserialize(this.adapterSettings.getSettings()),this.settings.logLevel=e.utils.array.getArrayFromString(this.settings.logLevel||v.logLevel.join(","),",")):this.settings=v,e._.getApiDomain=e._.apiDomainFactory(e.partnerSettings.plugins.apiDomain,e.defaultApiDomain),e.events.addMap({defaultMethod:function(e){i.onPluginEvent(e)},eventMap:[{events:"*",args:["$event"]}]}),this.sendToMobile(l,null,function(n){i.ucid=n.ucid,i.gcid=n.gcid;for(var o in e.events.global._activeNamespaces)i.registerForNamespaceEvents(o);e.localInfo.isNativeMobileApp=!0,t(void 0)})},n.prototype.getTokenParam=function(e,t){return""},n.prototype.onPluginEvent=function(e){e.isGlobal||this.sendToMobile(p,e)},n.prototype.onCustomEvent=function(e){this.sendToMobile(u,e)},n.prototype.onJSLog=function(e,t){if(this.isLogLevelSupported(e)){var i={logType:e,logInfo:t};this.sendToMobile(g,i)}},n.prototype.registerForNamespaceEvents=function(e){this.sendToMobile(c,{namespace:e})},n.prototype.getGmidTicket=function(e){if(e){var t={expires:30},i={forceHttps:!0};this.sendRequest("socialize.getGmidTicket",t,function(t){e(t.gmidTicket)},i)}},n.prototype.clearSession=function(e,t){this.sendToMobile(d,e,t)},n.prototype.isSessionValid=function(e,t){this.sendToMobile(s,{},t)},n.prototype.sendRequest=function(e,t,i,n){this.sendToMobile(a+"/"+e,t,i,n)},n.prototype.sendOauthRequest=function(e,t,i,n){this.sendToMobile(r+"/"+e,t,i,n)},n.prototype.sendToMobile=function(t,n,s,a){if(!this.isActionSupported(t))return void(s&&s({errorCode:400096,errorMessage:"Mobile SDK does not support feature "+t}));var r=document.createElement("iframe");if(r.style.display="none",n&&delete n.APIKey,s){var l=(new Date).getTime()+"_"+Math.random();i.mobileCallbacks[l]=function(e){s(e),document.documentElement.removeChild(r),delete i.mobileCallbacks[l]}}var p=o+t+"?callbackID="+(l||"")+"&params="+(n?encodeURIComponent(e.utils.keyValue.serialize(n)):"")+"&settings="+(a?encodeURIComponent(e.utils.keyValue.serialize(a)):"");r.src=p,window.setTimeout(function(){return document.documentElement.appendChild(r)},0)},n.prototype.onSDKEvent=function(i){i&&i.user&&t.convertIdentitiesArrayToObject(i.user),e.events.global.dispatch(i)},n.prototype.isActionSupported=function(t){return!!t&&(t=t.split("/")[0].toLowerCase(),e.utils.array.indexOf(this.features,t)>-1)},n.prototype.isLogLevelSupported=function(t){return e.utils.array.indexOf(this.settings.logLevel,"*")!=-1||e.utils.array.indexOf(this.settings.logLevel,t)!=-1},n}();i.MobileAdapter=m}(n=i.mobile||(i.mobile={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){var i;!function(t){function i(t,i){var n=t.split("."),o=n.splice(n.length-1,1)[0];n.length||(n=["socialize"]),"commentsUI"==t&&(n=["comments"]);var s="show"+e.utils.stringUtils.capitalize(o);n.push(s);for(var a=e;a&&n.length;)a=a[n.shift()];return"function"!=typeof a?e.events.dispatchInvalidParamError(e.utils.object.merge([{plugin:t},i]),"plugin"):void a(i)}t.showPlugin=i}(i=t.mobile||(t.mobile={}))}(i=t.apiAdapters||(t.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={})); // end API adapters var gigya;!function(e){var t;!function(t){var i=function(){function t(t,i){void 0===i&&(i=!0),this._anchor=document.createElement("a"),i&&t.indexOf("://")===-1&&"/"!==t.charAt(0)&&(t=e.localInfo.protocol+"://"+t),this._anchor.href=t}return Object.defineProperty(t.prototype,"domain",{get:function(){return this._anchor.hostname},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"path",{get:function(){return this._anchor.pathname},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"search",{get:function(){return this._anchor.search.slice(1)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"hash",{get:function(){return this._anchor.hash.slice(1)},enumerable:!0,configurable:!0}),t.prototype.toString=function(){return this._anchor.href},t.prototype.addToSearch=function(e){for(var t in e){var i=e[t];if(("boolean"==typeof i||"number"==typeof i||"string"==typeof i)&&"eventName"!=t){var n=this._anchor.search?"&":"";this._anchor.search+=""+n+t+"="+encodeURIComponent(e[t])}}},t.prototype.isBaseOf=function(e){return t.parse(e).isIn(this)},t.prototype.isIn=function(e){return"string"==typeof e&&(e=t.parse(e)),(this.domain==e.domain||this.isSubDomainOf(e))&&(!e.path||0==this.path.indexOf(e.path))},t.prototype.isForSubDomains=function(){return 0==this.domain.indexOf(".")},t.prototype.isSubDomainOf=function(t){var i="";return t.isForSubDomains()||(i="."),i+=t.domain,e.utils.stringUtils.endsWith(this.domain,i)},t.parse=function(e,i){if(void 0===i&&(i=!0),e)return new t(e,i)},t}();t.Uri=i}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e){return e.replace(/^\s*(\S*(.*\S)?)\s*$/,"$1")}function i(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];for(var n=0;n<arguments.length-1;n++)null!=arguments[n+1]&&(e=e.split("{"+n+"}").join(arguments[n+1]));return e}function n(e){return e.substring(0,1).toUpperCase()+e.substring(1)}function o(e,t){return e.indexOf(t,e.length-t.length)!==-1}function r(e){return e.replace(/([.*+?^=!:${}()|\[\]\/\\])/g,"\\$1")}function a(e,t,i){return t?e.replace(new RegExp(r(t),"g"),i):e}e.trim=t,e.format=i,e.capitalize=n,e.endsWith=o,e.escapeRegExp=r,e.replaceAll=a}(t=e.stringUtils||(e.stringUtils={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){function i(i,n){void 0===i&&(i=r()),void 0===n&&(n=e.defaultApiDomain);var o=t.Uri.parse(i).isIn(t.Uri.parse(n));return function(e){return e&&o?e.split(".")[0]+"."+i:i}}function n(t,i,n){void 0===i&&(i=e.dataCenter),void 0===n&&(n=e.defaultApiDomain);var o=i+"."+n;return t?t+"."+o:o}function o(i,n,o){if(void 0===i&&(i=e.partnerSettings.baseDomains.split(",")),void 0===n&&(n=location.hostname),void 0===o&&(o=["gigya.com",e.defaultApiDomain]),!n)return"";var r=t.Uri.parse(n);o&&(i=i.concat(o));for(var a=0;a<i.length;a++){var s=e.utils.stringUtils.replaceAll(i[a],"*",""),c=t.Uri.parse(s);if(r.isIn(c))return c.isForSubDomains()?r.domain:c.domain}return r.domain}function r(t,i,o,r){return void 0===t&&(t=e.partnerSettings&&e.partnerSettings.customAPIDomainPrefix),void 0===i&&(i=e.localInfo.baseDomain),void 0===o&&(o=e.dataCenter),void 0===r&&(r=e.defaultApiDomain),t&&i?t+"."+i:n(void 0,o,r)}t.apiDomainFactory=i,t.getGigyaDomain=n,t.getBaseDomain=o,t.resolveApiDomain=r}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(){return e.localInfo.baseDomain||""}function n(t,n){void 0===t&&(t=e.localInfo.pageDomain),void 0===n&&(n=i());var o;return o=n.length>0&&t.length>=n.length&&t.lastIndexOf(n)===t.length-n.length?n:t}function o(e){e=e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1").replace(/^[ \t]+|[ \t]+$/g,"");var t=new RegExp("(?:^|;)\\s?"+e+"=(.*?)(?:;|$)"),i=document.cookie.match(t);return i&&unescape(i[1])}function r(i,o,r,a,c){var l=e.localInfo.pageDomain;null==a&&(a=n());var u;u=null==r||""===r||isNaN(r)?1e3*s():0==r?null:1e3*r;var g=new Date;g.setTime(g.getTime()+u);var d=i+"="+escape(o)+(c?"":"; path=/")+(null==u?"":"; expires="+g.toUTCString())+(a&&""!=a&&a.indexOf(".")!=-1?"; domain="+a:"");document.cookie=d,u&&!(u>0)||t.get(i)||(d=i+"="+escape(o)+(c?"":"; path=/")+(null==u?"":"; expires="+g.toUTCString())+(l&&""!=l&&l.indexOf(".")!=-1?"; domain="+l:""),document.cookie=d)}function a(i){var n=e.localInfo.pageDomain,o=t._getBaseDomain();o.length>0&&n.length>=o.length&&n.lastIndexOf(o)===n.length-o.length&&(r(i,"",-1,o),r(i,"",-1,o,!0)),r(i,"",-1,e.localInfo.pageDomain),r(i,"",-1,e.localInfo.pageDomain,!0),r(i,"",-1,""),r(i,"",-1,"",!0)}function s(){return 47304e4}function c(e){void 0===e&&(e=document);var t=new Date((new Date).getTime()+1e3);return e.cookie="gig3pctest=true;expires="+t.toGMTString(),e.cookie.indexOf("gig3pctest")!==-1}t._getBaseDomain=i,t.getDefaultDomain=n,t.get=o,t.set=r,t.remove=a,t.getInfiniteExpirationTimeInSeconds=s,t.canSaveCookie=c}(i=t.cookie||(t.cookie={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t=navigator.userAgent.toLowerCase();e.localInfo={baseDomain:"",isBrowserSupportsFilesAPI:function(){return"function"==typeof FileReader||"object"==typeof FileReader}(),initTime:new Date,version:0,pageDomain:document.location.hostname,protocol:"http:"==document.location.protocol?"http":"https",userAgent:t,isWin:t.indexOf("win")!=-1,isIE:t.indexOf("msie")!=-1||t.indexOf("mozilla")!=-1&&t.indexOf("trident")!=-1,isIE6:t.indexOf("msie 6.")!=-1,isIE7:t.indexOf("msie 7.")!=-1,isIE8:t.indexOf("msie 8.")!=-1,isIE9:t.indexOf("msie 9.")!=-1,isIE10:t.indexOf("msie 10.")!=-1,isIE11:t.indexOf("mozilla")!=-1&&t.indexOf("trident/7.0")!=-1,isEdge:t.indexOf("edge")!=-1,isIOS:t.indexOf("iphone")!=-1||t.indexOf("ipad")!=-1||t.indexOf("ipod")!=-1,isSafari534:t.indexOf("safari/534")!=-1,iosVersion:function(){return t.indexOf("applewebkit")!=-1&&t.indexOf("version/")!=-1?parseInt(t.split("version/")[1].split(" ")[0]):0}(),isAndroid:t.indexOf("android")!=-1,isAndroidBrowser:function(e){if(e.indexOf("mozilla/5.0")===-1)return!1;if(e.indexOf("android 4")===-1)return!1;if(e.indexOf("applewebkit")===-1)return!1;if(e.indexOf("windows phone")!==-1)return!1;var t=/chrome\/(\d+)/.exec(e);if(!t)return!0;var i=parseInt(t[1]);return i<20}(t),currentBrowser:"",androidVersion:function(){return t.indexOf("android")!=-1?parseFloat(t.slice(t.indexOf("android")+8)):0}(),isChrome:t.indexOf("chrome")!=-1&&t.indexOf("edge")==-1,isGoogleBot:t.indexOf("googlebot")!=-1,isFF:t.indexOf("firefox")!=-1,isOpera:t.indexOf("opera")!=-1,isSafari:navigator.appVersion&&navigator.appVersion.toLowerCase().indexOf("safari")!=-1&&navigator.appVersion.toLowerCase().indexOf("chrome")==-1&&t.indexOf("android")==-1,isIOSWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent),isIOSChrome:t.indexOf("crios")!=-1,isMAC:!(!navigator.appVersion||navigator.appVersion.toLowerCase().indexOf("mac")==-1),isWindowsPhone:t.indexOf("windows phone")!=-1,isFacebookBrowser:t.indexOf("fban")!=-1||t.indexOf("fbav")!=-1,supportsPostMessage:null!=window.postMessage&&(t.indexOf("msie")==-1||t.indexOf("iemobile")!=-1),supportsLocalStorage:!1,supportsSessionStorage:!1,supportsFlash:function(){var e=!1;try{if(navigator.mimeTypes&&void 0!=navigator.mimeTypes["application/x-shockwave-flash"]&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)e=!0;else{var t=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");t&&(e=!0)}}catch(e){}return e}(),quirksMode:"BackCompat"==document.compatMode&&t.indexOf("msie")!=-1,backCompat:"BackCompat"==document.compatMode,isMobile:function(){var e=["iphone","ipod","android","midp","240x320","blackberry","netfront","nokia","panasonic","portalmmm","sharp","sie-","sonyericsson","symbian","windows ce","benq","mda","mot-","opera mini","philips","pocket pc","sagem","samsung","htc"];for(var i in e)if(t.indexOf(e[i])!=-1)return!0;return!1}(),isMobileApp:function(){if(!document.getElementsByTagName)return!1;for(var e=document.getElementsByTagName("meta"),t=0;t<e.length;t++)if("viewport"==e[t].getAttribute("name")){var i=e[t].getAttribute("content");if(i&&i.indexOf("width=device-width")!==-1)return!0}return!1}(),isNativeMobileApp:!1,isTouch:function(){if("ontouchstart"in window)return!0;if("onmsgesturechange"in window)try{return new ActiveXObject("htmlfile"),!1}catch(e){return!0}return!1}(),messagingMethod:0};var i=function(e){try{var t=window[e];if(!t)return!1;var i="_gig_localStorage_test",n="just checking for localStorage";t.setItem(i,n);var o=t.getItem(i)===n;return t.removeItem(i),o}catch(e){return!1}};e.localInfo.supportsLocalStorage=i("localStorage"),e.localInfo.supportsSessionStorage=i("sessionStorage"),e.localInfo.isIE11&&!window.indexedDB&&(e.localInfo.supportsPostMessage=!1),e.localInfo.isMAC=e.localInfo.isMAC&&!e.localInfo.isIOS;var n=e.localInfo.isWin?"windows":e.localInfo.isWindowsPhone?"winphone":e.localInfo.isIOS?"ios-v"+e.localInfo.iosVersion:e.localInfo.isMAC?"mac":e.localInfo.isAndroid?"android":"";n&&(n+=" ");var o=e.localInfo.isChrome?"chrome":e.localInfo.isFF?"firefox":e.localInfo.isSafari?"safari":e.localInfo.isEdge?"edge":e.localInfo.isIE11?"ie11":e.localInfo.isIE10?"ie10":e.localInfo.isIE9?"ie9":e.localInfo.isIE8?"ie8":"";e.localInfo.currentBrowser=n+o;var r;e.partnerSettings&&e.partnerSettings.baseDomains?r=e.partnerSettings.baseDomains.split(","):(window.self===window.top&&console.log("gigya: missing base domains for site"),r=[document.location.hostname]),e.localInfo.baseDomain=e._.getBaseDomain(r)}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){function i(i){var n=e.thisScript?e.thisScript.baseDomain:"",r=e.thisScript?e.thisScript.protocol:e.localInfo.protocol;if(!n||/cdns?\.gigya\.com$/.test(n)){var a=t.CDN_HOSTS[r];a.length<=o&&(o=0),n=a[o++]}return i&&0!==i.indexOf("/")&&(i="/"+i),r+"://"+n+(i||"")}function n(){return i("/gs/i/")}var o=0;t.CDN_HOSTS={http:["cdn.gigya.com","cdn1.gigya.com","cdn2.gigya.com","cdn3.gigya.com"],https:["cdns.gigya.com","cdns1.gigya.com","cdns2.gigya.com","cdns3.gigya.com"]},t.getCdnResource=i,t.getImgCdnResource=n}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e,t){for(var i=0;i<e.length;i++)if(e[i]==t)return i;return-1}function i(e){for(var t=[],i=0;i<e.length;i++)t[i]=e[i];return t}function n(e,t){if(e)for(var i=e.length-1;i>=0;i--)e[i]==t&&e.splice(i,1)}function o(e,t,i){if(e)for(var n=e.length-1;n>=0;n--)e[n][t]==i&&e.splice(n,1)}function r(e,t,i){return e&&"string"==typeof e?(i&&(e=e.toLowerCase()),e=e.replace(/[ ]/g,"").replace(/,,/g,","),e?e.split(t):[]):[]}function a(e){for(var t=[],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(null==e)return[];for(var n=[],o=arguments.length,r=0,a=e.length;r<a;r++){var s=e[r];if(this.indexOf(n,s)==-1){for(var c=1;c<o;c++){var l=arguments[c];if(null==l||this.indexOf(l,s)==-1)break}c===o&&n.push(s)}}return n}function s(e,t,i){void 0===i&&(i=0);for(var n=e.length;--n>=i;)if(e[n]===t)return n;return-1}function c(e,t){for(var i=0;i<e.length;++i)t(e[i],i,e)}function l(e,t){for(var i in e)e.hasOwnProperty(i)&&t(e[i],i,e)}function u(e,t){for(var i=0;i<e.length;++i)if(t(e[i],i,e))return!0;return!1}function g(e,t){for(var i=0;i<e.length;++i)if(!t(e[i],i,e))return!1;return!0}function d(e,t){for(var i in e)if(e.hasOwnProperty(i)&&!t(e[i],i,e))return!1;return!0}function p(e,t){var i=new Array;return c(e,function(e,n,o){return i.push(t(e,n,o))}),i}function f(e,t){var i=-1;return u(e,function(e,n,o){return!!t(e,n,o)&&(i=n,!0)}),i}function h(e,t){return e[f(e,t)]}function m(e){var t=[];for(var i in e)"number"==typeof e[i]&&t.push(e[i]);return t}function v(e){for(var t=0;t<e.length;++t)for(var i=t+1;i<e.length;i++)e[t]===e[i]&&e.splice(i,1);return e}e.indexOf=t,e.clone=i,e.removeByValue=n,e.removeByProperty=o,e.getArrayFromString=r,e.intersect=a,e.lastIndexOf=s,e.forEach=c,e.forEachProp=l,e.some=u,e.every=g,e.everyProp=d,e.map=p,e.firstIndex=f,e.first=h,e.getAllEnumValues=m,e.getUniqueValues=v}(t=e.array||(e.array={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e,t){return function(){for(var i=[],n=0;n<arguments.length;n++)i[n]=arguments[n];return t.apply(e,i)}}e.create=t}(t=e.delegate||(e.delegate={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i){"function"==typeof t&&(t=t(i)),t instanceof Array&&(t=t.join(""));var n=/(\$)(!?)([a-z_][a-z_.\d]*)([(][^()]*[)])?|(\$)(!?)\{([a-z_][a-z_.\d]*)([(][^()]*[)])?\}/gi;n.lastIndex=0;for(var o,r=t,a=n.exec(r);null!=a;){o="$"==a[1]?0:4;var s="!"==a[2+o],c=a[3+o],l=a[4+o];null==l&&(l="");var u=0;"."==c.substring(0,1)&&(c=c.substring(1)),"DBG"==c.substring(0,3)&&(c=c.substring(3),u=1);for(var g="",d=c+l;d!=g;){g=d;var p=n.lastIndex;d=e.utils.templates.fill(g,i),n.lastIndex=p}var f="",h=0;if(null!=i[c.split(".")[0]])try{f=new Function("o","p",'return eval("o." + p)')(i,d)}catch(e){}else f="$"+(s?"!":"")+d,h=1;r=s?r.replace(a[0],""):r.substr(0,a.index)+f+r.substr(a.index+a[0].length),n.lastIndex=a.index+h,a=n.exec(r)}return r}t.fill=i}(i=t.templates||(t.templates={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(){var e=0,t=0;return"number"==typeof window.pageYOffset?(t=window.pageYOffset,e=window.pageXOffset):document.body&&(document.body.scrollLeft||document.body.scrollTop)?(t=document.body.scrollTop,e=document.body.scrollLeft):document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)&&(t=document.documentElement.scrollTop,e=document.documentElement.scrollLeft),{left:e,top:t}}function i(){var e=document.documentElement,t=document.body,i=e.clientHeight;0==i&&(i=t.clientHeight);var n=e.clientWidth;return 0==n&&(n=t.clientWidth),{w:n,h:i}}function n(){var e=parseInt(window.orientation||"0");return e<0&&(e+=360),e}function o(){var e,t,i=document.documentElement,n=document.body;return window.innerHeight?(e=window.innerHeight,t=window.innerWidth):(e=i.clientHeight,0==e&&(e=n.clientHeight),t=i.clientWidth,0==t&&(t=n.clientWidth)),{w:t,h:e}}function r(){var e=t(),i=o();return{top:e.top+Math.floor(i.h/2),left:e.left+Math.floor(i.w/2)}}function a(e){var i=t(),n=o();return e.left>=i.left&&e.right<=i.left+n.w}function s(e){var i=t(),n=o();return e.top>=i.top&&e.bottom<=i.top+n.h&&e.left>=i.left&&e.right<=i.left+n.w}function c(e){e&&e.scrollIntoView&&e.scrollIntoView()}e.getScroll=t,e.getFullSize=i,e.getOrientation=n,e.getInnerSize=o,e.getMiddleCenter=r,e.isRectHorizontallyVisible=a,e.isRectFullyVisible=s,e.scrollIntoView=c}(t=e.viewport||(e.viewport={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(gigya){var utils;!function(utils){var JSON;!function(JSON){function serialize(e,t,i,n,o){if(void 0===t&&(t=!1),void 0===i&&(i=!1),void 0===n&&(n=0),void 0===o&&(o=20),gigya.localInfo.isIE8){if(n||(n=0),n>o)return"[Too deep]";var r="",a="",s="";if(i){s="\t",a="\n";for(var c=0;c<n+1;c++)r+=s}var l=typeof e;if("function"==l)return l.toString();if("object"!=l||null===e)return"string"==l&&(e='"'+e.replace(/(\"|\\)/g,"\\$1").replace(/\r\n|\r|\n/g,"\\n")+'"'),String(e);var u,g,d=[],p=e&&e.constructor==Array;if(p)for(var c=0;c<e.length;c++)g=e[c],l=typeof g,null==g||"undefined"==l?g="":"string"==l?g='"'+g.replace(/(\"|\\)/g,"\\$1").replace(/\r\n|\r|\n/g,"\\n")+'"':"function"==l?g=t?"Function":"":g.parentNode&&g.innerHTML?g="HTMLElement":g.constructor==Date?g="":"object"==l&&null!==g&&(g=serialize(g,t,i,n+1)),""!=String(g)&&d.push(r+s+String(g));else for(u in e)g=e[u],l=typeof g,null==g||"undefined"==l?g=String(g):"string"==l?g='"'+g.replace(/(\"|\\)/g,"\\$1").replace(/\r\n|\r|\n/g,"\\n")+'"':"function"==l?g=t?"Function":"":g.parentNode&&g.innerHTML?g="HTMLElement":g.constructor==Date?g="":"object"==l&&null!==g&&(g=a+serialize(g,t,i,n+1)),""!=String(g)&&d.push(r+s+'"'+u.replace(/(\"|\\)/g,"\\$1").replace(/\r\n|\r|\n/g,"\\n")+'":'+String(g));return a+r+(p?"[":"{")+a+d.join(","+a)+a+r+(p?"]":"}")}return window.JSON.stringify(e)}function deserialize(json,defaultValue,scope){if(!json||!json.replace(/^\s+|\s+$/g,""))return defaultValue||{};try{var keys=[],values=[];if(scope)for(var key in scope)keys.push(key),values.push(scope[key]);var fn=eval("(function("+keys.join(",")+") { return "+json.trim()+"; })");return fn.apply(void 0,values)}catch(e){return console.warn("Error deserializing JavaScript",e),defaultValue||{}}}function parse(e,t){if(gigya.localInfo.isIE8)return deserialize(e,t);try{return window.JSON.parse(e)}catch(e){return t||{}}}JSON.serialize=serialize,JSON.deserialize=deserialize,JSON.parse=parse}(JSON=utils.JSON||(utils.JSON={}))}(utils=gigya.utils||(gigya.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(i){function n(e){for(var t,i=document.getElementsByTagName("script"),n=/\/\/cdn(s)?\.(ru1\.)?gigya.com/,o=i.length-1;o>=0;o--){var r=i[o],a=r.src.toLowerCase();if(""!==a&&(n.test(a)||a.indexOf("?apikey=")>-1)){var s=0===e.length||e.some(function(e){return a.indexOf(e)>-1});if(s){t=r;break}}}return t}function o(e,t){var i;try{i=new Event(t)}catch(e){i=document.createEvent("CustomEvent"),i.initCustomEvent(t,!0,!0,{})}e.dispatchEvent(i)}function r(e,t,i){e&&i&&(e.addEventListener?e.addEventListener(t,i,!0):e.attachEvent("on"+t,i))}function a(e,t,i){i&&(e.removeEventListener?e.removeEventListener(t,i,!0):e.detachEvent("on"+t,i))}function s(e){e.preventDefault?e.preventDefault():window.event&&(window.event.returnValue=!1)}function c(t){e.utils.DOM._removeDialogBackListener(),E=function(i){i&&i.newURL&&i.newURL.indexOf("|gigyaMobileDialog")==-1&&(t(i),e.utils.DOM._removeDialogBackListener())},window.setTimeout(function(){window.location.hash.indexOf("|gigyaMobileDialog")==-1&&(window.location.hash=window.location.hash+"|gigyaMobileDialog"),e.utils.DOM.addEventListener(window,"hashchange",E)},50)}function l(){E&&(e.utils.DOM.removeEventListener(window,"hashchange",E),E=null,window.location.hash=window.location.hash.replace("|gigyaMobileDialog",""))}function u(e){document.body&&(document.body.insertBefore&&document.body.firstChild?document.body.insertBefore(e,document.body.firstChild):document.body.appendChild(e))}function g(e){e&&e.parentElement&&e.parentElement.removeChild(e)}function d(e,t){for(var i=e.parentNode;i;){if(t==i)return!0;i=i.parentNode}return!1}function p(e){for(;e;){var t=getComputedStyle(e);if("none"===t.display||"hidden"===t.visibility)return!1;e=e.parentElement}return!0}function f(t){return"gig_"+e.localInfo.initTime.getTime().toString()+"_"+t}function h(t){var i;i=document.createElement("iframe"),i.id="gigya_ifr_"+t,i.frameborder="0",i.frameBorder="0",i.allowtransparency=!0,i.hidden=!0,i.style.position="absolute",e.localInfo.isChrome?(i.style.width="30px",i.style.height="1px"):(i.style.width="1px",i.style.height="1px"),null!=i.style.zIndex&&(i.style.zIndex=String(e.utils.DOM._nextZIndex++));var n=document.createElement("div");return null!=n.style.zIndex&&(n.style.zIndex=""+e.utils.DOM._nextZIndex++),n.innerHTML="",t&&(n.id=t),document.body&&(document.body.insertBefore&&document.body.firstChild?(document.body.insertBefore(i,document.body.firstChild),document.body.insertBefore(n,document.body.firstChild)):document.body.appendChild&&(document.body.appendChild(i),document.body.appendChild(n))),n}function m(e){var t=document.getElementById(e);t&&(t.style.display="none")}function v(t){var i=document.getElementById(t);i&&(i.style.display=e.localInfo.isIE6?"TD"==i.tagName?"table-cell":"TR"==i.tagName?"":"TABLE"==i.tagName?"":"block":"")}function y(e){try{var t=document.getElementById(e);null!=t&&(t.innerHTML="")}catch(e){}}function b(e,t){var i=document.createElement("div");i.style.position="absolute",i.style.left="-1000px",i.innerHTML=e,t.appendChild(i);var n=i.offsetWidth,o=i.offsetHeight;return i.parentNode.removeChild(i),{w:n,h:o}}function w(e,t,i){if(!e)return[];var n=[];i&&P(e,t)&&n.push(e);for(var o=e.getElementsByTagName("*"),r=0;r<o.length;r++)P(o[r],t)&&n.push(o[r]);return n||[]}function S(e,t,i,n){for(var o=[],r=e.getElementsByTagName(t),a=0;a<r.length;a++)r[a].getAttribute(i)==n&&o.push(r[a]);return o}function I(t){if(!t)return{left:0,top:0,bottom:0,right:0};var i=t.getBoundingClientRect(),n=e.utils.viewport.getScroll(),o=i.left+n.left,r=i.top+n.top;return{left:o,top:r,right:o+i.width,bottom:r+i.height}}function A(e,t){if(e){var i=e.className?C(e):[],n=i.length,o=t.split(" ");for(var r in o){var a=!1;if(!o[r])break;for(var s in i)if(i[s]===o[r]){a=!0;break}a||i.push(o[r])}i.length!==n&&(e.className=i.join(" "))}}function _(e,t,i){if(void 0===i&&(i=!1),e){for(var n=C(e),o=n.length-1;o>=0;o--)(n[o]===t||i&&n[o].indexOf(t)!==-1)&&n.splice(o,1);e.className=n.join(" ")}}function C(e){var t=[];return"string"==typeof e.className&&(t=e.className.split(" ")),t}function P(e,t){if(!e)return!1;if(!t)return!0;if(!e.className)return!1;for(var i=!1,n=C(e),o=0;o<n.length;o++)if(n[o]===t){i=!0;break}return i}function D(e){e&&("cancelable"in e?e.preventDefault():e.returnValue=!1)}function x(e,t){var i=document.createElement("div");return t=t||"",i.innerHTML="<"+e+' name="'+t+'" id="'+t+'"></'+e+">",i.firstChild}function k(i,n,o,r){if(null!=i&&null!=i.style){if(n){n=""+n;var a=n.indexOf("%")>0;if(!isNaN(n)||a){var s=""+(a?n:n+"px");i.style.width!=s&&(i.style.width=s)}}if(o){o=""+o;var c=o.indexOf("%")>0;if(!isNaN(n)||c){var l=""+(c?o:o+"px");i.style.height!==l&&(i.style.height=l)}}if(r&&n&&o){(null==i.style.zIndex||r)&&(i.style.zIndex=(this._nextZIndex++).toString());var u=t.viewport.getInnerSize(),g=e.utils.viewport.getScroll(),d=g.top,p=g.left;i.style.top=""+Math.max(0,d+Math.floor((u.h-o)/2))+"px",i.style.left=""+Math.max(0,p+Math.floor((u.w-n)/2))+"px",i.style.visibility=""}}}function L(t){var i=document.createElement("iframe");return i.src=t,i.style.width="30px",i.style.height="10px",i.style.position="absolute",i.style.top="-1000px",i.style.left="-1000px",document.body?e.utils.DOM.appendToBody(i):e.utils.functions.invokeOnPageLoad(function(){e.utils.DOM.appendToBody(i)}),i}function U(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;").replace(/\'/g,"&#39;")}i._nextZIndex=999999999,i._popupContainers=[],i._pseudoContainers=[];var E=null;i.getGigyaScriptElement=n,i.dispatch=o,i.addEventListener=r,i.removeEventListener=a,i.disableDefaultEventHandling=s,i.addDialogBackListener=c,i._removeDialogBackListener=l,i.appendToBody=u,i.removeElement=g,i.isChildOf=d,i.isVisible=p,i.getCenteredDivID=f,i.createTopLevelDiv=h,i.hideByID=m,i.showByID=v,i.clearByID=y,i.getHTMLSize=b,i.getElementsByClass=w,i.getElementsByAttribute=S,i.getElementPosition=I,i.addClassToElement=A,i.removeClassFromElement=_,i.getClassNames=C,i.isElementClass=P,i.cancelEvent=D,i.createElement=x,i.setSize=k,i.createHiddenIframe=L,i.attributeEncode=U}(i=t.DOM||(t.DOM={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(gigya){var utils;!function(utils){var functions;!function(functions){function callFunction(name,arParams){var fn=eval(name),arParts=name.split(".");arParts.splice(arParts.length-1,1);var scope=eval(arParts.join("."));fn.apply(scope,arParams)}function invokeOnPageLoad(e,t){if(!document.readyState&&document.body||"loaded"===document.readyState||"complete"===document.readyState||!t&&"interactive"===document.readyState&&document.body)e();else{var i=!1,n=function(){i||(i=!0,e())};window.setTimeout(n,2e4),gigya.utils.DOM.addEventListener(window,"load",n),gigya.utils.DOM.addEventListener(document,"DOMContentLoaded",n)}}function createAlias(e,t){for(var i=e.split("."),n=window,o=0;o<i.length-1;o++){var r=i[o];n[r]||(n[r]={}),n=n[r]}n[i[i.length-1]]=t}function debounce(e,t){var i=void 0;return function(){void 0!==i&&clearTimeout(i),i=setTimeout(function(){i=void 0,e()},t)}}functions.callFunction=callFunction,functions.invokeOnPageLoad=invokeOnPageLoad,functions.createAlias=createAlias,functions.debounce=debounce}(functions=utils.functions||(utils.functions={}))}(utils=gigya.utils||(gigya.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(e,t,n,o){var r;return"string"==typeof e?(r=parseInt(e),e.indexOf("%")!==-1&&(r=.01*parseInt(e)*t,o&&(r-=o/2))):r=e,r=Math.round(r),isNaN(r)&&void 0!==n&&(r=i(n,t,void 0,o)),r}function n(n,o,r){r||(r={menubar:0,toolbar:0,resizable:1,scrollbars:1}),r.width=i(r.width,screen.width,960),r.height=i(r.height,screen.height,680),r.left=i(r.left,screen.width,"50%",r.width),r.top=i(r.top,screen.height,"50%",r.height);var a="";for(var s in r)a+=","+s+"="+r[s];a=a.substr(1);var c=e.localInfo.isIE&&n.length>2048||n.length>4096,l=n;c&&(l="",e.localInfo.isIE&&(l="about:blank")),o||(o="_gigWindow_"+(new Date).getTime()+"_"+ ++t._uniqueWindowCounter);var u=window.open(l,o,a);u&&u.focus&&u.focus(),t._openedWindows[o]=u;var g=e.utils.URL.getParamsFromURL(n);return c&&e.utils.HTTP.redirect(n.split("?")[0],[g],"POST",o),e.events.global.dispatch({eventName:"windowOpened",url:n,params:g}),null!=t._openedWindows[o]}function o(i){if(null!=t._openedWindows[i]){var n=function(){try{null!=t._openedWindows[i]&&t._openedWindows[i].close(),delete t._openedWindows[i]}catch(e){}};e.localInfo.iosVersion>=6?n():window.setTimeout(n,10)}}t._openedWindows={},t._uniqueWindowCounter=0,t._calcPixels=i,t.open=n,t.close=o}(i=t.win||(t.win={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e){var t=(""+e).toLowerCase();return"true"==t||"1"==t}function i(e){var t=(""+e).toLowerCase();return"false"==t||"0"==t}function n(e){return e>(new Date).getTime()}e.isExplicitTrue=t,e.isExplicitFalse=i,e.isLaterThanNow=n}(t=e.validation||(e.validation={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(e){var t={};for(var i in e)null!=e[i]&&void 0!=e[i]&&(t[i]=e[i]);return t}function n(e,t,i){if(!t)return e;for(var n=e,o=t.split("."),r=0;r<o.length;r++){var a=o[r];if(i&&!n[a]&&(n[a]={}),!n[a]&&n[a]!==!1)return null;n=n[a]}return n}function o(e,t,i){var o=t.split("."),r=o.pop();n(e,o.join("."),!0)[r]=i}function r(e,t,i){for(var n in t)i&&"undefined"!=typeof e[n]||(e[n]=t[n])}function a(t){var i=[];for(var n in t){var o;"object"==typeof t[n]?o=e.utils.JSON.serialize(t[n],!1):t[n]&&(o=t[n].toString()),i.push(n+"="+o)}return i.sort().join("&")}function s(e,t){t||(t=0);var i,n,o,r,a,s,c,l;for(i=3&e.length,n=e.length-i,o=t,a=3432918353,s=461845907,l=0;l<n;)c=255&e.charCodeAt(l)|(255&e.charCodeAt(++l))<<8|(255&e.charCodeAt(++l))<<16|(255&e.charCodeAt(++l))<<24,++l,c=(65535&c)*a+(((c>>>16)*a&65535)<<16)&4294967295,c=c<<15|c>>>17,c=(65535&c)*s+(((c>>>16)*s&65535)<<16)&4294967295,o^=c,o=o<<13|o>>>19,r=5*(65535&o)+((5*(o>>>16)&65535)<<16)&4294967295,o=(65535&r)+27492+(((r>>>16)+58964&65535)<<16);switch(c=0,i){case 3:c^=(255&e.charCodeAt(l+2))<<16;case 2:c^=(255&e.charCodeAt(l+1))<<8;case 1:c^=255&e.charCodeAt(l),c=(65535&c)*a+(((c>>>16)*a&65535)<<16)&4294967295,c=c<<15|c>>>17,c=(65535&c)*s+(((c>>>16)*s&65535)<<16)&4294967295,o^=c}return o^=e.length,o^=o>>>16,o=2246822507*(65535&o)+((2246822507*(o>>>16)&65535)<<16)&4294967295,o^=o>>>13,o=3266489909*(65535&o)+((3266489909*(o>>>16)&65535)<<16)&4294967295,o^=o>>>16,o>>>0}function c(e,t,i,n,o,r){if(void 0===n&&(n=20),void 0===o&&(o=0),o>n)return null;if("undefined"==typeof e||null==e)return null;if("function"==typeof e&&i)return null;if(e.constructor==Array){for(var a=[],s=0;s<e.length;s++)i&&"function"==typeof e[s]||(t?a[s]=c(e[s],t,i,n,o+1,r):a[s]=e[s]);return a}if("object"==typeof e){var l={};for(var u in e)r&&"context"==u||i&&"function"==typeof e[u]||(t?l[u]=c(e[u],t,i,n,o+1,r):l[u]=e[u]);return l}return e}function l(e,t){for(var i={},n=0;n<e.length;n++)if(e[n]&&e[n].length)for(var o=0;o<e[n].length;o++)for(var r in e[n][o])i[r]=e[n][o][r];else if(t)for(var r in e[n])"object"!=typeof i[r]?i[r]=e[n][r]:i[r]=l([i[r],e[n][r]],!0);else for(var r in e[n])i[r]=e[n][r];return i}function u(e){if(Object(e)!==e||Array.isArray(e))return e;var t={};for(var i in e){for(var n=t,o="",r=i.split("."),a=0;a<r.length;a++){var s=!isNaN(Number(r[a]));n=n[o]||(n[o]=s?[]:{}),o=r[a]}n[o]=e[i]}return t[""]||{}}function g(e){function t(e,n){if(Object(e)!==e)i[n]=e;else if(Array.isArray(e)){for(var o=e.length,r=0;r<o;r++)t(e[r],n?n+"."+r:String(r));0===o&&(i[n]=[])}else{var a=!0;for(var s in e)a=!1,t(e[s],n?n+"."+s:s);a&&""!==n&&(i[n]={})}}var i={};return t(e,""),i}function d(t,i,n){if(null!=t){if(null==i&&(i={}),t.constructor==Array)for(var o=0;o<t.length;o++)d(t[o],i,n);else if(n){var r=n.split("|"),a={};for(var s in t)a[s.toLowerCase()]=1;for(var c=0;c<r.length;c++){var l=r[c];a[l.toLowerCase()]&&(i[l]=t[l])}}else i=e.utils.object.clone(t,!1);return i}}function p(e,t){var i;return d(e,i,t)[t]}t.removeUndefined=i,t.getPropertyBySerializedName=n,t.setPropertyBySerializedName=o,t.add=r,t.getHash=a,t.getMurmurHash=s,t.clone=c,t.merge=l,t.unflatten=u,t.flatten=g,t.extractProperties=d,t.extractProperty=p}(i=t.object||(t.object={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e){return null==e||"undefined"==typeof e?e:e.replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\"/g,"&#34;").replace(/'/g,"&#39;").replace(/&#38;#173;/g,"&#173;")}function i(e){return null==e||"undefined"==typeof e?e:e.replace(/&/g,"&#38;").replace(/</g,"&#60;").replace(/>/g,"&#62;").replace(/\"/g,"&#34;").replace(/\=/g,"&#61;")}e.sanitizeHTML=t,e.sanitizeAttribute=i}(t=e.sanitize||(e.sanitize={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(){var e=0,t=0;if(document.body){var n=i;return n||(n={clientX:0,clientY:0}),n.pageX||n.pageY?(e=n.pageX,t=n.pageY):(n.clientX||n.clientY)&&(e=n.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,t=n.clientY+document.body.scrollTop+document.documentElement.scrollTop),{x:e,y:t}}}var i=null;e.getPosition=t}(t=e.mouse||(e.mouse={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(e){return encodeURIComponent(e)}function n(e){return decodeURIComponent(e.replace(/\+/g," "))}function o(t,i){return t&&t.indexOf("?")!==-1?e.utils.keyValue.deserialize(t.split("#")[0].split("?")[1],"&",i):{}}function r(e,t,i){if(null==t||""==t)return i;var n=t.indexOf("?");if(n===-1)return i;var o="&"+t.substr(n+1),r=o.toLowerCase().indexOf("&"+e.toLowerCase()+"=");if(r===-1)return i;var a=o.substr(r+(1+e.length+1))+"&";return r=a.indexOf("&"),a.substr(0,r)}function a(t,i){var n=e.utils.URL.getParamsFromURL(t);e.utils.object.add(n,i);var o=t.split("#"),r=o[0].split("?")[0]+"?"+e.utils.keyValue.serialize(n,"&");return o.length>1&&(r+="#"+o[1]),r}t.URLEncode=i,t.URLDecode=n,t.getParamsFromURL=o,t.getParamValueFromURL=r,t.addParamsToURL=a}(i=t.URL||(t.URL={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i){var n=[];i||(i="&");for(var o in t)switch(typeof t[o]){case"function":break;case"array":case"object":null!=t[o]&&n.push(o+"="+e.utils.URL.URLEncode(e.utils.JSON.serialize(t[o])));break;case"undefined":break;default:n.push(o+"="+e.utils.URL.URLEncode(t[o]))}var r=n.join(i);return r}function n(t,i,n,o){var r={};if(!t)return r;i||(i="&");for(var a=t.split(i),s=0;s<a.length;s++){var c=a[s],l=c.indexOf("=");if(l===-1){var u=n?c.toLowerCase():c;r[u]="1"}else{var u=c.substr(0,l);n&&(u=u.toLowerCase());var g=c.substr(l+1).replace(/\+/g," ");try{r[u]=o?unescape(g):e.utils.URL.URLDecode(g)}catch(e){r[u]=unescape(g)}}}return r}t.serialize=i,t.deserialize=n}(i=t.keyValue||(t.keyValue={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(i){function n(e){return e.replace(/^http(s?):\/\/cdn(s?)[0-9]*.gigya.com\//,"http$1://cdn$2.gigya.com/")}function o(e){var t=n(e); return Boolean(u[t]&&u[t].loaded)}function r(t,i,o,r,a,s){void 0===a&&(a=5e3);var c;if(0===t.indexOf("//")&&(t=e.localInfo.protocol+":"+t),r){var l=n(t);if(u[l])return void(u[l].loaded?o&&o():(u[l].onLoad.push(o),u[l].onError.push(i)));c=u[l]={loaded:!1,onLoad:[o],onError:[i]},s&&s.length>0&&e.utils.array.forEach(s,function(e){u[e]=c})}else c={loaded:!1,onLoad:[o],onError:[i]};var g=function(){var i=document.createElement("script");i.async=!0,i.type="text/javascript",i.charset="UTF-8";var n=!1,o=function(){if(!n){if(c.onLoad&&c.onLoad.length)for(var e=0;e<c.onLoad.length;e++)"function"==typeof c.onLoad[e]&&c.onLoad[e]();c.loaded=!0,c.onError=c.onLoad=null,n=!0,a===!0&&(a=0),a!==!1&&setTimeout(function(){i.parentNode&&i.parentNode.removeChild(i)},a)}};i.onload=o,i.onreadystatechange=function(){"loaded"===this.readyState&&o()},i.onerror=function(){for(var e=0;e<c.onError.length;e++)"function"==typeof c.onError[e]&&c.onError[e]();delete u[t]};var r=document.getElementsByTagName("head");r&&r.length>0&&r[0].appendChild(i);var s=function(){i.src=t};e.localInfo.iosVersion>=6?s():setTimeout(s,1)};e.localInfo.isIE?e.utils.functions.invokeOnPageLoad(g):g()}function a(e,t,i,n){switch(void 0===i&&(i=g.image),void 0===n&&(n=5e3),i){case g.script:r(e,t,t,!1,n);break;case g.image:s(e,t);break;case g.iframe:c(e,t,n);break;default:throw new Error("Unsupported resource type")}}function s(e,t){var i=new Image,n=!1,o=function(){n||(n=!0,t())};i.onload=i.onerror=o,i.src=e}function c(i,n,o){void 0===o&&(o=5e3);var r=document.createElement("iframe");r.style.width="30px",r.style.height="10px",r.style.position="absolute",r.style.top="-1000px",r.style.left="-1000px",o===!0&&(o=0);var a=function(e){var t;t=e&&e.srcElement?e.srcElement:e&&e.target?e.target:this,!t.loaded&&t.parentNode&&(t.loaded=!0,n(),o!==!1&&window.setTimeout(function(){try{document.body.removeChild(t)}catch(e){}},o))};t.DOM.addEventListener(r,"load",a),t.DOM.addEventListener(r,"error",a),r.onload=function(e){a(e)},r.onerror=a,r.src=i,e.utils.DOM.appendToBody(r)}function l(t,i,n){var o=e._.getCdnResource()+"/js/gigya.services."+t+".js";r(o,function(){"object"==typeof console&&console.error&&(console.error("error loading gigya service "+t+" from url: "+o),i&&i())},n,!0)}var u={};i.isLoaded=o,i.load=r;var g;!function(e){e[e.script=0]="script",e[e.image=1]="image",e[e.iframe=2]="iframe"}(g=i.ResourceTypes||(i.ResourceTypes={})),i.triggerResource=a,i.loadService=l}(i=t.script||(t.script={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var __extends=this&&this.__extends||function(e,t){function i(){this.constructor=e}for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)},gigya;!function(e){var t;!function(t){var i;!function(t){function i(e){var i=e.getName()||e.name;return t.instances[i]||(t.instances[i]=new e),t.instances[i]}function n(e){for(var n,o=0,r=t.adapters;o<r.length;o++){var a=r[o];if(a.isAvailable()){if(a.prototype instanceof u&&!e)continue;n=i(a);break}}return n||(n=i(v)),e&&(n instanceof u?n.waitForService(function(){e(n)}):e(n)),n}function o(e){return y.getItem(e)}function r(e,t,i){return y.setItem(e,t,i)}function a(e){return y.removeItem(e)}function s(e,t){return y.setObject(e,t)}function c(e,t){return y.getObject(e,t)}var l=function(){function t(){}return t.getName=function(){return"AbstractAdapter"},t.prototype.setObject=function(t,i){this.setItem(t,e.utils.JSON.serialize(i))},t.prototype.getObject=function(t,i){return e.utils.JSON.deserialize(this.getItem(t),i)},t.prototype.isPersistent=function(){return!0},t}();t.AbstractLocalStorageAdapter=l;var u=function(e){function t(){var t=e.call(this)||this;return t.isLoaded=!1,t}return __extends(t,e),t.prototype.isReady=function(){return this.isLoaded},t.prototype.waitForService=function(e){var t=this;return this.isReady()?void e():void setTimeout(function(){return t.waitForService(e)},50)},t}(l);t.AbstractAsyncLocalStorageAdapter=u;var g=function(e){function t(){return e.apply(this,arguments)||this}return __extends(t,e),t.prototype.getItem=function(e){return this.storage[e]},t.prototype.setItem=function(e,t,i){try{this.storage[e]=t}catch(e){}},t.prototype.removeItem=function(e){this.storage.removeItem(e)},t}(l),d=function(t){function i(){var e=t.call(this)||this;return e.storage=window.localStorage,e}return __extends(i,t),i.getName=function(){return"LocalStorageAdapter"},i.isAvailable=function(){return e.localInfo.supportsLocalStorage},i}(g),p=function(t){function i(){var e=t.call(this)||this;return e.storage=window.sessionStorage,e}return __extends(i,t),i.getName=function(){return"SessionStorageAdapter"},i.isAvailable=function(){return e.localInfo.supportsSessionStorage},i}(g),f=function(t){function i(){return t.apply(this,arguments)||this}return __extends(i,t),i.isAvailable=function(){return e.localInfo.isFF&&window.globalStorage},i.getName=function(){return"FirefoxStorageAdapter"},i.prototype.getItem=function(e){return window.globalStorage[location.hostname][e]},i.prototype.setItem=function(e,t,i){try{window.globalStorage[location.hostname][e]=t}catch(e){}},i.prototype.removeItem=function(e){delete window.globalStorage[location.hostname][e]},i}(l),h=function(t){function i(){var e=t.call(this)||this;return e.loadSwfStore(function(t){e.isLoaded=!0}),e}return __extends(i,t),i.isAvailable=function(){return e.localInfo.supportsFlash&&(e.localInfo.isIE||e.localInfo.isEdge)},i.getName=function(){return"FlashAsyncStorageAdapter"},i.prototype.loadSwfStore=function(t){var i=this;return window.SwfStore?void this.initializeSwfStore(function(){return i.loadSwfStore(t)}):void e.utils.script.load("https://cdns.gigya.com/gs/js/swfstore.min.js",function(){console.log("Failed to load Gigya SwfStore."),t(!1)},function(){i.initializeSwfStore(t)},!0)},i.prototype.initializeSwfStore=function(e){this.swfStore=new SwfStore({namespace:"gigSSO",swf_url:"https://cdns.gigya.com/gs/swf/swfstore.swf",onready:function(){e(!0)},onerror:function(){console.log("Failed to initialize Gigya SwfStore."),e(!1)}})},i.prototype.getItem=function(e){return this.swfStore.get(e)},i.prototype.setItem=function(e,t,i){this.swfStore.set(e,t)},i.prototype.removeItem=function(e){this.swfStore.clear(e)},i}(u),m=function(t){function i(){return t.apply(this,arguments)||this}return __extends(i,t),i.isAvailable=function(){return e.utils.cookie.canSaveCookie()},i.getName=function(){return"CookieStorageAdapter"},i.prototype.getItem=function(t){return e.utils.cookie.get(t)},i.prototype.setItem=function(t,i,n){e.utils.cookie.set(t,i,n)},i.prototype.removeItem=function(t){e.utils.cookie.remove(t)},i}(l);t.CookieStorageAdapter=m;var v=function(e){function t(){var t=e.call(this)||this;return t.memory={},t}return __extends(t,e),t.isAvailable=function(){return!0},t.getName=function(){return"MemoryStorageAdapter"},t.prototype.getItem=function(e){return this.memory[e]},t.prototype.setItem=function(e,t,i){this.memory[e]=t},t.prototype.removeItem=function(e){delete this.memory[e]},t.prototype.isPersistent=function(){return!1},t}(l);t.adapters=[d,p,f,h,m,v],t.instances={},t.initializeAdapter=i,t.waitForService=n;var y=n();t.getItem=o,t.setItem=r,t.removeItem=a,t.setObject=s,t.getObject=c}(i=t.localStorage||(t.localStorage={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t){var i=e.utils.keyValue.deserialize(t,null,null,!0),n=i.id,o=s[n];if(null!=o){if("function"==typeof o.callback){var r=o.context;o.callback(i,r)}a(n)}}function n(t){t=e.utils.object.clone(t);var i=function(){var i=t.data.split("="),n=s[i[0]];if(null!=n){if("function"==typeof n.callback){var o=unescape(i[1]),r=e.utils.keyValue.deserialize(o,null,null,!0),c=n.context;n.callback(r,c)}a(i[0]);var l=document.getElementById(i[0]);l&&l.parentElement&&l.parentElement.removeChild(l)}};t&&t.data&&t.data.split&&(e.localInfo.iosVersion>=6?i():window.setTimeout(i,100))}function o(t){var i=document.createElement("iframe");return i.style.width="30px",i.style.height="10px",i.style.position="absolute",i.style.top="-1000px",i.style.left="-1000px",i.id=t,i.src="https://cdns.gigya.com/gs/LocalStorageListener.htm?mode=receive&id="+encodeURIComponent(t),e.utils.DOM.appendToBody(i),i}function r(i,r,a,u){s[i]={callback:u,context:r,t:(new Date).getTime()};var g=e.localInfo.messagingMethod;if(e.localInfo.isIE11&&a&&window.indexedDB&&(g=e._.MessagingMethod.LocalStorageListener),g==e._.MessagingMethod.LocalStorageListener||g==e._.MessagingMethod.PostMessage){if(g==e._.MessagingMethod.LocalStorageListener&&a){o(i)}if(!c){var d=function(e){if(e&&e.data&&"string"==typeof e.data){var t=e.data.split("=")[0];s[t]&&n(e)}};window.addEventListener?window.addEventListener("message",d,!1):window.attachEvent&&window.attachEvent("onmessage",d),c=!0}}else{var p="localstorage";e.thisScript.globalConf.legacyCrossSiteMethod&&"localstorage"!=e.thisScript.globalConf.legacyCrossSiteMethod.toLowerCase()&&(p=e.thisScript.globalConf.legacyCrossSiteMethod),l[p]||window.setTimeout(function(){var i=document.createElement("div");i.style.width="1px",i.style.height="1px",i.style.overflow="hidden",i.style.position="absolute",i.style.left="-1000px";var n=t._flashListenerID;"localstorage"!=p&&(n=p+":"+t._flashListenerID);var o=e.localInfo.protocol+"://"+document.location.href.split("?")[0].split("#")[0].split("/")[2],r=(new Date).getTime(),a=document.createElement("object"),s="https://cdns.gigya.com/GS/swf/eventsBroadcaster2.swf";a.setAttribute("id","eventsBroadcaster"+r),a.setAttribute("codebase","https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"),a.setAttribute("width","50"),a.setAttribute("height","50"),a.setAttribute("src",s),a.setAttribute("data",s),a.setAttribute("style","display:inline");var c;c=document.createElement("param"),c.name="movie",c.setAttribute("value",s),a.appendChild(c),c=document.createElement("param"),c.setAttribute("name","allowScriptAccess"),c.setAttribute("value","always"),a.appendChild(c),c=document.createElement("param"),c.setAttribute("name","FlashVars"),c.setAttribute("value","action=listen&id="+n+"&eventName=loginComplete&callback=gigya.utils.xd._onFlashMessage&domain="+o),a.appendChild(c),i.appendChild(a),e.utils.functions.invokeOnPageLoad(function(){e.utils.DOM.appendToBody(i),a.setAttribute("type","application/x-shockwave-flash"),a.setAttribute("classid","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000")}),l[p]=!0},500)}}function a(e){delete s[e]}var s={};t._flashListenerID="flid"+(new Date).getTime();var c=!1,l={};t._onFlashMessage=i,t.addMessageListener=r,t.removeMessageListener=a}(i=t.xd||(t.xd={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(){var e={};for(var t in c){var i=n(t);i?e[t]={active:!0,waitingFor:c[t].ids,queuedCount:c[t].q.length}:e[t]={active:!1}}return e}function n(e){if(!c[e])return!1;for(var t in c[e].ids)return!0;return!1}function o(e,t){if(c[t]&&(delete c[t].ids[e],!n(t))){var i=c[t].q;for(c[t].q=[];i.length>0;){var o=i.splice(0,1)[0];try{o.func.apply(this,o.args)}catch(i){"object"==typeof console&&console.log&&console.log("Gigya: Exception while invoking queued method ("+t+": "+e+")")}if(n(t)){c[t].q=i;break}}}}function r(e,t){c[t]||(c[t]={q:[],ids:{}}),c[t].ids[e]=!0}function a(e,t,i){c[e]||(c[e]={q:[],ids:{}}),c[e].q.push({func:t,args:i})}function s(t,i,n){n=n||[],e.utils.queue.isActive(t)?e.utils.queue.waitFor(t,i,n):i.apply(this,n)}var c={};t._servicesStatus=i,t.isActive=n,t.release=o,t.hold=r,t.waitFor=a,t.queueForExecution=s}(i=t.queue||(t.queue={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i){if(r){var n;try{n=e.utils.JSON.deserialize(window.sessionStorage.getItem("gigyaCache")),null==i&&n[t]?delete n[t]:n[t]={response:i,time:(new Date).getTime()},window.sessionStorage.setItem("gigyaCache",e.utils.JSON.serialize(n))}catch(e){}e.utils.queue.release("cache","cache_"+t)}}function n(t,i,n){if(!r)return void("function"==typeof n&&n(null));try{if(!e.utils.queue.isActive("cache_"+t)){var o=window.sessionStorage.getItem("gigyaCache"),a=e.utils.JSON.deserialize(o),s=a[t];if(s){if(i&&i+s.time>(new Date).getTime())return void n(s.response);e.utils.sessionCache.remove(t),s=null}if(!s)return e.utils.queue.hold("cache","cache_"+t),void n(null)}if(e.utils.queue.isActive("cache_"+t))return void e.utils.queue.waitFor("cache_"+t,e.utils.sessionCache.get,arguments)}catch(e){n(null)}}function o(t){e.utils.sessionCache.set(t,null)}var r;try{r=Boolean(window.sessionStorage)}catch(e){r=!1}t.set=i,t.get=n,t.remove=o}(i=t.sessionCache||(t.sessionCache={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(){return e.localInfo.isChrome||e.localInfo.isFF||e.localInfo.isOpera||e.localInfo.isIOSWebView||e.localInfo.isIE&&e.utils.browser.getVersion()>=9||e.localInfo.isEdge||e.localInfo.isSafari&&e.utils.browser.getVersion()>=4||e.localInfo.isGoogleBot}function n(){if(r.version)return r.version;try{var e=o.match(/(opera|chrome|safari|firefox|msie|trident.*rv:)\/?\s*(\.?\d+(\.\d+)*)/i);if(e[2]){var t=e[2].split(".")[0];if(!isNaN(parseInt(t)))return r.version=parseInt(t)}}catch(e){}return 0}var o=navigator.userAgent.toLowerCase(),r={version:null};t.isModern=i,t.getVersion=n}(i=t.browser||(t.browser={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i,n,o,r){if(void 0===r&&(r=document.location),n&&"post"==n.toLowerCase()){var a=document.createElement("form"),s=[];a.setAttribute("accept-charset","UTF-8"),a.setAttribute("method","POST"),a.setAttribute("action",t),o&&a.setAttribute("target",o);var c=e.utils.object.merge(i);for(var l in c)"boolean"!=typeof c[l]&&"string"!=typeof c[l]||"eventName"==l||s.push('<textarea name="'+encodeURIComponent(l)+'">'+c[l].toString().replace(/\&/g,"&amp;")+"</textarea>");a.innerHTML=s.join(""),a.style.display="none",e.utils.DOM.appendToBody(a),a.submit()}else{for(var u=new e._.Uri(t),g={},d=0;d<i.length;d++){var p=i[d];for(var f in p)if(p.hasOwnProperty(f)){var h=p[f];g[f]=h}}u.addToSearch(g),r.href=u.toString()}}t.redirect=i}(i=t.HTTP||(t.HTTP={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i){var n=t.elementContext?t.elementContext:document.body;e.utils.DOM.addEventListener(n,"keyup",function(e){e.which==t.key&&i()})}t.onHotKeyClicked=i}(i=t.keyboard||(t.keyboard={}))}(t=e.utils||(e.utils={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i=function(){function t(){this.bindings=[]}return t.getInstance=function(){return t.self||(t.self=new t),t.self},t.prototype.bindTabLooping=function(e,t){if(!this.getListenerByContainer(e)){var i=this.createListener(e,t);window.addEventListener("keydown",i,!0)}},t.prototype.unbindTabLooping=function(e){var t=this.getListenerByContainer(e);t&&window.removeEventListener("keydown",t,!0)},t.prototype.getSortedTabbableElements=function(e,i){for(var n=this,o=0,r=e.querySelectorAll(t.selector),a=[],s=0;s<r.length;++s){var c=r[s];this.isTabbable(c,i)&&(c.setAttribute(t.naturalTabOrder,String(o)),o++,a.push(c))}return a.sort(function(e,t){return n.sort(e,t)}),a},t.prototype.createListener=function(t,i){var n=this,o=function(o){var r=document.activeElement;if(9===o.keyCode&&t.contains(r)){var a=o.shiftKey?n.getPreviousTabbableElement(t,r,i):n.getNextTabbableElement(t,r,i);a&&(a.focus(),e.utils.DOM.cancelEvent(o))}};return this.bindings.push({container:t,listener:o}),o},t.prototype.isTabbable=function(e,t){var i=e.matches||e.msMatchesSelector;return e.tabIndex!==-1&&(e.offsetWidth>0||e.offsetHeight>0)&&(!t||i.call(e,t))},t.prototype.getNextTabbableElement=function(e,t,i){var n=this.getSortedTabbableElements(e,i),o=n.indexOf(t);return o===-1?void 0:o!==n.length-1?n[o+1]:n[0]},t.prototype.getPreviousTabbableElement=function(e,t,i){var n=this.getSortedTabbableElements(e,i),o=n.indexOf(t);return o===-1?void 0:0!==o?n[o-1]:n[n.length-1]},t.prototype.sort=function(e,i){var n=this.getTabIndex(e)-this.getTabIndex(i);return 0!==n?n:Number(e.getAttribute(t.naturalTabOrder))-Number(i.getAttribute(t.naturalTabOrder))},t.prototype.getTabIndex=function(e){return 0===e.tabIndex?99999999:e.tabIndex},t.prototype.getListenerByContainer=function(e){for(var t=0,i=this.bindings;t<i.length;t++){var n=i[t];if(n.container===e)return n.listener}},t}();i.naturalTabOrder="data-natural-tab-order",i.selector=["a:not([disabled])","button:not([disabled])","input:not([disabled])","[tabindex]:not([disabled])"].join(","),t.Tabbable=i,t.tabbable=i.getInstance()}(t=e.utils||(e.utils={}))}(gigya||(gigya={})),!function(e,t){e.ES6Promise=t()}(this,function(){"use strict";function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function t(e){return"function"==typeof e}function i(e){G=e}function n(e){W=e}function o(){return function(){return process.nextTick(l)}}function r(){return"undefined"!=typeof K?function(){K(l)}:c()}function a(){var e=0,t=new Y(l),i=document.createTextNode("");return t.observe(i,{characterData:!0}),function(){i.data=e=++e%2}}function s(){var e=new MessageChannel;return e.port1.onmessage=l,function(){return e.port2.postMessage(0)}}function c(){var e=setTimeout;return function(){return e(l,1)}}function l(){for(var e=0;e<V;e+=2){var t=Z[e],i=Z[e+1];t(i),Z[e]=void 0,Z[e+1]=void 0}V=0}function u(){try{var e=require,t=e("vertx");return K=t.runOnLoop||t.runOnContext,r()}catch(e){return c()}}function g(e,t){var i=arguments,n=this,o=new this.constructor(p);void 0===o[te]&&E(o);var r=n._state;return r?!function(){var e=i[r-1];W(function(){return k(r,o,e,n._result)})}():C(n,o,e,t),o}function d(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var i=new t(p);return S(i,e),i}function p(){}function f(){return new TypeError("You cannot resolve a promise with itself")}function h(){return new TypeError("A promises callback cannot return that same promise.")}function m(e){try{return e.then}catch(e){return re.error=e,re}}function v(e,t,i,n){try{e.call(t,i,n)}catch(e){return e}}function y(e,t,i){W(function(e){var n=!1,o=v(i,t,function(i){n||(n=!0,t!==i?S(e,i):A(e,i))},function(t){n||(n=!0,_(e,t))},"Settle: "+(e._label||" unknown promise"));!n&&o&&(n=!0,_(e,o))},e)}function b(e,t){t._state===ne?A(e,t._result):t._state===oe?_(e,t._result):C(t,void 0,function(t){return S(e,t)},function(t){return _(e,t)})}function w(e,i,n){i.constructor===e.constructor&&n===g&&i.constructor.resolve===d?b(e,i):n===re?_(e,re.error):void 0===n?A(e,i):t(n)?y(e,i,n):A(e,i)}function S(t,i){t===i?_(t,f()):e(i)?w(t,i,m(i)):A(t,i)}function I(e){e._onerror&&e._onerror(e._result),P(e)}function A(e,t){e._state===ie&&(e._result=t,e._state=ne,0!==e._subscribers.length&&W(P,e))}function _(e,t){e._state===ie&&(e._state=oe,e._result=t,W(I,e))}function C(e,t,i,n){var o=e._subscribers,r=o.length;e._onerror=null,o[r]=t,o[r+ne]=i,o[r+oe]=n,0===r&&e._state&&W(P,e)}function P(e){var t=e._subscribers,i=e._state;if(0!==t.length){for(var n=void 0,o=void 0,r=e._result,a=0;a<t.length;a+=3)n=t[a],o=t[a+i],n?k(i,n,o,r):o(r);e._subscribers.length=0}}function D(){this.error=null}function x(e,t){try{return e(t)}catch(e){return ae.error=e,ae}}function k(e,i,n,o){var r=t(n),a=void 0,s=void 0,c=void 0,l=void 0;if(r){if(a=x(n,o),a===ae?(l=!0,s=a.error,a=null):c=!0,i===a)return void _(i,h())}else a=o,c=!0;i._state!==ie||(r&&c?S(i,a):l?_(i,s):e===ne?A(i,a):e===oe&&_(i,a))}function L(e,t){try{t(function(t){S(e,t)},function(t){_(e,t)})}catch(t){_(e,t)}}function U(){return se++}function E(e){e[te]=se++,e._state=void 0,e._result=void 0,e._subscribers=[]}function O(e,t){this._instanceConstructor=e,this.promise=new e(p),this.promise[te]||E(this.promise),H(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?A(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&A(this.promise,this._result))):_(this.promise,T())}function T(){return new Error("Array Methods must be provided an Array")}function N(e){return new O(this,e).promise}function z(e){var t=this;return new t(H(e)?function(i,n){for(var o=e.length,r=0;r<o;r++)t.resolve(e[r]).then(i,n)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function M(e){var t=this,i=new t(p);return _(i,e),i}function R(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function j(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(e){this[te]=U(),this._result=this._state=void 0,this._subscribers=[],p!==e&&("function"!=typeof e&&R(),this instanceof F?L(this,e):j())}function B(){var e=void 0;if("undefined"!=typeof global)e=global;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var i=null;try{i=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===i&&!t.cast)return}e.Promise=F}var q=void 0;q=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var H=q,V=0,K=void 0,G=void 0,W=function(e,t){Z[V]=e,Z[V+1]=t,V+=2,2===V&&(G?G(l):ee())},J="undefined"!=typeof window?window:void 0,$=J||{},Y=$.MutationObserver||$.WebKitMutationObserver,Q="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),X="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,Z=new Array(1e3),ee=void 0;ee=Q?o():Y?a():X?s():void 0===J&&"function"==typeof require?u():c();var te=Math.random().toString(36).substring(16),ie=void 0,ne=1,oe=2,re=new D,ae=new D,se=0;return O.prototype._enumerate=function(){for(var e=this.length,t=this._input,i=0;this._state===ie&&i<e;i++)this._eachEntry(t[i],i)},O.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===d){var o=m(e);if(o===g&&e._state!==ie)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(i===F){var r=new i(p);w(r,e,o),this._willSettleAt(r,t)}else this._willSettleAt(new i(function(t){return t(e)}),t)}else this._willSettleAt(n(e),t)},O.prototype._settledAt=function(e,t,i){var n=this.promise;n._state===ie&&(this._remaining--,e===oe?_(n,i):this._result[t]=i),0===this._remaining&&A(n,this._result)},O.prototype._willSettleAt=function(e,t){var i=this;C(e,void 0,function(e){return i._settledAt(ne,t,e)},function(e){return i._settledAt(oe,t,e)})},F.all=N,F.race=z,F.resolve=d,F.reject=M,F._setScheduler=i,F._setAsap=n,F._asap=W,F.prototype={constructor:F,then:g,catch:function(e){return this.then(null,e)}},F.polyfill=B,F.Promise=F,F});var gigya;!function(e){e.Promise=window.ES6Promise}(gigya||(gigya={}));var gigya;!function(e){e.socialize={},e.gcs={},e.gm={},e.comments={},e.accounts={},e.gscounters={}}(gigya||(gigya={})),function(e){var t;!function(t){function i(e){return n[e]}var n={};t.getApi=i;var o=function(){function t(e,t){this.methodName=e,this.settings=t,this.addAlias(),n[e]=this}return t.prototype.preprocessRequest=function(e,t){this.settings.preprocessor?this.settings.preprocessor(e,t):t()},t.prototype.addAlias=function(){var t=this;e.utils.functions.createAlias("gigya."+this.methodName,function(){for(var i=[],n=0;n<arguments.length;n++)i[n]=arguments[n];var o=e.utils.object.merge([i]),r=function(){var i=e.utils.object.merge([e.thisScript.globalConf,o]);t.run(i,o)};e.thisScript&&e.thisScript.globalConf?r():e.utils.queue.queueForExecution("API",r)})},t}();t.BaseApi=o}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){e.defaultEventMaps=e.defaultEventMaps||[]}(gigya||(gigya={})),function(e){var t;!function(t){function i(e){return"on"===e.substring(0,2)?e:"on"+e.substring(0,1).toUpperCase()+e.substring(1)}function n(t){e.defaultEventMaps.splice(0,0,t)}function o(t,i,n){i||(i={});var o=i;o.response&&(o=o.response);var r={eventName:"error",status:o.status?o.status:"FAIL",statusMessage:o.statusMessage?o.statusMessage:"General Server Error",errorMessage:o.errorMessage?o.errorMessage:"General Server Error",errorDetails:o.errorDetails?o.errorDetails:"",errorCode:o.errorCode?o.errorCode:500001,response:i};e.utils.object.add(r,n),e.events.dispatchForWidget(r,t)}function r(t,i){var n={eventName:"error"};"undefined"==typeof t[i]||null==t[i]?(n.errorCode=400002,n.errorMessage="Missing_required_parameter ("+i+")"):(n.errorCode=400006,n.errorMessage="Invalid_parameter_value ("+i+")"),n.status=n.errorCode,n.statusMessage=n.errorMessage,e.events.dispatchForWidget(n,t)}function a(t,n){if(t&&t.eventName){var o=t.eventName;e.log.addLog('Dispatching widget event "'+o+'" for '+n.lastSource+" with this event object",t),e._.handleSpecialFields(t);for(var r,a=o.split(","),c=0;c<a.length;c++){var o=a[c],l=i(o);if(n&&(n.context&&(t.context=n.context),n.source&&(t.source=n.source),n.sourceData&&(t.sourceData=n.sourceData),n.containerID&&(t.sourceContainerID=n.containerID),n.instanceID&&(t.instanceID=n.instanceID)),n[l]&&(r=s(n[l],t)),"undefined"==typeof r&&(r=!0),o.indexOf("login")==-1&&o.indexOf("logout")==-1&&"connectionRemoved"!=o&&"connectionAdded"!=o){this._dispatchFromMaps(t);var u=window.GenesisExchange_Gigya,g=window.gigya_omniture_conf,d=window.myOmnitureIntegrationFunc;if("undefined"!=typeof u&&"undefined"!=typeof g){var p=new u(g);p.processAction(t),"undefined"!=typeof d&&d(g,t)}}}return r}}function s(t,i){var n;try{"function"==typeof t?n=t(i):t instanceof Array?e.utils.array.forEach(t,function(t){"function"==typeof t?t(i):e.log.addLog("Not a function registered to event: "+t,t)}):e.log.addLog("Not a function or function array registered to event",t)}catch(i){e.log.addLog("Error invoking function registered to event",t)}return n}function c(t,i){for(var n=[],o=!1,r=0;r<e.defaultEventMaps.length;r++){for(var a=e.defaultEventMaps[r].eventMap,s=e.defaultEventMaps[r].defaultMethod,c=0;c<a.length;c++){var l=a[c],u=[];l.args||(l.args=[]);for(var g=0;g<l.args.length;g++)"$event"==l.args[g]?u.push(t):u.push(e.utils.templates.fill(l.args[g],t));var d=(l.events.split(","),","+l.events.toLowerCase()+",");if(d.indexOf(",*,")!=-1||(d.indexOf(",on"+t.eventName.toLowerCase()+",")!=-1||d.indexOf(","+t.eventName.toLowerCase()+",")!=-1)&&(!t.source&&!l.sources||!l.sources||l.sources.indexOf(t.source)!=-1)){n.push(l);var p=l.method?l.method:s;p.apply(this,u),l.override&&(o=!0)}}if(o)break}}var l;!function(t){function n(t,n,o,r,a,c){void 0===o&&(o="other"),void 0===a&&(a="socialize");var g=a+"_"+i(t);l[g]||(l[g]=[]);var d={handler:n,type:o,context:r,params:c,fullEventName:g};l[g].push(d),!this._activeNamespaces[a]&&e._.apiAdapter&&e._.apiAdapter.registerForNamespaceEvents(a),this._activeNamespaces[a]=1;var p=u[g];if(p&&"other"==o){u[g]=[];for(var f=0;f<p.length;f++){var h=p[f];s(h.eventObj,h.params,h.preProcess)}}return d}function o(t,i){l[t]&&e.utils.array.removeByValue(l[t],i)}function r(t,n){var o=0,r=t.isInternal,a=t.eventName.split(",");e.log.addLog('Dispatching global event "'+t.eventName+'" with this event object',t);for(var s=0;s<a.length;s++){var c=a[s].split("."),u=c.length>1?c.shift():"socialize",g=c[0],d=i(g),p=u+"_"+d,f=e.utils.object.clone(l[p]);f||(f=[]);var h=e.utils.object.clone(t);h.isGlobal=!0,h.eventName=g,h.fullEventName=a[s],n&&(n.source&&(h.source=n.source),n.sourceData&&(h.sourceData=n.sourceData),n.context&&(h.context=n.context));var m=["component"];r||m.push("other");for(var v=0;v<m.length;v++)for(var y=m[v],b=0;b<f.length;b++){var w=f[b];if(w.type==y){var S=e.utils.object.clone(h);null==S.context&&null!=w.context&&(S.context=w.context),null==S.context&&delete S.context,"component"!=y&&(o++,e._.handleSpecialFields(S)),w.params&&w.params.signKey&&(S.UIDSignature=t.signKeysUIDSignature[w.params.signKey],delete S.signKeysUIDSignature);try{w.handler(S)}catch(i){e.log.addLog('Error while trying to invoke "'+t.eventName+'" global event handler',i)}}}r||e.events._dispatchFromMaps(h,!0);var I=window.GenesisExchange_Gigya,A=window.gigya_omniture_conf,_=window.myOmnitureIntegrationFunc;if(!r&&"undefined"!=typeof I&&"undefined"!=typeof A&&"socialize"==u){var C=new I(A);C.processAction(h),"undefined"!=typeof _&&_(A,h)}}return o}function a(e,t,i){void 0===t&&(t={});var n=e.eventName.split("."),o=n.length>1?n.shift():"socialize",r=n[0];s(e,t,i,function(n){if(0==n){var a="on"+r.substring(0,1).toUpperCase()+r.substring(1),s=o+"_"+a;u[s]||(u[s]=[]),u[s].push({eventObj:e,params:t,preProcess:i})}})}function s(t,i,n,o){var r=function(t){var n=0;t.cancel||(n=e.events.global.dispatch(t,i)),o&&o(n)};n?n(t,r):r(t)}function c(e){var t=[];return e.toLowerCase().indexOf("login")!=-1?(this._activeNamespaces.socialize&&t.push("socialize.login"),this._activeNamespaces.accounts&&t.push("accounts.login")):e.toLowerCase().indexOf("addconnection")!=-1&&this._activeNamespaces.socialize&&t.push("socialize.connectionAdded"),t.join(",")}var l={},u={};t._activeNamespaces={},t.add=n,t.remove=o,t.dispatch=r,t.dispatchWhenHandlerAdded=a,t.getEventsForOperation=c}(l=t.global||(t.global={})),t.addMap=n,t.dispatchErrorFromResponse=o,t.dispatchInvalidParamError=r,t.dispatchForWidget=a,t.dispatchEventObject=s,t._dispatchFromMaps=c}(t=e.events||(e.events={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i=function(i){function n(e,t,n,o,r,a){void 0===o&&(o={}),void 0===r&&(r={});var s=i.call(this,e,o)||this;return s.schema=t,s.requiresSession=n,s.settings=o,s.adapterSettings=r,s.altSessionParams=a,"undefined"==typeof r.requiresSession&&(r.requiresSession=function(){return n}),s}return __extends(n,i),n.prototype.run=function(i,n){var o=this,r=function(){new t.ServerApiRequest(o,i).start()};i.ignoreApiQueue?r():e.utils.queue.queueForExecution("API",function(){r()})},n}(t.BaseApi);t.ServerApi=i}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){function i(){return e.utils.object.clone({status:"FAIL",errorMessage:"Unauthorized user",statusMessage:"Unauthorized user",errorCode:403005})}function n(e){return{status:"OK",statusMessage:"",errorCode:0,statusCode:0,errorMessage:"",errorDetails:"",statusReason:"",originalResponse:e}}var o;e.events.global.add("onFBCRefreshed",function(){o=!1},"component");var r;!function(e){e[e._unknown=0]="_unknown",e[e.facebook=1]="facebook",e[e.yahoo=2]="yahoo",e[e.googleplus=3]="googleplus",e[e.linkedin=4]="linkedin",e[e.samlProvider=5]="samlProvider",e[e.samlSession=6]="samlSession"}(r||(r={}));var a=function(){function a(t,i){this.api=t,this.params=e.utils.object.merge([e.utils.object.clone(i),t.settings.defaultParams]),this.originalParams=e.utils.object.clone(i),this.callback=i.callback}return a.prototype.start=function(){var e=this;t.apiAdapter.isSessionValid(this.params,function(t){!e.api.adapterSettings.requiresSession()||t||e.doesHaveAltSessionParam()?e.sendRequest(t):e.afterServerApiResponse(i(),!1)})},a.prototype.sendRequest=function(i){var n=this,o=e.utils.object.merge([this.api.adapterSettings,{cacheTimeout:this.params.cacheTimeout,forceGigyaDomain:!i&&this.api.adapterSettings.forceGigyaDomain}]);this.beforeRequest(i,function(r){r?n.afterServerApiResponse(r,i):(e.events.global.dispatch({eventName:"beforeRequest",methodName:n.api.methodName,rawParams:n.originalParams,params:n.params},n.originalParams),n.api.settings.oauth?t.apiAdapter.sendOauthRequest(n.api.methodName,n.params,function(e){n.afterServerApiResponse(e,i)},o):t.apiAdapter.sendRequest(n.api.methodName,n.params,function(e){n.afterServerApiResponse(e,i)},o))})},a.prototype.beforeRequest=function(i,o){var r=this;if(e.external.backplane.isLoaded()&&!e.external.backplane._ready&&t.loginMethods[this.api.methodName])return void e.external.backplane.executeOnInit(function(){ r.beforeRequest(i,o)});e._.logoutMethods[this.api.methodName]&&(!i&&!this.params.regToken||e.partnerSettings.ssoLogoutUrl&&document.location.href==e.partnerSettings.ssoLogoutUrl)&&o(n(null)),this.handleDeprecatedParams(),this.handleCollections(),this.handleConnectWithoutLoginBehavior(i);var a=this.params[this.params.provider+"ExtraPermissions"];this.params.extraPermissions=a||this.params.permissions,this.api.preprocessRequest(this.params,function(){r.setOverridableParams(function(){r.setNonOverridableParams(i,function(){r.filterParams(r.params),e.log.logCall(r.api.methodName,r.originalParams,r.originalParams.lastSource),o()})})})},a.prototype.setOverridableParams=function(t){var i={};e.utils.object.merge([i,this.params]),t()},a.prototype.doesHaveAltSessionParam=function(){if(this.api.altSessionParams){for(var e=this.api.altSessionParams.split("|"),t=0;t<e.length;t++)if(this.params[e[t]])return!0;return!1}},a.prototype.setNonOverridableParams=function(i,n){if(null!=this.params.APIKey){var r=e.utils.cookie.get("gltexp_"+this.params.APIKey);null!=r&&(this.params.loginTokenExp=r)}var a=e.utils.cookie.get("_gigRefUid_"+this.params.APIKey);if(a&&(i||t.loginMethods[this.api.methodName])&&(this.params.refUID=a),e.providersConfig.facebook&&!o){var s=e.external.facebook.getParams();for(var c in s)this.params[c]=s[c];o=!0}0===this.api.methodName.indexOf("accounts.")&&(e.events.global._activeNamespaces.socialize&&null==this.params.includeUserInfo&&(this.params.includeUserInfo=!0),this.params.include=this.params.include?this.params.include+",":"profile,data"),"accounts.getSchema"===this.api.methodName&&(this.params.includeDynamicSchema="clientOnly");var l=e.external.backplane.getChannelId();l&&(this.params.bp_channel_url=l),this.params.targetEnv="jssdk",n()},a.prototype.handleDeprecatedParams=function(){this.params.pendingRegistration?this.params.pending_registration=this.params.pendingRegistration:this.params.newUsersPendingRegistration&&(this.params.pending_registration=this.params.newUsersPendingRegistration),this.params.alwaysForceAuthentication&&(this.params.forceAuthentication=!0),this.params.timestamp&&(this.params.UIDTimestamp=this.params.timestamp,delete this.params.timestamp),this.params.signature&&0===this.api.methodName.indexOf("socialize.")&&(this.params.UIDSig=this.params.signature,delete this.params.signature),this.params.nonce&&(this.params.UIDNonce=this.params.nonce,delete this.params.nonce),this.params.format&&!this.params.dataFormat&&(this.params.dataFormat=this.params.format,delete this.params.format)},a.prototype.handleCollections=function(){if(this.params.recipients&&(this.params.recipients=this.extractListOfGIGUIDs(this.params.recipients)),this.params.friends){var e=this.extractListOfGIGUIDs(this.params.friends);this.params.UIDs.length>0&&(this.params.UIDs+=","),this.params.UIDs+=e}},a.prototype.extractListOfGIGUIDs=function(t){var i=this;switch(typeof t){case"string":return t;case"object":if("undefined"!=typeof t.UID)return t.UID;if(t instanceof e.socialize.Collection){var n=[];return t.each(function(e,t){var o=i.extractListOfGIGUIDs(e);null!=o&&""!=o&&n.push(o)}),n.join(",")}}},a.prototype.handleConnectWithoutLoginBehavior=function(e){if("socialize.addConnection"===this.api.methodName){var i=this.params.connectWithoutLoginBehavior;"string"==typeof i&&(i=i.toLowerCase()),"loginexistinguser"===i&&(this.params.loginIfExists=!0),e||(this.api=t.getApi("socialize.login"),"alwayslogin"!==i&&(this.params.temporary_account=!0))}},a.prototype.filterParams=function(t){this.params=e.utils.object.extractProperties(t,{},this.getFullSchema())},a.prototype.getFullSchema=function(){if(null==this.api.schema)return"";for(var t=(this.api.schema+"|"+e._.defaultApiSchema).split("|"),i=0;i<t.length;i++){var n=t[i];if(n.toLowerCase().indexOf("[providercapability=")!==-1){for(var o=n.toLowerCase().split("=")[1].split("]")[0],r=n.split("]")[1],a=e.socialize.getProvidersForRequiredCapabilities(e.socialize.getProvidersByName("*"),[o]),s=[],c=0;c<a.length;c++)s.push(a[c].name+r);t[i]=s.join("|")}}return t.join("|")},a.prototype.preprocessServerResponse=function(t){t.userInfo&&0!==this.api.methodName.indexOf("accounts.")&&("string"==typeof t.userInfo&&(t.userInfo=e.utils.JSON.parse(t.userInfo,void 0)),t.userInfo&&(t=e.utils.object.merge([t.userInfo,t]),t.errorCode=t.userInfo.errorCode,delete t.userInfo)),t.accountInfo&&"string"==typeof t.accountInfo&&(t.accountInfo=e.utils.JSON.parse(t.accountInfo,void 0),t.accountInfo&&(t=e.utils.object.merge([t.accountInfo,t]),delete t.accountInfo));try{t.settings&&"string"==typeof t.settings&&(t.settings=e.utils.JSON.parse(t.settings))}catch(e){}return t},a.prototype.onAfterLogoutMethod=function(){e.external.backplane.resetChannel()},a.prototype.getExpiredSessionResponse=function(e){switch(this.api.methodName){case"socialize.setUserSettings":this.originalParams.disableLocalSettings||(t.setGigyaSettings(this.params.group,this.params.settings),e=n(e));break;case"socialize.delUserSettings":this.originalParams.disableLocalSettings||(t.delGigyaSettings(this.params.group),e=n(e));break;case"socialize.getUserSettings":if(!this.originalParams.disableLocalSettings){var i=t.getGigyaSettings(this.params.group);e=n(e),e.settings=i}break;case"socialize.getUserInfo":e.status="OK",e.statusMessage="",e.errorCode=0,e.statusCode=0,e.errorMessage="",e.errorDetails="",e.statusReason="";break;case"accounts.logout":case"socialize.logout":e=n(e)}return e},a.prototype.afterServerApiResponse=function(i,n){var o=this;t.checkCompleteRegistration(i,this.originalParams,function(r,a,s){i=r,i=o.preprocessServerResponse(i),t.logoutMethods[o.api.methodName]&&0==i.errorCode&&i.logoutActiveSession&&o.onAfterLogoutMethod(),403005==i.errorCode&&(i=o.getExpiredSessionResponse(i)),0==i.errorCode&&(n||t.loginMethods[o.api.methodName])&&e.utils.cookie.remove("_gigRefUid_"+o.originalParams.APIKey),o.handleMethodResponse(i,function(r){i=r,o.addDefaultResponseProperties(i),t.handleSpecialFields(i),o.logoutFromProvidersIfNeeded(i,function(t){return t?void o.sendRequest(n):(a||o.generateEventsFromResponse(i,n),s?void o.sendRequest(n):(e.events.global.dispatch({eventName:"afterResponse",methodName:o.api.methodName,filteredParams:o.params,response:i},o.originalParams),"function"==typeof o.callback&&(e.log.addLog("Calling callback for "+o.api.methodName+" with this response object",i),o.callback(i)),void(o.api.settings.postprocessor&&o.api.settings.postprocessor(o.originalParams,i))))})})})},a.prototype.addDefaultResponseProperties=function(e){delete e.statusCode,delete e.statusReason,e.errorCode=e.errorCode||0,e.status=e.status||(0==e.errorCode?"OK":"FAIL"),e.errorMessage=e.errorMessage||"",e.statusMessage=e.statusMessage||e.errorMessage,e.requestParams=this.originalParams,e.requestParams.password&&delete e.requestParams.password,e.context=this.originalParams.context;var t=this.api.methodName.split(".")[0];e.operation="socialize"==t?this.api.methodName.split(".")[1]:"/"+this.api.methodName},a.prototype.handleMethodResponse=function(i,n){if(0==i.errorCode)switch(this.api.methodName){case"accounts.socialLogin":case"socialize.login":i.newUser="true"==String(i.x_newUser),delete i.x_newUser;case"socialize.notifyLogin":case"socialize.addConnection":case"accounts.linkAccounts":case"accounts.finalizeRegistration":case"accounts.login":case"accounts.register":case"socialize.getUserInfo":if(delete i.login_token,delete i.expires_in,delete i.id,i.code&&(i.authCode=i.code,delete i.code),!(i.authCode||"socialize.notifyLogin"==this.api.methodName&&this.params.authCode)){var o=i;if(i.userInfo&&(o=i.userInfo,delete i.userInfo),this.api.methodName.indexOf("accounts.")==-1?(i={user:o},e.utils.object.extractProperties(o,i,"status|statusMessage|callId|errorCode|errorMessage|errorDetails|settings|context|UIDSig|timestamp|UIDSignature|signatureTimestamp|UID|profile|data|newUser|signKeysUIDSignature"),i.user.hasOwnProperty("UIDSig")&&(i.signature=i.user.UIDSig),o.profile&&delete o.profile,o.data&&delete o.data,delete o.status,delete o.statusMessage,delete o.callId,delete o.errorCode,delete o.errorMessage,delete o.errorDetails,delete o.settings,delete o.context):i!=o&&(i.user=o),""==o.age||isNaN(parseInt(o.age))||(o.age=parseInt(o.age)),o.suppressEvents&&(i.suppressEvents=!0),"string"==typeof o.capabilities){var r=o.capabilities;r||(r=""),"object"!=typeof o.capabilities&&(o.capabilities={}),r=r.toLowerCase(),o.capabilities={actions:r.indexOf("actions")>-1,friends:r.indexOf("friends")>-1,login:r.indexOf("login")>-1,status:r.indexOf("status")>-1,notifications:r.indexOf("notifications")>-1,contacts:r.indexOf("contacts")>-1,photos:r.indexOf("photos")>-1}}if(t.convertIdentitiesArrayToObject(o),"string"==typeof o.providers&&(o.providers=o.providers.split(",")),this.params.group&&!i.settings){var a=t.getGigyaSettings(this.params.group);i.settings=a}}break;case"socialize.getAvailableProviders":for(var s={},c=0;c<i.availableProviders.length;c++)s[i.availableProviders[c].name]=i.availableProviders[c];i.availableProviders=s}"socialize.removeConnection"===this.api.methodName&&0==i.errorCode?e.socialize.getUserInfo(this.originalParams,{callback:function(e){n(e)}}):n(i)},a.prototype.logoutFromProvidersIfNeeded=function(i,n){var o=5e3,a=1e4,s=i.errorCode;if(t.logoutMethods[this.api.methodName]&&0==s){i.logoutActiveSession&&e._.apiAdapter.clearSession(this.params.APIKey);var c,l=new Array,u=o,g=0;if(i.connectedProviders?c=i.connectedProviders.toLowerCase():i.provider&&(c=i.provider.toLowerCase()),c&&!e.utils.validation.isExplicitFalse(this.originalParams.forceProvidersLogout))for(var d=c.split(","),p=0;p<d.length;++p){var f=d[p],h=r[f],m=null,v=o;0===f.indexOf("saml-")&&(h=r.samlProvider,m=f.substring("saml-".length),v=!1,u=a,g=o),l.push({type:h,data:m,removeAfter:v})}if(i.samlContext&&i.connectedSamlSessions)for(var y=i.samlContext,b=i.connectedSamlSessions.split(","),p=0;p<b.length;++p)l.push({type:r.samlSession,data:{samlContext:y,samlSession:b[p]},removeAfter:!1}),u=a,g=o;if(l.length){var w=0,S=!1,I=function(){S||(S=!0,n(!1))};window.setTimeout(I,u);for(var A=function(){w++,w===l.length&&window.setTimeout(I,g)},p=0;p<l.length;p++)this.logoutFromProvider(l[p],A)}else n(!1)}else 403013==i.errorCode&&"accounts.verifyLogin"!==this.api.methodName?e.accounts.verifyLogin({callback:function(e){n(0==e.errorCode?!0:!1)}}):n(!1)},a.prototype.logoutFromProvider=function(t,i){var n="",o=!1,a=!0,s=""+e._.getApiDomain("fidm");switch(t.type){case r.facebook:if(e.providersConfig.facebook)return void e.socialize.waitForService({service:"facebook",callback:function(){e.external.facebook.isLoggedIn&&FB.logout?FB.logout(function(){e.external.facebook.refreshSession(),e.utils.cookie.remove("fblo_"+e.providersConfig.facebook.appID),i()}):i()}});break;case r.yahoo:n="https://login.yahoo.com/config/login?.src=fpctx&logout=1&r=";break;case r.googleplus:n="https://accounts.google.com/logout",a=!1;break;case r.samlProvider:n=e.utils.URL.addParamsToURL("https://"+s+"/saml/v2.0/"+this.params.APIKey+"/sp/jsslo",{name:t.data}),o=!0,a=!1;break;case r.samlSession:n=e.utils.URL.addParamsToURL("https://"+s+"/saml/v2.0/"+this.params.APIKey+"/idp/slo/continue/",t.data),o=!0,a=!1}if(n){a&&(n+=(new Date).getTime());var c,l=o?e.utils.script.ResourceTypes.iframe:e.utils.script.ResourceTypes.image;c=t.removeAfter,e.utils.script.triggerResource(n,i,l,c)}else i()},a.prototype.generateEventsFromResponse=function(i,n){var o,r=this;if(0==i.errorCode)switch(this.api.methodName){case"accounts.logout":case"socialize.logout":case"socialize.unlinkAccounts":case"socialize.deleteAccount":o={eventName:"logout,accounts.logout"};break;case"socialize.linkAccounts":case"socialize.setUID":t.addUserInfoToEvent(i,o,!0);break;case"socialize.removeConnection":o={eventName:"connectionRemoved,disconnect",provider:this.params.provider||""},t.addUserInfoToEvent(i,o);break;case"socialize.addConnection":!n&&i.user.isLoggedIn?(o={eventName:"login",provider:this.params.provider},t.addUserInfoToEvent(i,o,!0)):(o={eventName:"connectionAdded,connect",provider:this.params.provider},t.addUserInfoToEvent(i,o));break;case"accounts.linkAccounts":case"accounts.finalizeRegistration":case"accounts.login":case"accounts.register":case"accounts.socialLogin":this.dispatchAccountsLoginEvent(i);case"socialize.finalizeRegistration":case"socialize.register":case"socialize.login":if(!i.user&&!i.authCode)break;o={eventName:"login"};var a=this.params.provider;if(!a&&i.providerSessions)for(var s in i.providerSessions){a=s;break}o.provider=a||"site",o.loginMode=this.originalParams.loginMode||"standard",o.newUser=i.newUser||!1,i.authCode&&(o.authCode=i.authCode),t.addUserInfoToEvent(i,o,!0),i.user&&a&&(a=a.toLowerCase(),e.utils.cookie.set("_gig_llp",a),e.utils.cookie.set("_gig_llu",i.user.firstName||""));break;case"socialize.notifyLogin":this.params.authCode||(o||(o={eventName:"login"}),o.provider="site",t.addUserInfoToEvent(i,o,!0));break;case"gm.notifyAction":e.events.global.dispatch({eventName:"actionNotified",isInternal:!0})}t.loginMethods[this.api.methodName]&&this.originalParams.redirectURL&&o&&o.user&&0==i.errorCode&&e.utils.HTTP.redirect(this.originalParams.redirectURL,[o,o.user],this.originalParams.redirectMethod),0==i.errorCode&&o&&"login"===o.eventName&&!i.profile&&e.events.global._activeNamespaces.accounts&&this.api.methodName.indexOf("accounts")===-1&&e.accounts.getAccountInfo(this.originalParams,{include:"profile,data",includeUserInfo:!1,callback:function(e){r.dispatchAccountsLoginEvent(e)}}),null!=o&&(o.context=this.originalParams.context,e.events.global.dispatch(o,this.originalParams))},a.prototype.dispatchAccountsLoginEvent=function(t){var i={eventName:"accounts.login",remember:e.utils.validation.isExplicitTrue(this.originalParams.remember),provider:this.originalParams.provider?this.originalParams.provider.toLowerCase():"",loginMode:this.originalParams.loginMode||"standard"};e.utils.object.extractProperties(t,i,"newUser|signature|UIDSig|timestamp|UIDSignature|signatureTimestamp|UID|profile|data|signKeysUIDSignature"),e.events.global.dispatch(i,this.originalParams)},a}();t.ServerApiRequest=a}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(gigya){var _;!function(_){_.__pluginsCoreLoaded=!1;var sourceDataParams={showReactionsBarUI:["barID"],showCommentsUI:["categoryID","streamID"]},UiApi=function(_super){function UiApi(e,t,i,n,o,r){void 0===i&&(i={}),void 0===n&&(n={}),void 0===o&&(o=""),void 0===r&&(r={});var a=_super.call(this,UiApi.getApiName(t,e,r),r)||this;return a.methodName=e,a.jsName=t,a.settings=r,r.defaultParams=i||{},r.defaultPopupParams=n||{},r.requiredParams=o||"",a}return __extends(UiApi,_super),UiApi.getApiName=function(e,t,i){return void 0===i&&(i={}),i.apiName||e.split(".")[0]+"."+t},UiApi.versionSelector=function(e,t,i,n,o){void 0===o&&(o="version");var r=new _.api.VersionSelector(e,n,i);return gigya.utils.functions.createAlias("gigya."+t+"."+e,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var i=e[0],n=e[1];n||(n=i,i=null),n||(n={},e.push(n));var a=gigya.utils.object.merge([{},i,n]);r.callVersion(""+a[o],n,e)}),r},UiApi.createApi=function(e,t,i,n,o,r){void 0===o&&(o={}),o.useBasePlugin=!0;var a=new UiApi(e,n,null,null,null,o);return a.namespace=t,a.className=i,a.instanceMethods=r||[],a.addInstanceMethodsAliases(),a},UiApi.prototype.addInstanceMethodsAliases=function(){for(var e=0;e<this.instanceMethods.length;e++)this.createInstanceMethodAlias(this.instanceMethods[e])},UiApi.prototype.createInstanceMethodAlias=function(e){var t=this;gigya.utils.functions.createAlias("gigya."+this.namespace+"."+e,function(i){if(!t.injectionInfo)return void gigya.log.addLog("invalid injection info",t,!1);var n=t.getPublicMethod(e),o=_.plugins.getPluginInstance(i,t.injectionInfo);if(o){var r=[];gigya.utils.array.forEach(n.argNames,function(e){e&&void 0!==i[e]&&r.push(i[e])}),o[n.instanceMethod].apply(o,r)}else gigya.log.addLog("couldn't find instance",t,!1)})},UiApi.prototype.getPublicMethod=function(e){var t;if(this.injectionInfo.publicMethods&&(t=this.injectionInfo.publicMethods[e]),!t)throw new Error("public method "+e+" is not configured for "+this.injectionInfo.name);return t},UiApi.prototype.preprocessRequest=function(e,t){var i=this;_super.prototype.preprocessRequest.call(this,e,function(){e.source||i.setSourceData(e),t&&t()})},UiApi.prototype.run=function(e,t){var i=this;!this.settings.waitForAPIQueue||e.ignoreApiQueue?this.startUI(e,t):gigya.utils.queue.queueForExecution("API",function(){i.startUI(e,t)})},UiApi.prototype.startUI=function(params,explicitParams){var _this=this;params=gigya.utils.object.clone(params),this.prepareParameters(params),this.preprocessRequest(params,function(){_this.settings.useBasePlugin?_this.loadPluginJS(params,function(loadedFromServer){gigya.utils.queue.queueForExecution("UI",function(){loadedFromServer&&_this.className&&(_this.pluginType=eval("gigya._.plugins."+_this.className),_this.injectionInfo=_this.pluginType.injectionInfo(_this));var fnStart=function(){_this.startPlugin(params,explicitParams)};0==params.waitForDebug?fnStart():gigya.utils.queue.queueForExecution("debug",fnStart)})}):_this.legacyStartUI(params,explicitParams)})},UiApi.prototype.startPlugin=function(e,t){var i=this;gigya.events.global.dispatch({eventName:"beforePluginRequest",methodName:this.methodName,params:e,explicitParams:t},e);var n=e.originalMethodName||this.methodName;if(gigya.log.logCall(n,e),gigya.reports.reportLoad(n,e),this.pluginType){if(e){var o=_.plugins.getPluginInstance(e,this.injectionInfo);o&&o.dispose&&!e._allowMultipleInstances&&!e.newModal&&o.dispose()}var r=new this.pluginType(e,t,this.injectionInfo);if(_.plugins.setPluginInstance(e,this.injectionInfo,r),r.onDisposedEvent().add(function(){return _.plugins.removePluginInstance(e,i.injectionInfo)}),r.start(),r.containerID){var a=document.getElementById(r.containerID);a&&(a.gigyaPluginInstance=r)}e.getInstance&&e.getInstance(r)}else gigya.utils.functions.callFunction("gigya."+this.jsName+"."+this.methodName,[e,e,e])},UiApi.prototype.loadPluginJS=function(e,t){if(this.wasPluginJSLoaded(e))t&&t(!1);else{var i,n=!1,o=gigya._.getCdnResource("/js/"),r="gigya.services."+this.jsName,a=o+r+".min.js"+(e.lang?"?lang="+e.lang:""),s=o+"gigya.services.plugins.base.min.js?services="+r+(e.lang?"&lang="+e.lang:"");_.__pluginsCoreLoaded?i=a:(i=s,_.__pluginsCoreLoaded=!0,n=!0,gigya.utils.queue.hold("pluginsJS","UI")),gigya.utils.script.load(i,null,function(){n&&gigya.utils.queue.release("pluginsJS","UI"),t&&t(!0)},!0,void 0,[a,s])}},UiApi.prototype.wasPluginJSLoaded=function(params){var funcName="gigya."+this.jsName+"."+this.methodName,fullJSName="gigya.services."+this.jsName+".js";try{var func=eval(funcName),langObj=gigya.i18n[fullJSName][params.lang]}catch(e){return!1}return"undefined"!=typeof func&&"undefined"!=typeof langObj},UiApi.prototype.setSourceData=function(e){if("socialize.showSimpleShareUI"==this.methodName?e.source="socialize.showShareUI":e.source=e.originalMethodName||this.methodName,!e.sourceData&&sourceDataParams[this.methodName]){for(var t,i={},n=0;n<sourceDataParams[this.methodName].length;n++){var o=sourceDataParams[this.methodName][n];null!=e[o]&&(t=!0,i[o]=e[o])}t&&(e.sourceData=i)}e.pluginsStack||(e.pluginsStack=[]),e.pluginsStack.push({source:this.methodName}),e.lastSource=this.methodName},UiApi.prototype.validateRequiredParams=function(e){for(var t=this.settings.requiredParams.split("|"),i=0;i<t.length;i++){var n=t[i];if(""!=n&&(null==e[n]||""==e[n]))return gigya.events.dispatchInvalidParamError(e,n),!1}return!0},UiApi.prototype.setDefaultParams=function(e){var t=!e.containerID||e.isPopup;for(var i in this.settings.defaultParams)null==e[i]&&(t&&this.settings.defaultPopupParams[i]?e[i]=this.settings.defaultPopupParams[i]:e[i]=this.settings.defaultParams[i]);if(t)for(var i in this.settings.defaultPopupParams)e[i]||(e[i]=this.settings.defaultParams[i])},UiApi.prototype.prepareParameters=function(e){for(var t in e)t.toLowerCase().indexOf("provider")!=-1&&"string"==typeof e[t]&&(e[t]=gigya._.providers.replaceProviderAliases(e[t]));e.lang||(e.lang=gigya.thisScript.lang.langCode),e.source?e.isPopup=!1:this.setSourceData(e)},UiApi.prototype.legacyStartUI=function(e,t){var i=this,n=e.containerID;if(this.settings.ignoreContainerId)e.containerID="",n="";else if(null==e.containerID&&!this.settings.allowPopup||e.containerID&&!document.getElementById(e.containerID))return void gigya.events.dispatchInvalidParamError(e,"containerID");var o=this.settings.allowPopup&&(!n||e.isPopup);o&&this.settings.useNewModal&&(e.useNewModal=!0),this.setDefaultParams(e),this.settings.allowPopup||o||gigya.utils.DOM.clearByID(n),this.validateRequiredParams(e)&&this.loadPluginJS(e,function(){var n=function(){i.prepareContainer(e,o,function(){i.startPlugin(e,t)})};gigya.utils.queue.queueForExecution("UI",function(){0==e.waitForDebug?n():gigya.utils.queue.queueForExecution("debug",n)})})},UiApi.prototype.prepareContainer=function(e,t,i){var n=this;if(document.body){var o,r=e.containerID;if(t&&(r=gigya.utils.DOM.getCenteredDivID(this.methodName),e.newModal&&(r+=(new Date).getTime()),e.containerID=r,e.isPopup=!0,document.getElementById(r)||(o=gigya.utils.DOM.createTopLevelDiv(r),o.style.position="absolute")),o=o||document.getElementById(r),!o)return gigya.events.dispatchInvalidParamError(e,"containerID"),void i();var a=o.Reqs?o.Reqs:o.Reqs=[],s=a.length+"@0@"+r;e.rid=s;a[a.length]={rid:s,container:o,method:this.methodName,context:e.context,c:e,p:e,i:e,operation:this.methodName,isHTML:!0};if(o&&o.style){o.style.display="",o.style.visibility="";var c=document.getElementById("gigya_ifr_"+r);c&&(c.style.display="",c.style.visibility="");var l=function(){null!=c&&(gigya.utils.DOM.setSize(c,e.width,e.height,t),c.style.visibility="visible"),gigya.utils.DOM.setSize(o,e.width,e.height,t)};l()}var u=this.methodName.split(".").pop();o.setAttribute&&o.setAttribute("gigid",(e.source&&e.source!=u?e.source+"_":"")+u),i()}else window.setTimeout(function(){n.prepareContainer(e,t,i)},200)},UiApi}(_.BaseApi);_.UiApi=UiApi}(_=gigya._||(gigya._={}))}(gigya||(gigya={})),function(e){var t;!function(e){var t;!function(e){function t(e,t){return e.instanceID?e.instanceID:e.isPopup?"gigya-modal-plugin-container-"+t.methodName:e.containerID?e.containerID:t.name}function i(i,n){var o=t(i,n);return e.instances[o]}function n(i,n,o,r){void 0===r&&(r=!1);var a=t(i,n);if(!r)for(var s=a,c=2;e.instances[a];c++)a=s+c.toString();i.instanceID=a,e.instances[a]=o}function o(i,n){delete e.instances[t(i,n)],delete i.instanceID}e.instances={},e.getPluginInstance=i,e.setPluginInstance=n,e.removePluginInstance=o}(t=e.plugins||(e.plugins={}))}(t=e._||(e._={}))}(gigya||(gigya={})),function(e){var t;!function(t){var i;!function(t){function i(t){e.utils.queue.queueForExecution("UI",t)}function n(t,i,n,o){i||(i="socialize"),e[i]||(e[i]={}),e[i].plugins||(e[i].plugins={}),e[i].plugins[n]||(e[i].plugins[n]={instances:[]});var r=e[i].plugins[n];if(r[o]||(r[o]=function(e){var o="gigya."+i+".plugins."+n+".instances["+r.instances.length+"]",a=new t(e,o);r.instances.push(a)}),t.StaticApi)for(var a in t.StaticApi){var s=t.StaticApi[a],c=t[s];e.utils.functions.createAlias("gigya."+i+".plugins."+n+"."+a,c)}}t.registerPlugin=i,t.attachPlugin=n}(i=t.UI||(t.UI={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(gigya){var _;!function(_){var api;!function(api){var VersionSelector=function(){function VersionSelector(e,t,i){if(this.methodName=e,this._versions=t,!this._versions||this._versions.length<1)throw new Error(this.methodName+": required at least one valid version");if(i){if(this._defaultVersionIndex=this.findVersionIndexOrDefault(i),this._defaultVersionIndex==-1)throw new Error(this.methodName+": default version is not defined as a version")}else this._defaultVersionIndex=0}return VersionSelector.prototype.callVersion=function(e,t,i){void 0===t&&(t={}),void 0===i&&(i=[t]);var n=this.findVersionIndexOrDefault(e);if(n==-1)throw Error("gigya plugin version doesn't exist");var o=this.findSupportedVersion(n);if(!o)throw new Error(e+": could not find supported version for this browser");this.invokeVersionMethod(o,t,i)},VersionSelector.prototype.findSupportedVersion=function(e){for(var t=this._versions.length,i=0;i<t;++i){var n=this._versions[(e-i+t)%t];if(!n.isSupported||n.isSupported({directCall:0==i}))return n}},VersionSelector.prototype.findVersionIndexOrDefault=function(e){var t=-1;return e&&(t=gigya.utils.array.firstIndex(this._versions,function(t){return t.versionName==e})),t==-1&&(t=void 0!==this._defaultVersionIndex?this._defaultVersionIndex:-1),t},VersionSelector.prototype.invokeVersionMethod=function(version,params,args){void 0===params&&(params={}),void 0===args&&(args=[params]);var versionMethod;switch(typeof version.method){case"function":versionMethod=version.method;break;case"string":versionMethod=eval(version.method),params.selectedMethodName=version.method;break;default:throw Error(this.methodName+" "+version.versionName+": unsupported gigya-version method")}for(var field in version.additionalParams)params[field]=version.additionalParams[field];params.originalMethodName=this.methodName,versionMethod.apply(this,args)},VersionSelector}();api.VersionSelector=VersionSelector}(api=_.api||(_.api={}))}(_=gigya._||(gigya._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){t.defaultApiSchema="ctag|APIKey|cid|oauth_token|source|sourceData|usePost|refUID|fb_UID|fb_at|fb_exp|environment",t.defaultOauthSchema="ctag|temporary_account|authFlow|connectWithoutLogin|provider|redirectMethod|redirect_uri|pendingRegistration|lang|regSource|extraPermissions|sessionExpiration|forceAuthentication|includeiRank|includeAllIdentities|extraFields|enabledProviders|disabledProviders|signIDs|openIDUsername|openIDURL|openIDProviderLogo|openIDProviderName|finalizeRegistration|include|actionAttributes|profileAttributes|googlePlayAppID|bp_channel_url|loginIfExists|includeUserInfo|redirectURL|authCodeOnly|enablePopupLocation|invite|regToken|loginMode|apiDomain|conflictHandling|forcePermissions|signKeys",t.postBookmarkSchema="provider|URL|url|title|description|target|cid|APIKey|shortURLs|source|sourceData|providerKey|thumbnailURL|tags|userAction|[providerCapability=actions]UserAction|actionAttributes|facebookDialogType",t.loginMethods={"socialize.login":1,"socialize.addConnection":1,"socialize.notifyLogin":1,"socialize.linkAccounts":1,"accounts.login":1,"accounts.socialLogin":1,"accounts.linkAccounts":1,"accounts.register":1,"accounts.finalizeRegistration":1};var i=function(e){return"link"!==e.loginMode&&"reAuth"!==e.loginMode},n=function(e,t){t()};t.logoutBehaviour={logoutBeforeServerResponse:!0,alwaysSendLogoutToServer:!1},t.logoutMethods={"socialize.logout":1,"accounts.logout":1,"socialize.deleteAccount":1,"socialize.unlinkAccounts":1};var o=function(t,i){e.partnerSettings.ssoKey&&(t.signIDs=!0),i()},r=function(){return!t.logoutBehaviour.alwaysSendLogoutToServer};t.arApiList=[new t.ServerApi("socialize.login",t.defaultOauthSchema,(!1),{oauth:!0},{preprocessor:n,clearSessionCondition:i,forceHttps:!0}),new t.ServerApi("socialize.addConnection",t.defaultOauthSchema,(!1),{oauth:!0},{forceHttps:!0}),new t.ServerApi("socialize.requestPermissions",t.defaultOauthSchema,(!0),{oauth:!0,defaultParams:{forcePermissions:!0}}),new t.ServerApi("accounts.socialLogin",t.defaultOauthSchema,(!1),{oauth:!0},{preprocessor:n,clearSessionCondition:i,forceHttps:!0}),new t.UiApi("showDebugUI","socialize.plugins.debug",{},{},"",{allowPopup:!0}),t.UiApi.createApi("showMyPhotoUI","accounts","profilePhoto.MyPhotoPlugin","accounts.plugins.profilePhoto"),t.UiApi.createApi("showRatingUI","comments","rating.RatingPlugin","comments.plugins.rating"),t.UiApi.createApi("runJsUnitTests","_","JsUtRunner.Jasmine.JasmineUtRunnerPlugin","_.plugins.jsUtRunner"),t.UiApi.createApi("loadBasePlugin","_","Mock.MockPlugin","_.plugins.mock"),new t.UiApi("showCommentsUI","comments.plugins.comments",{width:500},{},"",{apiName:"comments.showCommentsUI1"}),new t.UiApi("showCommentsUI","comments.plugins.comments2",{width:500},{},"",{apiName:"comments.showCommentsUI2"}),t.UiApi.versionSelector("showCommentsUI","comments","2",[{versionName:"1",method:e.comments.showCommentsUI1,additionalParams:{ctag:"comments_v1"}},{versionName:"2",method:e.comments.showCommentsUI2,additionalParams:{ctag:"comments_v2"},isSupported:function(){return e.utils.browser.isModern()}}]),new t.UiApi("showShareUI","socialize.plugins.share",{width:520,height:320},{width:595,height:324},"userAction",{allowPopup:!0,preprocessor:function(i,n){var o=i.operationMode;o&&(o=o.toLowerCase().replace(/ /g,"")),i.containerID||(delete i.width,delete i.height),t.apiAdapter.isSessionValid(i,function(t){"simpleshare"==o||"autodetect"==o&&!t?e.socialize.showSimpleShareUI(i):n()})}}),t.UiApi.createApi("showMessageUI","_","messages.MessagesPlugin","_.plugins.messages"),new t.UiApi("showLoginUI_v1","socialize.plugins.login",{width:120,height:110},{width:280,height:220},"",{allowPopup:!0}),t.UiApi.createApi("showLoginUI_v2","socialize","login_v2.LoginPlugin","socialize.plugins.login_v2"),t.UiApi.versionSelector("showLoginUI","socialize","1",[{versionName:"1",method:e.socialize.showLoginUI_v1},{versionName:"2",method:e.socialize.showLoginUI_v2}]),new t.UiApi("showAddConnectionsUI_v1","socialize.plugins.login",{width:110,height:65},{width:250,height:200},"",{allowPopup:!0}),t.UiApi.createApi("showAddConnectionsUI_v2","socialize","login_v2.LoginPlugin","socialize.plugins.login_v2"),t.UiApi.versionSelector("showAddConnectionsUI","socialize","1",[{versionName:"1",method:e.socialize.showAddConnectionsUI_v1},{versionName:"2",method:e.socialize.showAddConnectionsUI_v2}]),t.UiApi.createApi("showEditConnectionsUI","socialize","editConnections.EditConnectionPlugin","socialize.plugins.edit"),new t.UiApi("showShareBarUI","socialize.plugins.reactions",{shareCountCacheTimeout:30},{},"userAction|shareButtons"),new t.UiApi("showReactionsBarUI","socialize.plugins.reactions",{},{},"userAction|barID|reactions",{preprocessor:function(e,t){e.barID||(e.barID=e.itemID),t()}}),new t.UiApi("showMiniShareUI","socialize.plugins.minishare",{width:320,height:153},{},"",{allowPopup:!0}),new t.UiApi("showBookmarkUI","socialize.plugins.bookmark",{width:310,height:250},{width:310,height:310}),new t.UiApi("showSimpleShareUI","socialize.plugins.simpleShare",{width:280,height:175},{},"userAction",{allowPopup:!0,dontLoadPluginsCore:!0,waitForAPIQueue:!0}),new t.UiApi("showShareMobileUI","socialize.plugins.shareMobile",{},{},"userAction",{allowPopup:!0}),new t.UiApi("showUserStatusUI","gm.plugins.userStatus",{width:300,hidePoints:!1,hideActions:!1},{},"",{requireSession:!0}),new t.UiApi("showAchievementsUI","gm.plugins.achievements",{width:300,height:100,excludeChallenges:"_default"}),new t.UiApi("showChallengeStatusUI","gm.plugins.achievements",{width:300,height:100,challenge:"_default"}),new t.UiApi("showLeaderboardUI","gm.plugins.leaderboard",{width:300},{},"",{preprocessor:function(e,t){e&&e.height&&(e.height=null),t()}}),new t.UiApi("showNotifications","gm.plugins.notifications",{},{},"",{preprocessor:function(t,i){var n=e.utils.localStorage.getObject("gmSettings");if(!n||!n.disableNotifications){if(t.containerID="gigNotifications",!document.getElementById(t.containerID)){var o=document.createElement("div");o.id=t.containerID,o.style.position="absolute",o.style.left="-1000px",e.utils.DOM.appendToBody(o)}i()}}}),new t.UiApi("showTfaUI","accounts.plugins.tfa",{width:325}),t.UiApi.createApi("showScreenSet","accounts","ScreenSet.ScreenSetPlugin","accounts.plugins.screenSet",void 0,["hideScreenSet","switchScreen"]),new t.ServerApi("socialize.getAvailableProviders","enabledProviders|disabledProviders|requiredCapabilities"),new t.ServerApi("socialize.notifyLogin","siteUID|UIDTimestamp|UIDSig|UIDNonce|provider|authToken|tokenSecret|regSource|tokenExpiration|sessionHandle|sessionHandleExpiration|userInfo|providerSessions|sessionExpiration|authCode|includeAllIdentitiesincludeiRank|group|settings|extraFields|signIDs|newUser|actionAttributes|profileAttributes|bp_channel_url|signKeys",(!1),(void 0),{ forceHttps:!0,clearSession:!0}),new t.ServerApi("socialize.shortenURL","URL"),new t.ServerApi("socialize.convertAction","userAction|[providerCapability=actions]UserAction|provider"),new t.ServerApi("socialize.getReactionsCount","barID|buttonIDs|reportLoad"),new t.ServerApi("socialize.incrementReactionsCount","barID|buttonID|count|actionAttributes|profileAttributes"),new t.ServerApi("socialize.deleteAccount",(void 0),(!0)),new t.ServerApi("socialize.delUserSettings","group|settings",(!0)),new t.ServerApi("socialize.getContacts","enabledProviders|disabledProviders",(!0)),new t.ServerApi("socialize.getFriendsInfo","enabledProviders|disabledProviders|detailLevel|UIDs|siteUsersOnly|requiredCapabilities|signIDs",(!0)),new t.ServerApi("socialize.getRawData","provider|UID|fields|dataFormat|path",(!0)),new t.ServerApi("socialize.getSessionInfo","provider|paddingMode|encrypt|signIDs|encryptAll",(!0)),new t.ServerApi("socialize.getUserInfo","enabledProviders|disabledProviders|signIDs|includeiRank|includeAllIdentities|extraFields|group|settings|includeOpenidUID",(!0)),new t.ServerApi("socialize.getUserSettings","group|settings|regToken",(!0),(void 0),{forceHttps:!0},"regToken"),new t.ServerApi("socialize.checkin","enabledProviders|disabledProviders|placeID|comment|latitude|longitude|actionAttributes|profileAttributes",(!0)),new t.ServerApi("socialize.logout","signIDs|samlContext|sustainLogoutURLs",(!0),{preprocessor:o,disableCache:!0},{requiresSession:r}),new t.ServerApi("socialize.notifyRegistration","siteUID|UIDTimestamp|UIDSig",(!0)),new t.ServerApi("socialize.publishUserAction","userAction|[providerCapability=actions]UserAction|enabledProviders|disabledProviders|target|shortURLs|userLocation|tags|actionAttributes|profileAttributes",(!0)),new t.ServerApi("socialize.removeConnection","provider|lastIdentityHandling|removeLoginID",(!0)),new t.ServerApi("socialize.setStatus","shortURLs|status|[providerCapability=status]Status|enabledProviders|disabledProviders|userLocation|actionAttributes|profileAttributes",(!0)),new t.ServerApi("socialize.setUID","siteUID|UIDTimestamp|UIDSig",(!0)),new t.ServerApi("socialize.setUserSettings","group|settings|regToken",(!0),(void 0),{forceHttps:!0},"regToken"),new t.ServerApi("socialize.unlinkAccounts",(void 0),(!0)),new t.ServerApi("socialize.sendEmail","dontSendEmail|companyName|lang|emails|emailSubject|emailBody|linkBack|senderEmail|senderName|userMsg|shortURLs|userAction|[providerCapability=actions]UserAction|actionAttributes|profileAttributes|captchaTicket|lang",(!1),(void 0),{forceHttps:!0}),new t.ServerApi("socialize.facebookGraphOperation","graphPath|graphParams|authRequired|method|authType"),new t.ServerApi("socialize.getTopShares","age|tag|limit"),new t.ServerApi("socialize.notifySSOLogin","bp_channel_url"),new t.ServerApi("gm.getChallengeStatus","UID|includeChallenges|excludeChallenges|details|lang|actionAttributes|profileAttributes"),new t.ServerApi("gm.resetLevelStatus","challenges|actionAttributes|profileAttributes",(!0)),new t.ServerApi("gm.getTopUsers","challenge|totalCount|friendsCount|includeSelf|period|lang|actionAttributes|profileAttributes"),new t.ServerApi("gm.getChallengeConfig","UID|includeChallenges|excludeChallenges|lang|actionAttributes|profileAttributes|expandActions"),new t.ServerApi("gm.notifyAction","action|operation|challengeIDs|actionAttributes|profileAttributes",(!0)),new t.ServerApi("comments.updateComment","categoryID|streamID|commentID|commentText|commentTitle|ratings|mediaItems|taggedUsers"),new t.ServerApi("comments.postComment","categoryID|streamID|parentID|guestName|guestEmail|commentText|anonymous|mediaItems|privacy|feedID|userAction|[providerCapability=actions]UserAction|scope|enabledProviders|disabledProviders|shortURLs|commentTitle|ratings|tags|taggedUsers|streamTags|actionAttributes|profileAttributes"),new t.ServerApi("comments.getComments","categoryID|streamID|includeSettings|start|startTS|threadLimit|sort|threaded|threadDepth|includeStreamInfo|includeOpenidUID|includeUID|includeReplies|tags|dataFormat|markupType|includeUserOptions|includeUserComments|includeRatingsDims|includeUserHighlighting|pinnedCommentID|lang"),new t.ServerApi("comments.setStreamInfo","categoryID|streamID|streamTitle|streamURL|streamInfoSig|streamTags"),new t.ServerApi("comments.getTopStreams","categoryID|limit|maxStreamAge|includeLastComment|streamTag|minRatingsCount"),new t.ServerApi("comments.getTopRatedStreams","categoryID|limit|maxStreamAge|ratingClass|minRatingsCount|streamTag"),new t.ServerApi("comments.getStreamInfo","categoryID|streamID|streamIDs|includeLastComment|includeRatingsDims|includeRatingDetails"),new t.ServerApi("comments.flagComment","categoryID|streamID|commentID|actionAttributes|profileAttributes"),new t.ServerApi("comments.vote","categoryID|streamID|commentID|vote|actionAttributes|profileAttributes",(!0)),new t.ServerApi("comments.getUserVotes","categoryID|streamID",(!0)),new t.ServerApi("comments.getUserComments","categoryID|streamID|tag|senderUID|start|limit|sort|includeReplies|includeStreamInfo|includeUserHighlighting",(!0)),new t.ServerApi("comments.getFriendsComments","categoryID|streamID|start|limit|includeUID|sort|includeReplies|includeStreamInfo",(!0)),new t.ServerApi("comments.getThread","categoryID|streamID|commentID|start|includeUID|limit|threadDepth|sort"),new t.ServerApi("comments.deleteComment","categoryID|streamID|commentID",(!0)),new t.ServerApi("comments.getRelatedUsers","categoryID|streamID|parentCommentID|usernamePrefix|limit"),new t.ServerApi("comments.analyzeMediaItem","categoryID|urls"),new t.ServerApi("comments.subscribe","categoryID|streamID|email|lang"),new t.ServerApi("comments.unsubscribe","categoryID|streamID|unsubscribeToken"),new t.ServerApi("comments.setUserOptions","replyNotifications|notificationsEmail|notificationsLanguage",(!0)),new t.ServerApi("comments.getUserOptions","ServerApiKey",(!0)),new t.ServerApi("gcs.getUserData","type|fields",(!0)),new t.ServerApi("gcs.setUserData","data|type|updateBehavior",(!0)),new t.ServerApi("gcs.search","expTime|querySig|query"),new t.ServerApi("gcs.getSchema","schemaType"),new t.ServerApi("accounts.login","loginID|password|sessionExpiration|targetEnv|regToken|include|actionAttributes|profileAttributes|includeUserInfo|includeDynamicSchema|bp_channel_url|captchaToken|captchaText|loginMode|signKeys",(!1),(void 0),{preprocessor:n,clearSessionCondition:i,forceHttps:!0,forcePost:!0}),new t.ServerApi("accounts.linkAccounts","loginID|password|sessionExpiration|targetEnv|include|regToken|includeUserInfo|bp_channel_url|signKeys",(!1),(void 0),{forceHttps:!0,forcePost:!0}),new t.ServerApi("accounts.initRegistration","sdk|isLite",(!1),(void 0),{clearSession:!0}),new t.ServerApi("accounts.register","username|email|password|UID|regToken|siteUID|secretQuestion|secretAnswer|regSource|profile|data|captchaText|captchaToken|lang|hashedPassword|pwHashAlgorithm|skipVerification|finalizeRegistration|targetEnv|sessionExpiration|include|actionAttributes|profileAttributes|includeUserInfo|bp_channel_url|signKeys|subscriptions",(!1),(void 0),{forceHttps:!0,forcePost:!0}),new t.ServerApi("accounts.finalizeRegistration","regToken|targetEnv|include|includeUserInfo|bp_channel_url|allowAccountsLinking|signKeys|subscriptions"),new t.ServerApi("accounts.captchaImage","regToken"),new t.ServerApi("accounts.importProfilePhoto","regToken|URL|publish"),new t.ServerApi("accounts.setProfilePhoto","regToken|publish|photoBytes"),new t.ServerApi("accounts.resetPassword","lang|loginID|passwordResetToken|secretAnswer|securityFields|newPassword|email",(!1),(void 0),{forceHttps:!0,forcePost:!0}),new t.ServerApi("accounts.isAvailableLoginID","loginID"),new t.ServerApi("accounts.resendVerificationCode","regToken|email"),new t.ServerApi("accounts.getCaptcha",""),new t.ServerApi("accounts.getPolicies","sections"),new t.ServerApi("accounts.getSchema","sections|schemaType"),new t.ServerApi("accounts.verifyLogin","include|extraProfileFields|targetEnv",(!0)),new t.ServerApi("accounts.getAccountInfo","include|extraProfileFields|regToken",(!0),{},{},"regToken"),new t.ServerApi("accounts.setAccountInfo","profile|data|regToken|oldPassword|password|newPassword|addLoginEmails|removeLoginEmails|username|secretQuestion|secretAnswer|requirePasswordChange|conflictHandling|tfaStatus|rba|subscriptions",(!1),(void 0),{forceHttps:!0,forcePost:!0},"regToken"),new t.ServerApi("accounts.logout","signIDs|samlContext|sustainLogoutURLs",(!0),{preprocessor:o,disableCache:!0},{requiresSession:r}),new t.ServerApi("accounts.search","expTime|querySig|query"),new t.ServerApi("accounts.getScreenSets","screenSetIDs|include|lang|screenSetVersion|noAuth",(!1),{preprocessor:function(e,t){e.noAuth=!0,t()}},{forceHttps:!0}),new t.ServerApi("accounts.getConflictingAccount","regToken|loginID"),new t.ServerApi("accounts.incrementCounters","counters",(!0),{preprocessor:function(e,t){var i=e.actionCounterPath,n=e.counters;if(i&&n)for(var o=0;o<n.length;o++){var r=n[o];"object"!=typeof r||r.path||(r.path=i)}t()}}),new t.ServerApi("accounts.getCounters","counters",(!0)),new t.ServerApi("accounts.getJWT","fields|expiration",(!0)),new t.ServerApi("accounts.tfa.getProviders","regToken",(!0),{},{},"regToken"),new t.ServerApi("accounts.tfa.initTFA","provider|mode|regToken",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.finalizeTFA","gigyaAssertion|providerAssertion|tempDevice|regToken",(!0),{},{},"regToken"),new t.ServerApi("accounts.tfa.deactivateProvider","provider",(!0)),new t.ServerApi("accounts.tfa.unregisterDevice","allDevices",(!0)),new t.ServerApi("accounts.tfa.phone.getRegisteredPhoneNumbers","gigyaAssertion",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.phone.removePhone","gigyaAssertion|phoneId",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.phone.sendVerificationCode","gigyaAssertion|lang|phoneID|phone|method",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.phone.completeVerification","gigyaAssertion|phvToken|code",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.email.getEmails","gigyaAssertion",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.email.sendVerificationCode","emailID|gigyaAssertion|lang",(!1),{},{forceHttps:!0}),new t.ServerApi("accounts.tfa.email.completeVerification","gigyaAssertion|phvToken|code",(!1),{},{forceHttps:!0}),new t.ServerApi("ds.store","type|data|oid|updateBehavior"),new t.ServerApi("ds.get","type|data|oid|fields"),new t.ServerApi("ds.search","expTime|querySig|query"),new t.ServerApi("ds.getSchema",""),new t.ServerApi("ds.delete","type|oid|fields"),new t.ServerApi("ids.getAccountInfo","include|extraProfileFields",(!0)),new t.ServerApi("ids.setAccountInfo","profile|data|oldPassword|password|newPassword|addLoginEmails|removeLoginEmails|username|secretQuestion|secretAnswer|requirePasswordChange",(!1),(void 0),{forceHttps:!0,forcePost:!0}),new t.ServerApi("ids.search","expTime|querySig|query"),new t.ServerApi("gscounters.sendReport","reports|noAuth",(!1),(void 0),{forceGigyaDomain:!0})],e.utils.functions.createAlias("gigya.socialize.showCommentsUI",e.comments.showCommentsUI),e.utils.functions.createAlias("gigya.socialize.showRatingUI",e.comments.showRatingUI),e.utils.functions.createAlias("gigya.services.socialize",e.socialize),e.utils.functions.createAlias("gigya.services.gcs",e.gcs),e.utils.functions.createAlias("gigya.services.gm",e.gm),e.utils.functions.createAlias("gigya.services.comments",e.comments),e.utils.functions.createAlias("gigya.services.accounts",e.accounts),e.utils.functions.createAlias("gigya.socialize.connect",e.socialize.addConnection),e.utils.functions.createAlias("gigya.socialize.disconnect",e.socialize.removeConnection),e.utils.functions.createAlias("gigya.socialize.linkAccounts",e.socialize.setUID),e.utils.functions.createAlias("gigya.socialize.showConnectUI",e.socialize.showAddConnectionsUI),e.utils.functions.createAlias("gigya.showDebugUI",e.socialize.showDebugUI)}(t=e._||(e._={}))}(gigya||(gigya={}));var __gig_awaiter=this&&this.__gig_awaiter||function(e,t,i,n){return new(i||(i=Promise))(function(o,r){function a(e){try{c(n.next(e))}catch(e){r(e)}}function s(e){try{c(n.throw(e))}catch(e){r(e)}}function c(e){e.done?o(e.value):new i(function(t){t(e.value)}).then(a,s)}c((n=n.apply(e,t)).next())})},__gig_generator=this&&this.__gig_generator||function(e,t){function i(e){return function(t){return n([e,t])}}function n(i){if(o)throw new TypeError("Generator is already executing.");for(;s;)try{if(o=1,r&&(a=r[2&i[0]?"return":i[0]?"throw":"next"])&&!(a=a.call(r,i[1])).done)return a;switch(r=0,a&&(i=[0,a.value]),i[0]){case 0:case 1:a=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(a=s.trys,!(a=a.length>0&&a[a.length-1])&&(6===i[0]||2===i[0])){s=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]<a[3])){s.label=i[1];break}if(6===i[0]&&s.label<a[1]){s.label=a[1],a=i;break}if(a&&s.label<a[2]){s.label=a[2],s.ops.push(i);break}a[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],r=0}finally{o=a=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}var o,r,a,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return{next:i(0),throw:i(1),return:i(2)}},gigya;!function(e){var t;!function(t){function i(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];return __gig_awaiter(this,void 0,e.Promise,function(){var i,n,o,r,a,s,c;return __gig_generator(this,function(l){switch(l.label){case 0:return i=e.utils.object.merge([e.thisScript.globalConf,t]),n=i.redirectURL||document.location.href,e._.apiAdapters.isSessionFromSso||!e._.apiAdapters.gmidTicket&&!e.partnerSettings.ssoKey?(e.utils.HTTP.redirect(n,[{}],"GET","_top"),[3,4]):[3,1];case 1:return o=e._.apiAdapters.web,a=e._.apiAdapters.gmidTicket,a?[3,3]:[4,o.apiService.getGmidTicket(!0)];case 2:a=l.sent().gmidTicket,l.label=3;case 3:r=a,s={apiKey:i.APIKey,apiDomain:e._.getApiDomain(),gmidTicket:r,sessionExpiration:i.sessionExpiration,loginToken:o.tokenStore.get(i.APIKey),redirectURL:n},c="https://"+e._.getGigyaDomain("socialize")+"/gs/SSOGateway.aspx",e.utils.HTTP.redirect(c,[s],"POST","_top"),l.label=4;case 4:return[2]}})})}e.socialize.addEventHandlers=function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];var n=e.utils.object.merge([e.thisScript.globalConf,t]),o=n.namespace?n.namespace:"socialize";for(var r in n)0==r.indexOf("on")&&e.events.global.add(r,n[r],n.listenerType,n.context,o,n);"function"==typeof n.callback&&n.callback({status:"OK",statusMessage:"",errorCode:0,errorMessage:"",operation:"addEventHandlers",context:n.context})},e.accounts.addEventHandlers=function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];var n=e.utils.object.merge([t,{namespace:"accounts"}]);e.socialize.addEventHandlers(n)},e.socialize.isLoggedIn=function(){var t=e.utils.object.merge([e.thisScript.globalConf,arguments]);e.socialize.getUserInfo(t,{callback:function(i){var n=i.user,o={loggedIn:!!n&&e.utils.validation.isExplicitTrue(n.isLoggedIn)};e.utils.object.extractProperties(i,o,"status|statusMessage|callId|errorCode|errorMessage|errorDetails|context"),t.callback&&t.callback(o)}})},e.socialize.waitForService=function(){var t=e.utils.object.merge([e.thisScript.globalConf,arguments]),i=t.service;if(i){i=i.toLowerCase();var n=t.callback;"fbconnect"!=i&&"facebook"!=i||(e.external.facebook.isLoaded()?n({context:t.context}):e.socialize.addEventHandlers({listenerType:"component"},{onFacebookLoaded:n,context:t.context})),"googleplus"==i&&(e.external.googlePlus.isLoaded()?n({context:t.context}):e.socialize.addEventHandlers({listenerType:"component"},{onGooglePlusLoaded:n,context:t.context}))}},t.bookmarkSize={facebook:{w:640,h:370},twitter:{w:880,h:585},messenger:{w:710,h:905},linkedin:{w:560,h:500},yahoobookmarks:{w:840,h:975},digg:{w:1010,h:1045},delicious:{w:890,h:905},googlebookmarks:{w:710,h:905},mixi:{w:640,h:470},googleplus:{w:496,h:420}},e.socialize.postBookmark=function(){var i=e.utils.object.merge([e.thisScript.globalConf,arguments]);i.APIKey||(i.APIKey=e.thisScript.APIKey);var n={};if(e.utils.object.extractProperties([i],n,t.postBookmarkSchema),!n.url&&n.URL&&(n.url=n.URL,delete n.URL),n.sdk="js_"+e.build.version,!n.url&&n.userAction&&!n.userAction.linkBack)for(var o=document.getElementsByTagName("meta"),r=0;r<o.length;r++)if("og:url"===o[r].getAttribute("property")&&o[r].getAttribute("content")){n.url=o[r].getAttribute("content");break}n.url||!n.userAction||n.userAction.linkBack||(n.url=document.location.href),n.provider=n.provider?(n.provider+"").toLowerCase():"","facebook"===n.provider&&(n.providerKey=e.external.opengraph.getMetaTag("fb:app_id")),e._.apiAdapters.gmidTicket&&(n.gmidTicket=e._.apiAdapters.gmidTicket);var a=t.bookmarkSize[n.provider]||{},s={width:i.popupWidth||a.w,height:i.popupHeight||a.h,top:i.popupPositionY,left:i.popupPositionX,menubar:0,resizable:1,scrollbars:1};i.enablePopupLocation?(s.location=1,s.toolbar=1):s.toolbar=0;var c=e._.apiAdapters.web?e._.apiAdapters.web.tokenStore:void 0;c&&(n.login_token=c.get());var l;if("twitter"===n.provider&&e.localInfo.isIOS){var u=n.userAction||{},g={url:u.linkBack||n.url,text:u.title||n.title},d="https://twitter.com/intent/tweet?{0}";l=e.utils.stringUtils.format(d,e.utils.keyValue.serialize(g));var p=i.sourceData?e.utils.object.clone(i.sourceData):{};p.provider=n.provider,p.url=g.url,e.reports.report("share",i.APIKey,i.cid,i.source,p,{tags:i.tags})}else{var g=e.utils.keyValue.serialize(n),d="https://"+e._.getApiDomain("socialize")+"/gs/bookmark.aspx?{0}";l=e.utils.stringUtils.format(d,g)}e.log.logCall("postBookmark",n),e.events.global.dispatch({eventName:"beforeRequest",methodName:"socialize.postBookmark",rawParams:i,params:n}),e.utils.win.open(l,"gs_bookmark_"+n.provider,s)},e.socialize.refreshUI=function(){var i=e.utils.object.merge([e.thisScript.globalConf,arguments]),n=i.callback;e.socialize.getUserInfo(i,{callback:function(o){var r={eventName:"login",isInternal:!0};i.provider&&(r.provider=i.provider),t.addUserInfoToEvent(o,r,!0),i.context&&(r.context=i.context),e.events.global.dispatch(r),"function"==typeof n&&n(o)}})};var n,o={"digg.com":"digg","stumbleupon.com":"stumbleupon","del.icio.us.com":"delicious","technorati.com":"technorati","t.co":"twitter","plus.url.google.com":"googlePlus","facebook.com":"facebook","linkedin.com":"linkedIn","pinterest.com":"pinterest","mixi.jp":"mixi","b.hatena.ne.jp":"hatena","line.me":"line"};e.socialize.trackReferrals=function(){var i=e.utils.object.merge([e.thisScript.globalConf,arguments]),r={eventName:"linkback",CID:i.cid},a={},s={};document.location.href.indexOf("#")!=-1&&(s=e.utils.keyValue.deserialize(document.location.href.split("#")[1])),document.location.href.indexOf("?")!=-1&&(a=e.utils.keyValue.deserialize(document.location.href.split("?")[1].split("#")[0])),e.socialize.updateRefUID(i.APIKey,s,a);var c=null!=s._gus||null!=a._gus;if(c&&(r.CID=s._gucid||a._gucid,r.shortCode=s._gsc||a._gsc,r.provider=s._gup||a._gup),!n){var l,u={url:document.location.href,ref:document.referrer};if(a.fb_ref){var g=e.utils.keyValue.deserialize(a.fb_ref,":");u.uuid=g.uu,u.sn=g.p,l=g.s}else if(document.referrer&&document.referrer.indexOf("://")!=-1){var d=document.referrer.split("://")[1].split("/")[0];0==d.indexOf("www.")&&(d=d.split("www.")[1]),o[d]&&(r.provider=u.sn=o[d])}if(!u.sn&&(!document.referrer||document.referrer.indexOf("http://soc.li")==-1&&document.referrer.indexOf("https://shr.gs")==-1)){var p=document.location.href.split("#guid=");if(p.length>1){var f=p[1].split("#")[0].split("&")[0];f!=t.apiAdapter.getTokenParam(i.APIKey,"UUID")&&(u.sn="AddressBarShares",u.uuid=f,"_"==f&&delete u.uuid,document.location.replace("#"),e.reports.trackAddressBarShares(),u.url=document.location.href.split("#")[0])}}u.uuid&&e.utils.cookie.set("_gigRefUid_"+i.APIKey,u.uuid),u.sn&&!c&&e.reports.report("linkback",i.APIKey,i.cid,l,null,u),(u.sn||c)&&e.events.global.dispatch(e.utils.object.removeUndefined(r)),n=!0}"function"==typeof i.callback&&i.callback({status:"OK",statusMessage:"",operation:"trackReferrals",context:i.context,errorMessage:"",errorCode:0})},e.socialize.updateRefUID=function(t,i,n){t||(t=e.thisScript.globalConf.APIKey),i||(i={},document.location.href.indexOf("#")!=-1&&(i=e.utils.keyValue.deserialize(document.location.href.split("#")[1]))),n||(n={},document.location.href.indexOf("?")!=-1&&(n=e.utils.keyValue.deserialize(document.location.href.split("?")[1].split("#")[0]))),i.guid&&"_"!=i.guid&&e.utils.cookie.set("_gigRefUid_"+t,i.guid);var o=i._giguuid||n._giguuid;o&&e.utils.cookie.set("_gigRefUid_"+t,o)},e.socialize.hideUI=function(){var t=e.utils.object.merge([e.thisScript.globalConf,arguments]);if("function"==typeof t.callback){var i={status:"OK",statusMessage:"",operation:"hideUI",context:t.context,errorMessage:"",errorCode:0};t.callback(i)}},e.gcs.submitUserForm=function(){var t={},i=e.utils.object.merge([e.thisScript.globalConf,arguments]),n=document.getElementById(i.form);if(!n){var o=document.getElementsByName(i.form);o&&o.length>0&&(i.form=o[0])}for(var r=0;r<n.elements.length;r++){var a=n.elements[r];if(a.name){for(var s=a.name.split("."),c=t,l=0;l<s.length-1;l++){var u=s[l];c[u]||(c[u]={}),c=c[u]}c[s[s.length-1]]=a.value}}i.data=t,e.gcs.setUserData(i)},e.socialize.getProviderShareCounts=function(){var t=e.utils.object.merge([e.thisScript.globalConf,arguments]);e.utils.script.load(e._.getCdnResource("/js/gigya.services.socialize.plugins.shareCounts.min.js"),null,function(){e.socialize.plugins.shareCounts.getProviderShareCounts(t)},!0)},e.utils.functions.createAlias("gigya.setSSOToken",i),e.utils.functions.createAlias("gigya.accounts.setSSOToken",i)}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t){var i=e.utils.URL.addParamsToURL(e.samlConfig.proxyPageURL,e.utils.object.merge([{mode:"initSSO"},t]));e.thisScript.globalConf.enableSSOToken?e.setSSOToken({redirectURL:i}):window.location.href=i}function n(){var t=e.utils.URL.getParamsFromURL(location.href),i=e.utils.URL.addParamsToURL(e.samlConfig.proxyPageURL,{mode:"afterLogin",samlContext:t.samlContext});window.location.href=i}t.initSSO=i,t.continueSSO=n}(i=t.saml||(t.saml={}))}(t=e.fidm||(e.fidm={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){e.isSessionFromSso=!1}(t=e.apiAdapters||(e.apiAdapters={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(){return null!=t.initializedTime}function n(i){if(!t.initializedTime){t.initializedTime=null,window.setInterval(function(){e.external.facebook.refreshSession()},27e5),window.fbAsyncInit=function(){var n=e.utils.object.clone(e.thisScript.globalConf.facebookInitParams);n||(n={}),e.providersConfig.facebook?(n.appId=e.providersConfig.facebook.appID,n.version=e.providersConfig.facebook.version):n.version="v1.0",n.status=!1,n.cookie=!0,n.xfbml=!0,n.oauth=!0,FB.init(n),1!=i?FB.getLoginStatus(function(i){t.initializedTime=new Date,t.isConnected="connected"==i.status,t.isLoggedIn="unknown"!=i.status,e.events.global.dispatch({eventName:"facebookLoaded",isLoggedIn:t.isLoggedIn,isConnected:t.isConnected}),e.socialize.addEventHandlers({listenerType:"component"},{listenerDescription:"listener for updating Facebook Connect session",onLogin:function(){o()},onConnect:function(){o()},onLogout:function(){o()}})},!0):(t.initializedTime=new Date,e.events.global.dispatch({eventName:"facebookLoaded",isLoggedIn:t.isLoggedIn,isConnected:t.isConnected}))};var n=document.createElement("div");n.id="fb-root",e.utils.DOM.appendToBody(n),e.utils.script.load(e.localInfo.protocol+"://connect.facebook.net/"+e.thisScript.lang.full.replace("-","_")+"/sdk.js",null,function(){"none"==document.documentElement.style.display&&(document.documentElement.style.display="")},!0)}}function o(){if("undefined"!=typeof FB){var i=function(i){t.initializedTime=new Date,t.isConnected="connected"==i.status,t.isLoggedIn="unknown"!=i.status,e.events.global.dispatch({eventName:"FBCRefreshed"})};e.providersConfig.facebook&&e.providersConfig.facebook.appID&&FB&&FB.getLoginStatus&&FB.getLoginStatus(i,!0)}}function r(){for(var e=l,t=0;t<e.length;t++)e[t]();l=[]}function a(e){l.push(e)}function s(){var e={};if("undefined"!=typeof FB&&FB.getAuthResponse)try{var t=FB.getAuthResponse();t&&(null!=t.userID&&(e.fb_UID=t.userID),null!=t.accessToken&&(e.fb_at=t.accessToken),null!=t.expiresIn&&(e.fb_exp=t.expiresIn))}catch(e){}return e}function c(){e.socialize.waitForService({service:"facebook",callback:function(){e._.apiAdapter.isSessionValid(e.thisScript.globalConf,function(t){var i=e.external.facebook.getParams();!t&&i&&i.fb_at&&!e._.autoLoginInProgress&&(e._.autoLoginInProgress=!0,e.socialize.notifyLogin({providerSessions:{facebook:{authToken:i.fb_at,tokenExpiresIn:i.fb_exp}}}))})}})}var l=[];t.isLoggedIn=!1,t.isConnected=!1,t.isLoaded=i,t.load=n,t.refreshSession=o,t.retryPending=r,t.runWhenLoaded=a,t.getParams=s,t.autoLogin=c,e.events.global.add("facebookLoaded",r,"component"),e.events.global.add("onFBCRefreshed",r,"component")}(i=t.facebook||(t.facebook={}))}(t=e.external||(e.external={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(){return null!=t.initializedTime}function n(){var i=this;if(!t.initializedTime&&e.providersConfig.googlePlus){t.initializedTime=null;var n=document.createElement("script");n.type="text/javascript",n.async=!0,window.__gigya_handleClientLoad=function(){return i.handleClientLoad()},n.src="https://apis.google.com/js/client.js?onload=__gigya_handleClientLoad";var o=document.getElementsByTagName("script")[0];o.parentNode.insertBefore(n,o)}}function o(){try{delete window.__gigya_handleClientLoad}catch(e){window.__gigya_handleClientLoad=void 0}t.initializedTime=new Date,e.events.global.dispatch({eventName:"googlePlusLoaded"})}function r(){"undefined"==typeof gapi}function a(){e.socialize.waitForService({service:"googlePlus",callback:function(){e._.apiAdapter.isSessionValid(e.thisScript.globalConf,function(t){t||gapi.auth.authorize({client_id:e.providersConfig.googlePlus.clientId,scope:e.providersConfig.googlePlus.scopes,immediate:!0,response_type:"code"},function(t){t&&t.code&&!e._.autoLoginInProgress&&(e._.autoLoginInProgress=!0,e.socialize.notifyLogin({providerSessions:{googlePlus:{code:t.code}}}))})})}})}t.isLoaded=i,t.load=n,t.handleClientLoad=o,t.refreshSession=r,t.autoLogin=a}(i=t.googlePlus||(t.googlePlus={}))}(t=e.external||(e.external={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i;!function(t){function i(t,i){t&&(i||(i=2e3),e.external.backplane.isLoaded()?e.external.backplane.getChannelId()||e.external.backplane._ready?(e.external.backplane._ready=!0,t()):(window.setTimeout(function(){e.external.backplane._ready||(e.external.backplane._ready=!0,t())},i),Backplane(function(){e.external.backplane._ready=!0,t()})):t())}function n(){return"undefined"!=typeof Backplane}function o(){if(e.external.backplane.isLoaded())return Backplane.getChannelID()}function r(){e.external.backplane.isLoaded()&&Backplane.resetCookieChannel()}t._ready=null,t.executeOnInit=i,t.isLoaded=n,t.getChannelId=o,t.resetChannel=r,e.events.global.add("logout",e.external.backplane.resetChannel)}(i=t.backplane||(t.backplane={}))}(t=e.external||(e.external={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){function t(e){for(var t=document.getElementsByTagName("meta"),i=0;i<t.length;i++)if(t[i].getAttribute("property")==e&&t[i].getAttribute("content"))return t[i].getAttribute("content")}e.getMetaTag=t}(t=e.opengraph||(e.opengraph={}))}(t=e.external||(e.external={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){function i(t,i,n){var o,r,a=!1;if(206005==t.errorCode)a=!0,e.accounts.finalizeRegistration({regToken:t.regToken,ignoreApiQueue:!0,callback:function(e){n(e)}});else if(!i.dontHandleScreenSet&&((t.regToken||i.regToken)&&(200010==t.errorCode||403043==t.errorCode)||206001==t.errorCode||206002==t.errorCode||206003==t.errorCode||403101==t.errorCode||403102==t.errorCode||403110==t.errorCode||403100==t.errorCode)){var s;403110==t.errorCode&&(r=!0,s=!0),i.defaultMobileRegScreenSet&&e.localInfo.isMobile?o=i.defaultMobileRegScreenSet:i.defaultRegScreenSet&&(o=i.defaultRegScreenSet)}o?e.accounts.showScreenSet({ignoreApiQueue:!0,newModal:s,initialResponse:t,screenSet:o,onError:function(e){n(t)},onHide:function(e){if("finished"===e.reason&&e.user){var i={errorCode:0,userInfo:e.user};n(i,!0,r)}else n(t)}}):a||n(t)}function n(t){var i=e.utils.localStorage.getObject("gigyaSettings");return e.utils.JSON.serialize(i[t])}function o(t,i){var n=e.utils.localStorage.getObject("gigyaSettings",(r={},r[t]={},r));for(var o in i)n[t][o]=i[o];e.utils.localStorage.setItem("gigyaSettings",e.utils.JSON.serialize(n));var r}function r(t){if(t){var i=e.utils.localStorage.getObject("gigyaSettings");i&&(delete i[t],e.utils.localStorage.setItem("gigyaSettings",e.utils.JSON.serialize(i)))}else e.utils.localStorage.removeItem("gigyaSettings")}function a(i){var n=e.socialize.Collection,o=function(e,i){for(var n=[],o=0,r=e[o];r;)n.push(new i(r)),n[o].identities&&t.convertIdentitiesArrayToObject(n[o]),r=e[++o];return n};if(i.photos&&(i.photos=new n(i.photos,"photoID")),i.albums&&(i.albums=new n(i.albums,"albumID")),i.contacts&&(i.contacts=new n(o(i.contacts,e.socialize.Contact),"email")),i.friend&&(i.friend=new n(o(i.friend,e.socialize.Friend),"UID")),i.user&&(i.user=new e.socialize.User(i.user)),i.friends&&i.friends instanceof Array){for(var r=[],a=0;a<i.friends.length;a++)r.push(i.friends[a].UID);i.UIDs=r.join(","),i.friends=new n(o(i.friends,e.socialize.Friend),"UID")}}function s(t){if(null==t.identities)return void(t.identities={});if(t.identities.constructor==Array){var i=t.identities;t.identities={};for(var n=0;n<i.length;n++)t.identities[i[n].provider]=new e.socialize.Identity(i[n])}}function c(t,i,n,o){var r=t.user||t.userInfo;return null==i&&(i={}),null!=r&&(i.user=e.utils.object.clone(r),null!=t.isLoggedIn&&(i.user.isLoggedIn=t.isLoggedIn),null!=t.isSiteUID&&(i.user.isSiteUID=t.isSiteUID),null!=t.iRank&&(i.user.iRank=t.iRank)),n&&(e.utils.object.extractProperties(t,i,"signature|UIDSig|timestamp|UIDSignature|signatureTimestamp|UID|signKeysUIDSignature"),null!=i.user&&(i.UID=r.UID,i.isSiteUID=r.isSiteUID)),i}function l(t){var i=t.userAction||{},n=i.title||"",o=i.linkBack||"";document.location.href="mailto:?to=&subject="+e.utils.URL.URLEncode(n)+"&body="+e.utils.URL.URLEncode(o),e.socialize.sendEmail(t,{dontSendEmail:!0})}var u;!function(e){e[e.LocalStorageListener=0]="LocalStorageListener",e[e.PostMessage=1]="PostMessage",e[e.Flash=2]="Flash"}(u=t.MessagingMethod||(t.MessagingMethod={})),t.checkCompleteRegistration=i,t.getGigyaSettings=n,t.setGigyaSettings=o,t.delGigyaSettings=r,t.handleSpecialFields=a,t.convertIdentitiesArrayToObject=s,t.addUserInfoToEvent=c,t.sendEmailNative=l}(t=e._||(e._={}))}(gigya||(gigya={})),function(e){var t;!function(t){function i(){e.utils.cookie.set("_gig_dbgConsole_log","1",null)}function n(){e.utils.cookie.set("_gig_dbgConsole_log","0",null)}function o(){var i=e.utils.cookie.get("_gig_dbgConsole_log");return"undefined"!=typeof i&&null!=i?"1"===i:t.selectedConsoleLogLevels.length>0}function r(i,n,o){if(void 0===o&&(o=!1),e.log._isEnabled()||o){var r=i;if(n=e.utils.object.clone(n,!0,!1,4,null,!0),null!=n&&(r+=":"+("object"==typeof n?"\n":"")+e.utils.JSON.serialize(n,!0,!0)),o&&"object"==typeof console&&console.log&&console.log(r),e.log._isEnabled()){t._log.push(r),null!=document.getElementById("gigya_log")&&e.log.show&&e.log.show();var a;a=e.utils.array.indexOf(e.log.CONSOLE_LOG_LEVELS,i)!=-1?i:"log",e._.apiAdapter.onJSLog(a,r)}}}function a(t,i,n){n||(n=i.lastSource),e.log.addLog("Calling "+t+(n&&n!=t?" for "+n:"")+(i.source&&n!=i.source?" initiated from "+i.source:"")+" with these params",i)}function s(){e.utils.script.load(e._.getCdnResource("/js/gigya.services.socialize.plugins.log.min.js"),null,function(){ e.log.showConfig()},!0)}function c(){e.utils.script.load(e._.getCdnResource("/js/gigya.services.socialize.plugins.log.min.js"),null,function(){e.log.show()},!0)}function l(){}function u(){}t.CONSOLE_LOG_LEVELS=["debug","info","log","warn","error"],t.selectedConsoleLogLevels=[],t._log=[],t.enable=i,t.disable=n,t._isEnabled=o,t.addLog=r,t.logCall=a,t.debug=s,t.showLog=c,t.show=l,t.showConfig=u,e.utils.functions.createAlias("gigya.debug",s)}(t=e.log||(e.log={}))}(gigya||(gigya={}));var defaultObjects={},defaultObjectsDef={User:"personwithuid+isLoggedIn|false,isConnected|false,isSiteUser|false,identities|{},providers|[],timestamp,UIDSig,UIDSignature,signatureTimestamp,loginProvider,loginProviderUID,capabilities|{}",Friend:"personwithuid+timestamp,friendshipSig,friendshipSignature,signatureTimestamp,timestamp,isSiteUser|false,identities|{}",Identity:"person+isExpiredSession|false,allowsLogin|false,providerUID,provider,isLoginIdentity|false,missingPermissions",Contact:"provider,firstName,lastName,nickname,email,photoURL",person:"nickname,photoURL,thumbnailURL,birthDay|0,birthMonth|0,birthYear|0,gender,email,proxiedEmail,country,state,city,zip,firstName,lastName,profileURL,age|0",personwithuid:"person+UID,isSiteUID|false",UserAction:"actorUID,actorNickname,actionName,date|new Date(),targets|[],images|[],actionData1,actionData2,iconURL,title,linkBack,userMessage,description,actionLinks|[],mediaItems|[],subtitle"},createDefaultObject=function(e){var t={},i=defaultObjectsDef[e];i.indexOf("+")!=-1&&(t=createDefaultObject(i.split("+")[0]),i=i.split("+")[1]);for(var n=i.split(","),o=0;o<n.length;o++){var r="",a=n[o].split("|");if(a.length>1)try{r=gigya.utils.JSON.deserialize(a[1],"")}catch(e){}t[a[0]]=r||""}return t},_createConstructor=function(e){return function(t){var i=defaultObjects[e];for(var n in i)this[n]=gigya.utils.object.clone(i[n]);if("object"==typeof t)for(var n in t)"function"!=typeof t[n]&&(this[n]=gigya.utils.object.clone(t[n]))}};for(var def in defaultObjectsDef)defaultObjects[def]=createDefaultObject(def),gigya.socialize[def]=_createConstructor(def);gigya.socialize.Collection=function(e,t){this.arr=e,this._key=t?t:""},gigya.socialize.Collection.prototype={asArray:function(){return this.arr},each:function(e){for(var t=0,i=this.arr[t];i;)e(i,t),t++,i=this.arr[t]},getById:function(e){return"undefined"==typeof this._hash&&this._buildHash(),(this._hash?this._hash:this.arr)[e]},getSize:function(){return this.arr.length},_buildHash:function(){var e=this._hash={},t=this._key;this.each(function(i,n){e["function"==typeof i[t]?i[t]():i[t]]=i})}},gigya.socialize.UserAction.prototype={clone:function(){return new gigya.socialize.UserAction(gigya.utils.object.clone(this,!0,!0))},getTemplate:function(){return this.titleTemplate},setTemplate:function(e){this.titleTemplate=e},getActor:function(e){return{UID:this.actorUID,nickname:this.actorNickname}},setActionName:function(e){return this.actionName=e,this},getActionName:function(e){return this.actionName},getTemplateFields:function(){var e=[];for(var t in this.templateFields)e.push(this.templateFields[t]);return new gigya.socialize.Collection(e,"fieldName")},setTemplateField:function(e,t,i){return this.templateFields[e]={fieldName:e,text:t,href:i},this},getTemplateField:function(e){return this.templateFields[e]?this.templateFields[e]:null},addTarget:function(e){return"object"==typeof e?(this.targets.push({UID:e.UID,nickname:e.nickname?e.nickname:""}),this):"string"==typeof e?(this.targets.push({UID:e,nickname:""}),this):void 0},addActionLink:function(e,t){return this.actionLinks.push({text:e,href:t?t:""}),this},addMediaItem:function(e){return this.mediaItems.push(e),this},setTitle:function(e){return e&&(this.title=e),this},setLinkBack:function(e){return e&&e.toString&&(e=e.toString()),e&&(this.linkBack=e),this},setUserMessage:function(e){return this.userMessage=e?e:"",this},setDescription:function(e){return this.description=e?e:"",this},addImage:function(e,t){this.addMediaItem({type:"image",src:e,href:t})},getImages:function(){return new gigya.socialize.Collection(this.images,"")},getTargets:function(){return new gigya.socialize.Collection(this.targets,"UID")},setIconURL:function(e){return this.iconURL=e,this},getIconURL:function(){return this.iconURL},getDate:function(){return this.date},setActionData1:function(e){return this.actionData1=e,this},getActionData1:function(e){return this.actionData1},setActionData2:function(e){return this.actionData2=e,this},getActionData2:function(e){return this.actionData2},setSubtitle:function(e){return this.subtitle=e,this},getSubtitle:function(){return this.subtitle}};var gigya;!function(e){var t;!function(t){var i;!function(i){function n(e,t){void 0===t&&(t=i.arProviders);for(var n=0;n<t.length;n++)if(t[n].name.toLowerCase()===e.toLowerCase())return t[n]}function o(e){if(null!=e){for(var i=e.split(","),n=0;n<i.length;n++){var o=i[n].replace(/^\s+|\s+$/g,"");t.providers._aliases[o]&&(i[n]=t.providers._aliases[o])}return i.join(",")}}function r(e,t){void 0===t&&(t=i.arProviders);for(var n=0;n<t.length;n++)if(t[n].ID===e)return t[n]}function a(e,t,n){void 0===t&&(t=""),void 0===n&&(n=i.arProviders),t=t.toLowerCase();var o=t.split(" ").join("").split(".").join("").toLowerCase().split(",");o=u(o,n);for(var r=0;r<o.length;r++)for(var a=0;a<e.length;a++){var s=e[a],c=s.name||s.toString();c&&(c=c.toLowerCase()),c===o[r]&&e.splice(a,1)}return e}function s(e,t){null==t&&(t=[]);for(var i=[],n=0;n<e.length;n++){for(var o=e[n],r=!0,a=0;a<t.length;a++){for(var s=!1,c=0;c<o.arDefaultCapabilities.length;c++)if(o.arDefaultCapabilities[c].toLowerCase()==t[a].toLowerCase()){s=!0;break}if(!s){r=!1;break}}r&&i.push(o)}return i}function c(){return i.arProviders.concat()}function l(t,r){void 0===r&&(r=i.arProviders),t=(""+t).split(" ").join("").split(".").join("").toLowerCase(),t=o(t);var a=(""+t).split(",");a=u(a,r);for(var s=[],c=0;c<a.length;c++){var l=n(a[c],r);null!=l&&e.utils.array.indexOf(s,l)==-1&&s.push(l)}return s}function u(e,t){t||(t=i.arProviders);for(var n=[],o=0;o<e.length;o++)if("*"==e[o])for(var r=0;r<t.length;r++){for(var a=!1,s=0;s<e.length;s++)e[s].toLowerCase()===t[r].name.toLowerCase()&&(a=!0);a||t[r].explicitOnly||n.push(t[r].name)}else n.push(e[o]);return n}i._aliases={};var g=function(){function e(e,t,n,o,r,a,s){if(this.ID=e,this.displayName=t,this.width=n,this.height=o,this.explicitOnly=a,this.aliases=s,this.arDefaultCapabilities=r.split(","),this.name=t.toLowerCase().split(" ").join("").split("!").join("").split(".").join("").split("+").join("plus"),s){i._aliases||(i._aliases={});for(var c=s.split("|"),l=0;l<c.length;l++)i._aliases[c[l]]=this.name}switch(this.name){case"messenger":this.displayName="Microsoft";break;case"customopenid":this.displayName="OpenID";break;case"paypaloauth":this.displayName="PayPal"}}return e.prototype.toString=function(){return this.name},e}();i.Provider=g,i.arProviders=[new g(64,"Facebook",650,400,"login,friends,places,status,actions,photos"),new g(9012,"Twitter",800,440,"login,friends,notifications,actions,status,places,checkins"),new g(72,"Google+",560,600,"login,friends,contacts",(!1),"google|googleplus"),new g(9042,"LinkedIn",865,450,"login,friends,status,actions,notifications,contacts"),new g(9803,"Yahoo",500,567,"login,friends,contacts,notifications"),new g(1047,"Messenger",380,540,"login, friends",(!1),"messenger|microsoft"),new g(9832,"Instagram",440,420,"login,photos"),new g(9222,"Odnoklassniki",888,425,"login"),new g(9007,"FourSquare",1e3,650,"login,friends,places,checkins"),new g(8191,"Renren",450,350,"login,friends,status,actions"),new g(8203,"QQ",570,460,"login,actions"),new g(9821,"Sina",640,380,"login,status,actions"),new g(4228,"Mixi",1e3,720,"login,friends,actions,photos",(!0)),new g(9830,"Yahoo! JAPAN",980,700,"login",(!0)),new g(8205,"Spiceworks",640,380,"login",(!0)),new g(9041,"VKontakte",610,510,"login,friends,photos,status,actions"),new g(9800,"AOL",530,720,"login"),new g(4096,"WordPress",700,540,"login"),new g(256,"Blogger",760,400,"login"),new g(4218,"Netlog",730,590,"login",(!0)),new g(4224,"Orange France",730,590,"login",(!0)),new g(5002,"Livedoor",970,700,"login",(!0)),new g(5004,"Fox News",730,590,"login",(!0)),new g(1051,"PayPal",400,550,"login",(!0)),new g(9058,"Amazon",785,510,"login",(!0)),new g(9219,"Xing",785,510,"login,friends",(!0)),new g(8206,"WeChat",730,590,"login",(!1),"wechat|weixin"),new g(4121,"Custom OpenID",730,590,"login",(!0)),new g(4122,"Custom SAML",730,590,"login",(!0)),new g(10001,"OpenID Connect",730,590,"login",(!0)),new g(6002,"Site",730,590,"",(!0)),new g(1052,"PayPalOAuth",730,590,"login",(!0)),new g(8207,"Line",730,590,"login")],i.getProviderByName=n,i.replaceProviderAliases=o,i.getProviderById=r,i.hideProvidersByName=a,i.getProvidersForRequiredCapabilities=s,i.getAllProviders=c,i.getProvidersByName=l,i.replaceWildcard=u,e.utils.functions.createAlias("gigya.socialize.getAllProviders",c),e.utils.functions.createAlias("gigya.socialize.replaceProviderAliases",o),e.utils.functions.createAlias("gigya.socialize.getProvidersByName",l),e.utils.functions.createAlias("gigya.socialize._getProviderByName",n),e.utils.functions.createAlias("gigya.socialize.hideProvidersByName",a),e.utils.functions.createAlias("gigya.socialize._getProviderByID",r),e.utils.functions.createAlias("gigya.socialize.getProvidersForRequiredCapabilities",s)}(i=t.providers||(t.providers={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){function i(){if(e.thisScript.globalConf.trackAddressBarShares){var t=e._.apiAdapter.getTokenParam(e.thisScript.APIKey,"UUID"),i=document.location.href.split("#");1!=i.length&&""!=i[1]&&"guid=_"!=i[1]||document.location.replace("#guid="+(t?t:"_"))}}function n(i,n,o,r,s,c,l){void 0===c&&(c={}),void 0===l&&(l=!1);var u=e.utils.object.removeUndefined({name:i,time:(new Date).getTime().toString(),source:r,sourceData:s,reportData:c,cid:o});if(l){var g=[u];e.gscounters.sendReport({reports:g,noAuth:!a(g)})}else t.queue||(t.queue=[]),t.queue.push(u)}function o(){setInterval(r,5e3)}function r(){for(;t.queue&&t.queue.length>0;){var i=e.utils.object.clone(t.queue.splice(0,5),!0,!0);e.gscounters.sendReport({reports:i,noAuth:!a(i)})}}function a(e){for(var t=0;t<e.length;t++){var i=e[t];if("loadc"!==i.name&&"load"!==i.name||"loadc"===i.name&&i.reportData&&i.reportData.actionCounterPath)return!0}return!1}function s(e,t){if(!t._reportedLoad){t._reportedLoad=!0;var i="load";if("gigya.socialize.plugins.reactions.showReactionsBarUI"==e)return;"gigya.socialize.plugins.simpleshare.showSimpleShareUI"==e&&(i="loadSimple"),this.report(i,t.APIKey,t.cid,t.source,t.sourceData)}}t.trackAddressBarShares=i,t.report=n,t.init=o,t.reportLoad=s}(t=e.reports||(e.reports={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(t){var i=function(){function i(t,n,o){void 0===o&&(o=!0),this.params=t,this.explicitParams=n,this._logger=e.log,this._eventDispatcher=function(t,i){return e.events.dispatchForWidget(t,i)},this._errorDispatcher=e.events,this._globalEventsManager=e.events.global,this._isDisposed=!1,this._eventWrappers={},this._globalEventHandlers={},this._id=++i.instanceCounter,this.params=t?e.utils.object.clone(t):{},this.explicitParams=n?e.utils.object.clone(n):{},o&&this.validateParams();for(var r in t)this[r]&&(this[r]=t[r])}return i.prototype.onErrorEvent=function(){return this.getEvent("onError")},i.prototype.onDisposedEvent=function(){return this.getEvent("onDisposed")},i.prototype.getType=function(){return this.constructor.name||this.getFunctionName(this.constructor)},i.prototype.getFunctionName=function(e){var t=e.toString();return t=t.substr("function ".length),t=t.substr(0,t.indexOf("("))},i.prototype.getConfig=function(){return this.error(i.NOT_IMPLEMENTED_ERROR,400096),{}},i.prototype.toString=function(){return this.getType()+" "+this.id()},i.prototype.id=function(){return this._id},i.prototype.warn=function(e,t,i){var n=this.id()+" "+this.getType()+" - "+e;this._logger.addLog(n,t,i)},i.prototype.error=function(e,t,i){void 0===t&&(t=300001);var n={errorMessage:e,errorCode:t,errorDetails:this.id(),info:i};this.warn(e,n),this.dispatchEvent("error",n)},i.prototype.validateParams=function(t){t||(t=this.getConfig().requiredParams||[]),this.getConfig().defaultParams&&(this.params=e.utils.object.merge([this.getConfig().defaultParams,this.params]));var i=[];if(t.length>0)for(var n in t)if(t.hasOwnProperty(n)){var o=t[n];this.params[o]||i.push(o)}return!(i.length>0)||(this.dispatchInvalidParamError(i[0]),!1)},i.prototype.dispatchEvent=function(e,t){return void 0===t&&(t={}),t.eventName=e,this._eventDispatcher(t,this.params)},i.prototype.dispatchErrorFromResponse=function(e){this._errorDispatcher.dispatchErrorFromResponse(this.params,e)},i.prototype.dispatchInvalidParamError=function(e){this._errorDispatcher.dispatchInvalidParamError(this.params,e)},i.prototype.getEvent=function(e){return this._eventWrappers[e]||(this.params[e]?this.params[e]instanceof Array||(this.params[e]=[this.params[e]]):this.params[e]=[],this._eventWrappers[e]=new t.EventWrapper(this.params[e])),this._eventWrappers[e]},i.prototype.addGlobalEventHandlers=function(e){for(var t in e)e.hasOwnProperty(t)&&this.addGlobalEventHandler(t,e[t])},i.prototype.addGlobalEventHandler=function(e,t,i,n){void 0===i&&(i=null),void 0===n&&(n="socialize"),this._globalEventHandlers[e]||(this._globalEventHandlers[e]=[]);var o=this._globalEventsManager.add(e,t,"component",i,n,this.params);this._globalEventHandlers[e].push(o)},i.prototype.removeGlobalEventHandlers=function(e){for(var t in e)e.hasOwnProperty(t)&&this.removeGlobalEventHandler(t,e[t])},i.prototype.removeGlobalEventHandler=function(t,i,n,o){void 0===n&&(n=null),void 0===o&&(o="socialize");var r=this._globalEventHandlers[t];if(r){var a=e.utils.array.firstIndex(r,function(e){return e.handler==i});if(a>-1){var s=r[a];this._globalEventsManager.remove(s.fullEventName,s),r.splice(a,1)}}},i.prototype.prepareCallback=function(e){var t=this;return function(){for(var i=[],n=0;n<arguments.length;n++)i[n]=arguments[n];if(!t._isDisposed)return e.apply(this,i)}},i.prototype.dispose=function(){for(var e in this._globalEventHandlers)for(var t in this._globalEventHandlers[e]){var i=this._globalEventHandlers[e][t];this._globalEventsManager.remove(i.fullEventName,i)}this._globalEventHandlers={},this._eventWrappers={},this.params={},this._isDisposed=!0},i}();i.instanceCounter=0,i.NOT_IMPLEMENTED_ERROR="Abstract method not implemented",t.BaseObject=i}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t;!function(e){e[e._undefined=0]="_undefined",e[e.desktop=1]="desktop",e[e.mobile=2]="mobile",e[e.auto=3]="auto"}(t=e.DeviceTypes||(e.DeviceTypes={}))}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){var t;!function(e){var t=function(){function e(e){void 0===e&&(e=[]),this._handlers=e}return e.prototype.add=function(e){this._handlers.push(e)},e.prototype.remove=function(e){var t=this._handlers.indexOf(e);t>-1&&this._handlers.splice(t,1)},e}();e.EventWrapper=t}(t=e._||(e._={}))}(gigya||(gigya={}));var gigya;!function(e){e.isReady=!1,e.build||(e.build={version:"",time:""}),e.providersConfig||(e.providersConfig={}),e.isGigya||(e.isGigya=!0),e.partnerSettings||(e.partnerSettings={authMode:"cookie",baseDomains:"",plugins:{apiDomain:"us1.gigya-api.com"},invisibleRecaptcha:{siteKey:""}});var t;!function(e){}(t=e._||(e._={})),function(t){var i;!function(i){function n(){e.utils.queue.hold("bootstrap","API"),(e.localInfo.isIE6||e.localInfo.isIE7||e.localInfo.isIE8||e.localInfo.isIE9||e.localInfo.isIE10)&&"undefined"!=typeof console&&"undefined"!=typeof console.log&&console.log("Gigya: It looks like you're using an old version of Internet Explorer. This browser is not supported. Please upgrade to a newer version of IE."),e.reports.init(),u(function(){f(),e.thisScript.globalConf.customEventMap&&e.events.addMap(e.thisScript.globalConf.customEventMap),g(function(){if(e.isReady=!0,"function"==typeof onGigyaServiceReady)try{onGigyaServiceReady("socialize")}catch(e){console.error("gigya: error while invoking onGigyaServiceReady",e)}if("function"==typeof e.thisScript.globalConf.onGigyaServiceReady)try{e.thisScript.globalConf.onGigyaServiceReady("socialize")}catch(e){console.error("gigya: error while invoking onGigyaServiceReady injected from server",e)}p(function(){e.utils.queue.release("bootstrap","API"),h(),d(),e.reports.trackAddressBarShares(),e.utils.functions.invokeOnPageLoad(function(){return window.setTimeout(e.socialize.trackReferrals,1e3)})})}),o(),c(),r();var t={sref:document.referrer};e.thisScript.globalConf.actionCounterPath&&(t.actionCounterPath=e.thisScript.globalConf.actionCounterPath),e.reports.report("loadc",e.thisScript.APIKey,null,null,null,t)})}function o(){}function r(){if(e.abTesting)for(var t in e.abTesting)if("optimizely"===t){var i=e.abTesting[t];if(i.serviceParams&&i.serviceParams.hasOwnProperty("apiKey")){var n=window.location.pathname,o=!1;if(i.disabledPaths)for(var r=0;r<i.disabledPaths.length;r++)if(i.disabledPaths[r].indexOf(n)>-1){o=!0;break}if(!o)for(var r=0;r<i.enabledPaths.length;r++)n.indexOf(i.enabledPaths[r])>-1&&e.utils.script.load("//cdn.optimizely.com/js/"+i.serviceParams.apiKey+".js")}}}function a(){function t(t){var n=i[t];i[t]=function(){for(var o=[],r=0;r<arguments.length;r++)o[r]=arguments[r];var o=Array.prototype.slice.apply(o),a=o[0],s="object"==typeof a&&null!=a&&a.hasOwnProperty("message")?a:{message:a};e.log.addLog(t,s,!1),n&&(n.apply?n.apply(i,o):n(o.join(" ")))}}var i=window.console;i||(i={});var n=e.utils.array.getArrayFromString(e.thisScript.globalConf.consoleLogLevel,",");if(0!=n.length){var o=e.log.CONSOLE_LOG_LEVELS;e.utils.array.indexOf(n,"*")==-1&&(o=e.utils.array.intersect(n,o)),e.log.selectedConsoleLogLevels=o,e.utils.array.forEach(o,function(e){return t(e)})}}function s(t){"1"==e.utils.cookie.get("gig_debug")?e.socialize.showDebugUI({ignoreApiQueue:!0,waitForDebug:!1,onLoad:t}):t()}function c(){e.utils.functions.invokeOnPageLoad(function(){"undefined"!=typeof window.gigya_omniture_conf&&e.utils.script.load(e._.getCdnResource("/js/GenesisExchange_Gigya.min.js"))})}function l(e){e||(e="en-US"),e=e.replace("_","-").toLowerCase();var t,i=e.split("-"),n=i[0];t=i.length>1?i[1]:n,t=t.toUpperCase();var o;switch(e){case"es-mx":o=e,t="ES";break;case"pt-br":case"zh-cn":case"zh-hk":case"zh-tw":case"te-st":case"fr-inf":case"de-inf":case"es-inf":case"nl-inf":o=e;break;default:o=n}return{full:n+"-"+t,langCode:o,countryCode:t}}function u(t){var n=e.utils.DOM.getGigyaScriptElement(["gigya.js","socialize.js","socialize2.js","gsjssdk.js"]);if(n&&!window.__gig_hidescript){var o=e.utils.URL.getParamsFromURL(n.src,!0)||{},r=e.utils.JSON.deserialize(e.partnerSettings.siteGroupGlobalConf)||{},a=e.utils.JSON.deserialize(e.partnerSettings.globalConf,{},{siteGroupGlobalConf:r})||{},s=e.utils.JSON.deserialize(n.innerHTML)||{},c=window.__gigyaConf||{};e.thisScript={scriptElement:n,protocol:0===n.src.indexOf("https:")?"https":"http",baseDomain:n.src.split("/")[2],APIKey:o.apikey,lang:l(o.lang||c.lang||s.lang||a.lang||r.lang),globalConf:e.utils.object.merge([e.partnerSettings.plugins||{},r,a,s,c],!1),URLParams:o},e.thisScript.globalConf.lang=e.thisScript.lang.langCode,!e.thisScript.APIKey&&"object"==typeof console&&console.warn?console.warn("**** WARNING - Loading socialize.js without an APIKey parameter is unsupported and may result in an unexpected behavior. ****"):e.thisScript.globalConf.APIKey=e.thisScript.APIKey,t()}else i.parseScriptRetries<10?(i.parseScriptRetries++,window.setTimeout(function(){u(t)},200)):(e.thisScript={scriptElement:null,protocol:e.localInfo.protocol,baseDomain:"https"===e.localInfo.protocol?"https://cdns.gigya.com":"http://cdn.gigya.com",APIKey:"",lang:l(""),globalConf:{},URLParams:{}},t())}function g(i){var n="web",o=window.__gigAPIAdapterSettings,r=e.localInfo.supportsLocalStorage,c="__gigAPIAdapterSettings_"+e.thisScript.APIKey+"_"+e.build.version;if(o&&"mobile"==o.getAdapterName()&&o.getAPIKey()==e.thisScript.APIKey){if(n="mobile",r){var l={apiKey:o.getAPIKey?o.getAPIKey():null,adapterName:o.getAdapterName?o.getAdapterName():null,features:o.getFeatures?o.getFeatures():null,settings:o.getSettings?o.getSettings():null};e.utils.localStorage.setItem(c,e.utils.JSON.serialize(l))}}else if(r){var u=e.utils.JSON.deserialize(e.utils.localStorage.getItem(c));"mobile"===u.adapterName&&(n="mobile",o={},u.apiKey&&(o.getAPIKey=function(){return u.apiKey}),u.adapterName&&(o.getAdapterName=function(){return u.adapterName}),u.features&&(o.getFeatures=function(){return u.features}),u.settings&&(o.getSettings=function(){return u.settings}))}t.apiAdapter=t.apiAdapters[n].newApiAdapter(o),e.utils.functions.createAlias("gigya.auth.loginToken.getTokenParam",t.apiAdapter.getTokenParam),a(),s(function(){t.apiAdapter.init(i)})}function d(){e.thisScript.globalConf.autoLogin&&(e.external.facebook.autoLogin(),e.external.googlePlus.autoLogin())}function p(i){var n=e.utils.URL.getParamsFromURL(document.location.href);n.errorCode&&n.regToken?t.checkCompleteRegistration(n,e.thisScript.globalConf,function(){return i()}):i()}function f(){var i,n=e.localInfo;n.isIE11&&!window.indexedDB?(i=t.MessagingMethod.Flash,e.thisScript.globalConf.legacyCrossSiteMethod="localConnection"):i=n.supportsPostMessage?t.MessagingMethod.PostMessage:t.MessagingMethod.Flash,n.messagingMethod=i}function h(){e.utils.queue.queueForExecution("API",function(){e.utils.functions.invokeOnPageLoad(function(){e.providersConfig.facebook&&e.external.facebook.load(!1),e.providersConfig.googlePlus&&e.external.googlePlus.load()})})}i.parseScriptRetries=0,i.init=n,i.warnOnUnsupportedBrowser=o,i.loadABTesting=r,i.wrapJSConsole=a,i.startDebugIfNeeded=s,i.loadOmniture=c,i.parseLang=l,i.parseScriptElement=u,i.initApiAdapter=g,i.autoLogin=d,i.checkReturnFromRedirect=p,i.setMessagingMethod=f,i.injectExternalSdks=h,n()}(i=t.bootstrap||(t.bootstrap={}))}(t=e._||(e._={}))}(gigya||(gigya={})); } else if (typeof console == 'object' && console.warn) { console.warn('**** gigya.js loaded twice ****'); }

!function(t){function e(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return t[n].call(a.exports,a,a.exports,e),a.loaded=!0,a.exports}var n=window.webpackJsonp;window.webpackJsonp=function(o,i){for(var s,l,u=0,c=[];u<o.length;u++)l=o[u],a[l]&&c.push.apply(c,a[l]),a[l]=0;for(s in i)t[s]=i[s];for(n&&n(o,i);c.length;)c.shift().call(null,e);if(i[0])return r[0]=0,e(0)};var r={},a={0:0};e.e=function(t,n){if(0===a[t])return n.call(null,e);if(void 0!==a[t])a[t].push(n);else{a[t]=[n];var r=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.src=e.p+""+t+"."+({1:"pages/article.js",2:"pages/migrate-account.js",3:"pages/commerce.js",4:"pages/tablet-article-comments.js",5:"pages/video-item.js",6:"pages/video.js",7:"pages/topic.js",8:"pages/home.js",9:"pages/registration-complete.js",10:"pages/search.js",11:"pages/subscriber-registration.js",12:"pages/accesscode-registration.js",13:"pages/magazine.js",14:"pages/visual-library.js",15:"pages/video-embed.js",16:"pages/my-hbr.js",17:"pages/store.js",18:"pages/reset-password.js",19:"pages/sign-up.js",20:"pages/topics.js",21:"pages/the-latest.js",22:"pages/most-popular.js",23:"pages/generic.js",24:"pages/navigation.js",25:"pages/sign-in.js",26:"pages/playing-to-win.js",27:"pages/coverstory.js",28:"pages/spotlight.js"}[t]||t),r.appendChild(o)}},e.m=t,e.c=r,e.p=""}({2:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:19Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === "object" && typeof module.exports === "object" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper window is present,\n\t\t// execute the factory and get jQuery\n\t\t// For environments that do not inherently posses a window with a document\n\t\t// (such as Node.js), expose a jQuery-making factory as module.exports\n\t\t// This accentuates the need for the creation of a real window\n\t\t// e.g. var jQuery = require("jquery")(window);\n\t\t// See ticket #14549 for more info\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( "jQuery requires a window with a document" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {\n\n// Can\'t do this because several apps including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through "use strict" call chains. (#13335)\n// Support: Firefox 18+\n//\n\nvar deletedIds = [];\n\nvar slice = deletedIds.slice;\n\nvar concat = deletedIds.concat;\n\nvar push = deletedIds.push;\n\nvar indexOf = deletedIds.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\tversion = "1.11.3",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor \'enhanced\'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1, IE<9\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: "",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array\'s method, not like a jQuery method.\n\tpush: push,\n\tsort: deletedIds.sort,\n\tsplice: deletedIds.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar src, copyIsArray, copy, name, options, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === "boolean" ) {\n\t\tdeep = target;\n\n\t\t// skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== "object" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we\'re merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don\'t bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: "jQuery" + ( version + Math.random() ).replace( /\\D/g, "" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\t// See test/unit/core.js for details concerning isFunction.\n\t// Since version 1.3, DOM methods and functions like alert\n\t// aren\'t supported. They return false on IE (#2968).\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === "function";\n\t},\n\n\tisArray: Array.isArray || function( obj ) {\n\t\treturn jQuery.type(obj) === "array";\n\t},\n\n\tisWindow: function( obj ) {\n\t\t/* jshint eqeqeq: false */\n\t\treturn obj != null && obj == obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|"")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals ("0x...")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Must be an Object.\n\t\t// Because of IE, we also have to check the presence of the constructor property.\n\t\t// Make sure that DOM nodes and window objects don\'t pass through, as well\n\t\tif ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// Not own constructor property must be Object\n\t\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call(obj, "constructor") &&\n\t\t\t\t!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\t// IE8,9 Will throw exceptions on certain host objects #9897\n\t\t\treturn false;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Handle iteration over inherited properties before own properties.\n\t\tif ( support.ownLast ) {\n\t\t\tfor ( key in obj ) {\n\t\t\t\treturn hasOwn.call( obj, key );\n\t\t\t}\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + "";\n\t\t}\n\t\treturn typeof obj === "object" || typeof obj === "function" ?\n\t\t\tclass2type[ toString.call(obj) ] || "object" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\t// Workarounds based on findings by Jim Driscoll\n\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context\n\tglobalEval: function( data ) {\n\t\tif ( data && jQuery.trim( data ) ) {\n\t\t\t// We use execScript on Internet Explorer\n\t\t\t// We use an anonymous function so that context is window\n\t\t\t// rather than jQuery in Firefox\n\t\t\t( window.execScript || function( data ) {\n\t\t\t\twindow[ "eval" ].call( window, data );\n\t\t\t} )( data );\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1, IE<9\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t"" :\n\t\t\t( text + "" ).replace( rtrim, "" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === "string" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\tvar len;\n\n\t\tif ( arr ) {\n\t\t\tif ( indexOf ) {\n\t\t\t\treturn indexOf.call( arr, elem, i );\n\t\t\t}\n\n\t\t\tlen = arr.length;\n\t\t\ti = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t// Skip accessing in sparse arrays\n\t\t\t\tif ( i in arr && arr[ i ] === elem ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\twhile ( j < len ) {\n\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)\n\t\tif ( len !== len ) {\n\t\t\twhile ( second[j] !== undefined ) {\n\t\t\t\tfirst[ i++ ] = second[ j++ ];\n\t\t\t}\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar args, proxy, tmp;\n\n\t\tif ( typeof context === "string" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: function() {\n\t\treturn +( new Date() );\n\t},\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {\n\tclass2type[ "[object " + name + "]" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn\'t used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = "length" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === "function" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === "array" || length === 0 ||\n\t\ttypeof length === "number" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = "sizzle" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it\'s faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = "[\\\\x20\\\\t\\\\r\\\\n\\\\f]",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = "(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( "w", "w#" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = "\\\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +\n\t\t// Operator (capture 2)\n\t\t"*([*^$|!~]?=)" + whitespace +\n\t\t// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"\n\t\t"*(?:\'((?:\\\\\\\\.|[^\\\\\\\\\'])*)\'|\\"((?:\\\\\\\\.|[^\\\\\\\\\\"])*)\\"|(" + identifier + "))|)" + whitespace +\n\t\t"*\\\\]",\n\n\tpseudos = ":(" + characterEncoding + ")(?:\\\\((" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t"(\'((?:\\\\\\\\.|[^\\\\\\\\\'])*)\'|\\"((?:\\\\\\\\.|[^\\\\\\\\\\"])*)\\")|" +\n\t\t// 2. simple (capture 6)\n\t\t"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|" + attributes + ")*)|" +\n\t\t// 3. anything else (capture 2)\n\t\t".*" +\n\t\t")\\\\)|)",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + "+", "g" ),\n\trtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)" + whitespace + "+$", "g" ),\n\n\trcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),\n\trcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),\n\n\trattributeQuotes = new RegExp( "=" + whitespace + "*([^\\\\]\'\\"]*?)" + whitespace + "*\\\\]", "g" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( "^" + identifier + "$" ),\n\n\tmatchExpr = {\n\t\t"ID": new RegExp( "^#(" + characterEncoding + ")" ),\n\t\t"CLASS": new RegExp( "^\\\\.(" + characterEncoding + ")" ),\n\t\t"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),\n\t\t"ATTR": new RegExp( "^" + attributes ),\n\t\t"PSEUDO": new RegExp( "^" + pseudos ),\n\t\t"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(" + whitespace +\n\t\t\t"*(even|odd|(([+-]|)(\\\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +\n\t\t\t"*(\\\\d+)|))" + whitespace + "*\\\\)|)", "i" ),\n\t\t"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(" +\n\t\t\twhitespace + "*((?:-\\\\d)?\\\\d*)" + whitespace + "*\\\\)|)(?=[^-]|$)", "i" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /\'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( "\\\\\\\\([\\\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = "0x" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +"0x"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a "Permission Denied"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can\'t trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== "string" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle("#ID")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle("TAG")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(".CLASS")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn\'t work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute("id")) ) {\n\t\t\t\t\tnid = old.replace( rescape, "\\\\$&" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( "id", nid );\n\t\t\t\t}\n\t\t\t\tnid = "[id=\'" + nid + "\'] ";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(",");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute("id");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, "$1" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + " " ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + " " ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement("div");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split("|"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === "input" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === "input" || name === "button") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== "undefined" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn\'t yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== "HTML" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to "document" variable and if iframe has been reloaded,\n\t// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( "unload", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( "onunload", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = "i";\n\t\treturn !div.getAttribute("className");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName("*") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment("") );\n\t\treturn !div.getElementsByTagName("*").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don\'t pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find["ID"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== "undefined" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter["ID"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute("id") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find["ID"];\n\n\t\tExpr.filter["ID"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find["TAG"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== "undefined" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don\'t have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === "*" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE\'s treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = "<a id=\'" + expando + "\'></a>" +\n\t\t\t\t"<select id=\'" + expando + "-\\f]\' msallowcapture=\'\'>" +\n\t\t\t\t"<option selected=\'\'></option></select>";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but "safe" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll("[msallowcapture^=\'\']").length ) {\n\t\t\t\trbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\'\'|\\"\\")" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and "value" are not treated correctly\n\t\t\tif ( !div.querySelectorAll("[selected]").length ) {\n\t\t\t\trbuggyQSA.push( "\\\\[" + whitespace + "*(?:value|" + booleans + ")" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {\n\t\t\t\trbuggyQSA.push("~=");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(":checked").length ) {\n\t\t\t\trbuggyQSA.push(":checked");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {\n\t\t\t\trbuggyQSA.push(".#.+[+~]");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement("input");\n\t\t\tinput.setAttribute( "type", "hidden" );\n\t\t\tdiv.appendChild( input ).setAttribute( "name", "D" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll("[name=d]").length ) {\n\t\t\t\trbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(":enabled").length ) {\n\t\t\t\trbuggyQSA.push( ":enabled", ":disabled" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll("*,:x");\n\t\t\trbuggyQSA.push(",.*:");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it\'s possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, "div" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, "[s!=\'\']:x" );\n\t\t\trbuggyMatches.push( "!=", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, "=\'$1\']" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9\'s matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don\'t get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( "Syntax error, unrecognized expression: " + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = "",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === "string" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t">": { dir: "parentNode", first: true },\n\t\t" ": { dir: "parentNode" },\n\t\t"+": { dir: "previousSibling", first: true },\n\t\t"~": { dir: "previousSibling" }\n\t},\n\n\tpreFilter: {\n\t\t"ATTR": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === "~=" ) {\n\t\t\t\tmatch[3] = " " + match[3] + " ";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t"CHILD": function( match ) {\n\t\t\t/* matches from matchExpr["CHILD"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === "nth" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t"PSEUDO": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr["CHILD"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || "";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t"TAG": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === "*" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t"CLASS": function( className ) {\n\t\t\tvar pattern = classCache[ className + " " ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );\n\t\t\t\t});\n\t\t},\n\n\t\t"ATTR": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === "!=";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += "";\n\n\t\t\t\treturn operator === "=" ? result === check :\n\t\t\t\t\toperator === "!=" ? result !== check :\n\t\t\t\t\toperator === "^=" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === "*=" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === "$=" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t"CHILD": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== "nth",\n\t\t\t\tforward = type.slice( -4 ) !== "last",\n\t\t\t\tofType = what === "of-type";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? "nextSibling" : "previousSibling",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven\'t yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === "only" && !start && "nextSibling";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t"PSEUDO": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( "unsupported pseudo: " + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, "", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t"not": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, "$1" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don\'t keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t"has": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t"contains": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// "Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element\'s language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by "-".\n\t\t// The matching of C against the element\'s language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name."\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t"lang": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || "") ) {\n\t\t\t\tSizzle.error( "unsupported lang: " + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t"target": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t"root": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t"focus": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t"enabled": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t"disabled": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t"checked": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);\n\t\t},\n\n\t\t"selected": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t"empty": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t"parent": function( elem ) {\n\t\t\treturn !Expr.pseudos["empty"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t"header": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t"input": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t"button": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === "input" && elem.type === "button" || name === "button";\n\t\t},\n\n\t\t"text": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === "input" &&\n\t\t\t\telem.type === "text" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"\n\t\t\t\t( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t"first": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t"last": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t"even": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"odd": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos["nth"] = Expr.pseudos["eq"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + " " ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don\'t consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, " " )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we\'re just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = "";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === "parentNode",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can\'t set arbitrary data on XML nodes, so they don\'t benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we\'re done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[" "],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })\n\t\t\t\t\t).replace( rtrim, "$1" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = "0",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find["TAG"]( "*", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be "00" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + " " ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle\'s compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === "function" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split("").sort( sortOrder ).join("") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren\'t passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement("div") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property "interpolation"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = "<a href=\'#\'></a>";\n\treturn div.firstChild.getAttribute("href") === "#" ;\n}) ) {\n\taddHandle( "type|href|height|width", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute("value")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = "<input/>";\n\tdiv.firstChild.setAttribute( "value", "" );\n\treturn div.firstChild.getAttribute( "value" ) === "";\n}) ) {\n\taddHandle( "value", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === "input" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute("disabled") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[":"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === "string" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = ":not(" + expr + ")";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tret = [],\n\t\t\tself = this,\n\t\t\tlen = self.length;\n\n\t\tif ( typeof selector !== "string" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + " " + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $("p:first").is("p:last") won\'t return true for a doc with two "p".\n\t\t\ttypeof selector === "string" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(""), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === "string" ) {\n\t\t\tif ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE and Opera return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id !== match[2] ) {\n\t\t\t\t\t\t\treturn rootjQuery.find( selector );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== "undefined" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\tcur = elem[ dir ];\n\n\t\twhile ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {\n\t\t\tif ( cur.nodeType === 1 ) {\n\t\t\t\tmatched.push( cur );\n\t\t\t}\n\t\t\tcur = cur[dir];\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar r = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tr.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar i,\n\t\t\ttargets = jQuery( target, this ),\n\t\t\tlen = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don\'t pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within\n\t// the matched set of elements\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// index in selector\n\t\tif ( typeof elem === "string" ) {\n\t\t\treturn jQuery.inArray( this[0], jQuery( elem ) );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn jQuery.inArray(\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[0] : elem, this );\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\tdo {\n\t\tcur = cur[ dir ];\n\t} while ( cur && cur.nodeType !== 1 );\n\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, "parentNode" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, "parentNode", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, "nextSibling" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, "previousSibling" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, "nextSibling" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, "previousSibling" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, "nextSibling", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, "previousSibling", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn jQuery.nodeName( elem, "iframe" ) ?\n\t\t\telem.contentDocument || elem.contentWindow.document :\n\t\t\tjQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar ret = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== "Until" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === "string" ) {\n\t\t\tret = jQuery.filter( selector, ret );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tret = jQuery.unique( ret );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tret = ret.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * "fired" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest "memorized"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === "string" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\t\t// Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === "function" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== "string" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we\'re not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],\n\t\t\t\t[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],\n\t\t\t\t[ "notify", "progress", jQuery.Callbacks("memory") ]\n\t\t\t],\n\t\t\tstate = "pending",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + "With" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\n\t\t\t\t\t} else if ( !(--remaining) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if we\'re not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we\'re already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).\n\t\tif ( !document.body ) {\n\t\t\treturn setTimeout( jQuery.ready );\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( "ready" );\n\t\t\tjQuery( document ).off( "ready" );\n\t\t}\n\t}\n});\n\n/**\n * Clean-up method for dom ready events\n */\nfunction detach() {\n\tif ( document.addEventListener ) {\n\t\tdocument.removeEventListener( "DOMContentLoaded", completed, false );\n\t\twindow.removeEventListener( "load", completed, false );\n\n\t} else {\n\t\tdocument.detachEvent( "onreadystatechange", completed );\n\t\twindow.detachEvent( "onload", completed );\n\t}\n}\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\t// readyState === "complete" is good enough for us to call the dom ready in oldIE\n\tif ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {\n\t\tdetach();\n\t\tjQuery.ready();\n\t}\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// we once tried to use readyState "interactive" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === "complete" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t// Standards-based browsers support DOMContentLoaded\n\t\t} else if ( document.addEventListener ) {\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( "DOMContentLoaded", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( "load", completed, false );\n\n\t\t// If IE event model is used\n\t\t} else {\n\t\t\t// Ensure firing before onload, maybe late but safe also for iframes\n\t\t\tdocument.attachEvent( "onreadystatechange", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.attachEvent( "onload", completed );\n\n\t\t\t// If IE and not a frame\n\t\t\t// continually check to see if the document is ready\n\t\t\tvar top = false;\n\n\t\t\ttry {\n\t\t\t\ttop = window.frameElement == null && document.documentElement;\n\t\t\t} catch(e) {}\n\n\t\t\tif ( top && top.doScroll ) {\n\t\t\t\t(function doScrollCheck() {\n\t\t\t\t\tif ( !jQuery.isReady ) {\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// Use the trick by Diego Perini\n\t\t\t\t\t\t\t// http://javascript.nwbox.com/IEContentLoaded/\n\t\t\t\t\t\t\ttop.doScroll("left");\n\t\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t\treturn setTimeout( doScrollCheck, 50 );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// detach all dom ready events\n\t\t\t\t\t\tdetach();\n\n\t\t\t\t\t\t// and execute any waiting functions\n\t\t\t\t\t\tjQuery.ready();\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n\nvar strundefined = typeof undefined;\n\n\n\n// Support: IE<9\n// Iteration over object\'s inherited properties before its own\nvar i;\nfor ( i in jQuery( support ) ) {\n\tbreak;\n}\nsupport.ownLast = i !== "0";\n\n// Note: most support tests are defined in their respective modules.\n// false until the test is run\nsupport.inlineBlockNeedsLayout = false;\n\n// Execute ASAP in case we need to set body.style.zoom\njQuery(function() {\n\t// Minified: var a,b,c,d\n\tvar val, div, body, container;\n\n\tbody = document.getElementsByTagName( "body" )[ 0 ];\n\tif ( !body || !body.style ) {\n\t\t// Return for frameset docs that don\'t have a body\n\t\treturn;\n\t}\n\n\t// Setup\n\tdiv = document.createElement( "div" );\n\tcontainer = document.createElement( "div" );\n\tcontainer.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";\n\tbody.appendChild( container ).appendChild( div );\n\n\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t// Support: IE<8\n\t\t// Check if natively block-level elements act like inline-block\n\t\t// elements when setting their display to \'inline\' and giving\n\t\t// them layout\n\t\tdiv.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";\n\n\t\tsupport.inlineBlockNeedsLayout = val = div.offsetWidth === 3;\n\t\tif ( val ) {\n\t\t\t// Prevent IE 6 from affecting layout for positioned elements #11048\n\t\t\t// Prevent IE from shrinking the body in IE 7 mode #12869\n\t\t\t// Support: IE<8\n\t\t\tbody.style.zoom = 1;\n\t\t}\n\t}\n\n\tbody.removeChild( container );\n});\n\n\n\n\n(function() {\n\tvar div = document.createElement( "div" );\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( elem ) {\n\tvar noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ],\n\t\tnodeType = +elem.nodeType || 1;\n\n\t// Do not set data on non-element DOM nodes because it will not be cleared (#8335).\n\treturn nodeType !== 1 && nodeType !== 9 ?\n\t\tfalse :\n\n\t\t// Nodes accept data unless otherwise specified; rejection can be conditional\n\t\t!noData || noData !== true && elem.getAttribute("classid") === noData;\n};\n\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\n\t\tvar name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();\n\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === "string" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === "true" ? true :\n\t\t\t\t\tdata === "false" ? false :\n\t\t\t\t\tdata === "null" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn\'t change the string\n\t\t\t\t\t+data + "" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn\'t changed later\n\t\t\tjQuery.data( elem, key, data );\n\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\n\treturn data;\n}\n\n// checks a cache object for emptiness\nfunction isEmptyDataObject( obj ) {\n\tvar name;\n\tfor ( name in obj ) {\n\n\t\t// if the public data object is empty, the private is still empty\n\t\tif ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( name !== "toJSON" ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction internalData( elem, name, data, pvt /* Internal Use Only */ ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar ret, thisCache,\n\t\tinternalKey = jQuery.expando,\n\n\t\t// We have to handle DOM nodes and JS objects differently because IE6-7\n\t\t// can\'t GC object references properly across the DOM-JS boundary\n\t\tisNode = elem.nodeType,\n\n\t\t// Only DOM nodes need the global jQuery cache; JS object data is\n\t\t// attached directly to the object so GC can occur automatically\n\t\tcache = isNode ? jQuery.cache : elem,\n\n\t\t// Only defining an ID for JS objects if its cache already exists allows\n\t\t// the code to shortcut on the same path as a DOM node with no cache\n\t\tid = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;\n\n\t// Avoid doing any more work than we need to when trying to get data on an\n\t// object that has no data at all\n\tif ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {\n\t\treturn;\n\t}\n\n\tif ( !id ) {\n\t\t// Only DOM nodes need a new unique ID for each element since their data\n\t\t// ends up in the global cache\n\t\tif ( isNode ) {\n\t\t\tid = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;\n\t\t} else {\n\t\t\tid = internalKey;\n\t\t}\n\t}\n\n\tif ( !cache[ id ] ) {\n\t\t// Avoid exposing jQuery metadata on plain JS objects when the object\n\t\t// is serialized using JSON.stringify\n\t\tcache[ id ] = isNode ? {} : { toJSON: jQuery.noop };\n\t}\n\n\t// An object can be passed to jQuery.data instead of a key/value pair; this gets\n\t// shallow copied over onto the existing cache\n\tif ( typeof name === "object" || typeof name === "function" ) {\n\t\tif ( pvt ) {\n\t\t\tcache[ id ] = jQuery.extend( cache[ id ], name );\n\t\t} else {\n\t\t\tcache[ id ].data = jQuery.extend( cache[ id ].data, name );\n\t\t}\n\t}\n\n\tthisCache = cache[ id ];\n\n\t// jQuery data() is stored in a separate object inside the object\'s internal data\n\t// cache in order to avoid key collisions between internal data and user-defined\n\t// data.\n\tif ( !pvt ) {\n\t\tif ( !thisCache.data ) {\n\t\t\tthisCache.data = {};\n\t\t}\n\n\t\tthisCache = thisCache.data;\n\t}\n\n\tif ( data !== undefined ) {\n\t\tthisCache[ jQuery.camelCase( name ) ] = data;\n\t}\n\n\t// Check for both converted-to-camel and non-converted data property names\n\t// If a data property was specified\n\tif ( typeof name === "string" ) {\n\n\t\t// First Try to find as-is property data\n\t\tret = thisCache[ name ];\n\n\t\t// Test for null|undefined property data\n\t\tif ( ret == null ) {\n\n\t\t\t// Try to find the camelCased property\n\t\t\tret = thisCache[ jQuery.camelCase( name ) ];\n\t\t}\n\t} else {\n\t\tret = thisCache;\n\t}\n\n\treturn ret;\n}\n\nfunction internalRemoveData( elem, name, pvt ) {\n\tif ( !jQuery.acceptData( elem ) ) {\n\t\treturn;\n\t}\n\n\tvar thisCache, i,\n\t\tisNode = elem.nodeType,\n\n\t\t// See jQuery.data for more information\n\t\tcache = isNode ? jQuery.cache : elem,\n\t\tid = isNode ? elem[ jQuery.expando ] : jQuery.expando;\n\n\t// If there is already no cache entry for this object, there is no\n\t// purpose in continuing\n\tif ( !cache[ id ] ) {\n\t\treturn;\n\t}\n\n\tif ( name ) {\n\n\t\tthisCache = pvt ? cache[ id ] : cache[ id ].data;\n\n\t\tif ( thisCache ) {\n\n\t\t\t// Support array or space separated string names for data keys\n\t\t\tif ( !jQuery.isArray( name ) ) {\n\n\t\t\t\t// try the string as a key before any manipulation\n\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\tname = [ name ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// split the camel cased version by spaces unless a key with the spaces exists\n\t\t\t\t\tname = jQuery.camelCase( name );\n\t\t\t\t\tif ( name in thisCache ) {\n\t\t\t\t\t\tname = [ name ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = name.split(" ");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If "name" is an array of keys...\n\t\t\t\t// When data is initially created, via ("key", "val") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = name.concat( jQuery.map( name, jQuery.camelCase ) );\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete thisCache[ name[i] ];\n\t\t\t}\n\n\t\t\t// If there is no data left in the cache, we want to continue\n\t\t\t// and let the cache object itself get destroyed\n\t\t\tif ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// See jQuery.data for more information\n\tif ( !pvt ) {\n\t\tdelete cache[ id ].data;\n\n\t\t// Don\'t destroy the parent cache unless the internal data object\n\t\t// had been the only thing left in it\n\t\tif ( !isEmptyDataObject( cache[ id ] ) ) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Destroy the cache\n\tif ( isNode ) {\n\t\tjQuery.cleanData( [ elem ], true );\n\n\t// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)\n\t/* jshint eqeqeq: false */\n\t} else if ( support.deleteExpando || cache != cache.window ) {\n\t\t/* jshint eqeqeq: true */\n\t\tdelete cache[ id ];\n\n\t// When all else fails, null\n\t} else {\n\t\tcache[ id ] = null;\n\t}\n}\n\njQuery.extend({\n\tcache: {},\n\n\t// The following elements (space-suffixed to avoid Object.prototype collisions)\n\t// throw uncatchable exceptions if you attempt to set expando properties\n\tnoData: {\n\t\t"applet ": true,\n\t\t"embed ": true,\n\t\t// ...but Flash objects (which have this classid) *can* handle expandos\n\t\t"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"\n\t},\n\n\thasData: function( elem ) {\n\t\telem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];\n\t\treturn !!elem && !isEmptyDataObject( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name );\n\t},\n\n\t// For internal use only.\n\t_data: function( elem, name, data ) {\n\t\treturn internalData( elem, name, data, true );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\treturn internalRemoveData( elem, name, true );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[0],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Special expections of .data basically thwart jQuery.access,\n\t\t// so implement the relevant behavior ourselves\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = jQuery.data( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( "data-" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjQuery._data( elem, "parsedAttrs", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === "object" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tjQuery.data( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn arguments.length > 1 ?\n\n\t\t\t// Sets one value\n\t\t\tthis.each(function() {\n\t\t\t\tjQuery.data( this, key, value );\n\t\t\t}) :\n\n\t\t\t// Gets one value\n\t\t\t// Try to fetch any internally stored data first\n\t\t\telem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeData( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || "fx" ) + "queue";\n\t\t\tqueue = jQuery._data( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray(data) ) {\n\t\t\t\t\tqueue = jQuery._data( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || "fx";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === "inprogress" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === "fx" ) {\n\t\t\t\tqueue.unshift( "inprogress" );\n\t\t\t}\n\n\t\t\t// clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// not intended for public consumption - generates a queueHooks object, or returns the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + "queueHooks";\n\t\treturn jQuery._data( elem, key ) || jQuery._data( elem, key, {\n\t\t\tempty: jQuery.Callbacks("once memory").add(function() {\n\t\t\t\tjQuery._removeData( elem, type + "queue" );\n\t\t\t\tjQuery._removeData( elem, key );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tdata = type;\n\t\t\ttype = "fx";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === "fx" && queue[0] !== "inprogress" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || "fx", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || "fx";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = jQuery._data( elements[ i ], type + "queueHooks" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ "Top", "Right", "Bottom", "Left" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it\'s a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlength = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === "object" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlength ? fn( elems[0], key ) : emptyGet;\n};\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\t// Minified: var a,b,c\n\tvar input = document.createElement( "input" ),\n\t\tdiv = document.createElement( "div" ),\n\t\tfragment = document.createDocumentFragment();\n\n\t// Setup\n\tdiv.innerHTML = " <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>";\n\n\t// IE strips leading whitespace when .innerHTML is used\n\tsupport.leadingWhitespace = div.firstChild.nodeType === 3;\n\n\t// Make sure that tbody elements aren\'t automatically inserted\n\t// IE will insert them into empty tables\n\tsupport.tbody = !div.getElementsByTagName( "tbody" ).length;\n\n\t// Make sure that link elements get serialized correctly by innerHTML\n\t// This requires a wrapper element in IE\n\tsupport.htmlSerialize = !!div.getElementsByTagName( "link" ).length;\n\n\t// Makes sure cloning an html5 element does not cause problems\n\t// Where outerHTML is undefined, this still works\n\tsupport.html5Clone =\n\t\tdocument.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>";\n\n\t// Check if a disconnected checkbox will retain its checked\n\t// value of true after appended to the DOM (IE6/7)\n\tinput.type = "checkbox";\n\tinput.checked = true;\n\tfragment.appendChild( input );\n\tsupport.appendChecked = input.checked;\n\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\t// Support: IE6-IE11+\n\tdiv.innerHTML = "<textarea>x</textarea>";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// #11217 - WebKit loses check when the name is after the checked attribute\n\tfragment.appendChild( div );\n\tdiv.innerHTML = "<input type=\'radio\' checked=\'checked\' name=\'t\'/>";\n\n\t// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3\n\t// old WebKit doesn\'t clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<9\n\t// Opera does not clone events (and typeof div.attachEvent === undefined).\n\t// IE9-10 clones events bound via attachEvent, but they don\'t trigger with .click()\n\tsupport.noCloneEvent = true;\n\tif ( div.attachEvent ) {\n\t\tdiv.attachEvent( "onclick", function() {\n\t\t\tsupport.noCloneEvent = false;\n\t\t});\n\n\t\tdiv.cloneNode( true ).click();\n\t}\n\n\t// Execute the test only if not already executed in another module.\n\tif (support.deleteExpando == null) {\n\t\t// Support: IE<9\n\t\tsupport.deleteExpando = true;\n\t\ttry {\n\t\t\tdelete div.test;\n\t\t} catch( e ) {\n\t\t\tsupport.deleteExpando = false;\n\t\t}\n\t}\n})();\n\n\n(function() {\n\tvar i, eventName,\n\t\tdiv = document.createElement( "div" );\n\n\t// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)\n\tfor ( i in { submit: true, change: true, focusin: true }) {\n\t\teventName = "on" + i;\n\n\t\tif ( !(support[ i + "Bubbles" ] = eventName in window) ) {\n\t\t\t// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)\n\t\t\tdiv.setAttribute( eventName, "t" );\n\t\t\tsupport[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;\n\t\t}\n\t}\n\n\t// Null elements to avoid leaks in IE.\n\tdiv = null;\n})();\n\n\nvar rformElems = /^(?:input|select|textarea)$/i,\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards\' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\t\tvar tmp, events, t, handleObjIn,\n\t\t\tspecial, eventHandle, handleObj,\n\t\t\thandlers, type, namespaces, origType,\n\t\t\telemData = jQuery._data( elem );\n\n\t\t// Don\'t attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element\'s event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?\n\t\t\t\t\tjQuery.event.dispatch.apply( eventHandle.elem, arguments ) :\n\t\t\t\t\tundefined;\n\t\t\t};\n\t\t\t// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events\n\t\t\teventHandle.elem = elem;\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || "" ).match( rnotwhite ) || [ "" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || "" ).split( "." ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(".")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we\'re the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener/attachEvent if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\t// Bind the global event handler to the element\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\n\t\t\t\t\t} else if ( elem.attachEvent ) {\n\t\t\t\t\t\telem.attachEvent( "on" + type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element\'s handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t\t// Nullify elem to prevent memory leaks in IE\n\t\telem = null;\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\t\tvar j, handleObj, tmp,\n\t\t\torigCount, t, events,\n\t\t\tspecial, handlers, type,\n\t\t\tnamespaces, origType,\n\t\t\telemData = jQuery.hasData( elem ) && jQuery._data( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || "" ).match( rnotwhite ) || [ "" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || "" ).split( "." ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( "(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it\'s no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\n\t\t\t// removeData also checks for emptiness and clears the expando if empty\n\t\t\t// so use it instead of delete\n\t\t\tjQuery._removeData( elem, "events" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\t\tvar handle, ontype, cur,\n\t\t\tbubbleType, special, tmp, i,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, "type" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don\'t do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we\'re not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(".") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(".");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(":") < 0 && "on" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === "object" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(".");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( "(^|\\\\.)" + namespaces.join("\\\\.(?:.*\\\\.|)") + "(\\\\.|$)" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Can\'t use an .isFunction() check here because IE6/7 fails that test.\n\t\t\t\t// Don\'t do default actions on window, that\'s where global variables be (#6170)\n\t\t\t\tif ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don\'t re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\ttry {\n\t\t\t\t\t\telem[ type ]();\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// IE<9 dies on focus/blur to hidden element (#1486,#12518)\n\t\t\t\t\t\t// only reproducible on winXP IE8 native, not IE9 in IE8 mode\n\t\t\t\t\t}\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, ret, handleObj, matched, j,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or\n\t\t\t\t// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar sel, handleObj, matches, i,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG <use> instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {\n\n\t\t\t/* jshint eqeqeq: false */\n\t\t\tfor ( ; cur != this; cur = cur.parentNode || this ) {\n\t\t\t\t/* jshint eqeqeq: true */\n\n\t\t\t\t// Don\'t check non-elements (#13208)\n\t\t\t\t// Don\'t process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don\'t conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + " ";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// Fix target property (#1925)\n\t\tif ( !event.target ) {\n\t\t\tevent.target = originalEvent.srcElement || document;\n\t\t}\n\n\t\t// Support: Chrome 23+, Safari?\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\t// Support: IE<9\n\t\t// For mouse/key events, metaKey==false if it\'s undefined (#3368, #11328)\n\t\tevent.metaKey = !!event.metaKey;\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: "char charCode key keyCode".split(" "),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),\n\t\tfilter: function( event, original ) {\n\t\t\tvar body, eventDoc, doc,\n\t\t\t\tbutton = original.button,\n\t\t\t\tfromElement = original.fromElement;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add relatedTarget, if necessary\n\t\t\tif ( !event.relatedTarget && fromElement ) {\n\t\t\t\tevent.relatedTarget = fromElement === event.target ? original.toElement : fromElement;\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don\'t use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// If we error on focus to hidden element (#1486, #12518),\n\t\t\t\t\t\t// let .trigger() run the handlers\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: "focusin"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: "focusout"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don\'t fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, "a" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn\'t alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor\'s stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = document.removeEventListener ?\n\tfunction( elem, type, handle ) {\n\t\tif ( elem.removeEventListener ) {\n\t\t\telem.removeEventListener( type, handle, false );\n\t\t}\n\t} :\n\tfunction( elem, type, handle ) {\n\t\tvar name = "on" + type;\n\n\t\tif ( elem.detachEvent ) {\n\n\t\t\t// #8545, #7054, preventing memory leaks for custom events in IE6-8\n\t\t\t// detachEvent needed property on element, by name of that event, to properly expose it to GC\n\t\t\tif ( typeof elem[ name ] === strundefined ) {\n\t\t\t\telem[ name ] = null;\n\t\t\t}\n\n\t\t\telem.detachEvent( name, handle );\n\t\t}\n\t};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the \'new\' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: IE < 9, Android < 4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn\'t have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If preventDefault exists, run it on the original event\n\t\tif ( e.preventDefault ) {\n\t\t\te.preventDefault();\n\n\t\t// Support: IE\n\t\t// Otherwise set the returnValue property of the original event to false\n\t\t} else {\n\t\t\te.returnValue = false;\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\t\tif ( !e ) {\n\t\t\treturn;\n\t\t}\n\t\t// If stopPropagation exists, run it on the original event\n\t\tif ( e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\t// Support: IE\n\t\t// Set the cancelBubble property of the original event to true\n\t\te.cancelBubble = true;\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\njQuery.each({\n\tmouseenter: "mouseover",\n\tmouseleave: "mouseout",\n\tpointerenter: "pointerover",\n\tpointerleave: "pointerout"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// IE submit delegation\nif ( !support.submitBubbles ) {\n\n\tjQuery.event.special.submit = {\n\t\tsetup: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Lazy-add a submit handler when a descendant form may potentially be submitted\n\t\t\tjQuery.event.add( this, "click._submit keypress._submit", function( e ) {\n\t\t\t\t// Node name check avoids a VML-related crash in IE (#9807)\n\t\t\t\tvar elem = e.target,\n\t\t\t\t\tform = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;\n\t\t\t\tif ( form && !jQuery._data( form, "submitBubbles" ) ) {\n\t\t\t\t\tjQuery.event.add( form, "submit._submit", function( event ) {\n\t\t\t\t\t\tevent._submit_bubble = true;\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( form, "submitBubbles", true );\n\t\t\t\t}\n\t\t\t});\n\t\t\t// return undefined since we don\'t need an event listener\n\t\t},\n\n\t\tpostDispatch: function( event ) {\n\t\t\t// If form was submitted by the user, bubble the event up the tree\n\t\t\tif ( event._submit_bubble ) {\n\t\t\t\tdelete event._submit_bubble;\n\t\t\t\tif ( this.parentNode && !event.isTrigger ) {\n\t\t\t\t\tjQuery.event.simulate( "submit", this.parentNode, event, true );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\t// Only need this for delegated form submit events\n\t\t\tif ( jQuery.nodeName( this, "form" ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Remove delegated handlers; cleanData eventually reaps submit handlers attached above\n\t\t\tjQuery.event.remove( this, "._submit" );\n\t\t}\n\t};\n}\n\n// IE change delegation and checkbox/radio fix\nif ( !support.changeBubbles ) {\n\n\tjQuery.event.special.change = {\n\n\t\tsetup: function() {\n\n\t\t\tif ( rformElems.test( this.nodeName ) ) {\n\t\t\t\t// IE doesn\'t fire change on a check/radio until blur; trigger it on click\n\t\t\t\t// after a propertychange. Eat the blur-change in special.change.handle.\n\t\t\t\t// This still fires onchange a second time for check/radio after blur.\n\t\t\t\tif ( this.type === "checkbox" || this.type === "radio" ) {\n\t\t\t\t\tjQuery.event.add( this, "propertychange._change", function( event ) {\n\t\t\t\t\t\tif ( event.originalEvent.propertyName === "checked" ) {\n\t\t\t\t\t\t\tthis._just_changed = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery.event.add( this, "click._change", function( event ) {\n\t\t\t\t\t\tif ( this._just_changed && !event.isTrigger ) {\n\t\t\t\t\t\t\tthis._just_changed = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Allow triggered, simulated change events (#11500)\n\t\t\t\t\t\tjQuery.event.simulate( "change", this, event, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Delegated event; lazy-add a change handler on descendant inputs\n\t\t\tjQuery.event.add( this, "beforeactivate._change", function( e ) {\n\t\t\t\tvar elem = e.target;\n\n\t\t\t\tif ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {\n\t\t\t\t\tjQuery.event.add( elem, "change._change", function( event ) {\n\t\t\t\t\t\tif ( this.parentNode && !event.isSimulated && !event.isTrigger ) {\n\t\t\t\t\t\t\tjQuery.event.simulate( "change", this.parentNode, event, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tjQuery._data( elem, "changeBubbles", true );\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\thandle: function( event ) {\n\t\t\tvar elem = event.target;\n\n\t\t\t// Swallow native change events from checkbox/radio, we already triggered them above\n\t\t\tif ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {\n\t\t\t\treturn event.handleObj.handler.apply( this, arguments );\n\t\t\t}\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tjQuery.event.remove( this, "._change" );\n\n\t\t\treturn !rformElems.test( this.nodeName );\n\t\t}\n\t};\n}\n\n// Create "bubbling" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tjQuery._data( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = jQuery._data( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tjQuery._removeData( doc, fix );\n\t\t\t\t} else {\n\t\t\t\t\tjQuery._data( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar type, origFn;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === "object" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== "string" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === "string" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === "object" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === "function" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nfunction createSafeFragment( document ) {\n\tvar list = nodeNames.split( "|" ),\n\t\tsafeFrag = document.createDocumentFragment();\n\n\tif ( safeFrag.createElement ) {\n\t\twhile ( list.length ) {\n\t\t\tsafeFrag.createElement(\n\t\t\t\tlist.pop()\n\t\t\t);\n\t\t}\n\t}\n\treturn safeFrag;\n}\n\nvar nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +\n\t\t"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",\n\trinlinejQuery = / jQuery\\d+="(?:null|\\d+)"/g,\n\trnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\\\s/>]", "i"),\n\trleadingWhitespace = /^\\s+/,\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trtbody = /<tbody/i,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked="checked" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\t\toption: [ 1, "<select multiple=\'multiple\'>", "</select>" ],\n\t\tlegend: [ 1, "<fieldset>", "</fieldset>" ],\n\t\tarea: [ 1, "<map>", "</map>" ],\n\t\tparam: [ 1, "<object>", "</object>" ],\n\t\tthead: [ 1, "<table>", "</table>" ],\n\t\ttr: [ 2, "<table><tbody>", "</tbody></table>" ],\n\t\tcol: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],\n\t\ttd: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],\n\n\t\t// IE6-8 can\'t serialize link, script, style, or any html5 (NoScope) tags,\n\t\t// unless wrapped in a div with non-breaking characters in front of it.\n\t\t_default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]\n\t},\n\tsafeFragment = createSafeFragment( document ),\n\tfragmentDiv = safeFragment.appendChild( document.createElement("div") );\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\tvar elems, elem,\n\t\ti = 0,\n\t\tfound = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) :\n\t\t\ttypeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) :\n\t\t\tundefined;\n\n\tif ( !found ) {\n\t\tfor ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !tag || jQuery.nodeName( elem, tag ) ) {\n\t\t\t\tfound.push( elem );\n\t\t\t} else {\n\t\t\t\tjQuery.merge( found, getAll( elem, tag ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], found ) :\n\t\tfound;\n}\n\n// Used in buildFragment, fixes the defaultChecked property\nfunction fixDefaultChecked( elem ) {\n\tif ( rcheckableType.test( elem.type ) ) {\n\t\telem.defaultChecked = elem.checked;\n\t}\n}\n\n// Support: IE<8\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, "table" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?\n\n\t\telem.getElementsByTagName("tbody")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement("tbody") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\tif ( match ) {\n\t\telem.type = match[1];\n\t} else {\n\t\telem.removeAttribute("type");\n\t}\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar elem,\n\t\ti = 0;\n\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\tjQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\n\tif ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {\n\t\treturn;\n\t}\n\n\tvar type, i, l,\n\t\toldData = jQuery._data( src ),\n\t\tcurData = jQuery._data( dest, oldData ),\n\t\tevents = oldData.events;\n\n\tif ( events ) {\n\t\tdelete curData.handle;\n\t\tcurData.events = {};\n\n\t\tfor ( type in events ) {\n\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t}\n\t\t}\n\t}\n\n\t// make the cloned public data object a copy from the original\n\tif ( curData.data ) {\n\t\tcurData.data = jQuery.extend( {}, curData.data );\n\t}\n}\n\nfunction fixCloneNodeIssues( src, dest ) {\n\tvar nodeName, e, data;\n\n\t// We do not need to do anything for non-Elements\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\tnodeName = dest.nodeName.toLowerCase();\n\n\t// IE6-8 copies events bound via attachEvent when using cloneNode.\n\tif ( !support.noCloneEvent && dest[ jQuery.expando ] ) {\n\t\tdata = jQuery._data( dest );\n\n\t\tfor ( e in data.events ) {\n\t\t\tjQuery.removeEvent( dest, e, data.handle );\n\t\t}\n\n\t\t// Event data gets referenced instead of copied if the expando gets copied too\n\t\tdest.removeAttribute( jQuery.expando );\n\t}\n\n\t// IE blanks contents when cloning scripts, and tries to evaluate newly-set text\n\tif ( nodeName === "script" && dest.text !== src.text ) {\n\t\tdisableScript( dest ).text = src.text;\n\t\trestoreScript( dest );\n\n\t// IE6-10 improperly clones children of object elements using classid.\n\t// IE10 throws NoModificationAllowedError if parent is null, #12132.\n\t} else if ( nodeName === "object" ) {\n\t\tif ( dest.parentNode ) {\n\t\t\tdest.outerHTML = src.outerHTML;\n\t\t}\n\n\t\t// This path appears unavoidable for IE9. When cloning an object\n\t\t// element in IE9, the outerHTML strategy above is not sufficient.\n\t\t// If the src has innerHTML and the destination does not,\n\t\t// copy the src.innerHTML into the dest.innerHTML. #10324\n\t\tif ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {\n\t\t\tdest.innerHTML = src.innerHTML;\n\t\t}\n\n\t} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {\n\t\t// IE6-8 fails to persist the checked state of a cloned checkbox\n\t\t// or radio button. Worse, IE6-7 fail to give the cloned element\n\t\t// a checked appearance if the defaultChecked value isn\'t also set\n\n\t\tdest.defaultChecked = dest.checked = src.checked;\n\n\t\t// IE6-7 get confused and end up setting the value of a cloned\n\t\t// checkbox/radio button to an empty string instead of "on"\n\t\tif ( dest.value !== src.value ) {\n\t\t\tdest.value = src.value;\n\t\t}\n\n\t// IE6-8 fails to return the selected option to the default selected\n\t// state when cloning options\n\t} else if ( nodeName === "option" ) {\n\t\tdest.defaultSelected = dest.selected = src.defaultSelected;\n\n\t// IE6-8 fails to set the defaultValue to the correct value when\n\t// cloning other types of input fields\n\t} else if ( nodeName === "input" || nodeName === "textarea" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar destElements, node, clone, i, srcElements,\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\tif ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {\n\t\t\tclone = elem.cloneNode( true );\n\n\t\t// IE<=8 does not properly clone detached, unknown element nodes\n\t\t} else {\n\t\t\tfragmentDiv.innerHTML = elem.outerHTML;\n\t\t\tfragmentDiv.removeChild( clone = fragmentDiv.firstChild );\n\t\t}\n\n\t\tif ( (!support.noCloneEvent || !support.noCloneChecked) &&\n\t\t\t\t(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\t// Fix all IE cloning issues\n\t\t\tfor ( i = 0; (node = srcElements[i]) != null; ++i ) {\n\t\t\t\t// Ensure that the destination node is not null; Fixes #9587\n\t\t\t\tif ( destElements[i] ) {\n\t\t\t\t\tfixCloneNodeIssues( node, destElements[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0; (node = srcElements[i]) != null; i++ ) {\n\t\t\t\t\tcloneCopyEvent( node, destElements[i] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, "script" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, "script" ) );\n\t\t}\n\n\t\tdestElements = srcElements = node = null;\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar j, elem, contains,\n\t\t\ttmp, tag, tbody, wrap,\n\t\t\tl = elems.length,\n\n\t\t\t// Ensure a safe fragment\n\t\t\tsafe = createSafeFragment( context ),\n\n\t\t\tnodes = [],\n\t\t\ti = 0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === "object" ) {\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || safe.appendChild( context.createElement("div") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\n\t\t\t\t\ttmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[0];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Manually add leading whitespace removed by IE\n\t\t\t\t\tif ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {\n\t\t\t\t\t\tnodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove IE\'s autoinserted <tbody> from table fragments\n\t\t\t\t\tif ( !support.tbody ) {\n\n\t\t\t\t\t\t// String was a <table>, *may* have spurious <tbody>\n\t\t\t\t\t\telem = tag === "table" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\ttmp.firstChild :\n\n\t\t\t\t\t\t\t// String was a bare <thead> or <tfoot>\n\t\t\t\t\t\t\twrap[1] === "<table>" && !rtbody.test( elem ) ?\n\t\t\t\t\t\t\t\ttmp :\n\t\t\t\t\t\t\t\t0;\n\n\t\t\t\t\t\tj = elem && elem.childNodes.length;\n\t\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\t\tif ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {\n\t\t\t\t\t\t\t\telem.removeChild( tbody );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Fix #12392 for WebKit and IE > 9\n\t\t\t\t\ttmp.textContent = "";\n\n\t\t\t\t\t// Fix #12392 for oldIE\n\t\t\t\t\twhile ( tmp.firstChild ) {\n\t\t\t\t\t\ttmp.removeChild( tmp.firstChild );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remember the top-level container for proper cleanup\n\t\t\t\t\ttmp = safe.lastChild;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Fix #11356: Clear elements from fragment\n\t\tif ( tmp ) {\n\t\t\tsafe.removeChild( tmp );\n\t\t}\n\n\t\t// Reset defaultChecked for any radios and checkboxes\n\t\t// about to be appended to the DOM in IE 6/7 (#8060)\n\t\tif ( !support.appendChecked ) {\n\t\t\tjQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );\n\t\t}\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( safe.appendChild( elem ), "script" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || "" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttmp = null;\n\n\t\treturn safe;\n\t},\n\n\tcleanData: function( elems, /* internal */ acceptData ) {\n\t\tvar elem, type, id, data,\n\t\t\ti = 0,\n\t\t\tinternalKey = jQuery.expando,\n\t\t\tcache = jQuery.cache,\n\t\t\tdeleteExpando = support.deleteExpando,\n\t\t\tspecial = jQuery.event.special;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( acceptData || jQuery.acceptData( elem ) ) {\n\n\t\t\t\tid = elem[ internalKey ];\n\t\t\t\tdata = id && cache[ id ];\n\n\t\t\t\tif ( data ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove\'s overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove cache only if it was not already removed by jQuery.event.remove\n\t\t\t\t\tif ( cache[ id ] ) {\n\n\t\t\t\t\t\tdelete cache[ id ];\n\n\t\t\t\t\t\t// IE does not allow us to delete expando properties from nodes,\n\t\t\t\t\t\t// nor does it have a removeAttribute function on Document nodes;\n\t\t\t\t\t\t// we must handle all of these cases\n\t\t\t\t\t\tif ( deleteExpando ) {\n\t\t\t\t\t\t\tdelete elem[ internalKey ];\n\n\t\t\t\t\t\t} else if ( typeof elem.removeAttribute !== strundefined ) {\n\t\t\t\t\t\t\telem.removeAttribute( internalKey );\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telem[ internalKey ] = null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeletedIds.push( id );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, "script" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t}\n\n\t\t\t// Remove any remaining nodes\n\t\t\twhile ( elem.firstChild ) {\n\t\t\t\telem.removeChild( elem.firstChild );\n\t\t\t}\n\n\t\t\t// If this is a select, ensure that it displays empty (#12336)\n\t\t\t// Support: IE<9\n\t\t\tif ( elem.options && jQuery.nodeName( elem, "select" ) ) {\n\t\t\t\telem.options.length = 0;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined ) {\n\t\t\t\treturn elem.nodeType === 1 ?\n\t\t\t\t\telem.innerHTML.replace( rinlinejQuery, "" ) :\n\t\t\t\t\tundefined;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === "string" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t( support.htmlSerialize || !rnoshimcache.test( value ) ) &&\n\t\t\t\t( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&\n\t\t\t\t!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, "<$1></$2>" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (; i < l; i++ ) {\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\telem = this[i] || {};\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar first, node, hasScripts,\n\t\t\tscripts, doc, fragment,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[0],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can\'t cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === "string" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[0] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, "script" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, "script" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[i], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || "" ) &&\n\t\t\t\t\t\t\t!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won\'t run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Fix #11809: Avoid leaking memory\n\t\t\t\tfragment = first = null;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: "append",\n\tprependTo: "prepend",\n\tinsertBefore: "before",\n\tinsertAfter: "after",\n\treplaceAll: "replaceWith"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\ti = 0,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone(true);\n\t\t\tjQuery( insert[i] )[ original ]( elems );\n\n\t\t\t// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optmization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], "display" );\n\n\t// We don\'t have any data stored on the element,\n\t// so use "detach" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === "none" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( "<iframe frameborder=\'0\' width=\'0\' height=\'0\'/>" )).appendTo( doc.documentElement );\n\n\t\t\t// Always write a new HTML skeleton so Webkit and Firefox don\'t choke on reuse\n\t\t\tdoc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;\n\n\t\t\t// Support: IE\n\t\t\tdoc.write();\n\t\t\tdoc.close();\n\n\t\t\tdisplay = actualDisplay( nodeName, doc );\n\t\t\tiframe.detach();\n\t\t}\n\n\t\t// Store the correct default display\n\t\telemdisplay[ nodeName ] = display;\n\t}\n\n\treturn display;\n}\n\n\n(function() {\n\tvar shrinkWrapBlocksVal;\n\n\tsupport.shrinkWrapBlocks = function() {\n\t\tif ( shrinkWrapBlocksVal != null ) {\n\t\t\treturn shrinkWrapBlocksVal;\n\t\t}\n\n\t\t// Will be changed later if needed.\n\t\tshrinkWrapBlocksVal = false;\n\n\t\t// Minified: var b,c,d\n\t\tvar div, body, container;\n\n\t\tbody = document.getElementsByTagName( "body" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( "div" );\n\t\tcontainer = document.createElement( "div" );\n\t\tcontainer.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\t// Support: IE6\n\t\t// Check if elements with layout shrink-wrap their children\n\t\tif ( typeof div.style.zoom !== strundefined ) {\n\t\t\t// Reset CSS: box-sizing; display; margin; border\n\t\t\tdiv.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +\n\t\t\t\t"box-sizing:content-box;display:block;margin:0;border:0;" +\n\t\t\t\t"padding:1px;width:1px;zoom:1";\n\t\t\tdiv.appendChild( document.createElement( "div" ) ).style.width = "5px";\n\t\t\tshrinkWrapBlocksVal = div.offsetWidth !== 3;\n\t\t}\n\n\t\tbody.removeChild( container );\n\n\t\treturn shrinkWrapBlocksVal;\n\t};\n\n})();\nvar rmargin = (/^margin/);\n\nvar rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );\n\n\n\nvar getStyles, curCSS,\n\trposition = /^(top|right|bottom|left)$/;\n\nif ( window.getComputedStyle ) {\n\tgetStyles = function( elem ) {\n\t\t// Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"\n\t\tif ( elem.ownerDocument.defaultView.opener ) {\n\t\t\treturn elem.ownerDocument.defaultView.getComputedStyle( elem, null );\n\t\t}\n\n\t\treturn window.getComputedStyle( elem, null );\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar width, minWidth, maxWidth, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\n\t\t// getPropertyValue is only needed for .css(\'filter\') in IE9, see #12537\n\t\tret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;\n\n\t\tif ( computed ) {\n\n\t\t\tif ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\tret = jQuery.style( elem, name );\n\t\t\t}\n\n\t\t\t// A tribute to the "awesome hack by Dean Edwards"\n\t\t\t// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right\n\t\t\t// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels\n\t\t\t// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values\n\t\t\tif ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {\n\n\t\t\t\t// Remember the original values\n\t\t\t\twidth = style.width;\n\t\t\t\tminWidth = style.minWidth;\n\t\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t\t// Put in the new values to get a computed value out\n\t\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\t\tret = computed.width;\n\n\t\t\t\t// Revert the changed values\n\t\t\t\tstyle.width = width;\n\t\t\t\tstyle.minWidth = minWidth;\n\t\t\t\tstyle.maxWidth = maxWidth;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + "";\n\t};\n} else if ( document.documentElement.currentStyle ) {\n\tgetStyles = function( elem ) {\n\t\treturn elem.currentStyle;\n\t};\n\n\tcurCSS = function( elem, name, computed ) {\n\t\tvar left, rs, rsLeft, ret,\n\t\t\tstyle = elem.style;\n\n\t\tcomputed = computed || getStyles( elem );\n\t\tret = computed ? computed[ name ] : undefined;\n\n\t\t// Avoid setting ret to empty string here\n\t\t// so we don\'t default to auto\n\t\tif ( ret == null && style && style[ name ] ) {\n\t\t\tret = style[ name ];\n\t\t}\n\n\t\t// From the awesome hack by Dean Edwards\n\t\t// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n\n\t\t// If we\'re not dealing with a regular pixel number\n\t\t// but a number that has a weird ending, we need to convert it to pixels\n\t\t// but not position css attributes, as those are proportional to the parent element instead\n\t\t// and we can\'t measure the parent instead because it might trigger a "stacking dolls" problem\n\t\tif ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\tleft = style.left;\n\t\t\trs = elem.runtimeStyle;\n\t\t\trsLeft = rs && rs.left;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = elem.currentStyle.left;\n\t\t\t}\n\t\t\tstyle.left = name === "fontSize" ? "1em" : ret;\n\t\t\tret = style.pixelLeft + "px";\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.left = left;\n\t\t\tif ( rsLeft ) {\n\t\t\t\trs.left = rsLeft;\n\t\t\t}\n\t\t}\n\n\t\t// Support: IE\n\t\t// IE returns zIndex value as an integer.\n\t\treturn ret === undefined ?\n\t\t\tret :\n\t\t\tret + "" || "auto";\n\t};\n}\n\n\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\t// Define the hook, we\'ll check on the first run if it\'s really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tvar condition = conditionFn();\n\n\t\t\tif ( condition == null ) {\n\t\t\t\t// The test was not ready at this point; screw the hook this time\n\t\t\t\t// but check again when needed next time.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( condition ) {\n\t\t\t\t// Hook not needed (or it\'s not possible to use it due to missing dependency),\n\t\t\t\t// remove it.\n\t\t\t\t// Since there are no other hooks for marginRight, remove the whole object.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\n\t\t\treturn (this.get = hookFn).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\n(function() {\n\t// Minified: var b,c,d,e,f,g, h,i\n\tvar div, style, a, pixelPositionVal, boxSizingReliableVal,\n\t\treliableHiddenOffsetsVal, reliableMarginRightVal;\n\n\t// Setup\n\tdiv = document.createElement( "div" );\n\tdiv.innerHTML = " <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>";\n\ta = div.getElementsByTagName( "a" )[ 0 ];\n\tstyle = a && a.style;\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !style ) {\n\t\treturn;\n\t}\n\n\tstyle.cssText = "float:left;opacity:.5";\n\n\t// Support: IE<9\n\t// Make sure that element opacity exists (as opposed to filter)\n\tsupport.opacity = style.opacity === "0.5";\n\n\t// Verify style float existence\n\t// (IE uses styleFloat instead of cssFloat)\n\tsupport.cssFloat = !!style.cssFloat;\n\n\tdiv.style.backgroundClip = "content-box";\n\tdiv.cloneNode( true ).style.backgroundClip = "";\n\tsupport.clearCloneStyle = div.style.backgroundClip === "content-box";\n\n\t// Support: Firefox<29, Android 2.3\n\t// Vendor-prefix box-sizing\n\tsupport.boxSizing = style.boxSizing === "" || style.MozBoxSizing === "" ||\n\t\tstyle.WebkitBoxSizing === "";\n\n\tjQuery.extend(support, {\n\t\treliableHiddenOffsets: function() {\n\t\t\tif ( reliableHiddenOffsetsVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableHiddenOffsetsVal;\n\t\t},\n\n\t\tboxSizingReliable: function() {\n\t\t\tif ( boxSizingReliableVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\n\t\tpixelPosition: function() {\n\t\t\tif ( pixelPositionVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn pixelPositionVal;\n\t\t},\n\n\t\t// Support: Android 2.3\n\t\treliableMarginRight: function() {\n\t\t\tif ( reliableMarginRightVal == null ) {\n\t\t\t\tcomputeStyleTests();\n\t\t\t}\n\t\t\treturn reliableMarginRightVal;\n\t\t}\n\t});\n\n\tfunction computeStyleTests() {\n\t\t// Minified: var b,c,d,j\n\t\tvar div, body, container, contents;\n\n\t\tbody = document.getElementsByTagName( "body" )[ 0 ];\n\t\tif ( !body || !body.style ) {\n\t\t\t// Test fired too early or in an unsupported environment, exit.\n\t\t\treturn;\n\t\t}\n\n\t\t// Setup\n\t\tdiv = document.createElement( "div" );\n\t\tcontainer = document.createElement( "div" );\n\t\tcontainer.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px";\n\t\tbody.appendChild( container ).appendChild( div );\n\n\t\tdiv.style.cssText =\n\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t// Vendor-prefix box-sizing\n\t\t\t"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +\n\t\t\t"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +\n\t\t\t"border:1px;padding:1px;width:4px;position:absolute";\n\n\t\t// Support: IE<9\n\t\t// Assume reasonable values in the absence of getComputedStyle\n\t\tpixelPositionVal = boxSizingReliableVal = false;\n\t\treliableMarginRightVal = true;\n\n\t\t// Check for getComputedStyle so that this code is not run in IE<9.\n\t\tif ( window.getComputedStyle ) {\n\t\t\tpixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";\n\t\t\tboxSizingReliableVal =\n\t\t\t\t( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";\n\n\t\t\t// Support: Android 2.3\n\t\t\t// Div with explicit width and no margin-right incorrectly\n\t\t\t// gets computed margin-right based on width of container (#3333)\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\tcontents = div.appendChild( document.createElement( "div" ) );\n\n\t\t\t// Reset CSS: box-sizing; display; margin; border; padding\n\t\t\tcontents.style.cssText = div.style.cssText =\n\t\t\t\t// Support: Firefox<29, Android 2.3\n\t\t\t\t// Vendor-prefix box-sizing\n\t\t\t\t"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +\n\t\t\t\t"box-sizing:content-box;display:block;margin:0;border:0;padding:0";\n\t\t\tcontents.style.marginRight = contents.style.width = "0";\n\t\t\tdiv.style.width = "1px";\n\n\t\t\treliableMarginRightVal =\n\t\t\t\t!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );\n\n\t\t\tdiv.removeChild( contents );\n\t\t}\n\n\t\t// Support: IE8\n\t\t// Check if table cells still have offsetWidth/Height when they are set\n\t\t// to display:none and there are still other visible table cells in a\n\t\t// table row; if so, offsetWidth/Height are not reliable for use when\n\t\t// determining if an element has been hidden directly using\n\t\t// display:none (it is still safe to use offsets if a parent element is\n\t\t// hidden; don safety goggles and see bug #4512 for more information).\n\t\tdiv.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";\n\t\tcontents = div.getElementsByTagName( "td" );\n\t\tcontents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none";\n\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\tif ( reliableHiddenOffsetsVal ) {\n\t\t\tcontents[ 0 ].style.display = "";\n\t\t\tcontents[ 1 ].style.display = "none";\n\t\t\treliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0;\n\t\t}\n\n\t\tbody.removeChild( container );\n\t}\n\n})();\n\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\njQuery.swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar\n\t\tralpha = /alpha\\([^)]*\\)/i,\n\tropacity = /opacity\\s*=\\s*([^)]*)/,\n\n\t// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"\n\t// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),\n\trrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),\n\n\tcssShow = { position: "absolute", visibility: "hidden", display: "block" },\n\tcssNormalTransform = {\n\t\tletterSpacing: "0",\n\t\tfontWeight: "400"\n\t},\n\n\tcssPrefixes = [ "Webkit", "O", "Moz", "ms" ];\n\n\n// return a css property mapped to a potentially vendor prefixed property\nfunction vendorPropName( style, name ) {\n\n\t// shortcut for names that are not vendor prefixed\n\tif ( name in style ) {\n\t\treturn name;\n\t}\n\n\t// check for vendor prefixed names\n\tvar capName = name.charAt(0).toUpperCase() + name.slice(1),\n\t\torigName = name,\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in style ) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn origName;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem, hidden,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalues[ index ] = jQuery._data( elem, "olddisplay" );\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\t\t\t// Reset the inline display of this element to learn if it is\n\t\t\t// being hidden by cascaded rules or not\n\t\t\tif ( !values[ index ] && display === "none" ) {\n\t\t\t\telem.style.display = "";\n\t\t\t}\n\n\t\t\t// Set elements which have been overridden with display: none\n\t\t\t// in a stylesheet to whatever the default browser style is\n\t\t\t// for such an element\n\t\t\tif ( elem.style.display === "" && isHidden( elem ) ) {\n\t\t\t\tvalues[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );\n\t\t\t}\n\t\t} else {\n\t\t\thidden = isHidden( elem );\n\n\t\t\tif ( display && display !== "none" || !hidden ) {\n\t\t\t\tjQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of most of the elements in a second loop\n\t// to avoid the constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\t\tif ( !show || elem.style.display === "none" || elem.style.display === "" ) {\n\t\t\telem.style.display = show ? values[ index ] || "" : "none";\n\t\t}\n\t}\n\n\treturn elements;\n}\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\tvar matches = rnumsplit.exec( value );\n\treturn matches ?\n\t\t// Guard against undefined "subtract", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :\n\t\tvalue;\n}\n\nfunction augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {\n\tvar i = extra === ( isBorderBox ? "border" : "content" ) ?\n\t\t// If we already have the right measurement, avoid augmentation\n\t\t4 :\n\t\t// Otherwise initialize for horizontal or vertical properties\n\t\tname === "width" ? 1 : 0,\n\n\t\tval = 0;\n\n\tfor ( ; i < 4; i += 2 ) {\n\t\t// both box models exclude margin, so add it if we want it\n\t\tif ( extra === "margin" ) {\n\t\t\tval += jQuery.css( elem, extra + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\tif ( isBorderBox ) {\n\t\t\t// border-box includes padding, so remove it if we want content\n\t\t\tif ( extra === "content" ) {\n\t\t\t\tval -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// at this point, extra isn\'t border nor margin, so remove border\n\t\t\tif ( extra !== "margin" ) {\n\t\t\t\tval -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n\t\t\t}\n\t\t} else {\n\t\t\t// at this point, extra isn\'t content, so add padding\n\t\t\tval += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );\n\n\t\t\t// at this point, extra isn\'t content nor padding, so add border\n\t\t\tif ( extra !== "padding" ) {\n\t\t\t\tval += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn val;\n}\n\nfunction getWidthOrHeight( elem, name, extra ) {\n\n\t// Start with offset property, which is equivalent to the border-box value\n\tvar valueIsBorderBox = true,\n\t\tval = name === "width" ? elem.offsetWidth : elem.offsetHeight,\n\t\tstyles = getStyles( elem ),\n\t\tisBorderBox = support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";\n\n\t// some non-html elements return undefined for offsetWidth, so check for null/undefined\n\t// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n\t// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n\tif ( val <= 0 || val == null ) {\n\t\t// Fall back to computed then uncomputed css if necessary\n\t\tval = curCSS( elem, name, styles );\n\t\tif ( val < 0 || val == null ) {\n\t\t\tval = elem.style[ name ];\n\t\t}\n\n\t\t// Computed unit is not pixels. Stop here and return.\n\t\tif ( rnumnonpx.test(val) ) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// we need the check for style in case a browser which returns unreliable values\n\t\t// for getComputedStyle silently falls back to the reliable elem.style\n\t\tvalueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );\n\n\t\t// Normalize "", auto, and prepare for extra\n\t\tval = parseFloat( val ) || 0;\n\t}\n\n\t// use the active box-sizing model to add/subtract irrelevant styles\n\treturn ( val +\n\t\taugmentWidthOrHeight(\n\t\t\telem,\n\t\t\tname,\n\t\t\textra || ( isBorderBox ? "border" : "content" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles\n\t\t)\n\t) + "px";\n}\n\njQuery.extend({\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, "opacity" );\n\t\t\t\t\treturn ret === "" ? "1" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don\'t automatically add "px" to these possibly-unitless properties\n\tcssNumber: {\n\t\t"columnCount": true,\n\t\t"fillOpacity": true,\n\t\t"flexGrow": true,\n\t\t"flexShrink": true,\n\t\t"fontWeight": true,\n\t\t"lineHeight": true,\n\t\t"opacity": true,\n\t\t"order": true,\n\t\t"orphans": true,\n\t\t"widows": true,\n\t\t"zIndex": true,\n\t\t"zoom": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {\n\t\t// normalize float css property\n\t\t"float": support.cssFloat ? "cssFloat" : "styleFloat"\n\t},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\t\t// Don\'t set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we\'re working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = jQuery.camelCase( name ),\n\t\t\tstyle = elem.style;\n\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we\'re setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// convert relative number strings (+= or -=) to relative numbers. #7345\n\t\t\tif ( type === "string" && (ret = rrelNum.exec( value )) ) {\n\t\t\t\tvalue = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = "number";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren\'t set. See: #7116\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add \'px\' to the (except for certain CSS properties)\n\t\t\tif ( type === "number" && !jQuery.cssNumber[ origName ] ) {\n\t\t\t\tvalue += "px";\n\t\t\t}\n\n\t\t\t// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,\n\t\t\t// but it would mean to define eight (for every problematic property) identical functions\n\t\t\tif ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {\n\t\t\t\tstyle[ name ] = "inherit";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {\n\n\t\t\t\t// Support: IE\n\t\t\t\t// Swallow errors from \'invalid\' CSS values (#5509)\n\t\t\t\ttry {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\n\t\t} else {\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar num, val, hooks,\n\t\t\torigName = jQuery.camelCase( name );\n\n\t\t// Make sure that we\'re working with the right name\n\t\tname = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );\n\n\t\t// gets hook for the prefixed version\n\t\t// followed by the unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && "get" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t//convert "normal" to computed value\n\t\tif ( val === "normal" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Return, converting to number if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === "" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || jQuery.isNumeric( num ) ? num || 0 : val;\n\t\t}\n\t\treturn val;\n\t}\n});\n\njQuery.each([ "height", "width" ], function( i, name ) {\n\tjQuery.cssHooks[ name ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\t\t\t\t// certain elements can have dimension info if we invisibly show them\n\t\t\t\t// however, it must have a current display style that would benefit from this\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?\n\t\t\t\t\tjQuery.swap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, name, extra );\n\t\t\t\t\t}) :\n\t\t\t\t\tgetWidthOrHeight( elem, name, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar styles = extra && getStyles( elem );\n\t\t\treturn setPositiveNumber( elem, value, extra ?\n\t\t\t\taugmentWidthOrHeight(\n\t\t\t\t\telem,\n\t\t\t\t\tname,\n\t\t\t\t\textra,\n\t\t\t\t\tsupport.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",\n\t\t\t\t\tstyles\n\t\t\t\t) : 0\n\t\t\t);\n\t\t}\n\t};\n});\n\nif ( !support.opacity ) {\n\tjQuery.cssHooks.opacity = {\n\t\tget: function( elem, computed ) {\n\t\t\t// IE uses filters for opacity\n\t\t\treturn ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?\n\t\t\t\t( 0.01 * parseFloat( RegExp.$1 ) ) + "" :\n\t\t\t\tcomputed ? "1" : "";\n\t\t},\n\n\t\tset: function( elem, value ) {\n\t\t\tvar style = elem.style,\n\t\t\t\tcurrentStyle = elem.currentStyle,\n\t\t\t\topacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",\n\t\t\t\tfilter = currentStyle && currentStyle.filter || style.filter || "";\n\n\t\t\t// IE has trouble with opacity if it does not have layout\n\t\t\t// Force it by setting the zoom level\n\t\t\tstyle.zoom = 1;\n\n\t\t\t// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652\n\t\t\t// if value === "", then remove inline opacity #12685\n\t\t\tif ( ( value >= 1 || value === "" ) &&\n\t\t\t\t\tjQuery.trim( filter.replace( ralpha, "" ) ) === "" &&\n\t\t\t\t\tstyle.removeAttribute ) {\n\n\t\t\t\t// Setting style.filter to null, "" & " " still leave "filter:" in the cssText\n\t\t\t\t// if "filter:" is present at all, clearType is disabled, we want to avoid this\n\t\t\t\t// style.removeAttribute is IE Only, but so apparently is this code path...\n\t\t\t\tstyle.removeAttribute( "filter" );\n\n\t\t\t\t// if there is no filter style applied in a css rule or unset inline opacity, we are done\n\t\t\t\tif ( value === "" || currentStyle && !currentStyle.filter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// otherwise, set new filter values\n\t\t\tstyle.filter = ralpha.test( filter ) ?\n\t\t\t\tfilter.replace( ralpha, opacity ) :\n\t\t\t\tfilter + " " + opacity;\n\t\t}\n\t};\n}\n\njQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\t// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n\t\t\t// Work around by temporarily setting element display to inline-block\n\t\t\treturn jQuery.swap( elem, { "display": "inline-block" },\n\t\t\t\tcurCSS, [ elem, "marginRight" ] );\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each({\n\tmargin: "",\n\tpadding: "",\n\tborder: "Width"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// assumes a single number if not a string\n\t\t\t\tparts = typeof value === "string" ? value.split(" ") : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( !rmargin.test( prefix ) ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n});\n\njQuery.fn.extend({\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( jQuery.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t},\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === "boolean" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( isHidden( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t});\n\t}\n});\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || "swing";\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\tif ( tween.elem[ tween.prop ] != null &&\n\t\t\t\t(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails\n\t\t\t// so, simple values such as "10px" are parsed to Float.\n\t\t\t// complex values such as "rotate(1rad)" are returned as is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, "" );\n\t\t\t// Empty strings, null, undefined and "auto" are converted to 0.\n\t\t\treturn !result || result === "auto" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\t\t\t// use step hook for back compat - use cssHook if its there - use .style if its\n\t\t\t// available and use plain properties where available\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9\n// Panic based approach to setting things on disconnected nodes\n\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t}\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back Compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, timerId,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),\n\trrun = /queueHooks$/,\n\tanimationPrefilters = [ defaultPrefilter ],\n\ttweeners = {\n\t\t"*": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value ),\n\t\t\t\ttarget = tween.cur(),\n\t\t\t\tparts = rfxnum.exec( value ),\n\t\t\t\tunit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),\n\n\t\t\t\t// Starting value computation is required for potential unit mismatches\n\t\t\t\tstart = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&\n\t\t\t\t\trfxnum.exec( jQuery.css( tween.elem, prop ) ),\n\t\t\t\tscale = 1,\n\t\t\t\tmaxIterations = 20;\n\n\t\t\tif ( start && start[ 3 ] !== unit ) {\n\t\t\t\t// Trust units reported by jQuery.css\n\t\t\t\tunit = unit || start[ 3 ];\n\n\t\t\t\t// Make sure we update the tween properties later on\n\t\t\t\tparts = parts || [];\n\n\t\t\t\t// Iteratively approximate from a nonzero starting point\n\t\t\t\tstart = +target || 1;\n\n\t\t\t\tdo {\n\t\t\t\t\t// If previous iteration zeroed out, double until we get *something*\n\t\t\t\t\t// Use a string for doubling factor so we don\'t accidentally see scale as unchanged below\n\t\t\t\t\tscale = scale || ".5";\n\n\t\t\t\t\t// Adjust and apply\n\t\t\t\t\tstart = start / scale;\n\t\t\t\t\tjQuery.style( tween.elem, prop, start + unit );\n\n\t\t\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t\t\t// And breaking the loop if scale is unchanged or perfect, or if we\'ve just had enough\n\t\t\t\t} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );\n\t\t\t}\n\n\t\t\t// Update tween properties\n\t\t\tif ( parts ) {\n\t\t\t\tstart = tween.start = +start || +target || 0;\n\t\t\t\ttween.unit = unit;\n\t\t\t\t// If a +=/-= token was provided, we\'re doing a relative animation\n\t\t\t\ttween.end = parts[ 1 ] ?\n\t\t\t\t\tstart + ( parts[ 1 ] + 1 ) * parts[ 2 ] :\n\t\t\t\t\t+parts[ 2 ];\n\t\t\t}\n\n\t\t\treturn tween;\n\t\t} ]\n\t};\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\tsetTimeout(function() {\n\t\tfxNow = undefined;\n\t});\n\treturn ( fxNow = jQuery.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\tattrs = { height: type },\n\t\ti = 0;\n\n\t// if we include width, step value is 1 to do all cssExpand values,\n\t// if we don\'t include width, step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4 ; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ "margin" + which ] = attrs[ "padding" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( (tween = collection[ index ].call( animation, prop, value )) ) {\n\n\t\t\t// we\'re done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\t/* jshint validthis: true */\n\tvar prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHidden( elem ),\n\t\tdataShow = jQuery._data( elem, "fxshow" );\n\n\t// handle queue: false promises\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, "fx" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always(function() {\n\t\t\t// doing this makes sure that the complete handler will be called\n\t\t\t// before this completes\n\t\t\tanim.always(function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, "fx" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t// height/width overflow pass\n\tif ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {\n\t\t// Make sure that nothing sneaks out\n\t\t// Record all 3 overflow attributes because IE does not\n\t\t// change the overflow attribute when overflowX and\n\t\t// overflowY are set to the same value\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Set display property to inline-block for height/width\n\t\t// animations on inline elements that are having width/height animated\n\t\tdisplay = jQuery.css( elem, "display" );\n\n\t\t// Test default display if display is currently "none"\n\t\tcheckDisplay = display === "none" ?\n\t\t\tjQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;\n\n\t\tif ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {\n\n\t\t\t// inline-level elements accept inline-block;\n\t\t\t// block-level elements need to be inline with layout\n\t\t\tif ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) {\n\t\t\t\tstyle.display = "inline-block";\n\t\t\t} else {\n\t\t\t\tstyle.zoom = 1;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = "hidden";\n\t\tif ( !support.shrinkWrapBlocks() ) {\n\t\t\tanim.always(function() {\n\t\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t\t});\n\t\t}\n\t}\n\n\t// show/hide pass\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.exec( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === "toggle";\n\t\t\tif ( value === ( hidden ? "hide" : "show" ) ) {\n\n\t\t\t\t// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden\n\t\t\t\tif ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\n\t\t// Any non-fx value stops us from restoring the original display value\n\t\t} else {\n\t\t\tdisplay = undefined;\n\t\t}\n\t}\n\n\tif ( !jQuery.isEmptyObject( orig ) ) {\n\t\tif ( dataShow ) {\n\t\t\tif ( "hidden" in dataShow ) {\n\t\t\t\thidden = dataShow.hidden;\n\t\t\t}\n\t\t} else {\n\t\t\tdataShow = jQuery._data( elem, "fxshow", {} );\n\t\t}\n\n\t\t// store state if its toggle - enables .stop().toggle() to "reverse"\n\t\tif ( toggle ) {\n\t\t\tdataShow.hidden = !hidden;\n\t\t}\n\t\tif ( hidden ) {\n\t\t\tjQuery( elem ).show();\n\t\t} else {\n\t\t\tanim.done(function() {\n\t\t\t\tjQuery( elem ).hide();\n\t\t\t});\n\t\t}\n\t\tanim.done(function() {\n\t\t\tvar prop;\n\t\t\tjQuery._removeData( elem, "fxshow" );\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t}\n\t\t});\n\t\tfor ( prop in orig ) {\n\t\t\ttween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\n\t\t\tif ( !( prop in dataShow ) ) {\n\t\t\t\tdataShow[ prop ] = tween.start;\n\t\t\t\tif ( hidden ) {\n\t\t\t\t\ttween.end = tween.start;\n\t\t\t\t\ttween.start = prop === "width" || prop === "height" ? 1 : 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t// If this is a noop like .hide().hide(), restore an overwritten display value\n\t} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {\n\t\tstyle.display = display;\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = jQuery.camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( jQuery.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && "expand" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// not quite $.extend, this wont overwrite keys already present.\n\t\t\t// also - reusing \'index\' from above because we have the correct "name"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = animationPrefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\t\t\t// don\'t match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t}),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\t\t\t\t// archaic crash bug won\'t allow us to use 1 - ( 0.5 || 0 ) (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ]);\n\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t} else {\n\t\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tanimation = deferred.promise({\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, { specialEasing: {} }, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\t\t\t\t\t// if we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length ; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// resolve when we played the last frame\n\t\t\t\t// otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length ; index++ ) {\n\t\tresult = animationPrefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( jQuery.isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t})\n\t);\n\n\t// attach callbacks from options\n\treturn animation.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\ttweener: function( props, callback ) {\n\t\tif ( jQuery.isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ "*" ];\n\t\t} else {\n\t\t\tprops = props.split(" ");\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length ; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\ttweeners[ prop ] = tweeners[ prop ] || [];\n\t\t\ttweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tanimationPrefilters.unshift( callback );\n\t\t} else {\n\t\t\tanimationPrefilters.push( callback );\n\t\t}\n\t}\n});\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tjQuery.isFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !jQuery.isFunction( easing ) && easing\n\t};\n\n\topt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :\n\t\topt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;\n\n\t// normalize opt.queue - true/undefined/null -> "fx"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = "fx";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( jQuery.isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend({\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHidden ).css( "opacity", 0 ).show()\n\n\t\t\t// animate to the value specified\n\t\t\t.end().animate({ opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\t\t\t\t// Operate on a copy of prop so per-property easing won\'t be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || jQuery._data( this, "finish" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== "string" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || "fx", [] );\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + "queueHooks",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = jQuery._data( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// start the next in the queue if the last step wasn\'t forced\n\t\t\t// timers currently will call their complete callbacks, which will dequeue\n\t\t\t// but only if they were gotoEnd\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t});\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || "fx";\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tvar index,\n\t\t\t\tdata = jQuery._data( this ),\n\t\t\t\tqueue = data[ type + "queue" ],\n\t\t\t\thooks = data[ type + "queueHooks" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t});\n\t}\n});\n\njQuery.each([ "toggle", "show", "hide" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === "boolean" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n});\n\n// Generate shortcuts for custom animations\njQuery.each({\n\tslideDown: genFx("show"),\n\tslideUp: genFx("hide"),\n\tslideToggle: genFx("toggle"),\n\tfadeIn: { opacity: "show" },\n\tfadeOut: { opacity: "hide" },\n\tfadeToggle: { opacity: "toggle" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n});\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ttimers = jQuery.timers,\n\t\ti = 0;\n\n\tfxNow = jQuery.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\t\t// Checks the timer has not already been removed\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tif ( timer() ) {\n\t\tjQuery.fx.start();\n\t} else {\n\t\tjQuery.timers.pop();\n\t}\n};\n\njQuery.fx.interval = 13;\n\njQuery.fx.start = function() {\n\tif ( !timerId ) {\n\t\ttimerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );\n\t}\n};\n\njQuery.fx.stop = function() {\n\tclearInterval( timerId );\n\ttimerId = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || "fx";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\tclearTimeout( timeout );\n\t\t};\n\t});\n};\n\n\n(function() {\n\t// Minified: var a,b,c,d,e\n\tvar input, div, select, a, opt;\n\n\t// Setup\n\tdiv = document.createElement( "div" );\n\tdiv.setAttribute( "className", "t" );\n\tdiv.innerHTML = " <link/><table></table><a href=\'/a\'>a</a><input type=\'checkbox\'/>";\n\ta = div.getElementsByTagName("a")[ 0 ];\n\n\t// First batch of tests.\n\tselect = document.createElement("select");\n\topt = select.appendChild( document.createElement("option") );\n\tinput = div.getElementsByTagName("input")[ 0 ];\n\n\ta.style.cssText = "top:1px";\n\n\t// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)\n\tsupport.getSetAttribute = div.className !== "t";\n\n\t// Get the style information from getAttribute\n\t// (IE uses .cssText instead)\n\tsupport.style = /top/.test( a.getAttribute("style") );\n\n\t// Make sure that URLs aren\'t manipulated\n\t// (IE normalizes it by default)\n\tsupport.hrefNormalized = a.getAttribute("href") === "/a";\n\n\t// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)\n\tsupport.checkOn = !!input.value;\n\n\t// Make sure that a selected-by-default option has a working selected property.\n\t// (WebKit defaults to false instead of true, IE too, if it\'s in an optgroup)\n\tsupport.optSelected = opt.selected;\n\n\t// Tests for enctype support on a form (#6743)\n\tsupport.enctype = !!document.createElement("form").enctype;\n\n\t// Make sure that the options inside disabled selects aren\'t marked as disabled\n\t// (WebKit marks them as disabled)\n\tselect.disabled = true;\n\tsupport.optDisabled = !opt.disabled;\n\n\t// Support: IE8 only\n\t// Check if we can trust getAttribute("value")\n\tinput = document.createElement( "input" );\n\tinput.setAttribute( "value", "" );\n\tsupport.input = input.getAttribute( "value" ) === "";\n\n\t// Check if an input maintains its value after becoming a radio\n\tinput.value = "t";\n\tinput.setAttribute( "type", "radio" );\n\tsupport.radioValue = input.value === "t";\n})();\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend({\n\tval: function( value ) {\n\t\tvar hooks, ret, isFunction,\n\t\t\telem = this[0];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\treturn typeof ret === "string" ?\n\t\t\t\t\t// handle most common string cases\n\t\t\t\t\tret.replace(rreturn, "") :\n\t\t\t\t\t// handle cases where value is null/undef or number\n\t\t\t\t\tret == null ? "" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tisFunction = jQuery.isFunction( value );\n\n\t\treturn this.each(function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as ""; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = "";\n\t\t\t} else if ( typeof val === "number" ) {\n\t\t\t\tval += "";\n\t\t\t} else if ( jQuery.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? "" : value + "";\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar val = jQuery.find.attr( elem, "value" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\t\t\t\t\t// Support: IE10-11+\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\tjQuery.trim( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === "select-one" || index < 0,\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length,\n\t\t\t\t\ti = index < 0 ?\n\t\t\t\t\t\tmax :\n\t\t\t\t\t\tone ? index : 0;\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// oldIE doesn\'t update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\t\t\t\t\t\t\t// Don\'t return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don\'t need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {\n\n\t\t\t\t\t\t// Support: IE6\n\t\t\t\t\t\t// When new option element is added to select box we need to\n\t\t\t\t\t\t// force reflow of newly added node in order to workaround delay\n\t\t\t\t\t\t// of initialization properties\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\toption.selected = optionSet = true;\n\n\t\t\t\t\t\t} catch ( _ ) {\n\n\t\t\t\t\t\t\t// Will be executed only in IE6\n\t\t\t\t\t\t\toption.scrollHeight;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\toption.selected = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\n\t\t\t\treturn options;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Radios and checkboxes getter/setter\njQuery.each([ "radio", "checkbox" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( jQuery.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\t// Support: Webkit\n\t\t\t// "" is returned instead of "on" if a value isn\'t specified\n\t\t\treturn elem.getAttribute("value") === null ? "on" : elem.value;\n\t\t};\n\t}\n});\n\n\n\n\nvar nodeHook, boolHook,\n\tattrHandle = jQuery.expr.attrHandle,\n\truseDefault = /^(?:checked|selected)$/i,\n\tgetSetAttribute = support.getSetAttribute,\n\tgetSetInput = support.input;\n\njQuery.fn.extend({\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tattr: function( elem, name, value ) {\n\t\tvar hooks, ret,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don\'t get/set attributes on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === strundefined ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// All attributes are lowercase\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\tname = name.toLowerCase();\n\t\t\thooks = jQuery.attrHooks[ name ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\n\t\t\t} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {\n\t\t\t\treturn ret;\n\n\t\t\t} else {\n\t\t\t\telem.setAttribute( name, value + "" );\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {\n\t\t\treturn ret;\n\n\t\t} else {\n\t\t\tret = jQuery.find.attr( elem, name );\n\n\t\t\t// Non-existent attributes return null, we normalize to undefined\n\t\t\treturn ret == null ?\n\t\t\t\tundefined :\n\t\t\t\tret;\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name, propName,\n\t\t\ti = 0,\n\t\t\tattrNames = value && value.match( rnotwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( (name = attrNames[i++]) ) {\n\t\t\t\tpropName = jQuery.propFix[ name ] || name;\n\n\t\t\t\t// Boolean attributes get special treatment (#10870)\n\t\t\t\tif ( jQuery.expr.match.bool.test( name ) ) {\n\t\t\t\t\t// Set corresponding property to false\n\t\t\t\t\tif ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t// Also clear defaultChecked/defaultSelected (if appropriate)\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem[ jQuery.camelCase( "default-" + name ) ] =\n\t\t\t\t\t\t\telem[ propName ] = false;\n\t\t\t\t\t}\n\n\t\t\t\t// See #9699 for explanation of this approach (setting first, then removal)\n\t\t\t\t} else {\n\t\t\t\t\tjQuery.attr( elem, name, "" );\n\t\t\t\t}\n\n\t\t\t\telem.removeAttribute( getSetAttribute ? name : propName );\n\t\t\t}\n\t\t}\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {\n\t\t\t\t\t// Setting the type on a radio button after the value resets the value in IE6-9\n\t\t\t\t\t// Reset value to default in case type is set after value during creation\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( "type", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Hook for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {\n\t\t\t// IE<8 needs the *property* name\n\t\t\telem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );\n\n\t\t// Use defaultChecked and defaultSelected for oldIE\n\t\t} else {\n\t\t\telem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;\n\t\t}\n\n\t\treturn name;\n\t}\n};\n\n// Retrieve booleans specially\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret, handle;\n\t\t\tif ( !isXML ) {\n\t\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\t\thandle = attrHandle[ name ];\n\t\t\t\tattrHandle[ name ] = ret;\n\t\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t\tattrHandle[ name ] = handle;\n\t\t\t}\n\t\t\treturn ret;\n\t\t} :\n\t\tfunction( elem, name, isXML ) {\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn elem[ jQuery.camelCase( "default-" + name ) ] ?\n\t\t\t\t\tname.toLowerCase() :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n});\n\n// fix oldIE attroperties\nif ( !getSetInput || !getSetAttribute ) {\n\tjQuery.attrHooks.value = {\n\t\tset: function( elem, value, name ) {\n\t\t\tif ( jQuery.nodeName( elem, "input" ) ) {\n\t\t\t\t// Does not return so that setAttribute is also used\n\t\t\t\telem.defaultValue = value;\n\t\t\t} else {\n\t\t\t\t// Use nodeHook if defined (#1954); otherwise setAttribute is fine\n\t\t\t\treturn nodeHook && nodeHook.set( elem, value, name );\n\t\t\t}\n\t\t}\n\t};\n}\n\n// IE6/7 do not support getting/setting some attributes with get/setAttribute\nif ( !getSetAttribute ) {\n\n\t// Use this for any attribute in IE6/7\n\t// This fixes almost every IE6/7 issue\n\tnodeHook = {\n\t\tset: function( elem, value, name ) {\n\t\t\t// Set the existing or create a new attribute node\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( !ret ) {\n\t\t\t\telem.setAttributeNode(\n\t\t\t\t\t(ret = elem.ownerDocument.createAttribute( name ))\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tret.value = value += "";\n\n\t\t\t// Break association with cloned elements by also using setAttribute (#9646)\n\t\t\tif ( name === "value" || value === elem.getAttribute( name ) ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n\n\t// Some attributes are constructed with empty-string values when not defined\n\tattrHandle.id = attrHandle.name = attrHandle.coords =\n\t\tfunction( elem, name, isXML ) {\n\t\t\tvar ret;\n\t\t\tif ( !isXML ) {\n\t\t\t\treturn (ret = elem.getAttributeNode( name )) && ret.value !== "" ?\n\t\t\t\t\tret.value :\n\t\t\t\t\tnull;\n\t\t\t}\n\t\t};\n\n\t// Fixing value retrieval on a button requires this module\n\tjQuery.valHooks.button = {\n\t\tget: function( elem, name ) {\n\t\t\tvar ret = elem.getAttributeNode( name );\n\t\t\tif ( ret && ret.specified ) {\n\t\t\t\treturn ret.value;\n\t\t\t}\n\t\t},\n\t\tset: nodeHook.set\n\t};\n\n\t// Set contenteditable to false on removals(#10429)\n\t// Setting to empty string throws an error as an invalid value\n\tjQuery.attrHooks.contenteditable = {\n\t\tset: function( elem, value, name ) {\n\t\t\tnodeHook.set( elem, value === "" ? false : value, name );\n\t\t}\n\t};\n\n\t// Set width and height to auto instead of 0 on empty string( Bug #8150 )\n\t// This is for removals\n\tjQuery.each([ "width", "height" ], function( i, name ) {\n\t\tjQuery.attrHooks[ name ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( value === "" ) {\n\t\t\t\t\telem.setAttribute( name, "auto" );\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\nif ( !support.style ) {\n\tjQuery.attrHooks.style = {\n\t\tget: function( elem ) {\n\t\t\t// Return undefined in the case of empty string\n\t\t\t// Note: IE uppercases css property names, but if we were to .toLowerCase()\n\t\t\t// .cssText, that would destroy case senstitivity in URL\'s, like in "background"\n\t\t\treturn elem.style.cssText || undefined;\n\t\t},\n\t\tset: function( elem, value ) {\n\t\t\treturn ( elem.style.cssText = value + "" );\n\t\t}\n\t};\n}\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button|object)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend({\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\tname = jQuery.propFix[ name ] || name;\n\t\treturn this.each(function() {\n\t\t\t// try/catch handles cases where IE balks (such as removing a property on window)\n\t\t\ttry {\n\t\t\t\tthis[ name ] = undefined;\n\t\t\t\tdelete this[ name ];\n\t\t\t} catch( e ) {}\n\t\t});\n\t}\n});\n\njQuery.extend({\n\tpropFix: {\n\t\t"for": "htmlFor",\n\t\t"class": "className"\n\t},\n\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks, notxml,\n\t\t\tnType = elem.nodeType;\n\n\t\t// don\'t get/set properties on text, comment and attribute nodes\n\t\tif ( !elem || nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnotxml = nType !== 1 || !jQuery.isXMLDoc( elem );\n\n\t\tif ( notxml ) {\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\treturn hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?\n\t\t\t\tret :\n\t\t\t\t( elem[ name ] = value );\n\n\t\t} else {\n\t\t\treturn hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?\n\t\t\t\tret :\n\t\t\t\telem[ name ];\n\t\t}\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\t\t\t\t// elem.tabIndex doesn\'t always return the correct value when it hasn\'t been explicitly set\n\t\t\t\t// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, "tabindex" );\n\n\t\t\t\treturn tabindex ?\n\t\t\t\t\tparseInt( tabindex, 10 ) :\n\t\t\t\t\trfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\t-1;\n\t\t\t}\n\t\t}\n\t}\n});\n\n// Some attributes require a special call on IE\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !support.hrefNormalized ) {\n\t// href/src property should get the full normalized URL (#10299/#12915)\n\tjQuery.each([ "href", "src" ], function( i, name ) {\n\t\tjQuery.propHooks[ name ] = {\n\t\t\tget: function( elem ) {\n\t\t\t\treturn elem.getAttribute( name, 4 );\n\t\t\t}\n\t\t};\n\t});\n}\n\n// Support: Safari, IE9+\n// mis-reports the default selected property of an option\n// Accessing the parent\'s selectedIndex property fixes it\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\t// Make sure that it also works with optgroups, see #5701\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n}\n\njQuery.each([\n\t"tabIndex",\n\t"readOnly",\n\t"maxLength",\n\t"cellSpacing",\n\t"cellPadding",\n\t"rowSpan",\n\t"colSpan",\n\t"useMap",\n\t"frameBorder",\n\t"contentEditable"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n});\n\n// IE6/7 call enctype encoding\nif ( !support.enctype ) {\n\tjQuery.propFix.enctype = "encoding";\n}\n\n\n\n\nvar rclass = /[\\t\\r\\n\\f]/g;\n\njQuery.fn.extend({\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = typeof value === "string" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\n\t\tif ( proceed ) {\n\t\t\t// The disjunction here is for better compressibility (see removeClass)\n\t\t\tclasses = ( value || "" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( " " + elem.className + " " ).replace( rclass, " " ) :\n\t\t\t\t\t" "\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\tif ( cur.indexOf( " " + clazz + " " ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + " ";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = jQuery.trim( cur );\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, clazz, j, finalValue,\n\t\t\ti = 0,\n\t\t\tlen = this.length,\n\t\t\tproceed = arguments.length === 0 || typeof value === "string" && value;\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, this.className ) );\n\t\t\t});\n\t\t}\n\t\tif ( proceed ) {\n\t\t\tclasses = ( value || "" ).match( rnotwhite ) || [];\n\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\telem = this[ i ];\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( elem.className ?\n\t\t\t\t\t( " " + elem.className + " " ).replace( rclass, " " ) :\n\t\t\t\t\t""\n\t\t\t\t);\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (clazz = classes[j++]) ) {\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( " " + clazz + " " ) >= 0 ) {\n\t\t\t\t\t\t\tcur = cur.replace( " " + clazz + " ", " " );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = value ? jQuery.trim( cur ) : "";\n\t\t\t\t\tif ( elem.className !== finalValue ) {\n\t\t\t\t\t\telem.className = finalValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value;\n\n\t\tif ( typeof stateVal === "boolean" && type === "string" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( jQuery.isFunction( value ) ) {\n\t\t\treturn this.each(function( i ) {\n\t\t\t\tjQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tif ( type === "string" ) {\n\t\t\t\t// toggle individual class names\n\t\t\t\tvar className,\n\t\t\t\t\ti = 0,\n\t\t\t\t\tself = jQuery( this ),\n\t\t\t\t\tclassNames = value.match( rnotwhite ) || [];\n\n\t\t\t\twhile ( (className = classNames[ i++ ]) ) {\n\t\t\t\t\t// check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( type === strundefined || type === "boolean" ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\t// store className if set\n\t\t\t\t\tjQuery._data( this, "__className__", this.className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we\'re passed "false",\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tthis.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";\n\t\t\t}\n\t\t});\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className = " " + selector + " ",\n\t\t\ti = 0,\n\t\t\tl = this.length;\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tif ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n});\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\njQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +\n\t"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +\n\t"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n});\n\njQuery.fn.extend({\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t},\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );\n\t}\n});\n\n\nvar nonce = jQuery.now();\n\nvar rquery = (/\\?/);\n\n\n\nvar rvalidtokens = /(,)|(\\[|{)|(}|])|"(?:[^"\\\\\\r\\n]|\\\\["\\\\\\/bfnrt]|\\\\u[\\da-fA-F]{4})*"\\s*:?|true|false|null|-?(?!0\\d)\\d+(?:\\.\\d+|)(?:[eE][+-]?\\d+|)/g;\n\njQuery.parseJSON = function( data ) {\n\t// Attempt to parse using the native JSON parser first\n\tif ( window.JSON && window.JSON.parse ) {\n\t\t// Support: Android 2.3\n\t\t// Workaround failure to string-cast null input\n\t\treturn window.JSON.parse( data + "" );\n\t}\n\n\tvar requireNonComma,\n\t\tdepth = null,\n\t\tstr = jQuery.trim( data + "" );\n\n\t// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains\n\t// after removing valid tokens\n\treturn str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {\n\n\t\t// Force termination if we see a misplaced comma\n\t\tif ( requireNonComma && comma ) {\n\t\t\tdepth = 0;\n\t\t}\n\n\t\t// Perform no more replacements after returning to outermost depth\n\t\tif ( depth === 0 ) {\n\t\t\treturn token;\n\t\t}\n\n\t\t// Commas must not follow "[", "{", or ","\n\t\trequireNonComma = open || comma;\n\n\t\t// Determine new depth\n\t\t// array/object open ("[" or "{"): depth += true - false (increment)\n\t\t// array/object close ("]" or "}"): depth += false - true (decrement)\n\t\t// other cases ("," or primitive): depth += true - true (numeric cast)\n\t\tdepth += !close - !open;\n\n\t\t// Remove this token\n\t\treturn "";\n\t}) ) ?\n\t\t( Function( "return " + str ) )() :\n\t\tjQuery.error( "Invalid JSON: " + data );\n};\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, tmp;\n\tif ( !data || typeof data !== "string" ) {\n\t\treturn null;\n\t}\n\ttry {\n\t\tif ( window.DOMParser ) { // Standard\n\t\t\ttmp = new DOMParser();\n\t\t\txml = tmp.parseFromString( data, "text/xml" );\n\t\t} else { // IE\n\t\t\txml = new ActiveXObject( "Microsoft.XMLDOM" );\n\t\t\txml.async = "false";\n\t\t\txml.loadXML( data );\n\t\t}\n\t} catch( e ) {\n\t\txml = undefined;\n\t}\n\tif ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {\n\t\tjQuery.error( "Invalid XML: " + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\t// Document location\n\tajaxLocParts,\n\tajaxLocation,\n\n\trhash = /#.*$/,\n\trts = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)\\r?$/mg, // IE leaves an \\r character at EOL\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\trurl = /^([\\w.+-]+:)(?:\\/\\/(?:[^\\/?#]*@|)([^\\/?#:]*)(?::(\\d+)|)|)/,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol "*" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to "*" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol "*" can be used\n\t * 3) selection will start with transport dataType and THEN go to "*" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = "*/".concat("*");\n\n// #8138, IE may throw an exception when accessing\n// a field from window.location if document.domain has been set\ntry {\n\tajaxLocation = location.href;\n} catch( e ) {\n\t// Use the href attribute of an A element\n\t// since IE will modify it given document.location\n\tajaxLocation = document.createElement( "a" );\n\tajaxLocation.href = "";\n\tajaxLocation = ajaxLocation.href;\n}\n\n// Segment location into parts\najaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];\n\n// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to "*"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== "string" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = "*";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];\n\n\t\tif ( jQuery.isFunction( func ) ) {\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( (dataType = dataTypes[i++]) ) {\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType.charAt( 0 ) === "+" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || "*";\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t(structure[ dataType ] = structure[ dataType ] || []).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t});\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );\n}\n\n// A special extend for ajax options\n// that takes "flat" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar deep, key,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\tvar firstDataType, ct, finalDataType, type,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === "*" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader("Content-Type");\n\t\t}\n\t}\n\n\t// Check if we\'re dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There\'s only work to do if current dataType is non-auto\n\t\t\tif ( current === "*" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== "*" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + " " + current ] || converters[ "* " + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( " " );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + " " + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ "* " + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s[ "throws" ] ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: "success", data: response };\n}\n\njQuery.extend({\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: ajaxLocation,\n\t\ttype: "GET",\n\t\tisLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: "application/x-www-form-urlencoded; charset=UTF-8",\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t"*": allTypes,\n\t\t\ttext: "text/plain",\n\t\t\thtml: "text/html",\n\t\t\txml: "application/xml, text/xml",\n\t\t\tjson: "application/json, text/javascript"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /xml/,\n\t\t\thtml: /html/,\n\t\t\tjson: /json/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: "responseXML",\n\t\t\ttext: "responseText",\n\t\t\tjson: "responseJSON"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall "*") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t"* text": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t"text html": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t"text json": jQuery.parseJSON,\n\n\t\t\t// Parse text as xml\n\t\t\t"text xml": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn\'t be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn\'t be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === "object" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar // Cross-domain detection vars\n\t\t\tparts,\n\t\t\t// Loop variable\n\t\t\ti,\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\t\t\t// Response headers as string\n\t\t\tresponseHeadersString,\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\ttransport,\n\t\t\t// Response headers\n\t\t\tresponseHeaders,\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks("once memory"),\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\t\t\t// The jqXHR state\n\t\t\tstate = 0,\n\t\t\t// Default abort message\n\t\t\tstrAbort = "canceled",\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( state === 2 ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( (match = rheaders.exec( responseHeadersString )) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[1].toLowerCase() ] = match[ 2 ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match;\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn state === 2 ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tvar lname = name.toLowerCase();\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\tname = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( !state ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\t// Lazy-add the new callback in a way that preserves old ones\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR ).complete = completeDeferred.add;\n\t\tjqXHR.success = jqXHR.done;\n\t\tjqXHR.error = jqXHR.fail;\n\n\t\t// Remove hash character (#7531: and string promotion)\n\t\t// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];\n\n\t\t// A cross-domain request is in order when we have a protocol:host:port mismatch\n\t\tif ( s.crossDomain == null ) {\n\t\t\tparts = rurl.exec( s.url.toLowerCase() );\n\t\t\ts.crossDomain = !!( parts &&\n\t\t\t\t( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||\n\t\t\t\t\t( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==\n\t\t\t\t\t\t( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )\n\t\t\t);\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== "string" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( state === 2 ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don\'t fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger("ajaxStart");\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we\'re toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\tcacheURL = s.url;\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// If data is available, append data to url\n\t\t\tif ( s.data ) {\n\t\t\t\tcacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );\n\t\t\t\t// #9682: remove data so that it\'s not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add anti-cache in url if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\ts.url = rts.test( cacheURL ) ?\n\n\t\t\t\t\t// If there is already a \'_\' parameter, set its value\n\t\t\t\t\tcacheURL.replace( rts, "$1_=" + nonce++ ) :\n\n\t\t\t\t\t// Otherwise add one to the end\n\t\t\t\t\tcacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;\n\t\t\t}\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( "Content-Type", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t"Accept",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :\n\t\t\t\ts.accepts[ "*" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// aborting is no longer a cancellation\n\t\tstrAbort = "abort";\n\n\t\t// Install callbacks on deferreds\n\t\tfor ( i in { success: 1, error: 1, complete: 1 } ) {\n\t\t\tjqXHR[ i ]( s[ i ] );\n\t\t}\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, "No Transport" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );\n\t\t\t}\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = setTimeout(function() {\n\t\t\t\t\tjqXHR.abort("timeout");\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tstate = 1;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\t\t\t\t// Propagate exception as error if not done\n\t\t\t\tif ( state < 2 ) {\n\t\t\t\t\tdone( -1, e );\n\t\t\t\t// Simply rethrow otherwise\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Called once\n\t\t\tif ( state === 2 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// State is "done" now\n\t\t\tstate = 2;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\tclearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || "";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader("Last-Modified");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader("etag");\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === "HEAD" ) {\n\t\t\t\t\tstatusText = "nocontent";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = "notmodified";\n\n\t\t\t\t// If we have data, let\'s convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// We extract error from statusText\n\t\t\t\t// then normalize statusText and status for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = "error";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + "";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger("ajaxStop");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, "json" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, "script" );\n\t}\n});\n\njQuery.each( [ "get", "post" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\t\t// shift arguments if data argument was omitted\n\t\tif ( jQuery.isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\treturn jQuery.ajax({\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t});\n\t};\n});\n\n\njQuery._evalUrl = function( url ) {\n\treturn jQuery.ajax({\n\t\turl: url,\n\t\ttype: "GET",\n\t\tdataType: "script",\n\t\tasync: false,\n\t\tglobal: false,\n\t\t"throws": true\n\t});\n};\n\n\njQuery.fn.extend({\n\twrapAll: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapAll( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\tif ( this[0] ) {\n\t\t\t// The elements to wrap the target around\n\t\t\tvar wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);\n\n\t\t\tif ( this[0].parentNode ) {\n\t\t\t\twrap.insertBefore( this[0] );\n\t\t\t}\n\n\t\t\twrap.map(function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstChild && elem.firstChild.nodeType === 1 ) {\n\t\t\t\t\telem = elem.firstChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t}).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( jQuery.isFunction( html ) ) {\n\t\t\treturn this.each(function(i) {\n\t\t\t\tjQuery(this).wrapInner( html.call(this, i) );\n\t\t\t});\n\t\t}\n\n\t\treturn this.each(function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t});\n\t},\n\n\twrap: function( html ) {\n\t\tvar isFunction = jQuery.isFunction( html );\n\n\t\treturn this.each(function(i) {\n\t\t\tjQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );\n\t\t});\n\t},\n\n\tunwrap: function() {\n\t\treturn this.parent().each(function() {\n\t\t\tif ( !jQuery.nodeName( this, "body" ) ) {\n\t\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t\t}\n\t\t}).end();\n\t}\n});\n\n\njQuery.expr.filters.hidden = function( elem ) {\n\t// Support: Opera <= 12.12\n\t// Opera reports offsetWidths and offsetHeights less than zero on some elements\n\treturn elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||\n\t\t(!support.reliableHiddenOffsets() &&\n\t\t\t((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");\n};\n\njQuery.expr.filters.visible = function( elem ) {\n\treturn !jQuery.expr.filters.hidden( elem );\n};\n\n\n\n\nvar r20 = /%20/g,\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( jQuery.isArray( obj ) ) {\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );\n\t\t\t}\n\t\t});\n\n\t} else if ( !traditional && jQuery.type( obj ) === "object" ) {\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, value ) {\n\t\t\t// If value is a function, invoke it and return its value\n\t\t\tvalue = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );\n\t\t};\n\n\t// Set traditional to true for jQuery <= 1.3.2 behavior.\n\tif ( traditional === undefined ) {\n\t\ttraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t});\n\n\t} else {\n\t\t// If traditional, encode the "old" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( "&" ).replace( r20, "+" );\n};\n\njQuery.fn.extend({\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map(function() {\n\t\t\t// Can add propHook for "elements" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, "elements" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t})\n\t\t.filter(function() {\n\t\t\tvar type = this.type;\n\t\t\t// Use .is(":disabled") so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( ":disabled" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t})\n\t\t.map(function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\treturn val == null ?\n\t\t\t\tnull :\n\t\t\t\tjQuery.isArray( val ) ?\n\t\t\t\t\tjQuery.map( val, function( val ) {\n\t\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n\t\t\t\t\t}) :\n\t\t\t\t\t{ name: elem.name, value: val.replace( rCRLF, "\\r\\n" ) };\n\t\t}).get();\n\t}\n});\n\n\n// Create the request object\n// (This is still attached to ajaxSettings for backward compatibility)\njQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?\n\t// Support: IE6+\n\tfunction() {\n\n\t\t// XHR cannot access local files, always use ActiveX for that case\n\t\treturn !this.isLocal &&\n\n\t\t\t// Support: IE7-8\n\t\t\t// oldIE XHR does not support non-RFC2616 methods (#13240)\n\t\t\t// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx\n\t\t\t// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9\n\t\t\t// Although this check for six methods instead of eight\n\t\t\t// since IE also does not support "trace" and "connect"\n\t\t\t/^(get|post|head|put|delete|options)$/i.test( this.type ) &&\n\n\t\t\tcreateStandardXHR() || createActiveXHR();\n\t} :\n\t// For all other browsers, use the standard XMLHttpRequest object\n\tcreateStandardXHR;\n\nvar xhrId = 0,\n\txhrCallbacks = {},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\n// Support: IE<10\n// Open requests must be manually aborted on unload (#5280)\n// See https://support.microsoft.com/kb/2856746 for more info\nif ( window.attachEvent ) {\n\twindow.attachEvent( "onunload", function() {\n\t\tfor ( var key in xhrCallbacks ) {\n\t\t\txhrCallbacks[ key ]( undefined, true );\n\t\t}\n\t});\n}\n\n// Determine support properties\nsupport.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );\nxhrSupported = support.ajax = !!xhrSupported;\n\n// Create transport if the browser can provide an xhr\nif ( xhrSupported ) {\n\n\tjQuery.ajaxTransport(function( options ) {\n\t\t// Cross domain only allowed if supported through XMLHttpRequest\n\t\tif ( !options.crossDomain || support.cors ) {\n\n\t\t\tvar callback;\n\n\t\t\treturn {\n\t\t\t\tsend: function( headers, complete ) {\n\t\t\t\t\tvar i,\n\t\t\t\t\t\txhr = options.xhr(),\n\t\t\t\t\t\tid = ++xhrId;\n\n\t\t\t\t\t// Open the socket\n\t\t\t\t\txhr.open( options.type, options.url, options.async, options.username, options.password );\n\n\t\t\t\t\t// Apply custom fields if provided\n\t\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override mime type if needed\n\t\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t\t}\n\n\t\t\t\t\t// X-Requested-With header\n\t\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t\t// For same-domain requests, won\'t change header if already provided.\n\t\t\t\t\tif ( !options.crossDomain && !headers["X-Requested-With"] ) {\n\t\t\t\t\t\theaders["X-Requested-With"] = "XMLHttpRequest";\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set headers\n\t\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\t\t// Support: IE<9\n\t\t\t\t\t\t// IE\'s ActiveXObject throws a \'Type Mismatch\' exception when setting\n\t\t\t\t\t\t// request header to a null-value.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// To keep consistent with other XHR implementations, cast the value\n\t\t\t\t\t\t// to string and ignore `undefined`.\n\t\t\t\t\t\tif ( headers[ i ] !== undefined ) {\n\t\t\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] + "" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Do send the request\n\t\t\t\t\t// This may raise an exception which is actually\n\t\t\t\t\t// handled in jQuery.ajax (so no try/catch here)\n\t\t\t\t\txhr.send( ( options.hasContent && options.data ) || null );\n\n\t\t\t\t\t// Listener\n\t\t\t\t\tcallback = function( _, isAbort ) {\n\t\t\t\t\t\tvar status, statusText, responses;\n\n\t\t\t\t\t\t// Was never called and is aborted or complete\n\t\t\t\t\t\tif ( callback && ( isAbort || xhr.readyState === 4 ) ) {\n\t\t\t\t\t\t\t// Clean up\n\t\t\t\t\t\t\tdelete xhrCallbacks[ id ];\n\t\t\t\t\t\t\tcallback = undefined;\n\t\t\t\t\t\t\txhr.onreadystatechange = jQuery.noop;\n\n\t\t\t\t\t\t\t// Abort manually if needed\n\t\t\t\t\t\t\tif ( isAbort ) {\n\t\t\t\t\t\t\t\tif ( xhr.readyState !== 4 ) {\n\t\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponses = {};\n\t\t\t\t\t\t\t\tstatus = xhr.status;\n\n\t\t\t\t\t\t\t\t// Support: IE<10\n\t\t\t\t\t\t\t\t// Accessing binary-data responseText throws an exception\n\t\t\t\t\t\t\t\t// (#11426)\n\t\t\t\t\t\t\t\tif ( typeof xhr.responseText === "string" ) {\n\t\t\t\t\t\t\t\t\tresponses.text = xhr.responseText;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Firefox throws an exception when accessing\n\t\t\t\t\t\t\t\t// statusText for faulty cross-domain requests\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tstatusText = xhr.statusText;\n\t\t\t\t\t\t\t\t} catch( e ) {\n\t\t\t\t\t\t\t\t\t// We normalize with Webkit giving an empty statusText\n\t\t\t\t\t\t\t\t\tstatusText = "";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Filter status for non standard behaviors\n\n\t\t\t\t\t\t\t\t// If the request is local and we have data: assume a success\n\t\t\t\t\t\t\t\t// (success with no data won\'t get notified, that\'s the best we\n\t\t\t\t\t\t\t\t// can do given current implementations)\n\t\t\t\t\t\t\t\tif ( !status && options.isLocal && !options.crossDomain ) {\n\t\t\t\t\t\t\t\t\tstatus = responses.text ? 200 : 404;\n\t\t\t\t\t\t\t\t// IE - #1450: sometimes returns 1223 when it should be 204\n\t\t\t\t\t\t\t\t} else if ( status === 1223 ) {\n\t\t\t\t\t\t\t\t\tstatus = 204;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Call complete if needed\n\t\t\t\t\t\tif ( responses ) {\n\t\t\t\t\t\t\tcomplete( status, statusText, responses, xhr.getAllResponseHeaders() );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( !options.async ) {\n\t\t\t\t\t\t// if we\'re in sync mode we fire the callback\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t} else if ( xhr.readyState === 4 ) {\n\t\t\t\t\t\t// (IE6 & IE7) if it\'s in cache and has been\n\t\t\t\t\t\t// retrieved directly we need to fire the callback\n\t\t\t\t\t\tsetTimeout( callback );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Add to the list of active xhr callbacks\n\t\t\t\t\t\txhr.onreadystatechange = xhrCallbacks[ id ] = callback;\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tabort: function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback( undefined, true );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\n\n// Functions to create xhrs\nfunction createStandardXHR() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch( e ) {}\n}\n\nfunction createActiveXHR() {\n\ttry {\n\t\treturn new window.ActiveXObject( "Microsoft.XMLHTTP" );\n\t} catch( e ) {}\n}\n\n\n\n\n// Install script dataType\njQuery.ajaxSetup({\n\taccepts: {\n\t\tscript: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"\n\t},\n\tcontents: {\n\t\tscript: /(?:java|ecma)script/\n\t},\n\tconverters: {\n\t\t"text script": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n});\n\n// Handle cache\'s special case and global\njQuery.ajaxPrefilter( "script", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = "GET";\n\t\ts.global = false;\n\t}\n});\n\n// Bind script tag hack transport\njQuery.ajaxTransport( "script", function(s) {\n\n\t// This transport only deals with cross domain requests\n\tif ( s.crossDomain ) {\n\n\t\tvar script,\n\t\t\thead = document.head || jQuery("head")[0] || document.documentElement;\n\n\t\treturn {\n\n\t\t\tsend: function( _, callback ) {\n\n\t\t\t\tscript = document.createElement("script");\n\n\t\t\t\tscript.async = true;\n\n\t\t\t\tif ( s.scriptCharset ) {\n\t\t\t\t\tscript.charset = s.scriptCharset;\n\t\t\t\t}\n\n\t\t\t\tscript.src = s.url;\n\n\t\t\t\t// Attach handlers for all browsers\n\t\t\t\tscript.onload = script.onreadystatechange = function( _, isAbort ) {\n\n\t\t\t\t\tif ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\n\n\t\t\t\t\t\t// Handle memory leak in IE\n\t\t\t\t\t\tscript.onload = script.onreadystatechange = null;\n\n\t\t\t\t\t\t// Remove the script\n\t\t\t\t\t\tif ( script.parentNode ) {\n\t\t\t\t\t\t\tscript.parentNode.removeChild( script );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Dereference the script\n\t\t\t\t\t\tscript = null;\n\n\t\t\t\t\t\t// Callback if not abort\n\t\t\t\t\t\tif ( !isAbort ) {\n\t\t\t\t\t\t\tcallback( 200, "success" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\thead.insertBefore( script, head.firstChild );\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( script ) {\n\t\t\t\t\tscript.onload( undefined, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n});\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup({\n\tjsonp: "callback",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n});\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t"url" :\n\t\t\ttypeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"\n\t\t);\n\n\t// Handle iff the expected data type is "jsonp" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters["script json"] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + " was not called" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// force json dataType\n\t\ts.dataTypes[ 0 ] = "json";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always(function() {\n\t\t\t// Restore preexisting value\n\t\t\twindow[ callbackName ] = overwritten;\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\t\t\t\t// make sure that re-using the options doesn\'t screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && jQuery.isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t});\n\n\t\t// Delegate to script\n\t\treturn "script";\n\t}\n});\n\n\n\n\n// data: string of html\n// context (optional): If specified, the fragment will be created in this context, defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( !data || typeof data !== "string" ) {\n\t\treturn null;\n\t}\n\tif ( typeof context === "boolean" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\tcontext = context || document;\n\n\tvar parsed = rsingleTag.exec( data ),\n\t\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[1] ) ];\n\t}\n\n\tparsed = jQuery.buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n// Keep a copy of the old load method\nvar _load = jQuery.fn.load;\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tif ( typeof url !== "string" && _load ) {\n\t\treturn _load.apply( this, arguments );\n\t}\n\n\tvar selector, response, type,\n\t\tself = this,\n\t\toff = url.indexOf(" ");\n\n\tif ( off >= 0 ) {\n\t\tselector = jQuery.trim( url.slice( off, url.length ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it\'s a function\n\tif ( jQuery.isFunction( params ) ) {\n\n\t\t// We assume that it\'s the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === "object" ) {\n\t\ttype = "POST";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax({\n\t\t\turl: url,\n\n\t\t\t// if "type" variable is undefined, then "GET" method will be used\n\t\t\ttype: type,\n\t\t\tdataType: "html",\n\t\t\tdata: params\n\t\t}).done(function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE \'Permission Denied\' errors\n\t\t\t\tjQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t}).complete( callback && function( jqXHR, status ) {\n\t\t\tself.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t});\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n});\n\n\n\n\njQuery.expr.filters.animated = function( elem ) {\n\treturn jQuery.grep(jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t}).length;\n};\n\n\n\n\n\nvar docElem = window.document.documentElement;\n\n/**\n * Gets a window from an element\n */\nfunction getWindow( elem ) {\n\treturn jQuery.isWindow( elem ) ?\n\t\telem :\n\t\telem.nodeType === 9 ?\n\t\t\telem.defaultView || elem.parentWindow :\n\t\t\tfalse;\n}\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, "position" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// set position first, in-case top/left are set even on static elem\n\t\tif ( position === "static" ) {\n\t\t\telem.style.position = "relative";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, "top" );\n\t\tcurCSSLeft = jQuery.css( elem, "left" );\n\t\tcalculatePosition = ( position === "absolute" || position === "fixed" ) &&\n\t\t\tjQuery.inArray("auto", [ curCSSTop, curCSSLeft ] ) > -1;\n\n\t\t// need to be able to calculate position if either top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( jQuery.isFunction( options ) ) {\n\t\t\toptions = options.call( elem, i, curOffset );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( "using" in options ) {\n\t\t\toptions.using.call( elem, props );\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend({\n\toffset: function( options ) {\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each(function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t});\n\t\t}\n\n\t\tvar docElem, win,\n\t\t\tbox = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ],\n\t\t\tdoc = elem && elem.ownerDocument;\n\n\t\tif ( !doc ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdocElem = doc.documentElement;\n\n\t\t// Make sure it\'s not a disconnected DOM node\n\t\tif ( !jQuery.contains( docElem, elem ) ) {\n\t\t\treturn box;\n\t\t}\n\n\t\t// If we don\'t have gBCR, just use 0,0 rather than error\n\t\t// BlackBerry 5, iOS 3 (original iPhone)\n\t\tif ( typeof elem.getBoundingClientRect !== strundefined ) {\n\t\t\tbox = elem.getBoundingClientRect();\n\t\t}\n\t\twin = getWindow( doc );\n\t\treturn {\n\t\t\ttop: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),\n\t\t\tleft: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )\n\t\t};\n\t},\n\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset,\n\t\t\tparentOffset = { top: 0, left: 0 },\n\t\t\telem = this[ 0 ];\n\n\t\t// fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent\n\t\tif ( jQuery.css( elem, "position" ) === "fixed" ) {\n\t\t\t// we assume that getBoundingClientRect is available when computed position is fixed\n\t\t\toffset = elem.getBoundingClientRect();\n\t\t} else {\n\t\t\t// Get *real* offsetParent\n\t\t\toffsetParent = this.offsetParent();\n\n\t\t\t// Get correct offsets\n\t\t\toffset = this.offset();\n\t\t\tif ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {\n\t\t\t\tparentOffset = offsetParent.offset();\n\t\t\t}\n\n\t\t\t// Add offsetParent borders\n\t\t\tparentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );\n\t\t\tparentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\t// note: when an element has margin: auto the offsetLeft and marginLeft\n\t\t// are the same in Safari causing offset.left to incorrectly be 0\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)\n\t\t};\n\t},\n\n\toffsetParent: function() {\n\t\treturn this.map(function() {\n\t\t\tvar offsetParent = this.offsetParent || docElem;\n\n\t\t\twhile ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\t\t\treturn offsetParent || docElem;\n\t\t});\n\t}\n});\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {\n\tvar top = /Y/.test( prop );\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\t\t\tvar win = getWindow( elem );\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\t\telem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : jQuery( win ).scrollLeft(),\n\t\t\t\t\ttop ? val : jQuery( win ).scrollTop()\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length, null );\n\t};\n});\n\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// getComputedStyle returns percent when specified for top/left/bottom/right\n// rather than make the css module depend on the offset module, we just check for it here\njQuery.each( [ "top", "left" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\t\t\t\t// if curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + "px" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n});\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: "height", Width: "width" }, function( name, type ) {\n\tjQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {\n\t\t// margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( jQuery.isWindow( elem ) ) {\n\t\t\t\t\t// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n\t\t\t\t\t// isn\'t a whole lot we can do. See pull request at this URL for discussion:\n\t\t\t\t\t// https://github.com/jquery/jquery/pull/764\n\t\t\t\t\treturn elem.document.documentElement[ "client" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest\n\t\t\t\t\t// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ "scroll" + name ], doc[ "scroll" + name ],\n\t\t\t\t\t\telem.body[ "offset" + name ], doc[ "offset" + name ],\n\t\t\t\t\t\tdoc[ "client" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable, null );\n\t\t};\n\t});\n});\n\n\n// The number of elements contained in the matched element set\njQuery.fn.size = function() {\n\treturn this.length;\n};\n\njQuery.fn.andSelf = jQuery.fn.addBack;\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( true ) {\n\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\treturn jQuery;\n\t}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n\n\n\n\nvar\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in\n// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === strundefined ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/jquery/dist/jquery.js\n ** module id = 2\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/jquery/dist/jquery.js?'); },8:function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = {\n\tDEFAULT_STATE: "guest",\n\tREGISTERED_STATE: "registered",\n\tSUBSCRIBER_STATE: "subscriber",\n\tDEFAULT_STREAM: "latest",\n\tMAX_STREAM_LOAD: 2,\n\tUNLIMITED_STREAM_LOADING_ENABLED: false,\n\tAPI: "/service/",\n\tSTATIC: "/resources/static/",\n\tRESOURCES: "/resources/",\n\tMOBILE_BREAKPOINT: 767\n};\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/common.js\n ** module id = 8\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./js/common.js?')},11:function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\n// Create a jQuery collection from this object, allowing us to proxy events.\nvar $exports = (0, _jquery2["default"])(exports);\n\n/**\n * Switch from one state to another. Updates the DOM and memory.\n *\n * @param {string} previous - state to phase out.\n * @param {string} current - state to phase in.\n */\nvar transitionStates = function transitionStates(previous, current) {\n\t// Remove all existing classes from previous state.\n\tthis.rootElement.removeClass(previous.replace(/:/g, " "));\n\n\t// Add new classes for current state.\n\tthis.rootElement.addClass(current.replace(/:/g, " "));\n\n\t// Set the previous state (useful for back);\n\tthis.previous = previous;\n\n\t// Set the current state.\n\tthis.current = current;\n\n\t// Trigger a state change event.\n\tthis.trigger("transition", [previous, current]);\n};\n\n// Document root element.\nexports.rootElement = (0, _jquery2["default"])("html");\n\n// By default previous state is empty.\nexports.previous = "";\n\n// Set the current state to initialize with the default or empty.\n// Query the DOM for state on the global-nav, if that exists, use that as\n// the default, otherwise, use the common state or nothing\nvar htmlState = exports.rootElement.hasClass("subscribers") ? _common2["default"].SUBSCRIBER_STATE : exports.rootElement.hasClass("registered") ? _common2["default"].REGISTERED_STATE : undefined;\nexports.current = (0, _jquery2["default"])("nav").data("state") || htmlState || _common2["default"].DEFAULT_STATE || "";\n\n// Borrow remaining jQuery event functions.\nexports.on = _jquery2["default"].proxy($exports.on, $exports);\nexports.once = _jquery2["default"].proxy($exports.one, $exports);\nexports.off = _jquery2["default"].proxy($exports.off, $exports);\nexports.trigger = _jquery2["default"].proxy($exports.trigger, $exports);\n\nexports.viewportDimensions = {\n\twidth: window.innerWidth,\n\theight: window.innerHeight\n};\n\n/**\n * Update the current state in memory and markup.\n *\n * @param {string} state - The current state of the page.\n */\nexports.set = function (state) {\n\t// State is a required argument.\n\tif (typeof state !== "string") {\n\t\tthrow new Error("Missing state to set.");\n\t}\n\n\t// Update the document root to reflect the new state.\n\ttransitionStates.call(this, this.current, state);\n};\n\n/**\n * Unsets a state point (along with all nested) or all states.\n *\n * @param {string} state - Optional state.\n */\nexports.unset = function (state) {\n\t// Ensure state always has a value.\n\tstate = state || "";\n\n\tvar previous = this.current.split(":");\n\n\t// Truncate the state from the index of the passed state.\n\tif (previous.indexOf(state) > -1) {\n\t\tstate = previous.slice(0, previous.indexOf(state)).join(":");\n\t}\n\t// A valid state to unset is required otherwise we are in an invalid state.\n\telse if (state) {\n\t\t\tthrow new Error("Attempted to unset an invalid state.");\n\t\t}\n\n\t// Transition the states.\n\ttransitionStates.call(this, this.current, state);\n};\n\n/**\n* evaluate whether the viewport width is within the mobile\n* dimension\n*\n* @param {number} breakpointWidth - the width of mobile\n* @return {boolean}\n*/\nexports.isMobile = function (breakpointWidth) {\n\tvar width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\n\t mobileWidth = breakpointWidth || _common2["default"].MOBILE_BREAKPOINT;\n\treturn width <= mobileWidth;\n};\n\n/**\n* Evaluate whether the user is on the homepage, and hero is visible.\n* Use to determine weather to open the nav or leave it alone\n*\n* @return {boolean}\n*/\nexports.homeHeroVisible = function () {\n\tvar isVisible = false,\n\t $window = (0, _jquery2["default"])(window),\n\t $container = (0, _jquery2["default"])("#home-poster-container");\n\tif ($container.length) {\n\t\tisVisible = $window.scrollTop() < $container.offset().top + $container.outerHeight();\n\t}\n\treturn isVisible;\n};\n\n/**\n* function that will evaluate whether there is space available\n* to display the flyout (or any module) at the bottom of the click\n* or at a better position.\n*\n* @param {number} posTop - top position of the element\n* @param {number} posLeft - left position of the element\n* @param {number} moduleHeight - height of the given element\n* @param {number} moduleWidth - width of the given element\n*\n* @return {object}\n*/\nexports.getModulePosition = function (posTop, posLeft, moduleHeight, moduleWidth) {\n\tvar modulePosition = {\n\t\ttop: "",\n\t\tleft: "",\n\t\tmove: "0",\n\t\tclassName: "pointer-top-left",\n\t\tadjustPos: false\n\t};\n\n\tvar verticalPosition = this.viewportDimensions.height + (0, _jquery2["default"])(window).scrollTop();\n\tvar horizontalPosition = this.viewportDimensions.width + (0, _jquery2["default"])(window).scrollLeft();\n\t// if the the flyout fits in the available viewport above, then place it at the top\n\t// of the element\n\tif (moduleHeight < posTop - (0, _jquery2["default"])(window).scrollTop()) {\n\t\tmodulePosition.top = posTop - moduleHeight;\n\t\tmodulePosition.left = posLeft;\n\t\tmodulePosition.className = "pointer-bottom-left";\n\t\tmodulePosition.adjustPos = true;\n\t} else if (posTop + moduleHeight > verticalPosition) {\n\t\t// record how much the window is off by\n\t\tmodulePosition.move = posTop + moduleHeight - verticalPosition;\n\t}\n\n\t// if the element extends beyond the viewport\'s Y axis, place\n\t// it on the left of the element.\n\tif (posLeft + moduleWidth > horizontalPosition) {\n\t\t// does it fit on the left?\n\t\tif (posLeft < moduleWidth) {\n\t\t\tmodulePosition.left = posLeft / 2;\n\t\t\tmodulePosition.className = "pointer-top-center";\n\t\t} else {\n\t\t\tmodulePosition.left = posLeft - moduleWidth * 0.75;\n\t\t\tmodulePosition.className = "pointer-top-right";\n\t\t}\n\t\tmodulePosition.top = "";\n\t\tmodulePosition.adjustPos = true;\n\t}\n\n\treturn modulePosition;\n};\n\n// When the DOM is ready, transition the previous and current.\n(0, _jquery2["default"])(document).ready(function () {\n\ttransitionStates.call(exports, exports.previous, exports.current);\n});\n\nvar allComponents = [];\n\nexports.addInitializer = function (component) {\n\tallComponents.push(component);\n};\n\nexports.initializeElement = function (el) {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(allComponents, function (component) {\n\t\tcomponent.activateAll(el);\n\t});\n\treturn el;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/state.js\n ** module id = 11\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./js/services/state.js?')},21:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(64), __webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreateCallback, forOwn) {\n\n /**\n * Iterates over elements of a collection, executing the callback for each\n * element. The callback is bound to `thisArg` and invoked with three arguments;\n * (value, index|key, collection). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * Note: As with other \"Collections\" methods, objects with a `length` property\n * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn`\n * may be used for object iteration.\n *\n * @static\n * @memberOf _\n * @alias each\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array|Object|string} Returns `collection`.\n * @example\n *\n * _([1, 2, 3]).forEach(function(num) { console.log(num); }).join(',');\n * // => logs each number and returns '1,2,3'\n *\n * _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { console.log(num); });\n * // => logs each number and returns the object (property order is not guaranteed across environments)\n */\n function forEach(collection, callback, thisArg) {\n var index = -1,\n length = collection ? collection.length : 0;\n\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n if (typeof length == 'number') {\n while (++index < length) {\n if (callback(collection[index], index, collection) === false) {\n break;\n }\n }\n } else {\n forOwn(collection, callback);\n }\n return collection;\n }\n\n return forEach;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/forEach.js\n ** module id = 21\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/forEach.js?")},31:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(64), __webpack_require__(101), __webpack_require__(102)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreateCallback, keys, objectTypes) {\n\n /**\n * Iterates over own enumerable properties of an object, executing the callback\n * for each property. The callback is bound to `thisArg` and invoked with three\n * arguments; (value, key, object). Callbacks may exit iteration early by\n * explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Objects\n * @param {Object} object The object to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * _.forOwn({ '0': 'zero', '1': 'one', 'length': 2 }, function(num, key) {\n * console.log(key);\n * });\n * // => logs '0', '1', and 'length' (property order is not guaranteed across environments)\n */\n var forOwn = function(collection, callback, thisArg) {\n var index, iterable = collection, result = iterable;\n if (!iterable) return result;\n if (!objectTypes[typeof iterable]) return result;\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n if (callback(iterable[index], index, collection) === false) return result;\n }\n return result\n };\n\n return forOwn;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/forOwn.js\n ** module id = 31\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/forOwn.js?")},62:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(595), __webpack_require__(511)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createWrapper, slice) {\n\n /**\n * Creates a function that, when called, invokes `func` with the `this`\n * binding of `thisArg` and prepends any additional `bind` arguments to those\n * provided to the bound function.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to bind.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {...*} [arg] Arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var func = function(greeting) {\n * return greeting + ' ' + this.name;\n * };\n *\n * func = _.bind(func, { 'name': 'fred' }, 'hi');\n * func();\n * // => 'hi fred'\n */\n function bind(func, thisArg) {\n return arguments.length > 2\n ? createWrapper(func, 17, slice(arguments, 2), null, thisArg)\n : createWrapper(func, 1, null, null, thisArg);\n }\n\n return bind;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/bind.js\n ** module id = 62\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/bind.js?")},63:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Checks if `value` is a function.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n */\n function isFunction(value) {\n return typeof value == 'function';\n }\n\n return isFunction;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isFunction.js\n ** module id = 63\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isFunction.js?")},64:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(62), __webpack_require__(602), __webpack_require__(540), __webpack_require__(601)], __WEBPACK_AMD_DEFINE_RESULT__ = function(bind, identity, setBindData, support) {\n\n /** Used to detected named functions */\n var reFuncName = /^\\s*function[ \\n\\r\\t]+\\w/;\n\n /** Used to detect functions containing a `this` reference */\n var reThis = /\\bthis\\b/;\n\n /** Native method shortcuts */\n var fnToString = Function.prototype.toString;\n\n /**\n * The base implementation of `_.createCallback` without support for creating\n * \"_.pluck\" or \"_.where\" style callbacks.\n *\n * @private\n * @param {*} [func=identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of the created callback.\n * @param {number} [argCount] The number of arguments the callback accepts.\n * @returns {Function} Returns a callback function.\n */\n function baseCreateCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n // exit early for no `thisArg` or already bound by `Function#bind`\n if (typeof thisArg == 'undefined' || !('prototype' in func)) {\n return func;\n }\n var bindData = func.__bindData__;\n if (typeof bindData == 'undefined') {\n if (support.funcNames) {\n bindData = !func.name;\n }\n bindData = bindData || !support.funcDecomp;\n if (!bindData) {\n var source = fnToString.call(func);\n if (!support.funcNames) {\n bindData = !reFuncName.test(source);\n }\n if (!bindData) {\n // checks if `func` references the `this` keyword and stores the result\n bindData = reThis.test(source);\n setBindData(func, bindData);\n }\n }\n }\n // exit early if there are no `this` references or `func` is bound\n if (bindData === false || (bindData !== true && bindData[1] & 1)) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 2: return function(a, b) {\n return func.call(thisArg, a, b);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n }\n return bind(func, thisArg);\n }\n\n return baseCreateCallback;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseCreateCallback.js\n ** module id = 64\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseCreateCallback.js?")},65:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(538), __webpack_require__(63), __webpack_require__(100)], __WEBPACK_AMD_DEFINE_RESULT__ = function(debounce, isFunction, isObject) {\n\n /** Used as an internal `_.debounce` options object */\n var debounceOptions = {\n 'leading': false,\n 'maxWait': 0,\n 'trailing': false\n };\n\n /**\n * Creates a function that, when executed, will only call the `func` function\n * at most once per every `wait` milliseconds. Provide an options object to\n * indicate that `func` should be invoked on the leading and/or trailing edge\n * of the `wait` timeout. Subsequent calls to the throttled function will\n * return the result of the last `func` call.\n *\n * Note: If `leading` and `trailing` options are `true` `func` will be called\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to throttle.\n * @param {number} wait The number of milliseconds to throttle executions to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify execution on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * var throttled = _.throttle(updatePosition, 100);\n * jQuery(window).on('scroll', throttled);\n *\n * // execute `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (!isFunction(func)) {\n throw new TypeError;\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? options.leading : leading;\n trailing = 'trailing' in options ? options.trailing : trailing;\n }\n debounceOptions.leading = leading;\n debounceOptions.maxWait = wait;\n debounceOptions.trailing = trailing;\n\n return debounce(func, wait, debounceOptions);\n }\n\n return throttle;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/throttle.js\n ** module id = 65\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/throttle.js?")},100:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(102)], __WEBPACK_AMD_DEFINE_RESULT__ = function(objectTypes) {\n\n /**\n * Checks if `value` is the language type of Object.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\n function isObject(value) {\n // check if the value is the ECMAScript language type of Object\n // http://es5.github.io/#x8\n // and avoid a V8 bug\n // http://code.google.com/p/v8/issues/detail?id=2291\n return !!(value && objectTypes[typeof value]);\n }\n\n return isObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isObject.js\n ** module id = 100\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isObject.js?")},101:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(100), __webpack_require__(599)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative, isObject, shimKeys) {\n\n /* Native method shortcuts for methods with the same name as other `lodash` methods */\n var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys;\n\n /**\n * Creates an array composed of the own enumerable property names of an object.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n * @example\n *\n * _.keys({ 'one': 1, 'two': 2, 'three': 3 });\n * // => ['one', 'two', 'three'] (property order is not guaranteed across environments)\n */\n var keys = !nativeKeys ? shimKeys : function(object) {\n if (!isObject(object)) {\n return [];\n }\n return nativeKeys(object);\n };\n\n return keys;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/keys.js\n ** module id = 101\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/keys.js?")},102:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used to determine if values are of the language type Object */\n var objectTypes = {\n 'boolean': false,\n 'function': true,\n 'object': true,\n 'number': false,\n 'string': false,\n 'undefined': false\n };\n\n return objectTypes;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/objectTypes.js\n ** module id = 102\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/objectTypes.js?")},277:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /** Used to detect if a method is native */\n var reNative = RegExp('^' +\n String(toString)\n .replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n .replace(/toString| for [^\\]]+/g, '.*?') + '$'\n );\n\n /**\n * Checks if `value` is a native function.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is a native function, else `false`.\n */\n function isNative(value) {\n return typeof value == 'function' && reNative.test(value);\n }\n\n return isNative;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/isNative.js\n ** module id = 277\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/isNative.js?")},511:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Slices the `collection` from the `start` index up to, but not including,\n * the `end` index.\n *\n * Note: This function is used instead of `Array#slice` to support node lists\n * in IE < 9 and to ensure dense arrays are returned.\n *\n * @private\n * @param {Array|Object|string} collection The collection to slice.\n * @param {number} start The start index.\n * @param {number} end The end index.\n * @returns {Array} Returns the new array.\n */\n function slice(array, start, end) {\n start || (start = 0);\n if (typeof end == 'undefined') {\n end = array ? array.length : 0;\n }\n var index = -1,\n length = end - start || 0,\n result = Array(length < 0 ? 0 : length);\n\n while (++index < length) {\n result[index] = array[start + index];\n }\n return result;\n }\n\n return slice;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/slice.js\n ** module id = 511\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/slice.js?")},512:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\\bAndroid\\b)(?=.*\\bMobile\\b)/i,f=/Android/i,g=/(?=.*\\bAndroid\\b)(?=.*\\bSD4930UR\\b)/i,h=/(?=.*\\bAndroid\\b)(?=.*\\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\\b)/i,i=/Windows Phone/i,j=/(?=.*\\bWindows\\b)(?=.*\\bARM\\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\\bMobile\\b)/i,o=/(?=.*\\bFirefox\\b)(?=.*\\bMobile\\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");if("undefined"!=typeof s[1]&&(r=s[0]),s=r.split("Twitter"),"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window)return this},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s(): true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (a.isMobile=s()), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):a.isMobile=s()}(this);\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/ismobilejs/isMobile.min.js\n ** module id = 512\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/ismobilejs/isMobile.min.js?'); },538:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(63), __webpack_require__(100), __webpack_require__(603)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isFunction, isObject, now) {\n\n /** Used as a safe reference for `undefined` in pre ES5 environments */\n var undefined;\n\n /* Native method shortcuts for methods with the same name as other `lodash` methods */\n var nativeMax = Math.max;\n\n /**\n * Creates a function that will delay the execution of `func` until after\n * `wait` milliseconds have elapsed since the last time it was invoked.\n * Provide an options object to indicate that `func` should be invoked on\n * the leading and/or trailing edge of the `wait` timeout. Subsequent calls\n * to the debounced function will return the result of the last `func` call.\n *\n * Note: If `leading` and `trailing` options are `true` `func` will be called\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to debounce.\n * @param {number} wait The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify execution on the leading edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be delayed before it's called.\n * @param {boolean} [options.trailing=true] Specify execution on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * var lazyLayout = _.debounce(calculateLayout, 150);\n * jQuery(window).on('resize', lazyLayout);\n *\n * // execute `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * });\n *\n * // ensure `batchLog` is executed once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * source.addEventListener('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }, false);\n */\n function debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (!isFunction(func)) {\n throw new TypeError;\n }\n wait = nativeMax(0, wait) || 0;\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = options.leading;\n maxWait = 'maxWait' in options && (nativeMax(wait, options.maxWait) || 0);\n trailing = 'trailing' in options ? options.trailing : trailing;\n }\n var delayed = function() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0) {\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n var isCalled = trailingCall;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = null;\n }\n }\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n };\n\n var maxDelayed = function() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (trailing || (maxWait !== wait)) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = null;\n }\n }\n };\n\n return function() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = null;\n }\n return result;\n };\n }\n\n return debounce;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/debounce.js\n ** module id = 538\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/debounce.js?")},540:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(550)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative, noop) {\n\n /** Used as the property descriptor for `__bindData__` */\n var descriptor = {\n 'configurable': false,\n 'enumerable': false,\n 'value': null,\n 'writable': false\n };\n\n /** Used to set meta data on functions */\n var defineProperty = (function() {\n // IE 8 only accepts DOM elements\n try {\n var o = {},\n func = isNative(func = Object.defineProperty) && func,\n result = func(o, o, o) && func;\n } catch(e) { }\n return result;\n }());\n\n /**\n * Sets `this` binding data on a given function.\n *\n * @private\n * @param {Function} func The function to set data on.\n * @param {Array} value The data array to set.\n */\n var setBindData = !defineProperty ? noop : function(func, value) {\n descriptor.value = value;\n defineProperty(func, '__bindData__', descriptor);\n };\n\n return setBindData;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/setBindData.js\n ** module id = 540\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/setBindData.js?")},546:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(100), __webpack_require__(550)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative, isObject, noop) {\n\n /* Native method shortcuts for methods with the same name as other `lodash` methods */\n var nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate;\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n function baseCreate(prototype, properties) {\n return isObject(prototype) ? nativeCreate(prototype) : {};\n }\n // fallback for browsers without `Object.create`\n if (!nativeCreate) {\n baseCreate = (function() {\n function Object() {}\n return function(prototype) {\n if (isObject(prototype)) {\n Object.prototype = prototype;\n var result = new Object;\n Object.prototype = null;\n }\n return result || window.Object();\n };\n }());\n }\n\n return baseCreate;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseCreate.js\n ** module id = 546\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseCreate.js?')},550:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * A no-operation function.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.noop(object) === undefined;\n * // => true\n */\n function noop() {\n // no operation performed\n }\n\n return noop;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/utilities/noop.js\n ** module id = 550\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/utilities/noop.js?")},593:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(546), __webpack_require__(100), __webpack_require__(540), __webpack_require__(511)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreate, isObject, setBindData, slice) {\n\n /**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\n var arrayRef = [];\n\n /** Native method shortcuts */\n var push = arrayRef.push;\n\n /**\n * The base implementation of `_.bind` that creates the bound function and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new bound function.\n */\n function baseBind(bindData) {\n var func = bindData[0],\n partialArgs = bindData[2],\n thisArg = bindData[4];\n\n function bound() {\n // `Function#bind` spec\n // http://es5.github.io/#x15.3.4.5\n if (partialArgs) {\n // avoid `arguments` object deoptimizations by using `slice` instead\n // of `Array.prototype.slice.call` and not assigning `arguments` to a\n // variable as a ternary expression\n var args = slice(partialArgs);\n push.apply(args, arguments);\n }\n // mimic the constructor\'s `return` behavior\n // http://es5.github.io/#x13.2.2\n if (this instanceof bound) {\n // ensure `new bound` is an instance of `func`\n var thisBinding = baseCreate(func.prototype),\n result = func.apply(thisBinding, args || arguments);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisArg, args || arguments);\n }\n setBindData(bound, bindData);\n return bound;\n }\n\n return baseBind;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseBind.js\n ** module id = 593\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseBind.js?')},594:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(546), __webpack_require__(100), __webpack_require__(540), __webpack_require__(511)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreate, isObject, setBindData, slice) {\n\n /**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\n var arrayRef = [];\n\n /** Native method shortcuts */\n var push = arrayRef.push;\n\n /**\n * The base implementation of `createWrapper` that creates the wrapper and\n * sets its meta data.\n *\n * @private\n * @param {Array} bindData The bind data array.\n * @returns {Function} Returns the new function.\n */\n function baseCreateWrapper(bindData) {\n var func = bindData[0],\n bitmask = bindData[1],\n partialArgs = bindData[2],\n partialRightArgs = bindData[3],\n thisArg = bindData[4],\n arity = bindData[5];\n\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n key = func;\n\n function bound() {\n var thisBinding = isBind ? thisArg : this;\n if (partialArgs) {\n var args = slice(partialArgs);\n push.apply(args, arguments);\n }\n if (partialRightArgs || isCurry) {\n args || (args = slice(arguments));\n if (partialRightArgs) {\n push.apply(args, partialRightArgs);\n }\n if (isCurry && args.length < arity) {\n bitmask |= 16 & ~32;\n return baseCreateWrapper([func, (isCurryBound ? bitmask : bitmask & ~3), args, null, thisArg, arity]);\n }\n }\n args || (args = arguments);\n if (isBindKey) {\n func = thisBinding[key];\n }\n if (this instanceof bound) {\n thisBinding = baseCreate(func.prototype);\n var result = func.apply(thisBinding, args);\n return isObject(result) ? result : thisBinding;\n }\n return func.apply(thisBinding, args);\n }\n setBindData(bound, bindData);\n return bound;\n }\n\n return baseCreateWrapper;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseCreateWrapper.js\n ** module id = 594\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseCreateWrapper.js?')},595:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(593), __webpack_require__(594), __webpack_require__(63), __webpack_require__(511)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseBind, baseCreateWrapper, isFunction, slice) {\n\n /**\n * Used for `Array` method references.\n *\n * Normally `Array.prototype` would suffice, however, using an array literal\n * avoids issues in Narwhal.\n */\n var arrayRef = [];\n\n /** Native method shortcuts */\n var push = arrayRef.push,\n unshift = arrayRef.unshift;\n\n /**\n * Creates a function that, when called, either curries or invokes `func`\n * with an optional `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to reference.\n * @param {number} bitmask The bitmask of method flags to compose.\n * The bitmask may be composed of the following flags:\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry`\n * 8 - `_.curry` (bound)\n * 16 - `_.partial`\n * 32 - `_.partialRight`\n * @param {Array} [partialArgs] An array of arguments to prepend to those\n * provided to the new function.\n * @param {Array} [partialRightArgs] An array of arguments to append to those\n * provided to the new function.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new function.\n */\n function createWrapper(func, bitmask, partialArgs, partialRightArgs, thisArg, arity) {\n var isBind = bitmask & 1,\n isBindKey = bitmask & 2,\n isCurry = bitmask & 4,\n isCurryBound = bitmask & 8,\n isPartial = bitmask & 16,\n isPartialRight = bitmask & 32;\n\n if (!isBindKey && !isFunction(func)) {\n throw new TypeError;\n }\n if (isPartial && !partialArgs.length) {\n bitmask &= ~16;\n isPartial = partialArgs = false;\n }\n if (isPartialRight && !partialRightArgs.length) {\n bitmask &= ~32;\n isPartialRight = partialRightArgs = false;\n }\n var bindData = func && func.__bindData__;\n if (bindData && bindData !== true) {\n // clone `bindData`\n bindData = slice(bindData);\n if (bindData[2]) {\n bindData[2] = slice(bindData[2]);\n }\n if (bindData[3]) {\n bindData[3] = slice(bindData[3]);\n }\n // set `thisBinding` is not previously bound\n if (isBind && !(bindData[1] & 1)) {\n bindData[4] = thisArg;\n }\n // set if previously bound but not currently (subsequent curried functions)\n if (!isBind && bindData[1] & 1) {\n bitmask |= 8;\n }\n // set curried arity if not yet set\n if (isCurry && !(bindData[1] & 4)) {\n bindData[5] = arity;\n }\n // append partial left arguments\n if (isPartial) {\n push.apply(bindData[2] || (bindData[2] = []), partialArgs);\n }\n // append partial right arguments\n if (isPartialRight) {\n unshift.apply(bindData[3] || (bindData[3] = []), partialRightArgs);\n }\n // merge flags\n bindData[1] |= bitmask;\n return createWrapper.apply(null, bindData);\n }\n // fast path for `_.bind`\n var creater = (bitmask == 1 || bitmask === 17) ? baseBind : baseCreateWrapper;\n return creater([func, bitmask, partialArgs, partialRightArgs, thisArg, arity]);\n }\n\n return createWrapper;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/createWrapper.js\n ** module id = 595\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/createWrapper.js?')},599:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(102)], __WEBPACK_AMD_DEFINE_RESULT__ = function(objectTypes) {\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Native method shortcuts */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * A fallback implementation of `Object.keys` which produces an array of the\n * given object\'s own enumerable property names.\n *\n * @private\n * @type Function\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property names.\n */\n var shimKeys = function(object) {\n var index, iterable = object, result = [];\n if (!iterable) return result;\n if (!(objectTypes[typeof object])) return result;\n for (index in iterable) {\n if (hasOwnProperty.call(iterable, index)) {\n result.push(index);\n }\n }\n return result\n };\n\n return shimKeys;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/shimKeys.js\n ** module id = 599\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/shimKeys.js?')},601:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative) {\n\n /** Used to detect functions containing a `this` reference */\n var reThis = /\\bthis\\b/;\n\n /**\n * An object used to flag environments features.\n *\n * @static\n * @memberOf _\n * @type Object\n */\n var support = {};\n\n /**\n * Detect if functions can be decompiled by `Function#toString`\n * (all but PS3 and older Opera mobile browsers & avoided in Windows 8 apps).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.funcDecomp = !isNative(window.WinRTError) && reThis.test(function() { return this; });\n\n /**\n * Detect if `Function#name` is supported (all but IE).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.funcNames = typeof Function.name == 'string';\n\n return support;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/support.js\n ** module id = 601\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/support.js?")},602:function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'name': 'fred' };\n * _.identity(object) === object;\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n return identity;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/utilities/identity.js\n ** module id = 602\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/utilities/identity.js?")},603:function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative) {\n\n /**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @example\n *\n * var stamp = _.now();\n * _.defer(function() { console.log(_.now() - stamp); });\n * // => logs the number of milliseconds it took for the deferred function to be called\n */\n var now = isNative(now = Date.now) && now || function() {\n return new Date().getTime();\n };\n\n return now;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/utilities/now.js\n ** module id = 603\n ** module chunks = 0\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/utilities/now.js?')}});

webpackJsonp([1],[function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _ismobilejs = __webpack_require__(591);\n\nvar _ismobilejs2 = _interopRequireDefault(_ismobilejs);\n\n// Components.\n\n__webpack_require__(422);\n\nvar _servicesHeaderTitleUtils = __webpack_require__(419);\n\nvar _servicesHeaderTitleUtils2 = _interopRequireDefault(_servicesHeaderTitleUtils);\n\nvar _componentsVideoVideoEmbed = __webpack_require__(531);\n\nvar _componentsProgressMeterProgressMeter = __webpack_require__(563);\n\nvar _componentsProgressMeterProgressMeter2 = _interopRequireDefault(_componentsProgressMeterProgressMeter);\n\nvar _componentsToggleContentToggleContent = __webpack_require__(580);\n\nvar _componentsToggleContentToggleContent2 = _interopRequireDefault(_componentsToggleContentToggleContent);\n\nvar _componentsArticleFontResizerArticleFontResizer = __webpack_require__(553);\n\nvar _componentsArticleFontResizerArticleFontResizer2 = _interopRequireDefault(_componentsArticleFontResizerArticleFontResizer);\n\nvar _componentsArticleSidebarArticleSidebar = __webpack_require__(555);\n\nvar _componentsArticleSidebarArticleSidebar2 = _interopRequireDefault(_componentsArticleSidebarArticleSidebar);\n\nvar _componentsCommentValidationCommentValidation = __webpack_require__(558);\n\nvar _componentsCommentValidationCommentValidation2 = _interopRequireDefault(_componentsCommentValidationCommentValidation);\n\nvar _componentsArticleContentArticleContent = __webpack_require__(552);\n\nvar _componentsArticleContentArticleContent2 = _interopRequireDefault(_componentsArticleContentArticleContent);\n\nvar _componentsBuyOrDownloadBuyOrDownload = __webpack_require__(557);\n\nvar _componentsBuyOrDownloadBuyOrDownload2 = _interopRequireDefault(_componentsBuyOrDownloadBuyOrDownload);\n\n__webpack_require__(556);\n\nvar _lodashAmdModernFunctionsThrottle = __webpack_require__(65);\n\nvar _lodashAmdModernFunctionsThrottle2 = _interopRequireDefault(_lodashAmdModernFunctionsThrottle);\n\nvar _componentsArticleCommentsArticleComments = __webpack_require__(516);\n\nvar _componentsArticleCommentsArticleComments2 = _interopRequireDefault(_componentsArticleCommentsArticleComments);\n\n// This will be reached if hash contains invalid characters.\n\nvar _componentsAddToCartAddToCart = __webpack_require__(416);\n\nvar _componentsAddToCartAddToCart2 = _interopRequireDefault(_componentsAddToCartAddToCart);\n\nvar _componentsSliderPromoSliderPromo = __webpack_require__(576);\n\nvar _componentsSliderPromoSliderPromo2 = _interopRequireDefault(_componentsSliderPromoSliderPromo);\n\nvar _componentsPopupSliderPopupSlider = __webpack_require__(562);\n\nvar _componentsPopupSliderPopupSlider2 = _interopRequireDefault(_componentsPopupSliderPopupSlider);\n\nvar _componentsArticlePaywallArticlePaywall = __webpack_require__(554);\n\nvar _componentsArticlePaywallArticlePaywall2 = _interopRequireDefault(_componentsArticlePaywallArticlePaywall);\n\n// import SpotlightToc from "../components/spotlight/spotlight-toc";\n// const spotlightTocComp = $("spotlight-toc");\n// // check if spotlight table of contents needs to be shown\n// if (spotlightTocComp && spotlightTocComp[0]) {\n// const spotlightToc = SpotlightToc.activate(spotlightTocComp[0]);\n// // Render spotlight table of contents\n// spotlightToc.render();\n// }\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar _supportDigitalDataHandlerArticle = __webpack_require__(586);\n\nvar _supportDigitalDataHandlerArticle2 = _interopRequireDefault(_supportDigitalDataHandlerArticle);\n\n(0, _componentsVideoVideoEmbed.expandAllSidebarVideos)();\n\n_componentsProgressMeterProgressMeter2["default"].activateAll();\n\n_componentsToggleContentToggleContent2["default"].activateAll();\n\n_componentsArticleFontResizerArticleFontResizer2["default"].activateAll();\n\n_componentsArticleSidebarArticleSidebar2["default"].activateAll();\n\n_componentsCommentValidationCommentValidation2["default"].activateAll();\n\n_componentsArticleContentArticleContent2["default"].activateAll();\n\n_componentsBuyOrDownloadBuyOrDownload2["default"].activateAll();\n\nvar commentCount = 0;\n\n_componentsArticleCommentsArticleComments2["default"].activateAll();\n_componentsArticleCommentsArticleComments2["default"].commentPromise.done(updateCommentCount);\n\nfunction updateCommentCount(commentObject) {\n\tcommentCount = commentObject.streamInfo.commentCount;\n\t(0, _jquery2["default"])("i[data-comment-badge]").attr("data-comment-badge", commentCount);\n}\n\nvar $body = (0, _jquery2["default"])("body");\n$body.on("update:comment", function (ev, data) {\n\tupdateCommentCount(data);\n});\n\n/*redefinition from smooth-scrolling.js to avoid browser-side complaints */\nvar hbrSmoothScroll = function hbrSmoothScroll() {\n\tif (location.pathname.replace(/^\\//, "") === this.pathname.replace(/^\\//, "") && location.hostname === this.hostname) {\n\t\t//Try-catch block to handle exception from jquery if there are any invalid characters in hash.\n\t\ttry {\n\t\t\tvar target = (0, _jquery2["default"])(this.hash);\n\t\t\ttarget = target.length ? target : (0, _jquery2["default"])("[name=" + this.hash.slice(1) + "]");\n\t\t\tif (target.length) {\n\t\t\t\t(0, _jquery2["default"])("html,body").animate({\n\t\t\t\t\tscrollTop: target.offset().top\n\t\t\t\t}, 1000);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t//This will be reached if hash contains invalid characters.\n\t\t}\n\t}\n};\n\nvar $summary = (0, _jquery2["default"])(".article-executive-summary");\n\n/*\n The assumption here is that anchor links on the article page\n are always to be referring to the current page, i.e.\n they all are of the form href="#name",\n they are not allowed to contain a URL or path.\n */\n(0, _jquery2["default"])("a[href^=#]:not([href=#]):not([js-target$=\'toggle-summary\'])").off("click", hbrSmoothScroll).on("click", function () {\n\ttry {\n\t\tvar target = (0, _jquery2["default"])(this.hash);\n\t\ttarget = target.length ? target : (0, _jquery2["default"])("[name=" + this.hash.slice(1) + "]");\n\t\tif (target.length) {\n\t\t\tif ($summary.is(":visible")) {\n\t\t\t\t_componentsToggleContentToggleContent2["default"].prototype.instantToggle();\n\t\t\t}\n\n\t\t\t(0, _jquery2["default"])("html,body").animate({\n\t\t\t\tscrollTop: target.offset().top\n\t\t\t}, 1000);\n\n\t\t\twindow.location.hash = this.hash;\n\t\t\treturn false;\n\t\t}\n\t} catch (e) {}\n});\n\n_componentsAddToCartAddToCart2["default"].activate($body);\n\n_componentsSliderPromoSliderPromo2["default"].activate($body);\n(0, _jquery2["default"])(window).on("scroll", (0, _lodashAmdModernFunctionsThrottle2["default"])(_componentsSliderPromoSliderPromo2["default"].checkPromo, 200));\n\n_componentsPopupSliderPopupSlider2["default"].activate($body);\n\nvar articlePaywallComp = (0, _jquery2["default"])("article-paywall-anonymous");\n\n// check if article paywall needs to be shown\nif (articlePaywallComp && articlePaywallComp[0]) {\n\t(function () {\n\t\tvar articlePaywall = _componentsArticlePaywallArticlePaywall2["default"].activate(articlePaywallComp[0]);\n\t\t// Render article paywall\n\t\tarticlePaywall.render();\n\n\t\t// article paywall height also depends on right rail, so check if right rail rr component is loaded\n\t\t// then update article height\n\t\t(0, _jquery2["default"])("personalization-placement[data-placement-id=articles]").on("loaded", function () {\n\t\t\tarticlePaywall.updateArticleHeight();\n\t\t});\n\t})();\n} else {\n\t// if anonymous paywall is not shown then check for subscription paywall\n\t// and set digital data\n\tif ((0, _jquery2["default"])("article-paywall").length > 0) {\n\t\t(0, _jquery2["default"])("body").trigger("set-page-info", ["Subscription", "Subscription Paywall"]);\n\t}\n}\nif (_modelsUser2["default"].isGuest()) {\n\t_servicesAuth2["default"].getUserQuota().then(function (userQuota) {\n\t\tif (userQuota && userQuota.limit) {\n\t\t\t_modelsUser2["default"].setQuota(userQuota);\n\t\t}\n\t});\n}\n\n_componentsArticleCommentsArticleComments2["default"].commentPromise.done(_supportDigitalDataHandlerArticle2["default"].setCommentCount);\n(0, _jquery2["default"])("body").trigger("article-loaded");\n\n// Update digital data when printing an article\n(0, _jquery2["default"])("[js-target=\'print-article\']").click(function (event) {\n\tvar eventData = {};\n\teventData.eventAction = "Content Print";\n\teventData.element = (0, _jquery2["default"])(event.currentTarget).closest("stream-item");\n\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n});\n\n// Update digital data when downloading an article\n(0, _jquery2["default"])("[js-target=\'pdf-download-link\']").click(function (event) {\n\tevent.stopPropagation();\n\tvar eventData = {};\n\teventData.eventAction = "Download PDF";\n\teventData.element = (0, _jquery2["default"])(event.currentTarget).closest("stream-item");\n\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n\tlocation.href = (0, _jquery2["default"])(this).attr("href");\n});\n\n(0, _jquery2["default"])(window).load(function () {\n\tdocument.getElementsByClassName("header-article-title")[0].innerHTML = document.title;\n\t_servicesHeaderTitleUtils2["default"].isArticle = true;\n\t_servicesHeaderTitleUtils2["default"].DomElement = ".header-article-title";\n\tshowTitle();\n\t//binding scroll event\n\tdocument.addEventListener("scroll", function () {\n\t\tif (_ismobilejs2["default"].phone) {\n\t\t\tif ((0, _jquery2["default"])("body").hasClass("reversed")) {\n\t\t\t\t(0, _jquery2["default"])(".fixedsticky.sticky-tools").removeClass("down");\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])(".fixedsticky.sticky-tools").addClass("down");\n\t\t\t}\n\t\t} else {\n\t\t\tshowTitle();\n\t\t}\n\t});\n\tfunction showTitle() {\n\t\tvar position = window.pageYOffset;\n\t\tif (position >= 300) {\n\t\t\t_servicesHeaderTitleUtils2["default"].titleScrolledOff = true;\n\t\t} else {\n\t\t\t_servicesHeaderTitleUtils2["default"].titleScrolledOff = false;\n\t\t}\n\t\t_servicesHeaderTitleUtils2["default"].showOrHide();\n\t}\n});\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/pages/article.js\n ** module id = 0\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/pages/article.js?')},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(module) {//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n true ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\nvar hookCallback;\n\nfunction hooks () {\n return hookCallback.apply(null, arguments);\n}\n\n// This is done to register the method called with moment()\n// without creating circular dependencies.\nfunction setHookCallback (callback) {\n hookCallback = callback;\n}\n\nfunction isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n}\n\nfunction isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n}\n\nfunction isObjectEmpty(obj) {\n var k;\n for (k in obj) {\n // even if its not own property I'd still call it non-empty\n return false;\n }\n return true;\n}\n\nfunction isUndefined(input) {\n return input === void 0;\n}\n\nfunction isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n}\n\nfunction isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n}\n\nfunction map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n}\n\nfunction hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n}\n\nfunction extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n}\n\nfunction createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n}\n\nfunction defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n}\n\nfunction getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n}\n\nvar some;\nif (Array.prototype.some) {\n some = Array.prototype.some;\n} else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nvar some$1 = some;\n\nfunction isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some$1.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n}\n\nfunction createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n}\n\n// Plugins that add properties should also add the key here (null value),\n// so we can properly clone ourselves.\nvar momentProperties = hooks.momentProperties = [];\n\nfunction copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n}\n\nvar updateInProgress = false;\n\n// Moment prototype object\nfunction Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n}\n\nfunction isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n}\n\nfunction absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n}\n\nfunction toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n}\n\n// compare two arrays, return the number of differences\nfunction compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n}\n\nfunction warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n}\n\nfunction deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n}\n\nvar deprecations = {};\n\nfunction deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n}\n\nhooks.suppressDeprecationWarnings = false;\nhooks.deprecationHandler = null;\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\nfunction set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n}\n\nfunction mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n}\n\nfunction Locale(config) {\n if (config != null) {\n this.set(config);\n }\n}\n\nvar keys;\n\nif (Object.keys) {\n keys = Object.keys;\n} else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n}\n\nvar keys$1 = keys;\n\nvar defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n};\n\nfunction calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n}\n\nvar defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n};\n\nfunction longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n}\n\nvar defaultInvalidDate = 'Invalid date';\n\nfunction invalidDate () {\n return this._invalidDate;\n}\n\nvar defaultOrdinal = '%d';\nvar defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\nfunction ordinal (number) {\n return this._ordinal.replace('%d', number);\n}\n\nvar defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n};\n\nfunction relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n}\n\nfunction pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n}\n\nvar aliases = {};\n\nfunction addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n}\n\nfunction normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n}\n\nfunction normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n}\n\nvar priorities = {};\n\nfunction addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n}\n\nfunction getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n}\n\nfunction makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n}\n\nfunction get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n}\n\nfunction set$1 (mom, unit, value) {\n if (mom.isValid()) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n}\n\n// MOMENTS\n\nfunction stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n}\n\n\nfunction stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n}\n\nfunction zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n}\n\nvar formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\nvar localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\nvar formatFunctions = {};\n\nvar formatTokenFunctions = {};\n\n// token: 'M'\n// padded: ['MM', 2]\n// ordinal: 'Mo'\n// callback: function () { this.month() + 1 }\nfunction addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n}\n\nfunction removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n}\n\nfunction makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n}\n\n// format date using native date object\nfunction formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n}\n\nfunction expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n}\n\nvar match1 = /\\d/; // 0 - 9\nvar match2 = /\\d\\d/; // 00 - 99\nvar match3 = /\\d{3}/; // 000 - 999\nvar match4 = /\\d{4}/; // 0000 - 9999\nvar match6 = /[+-]?\\d{6}/; // -999999 - 999999\nvar match1to2 = /\\d\\d?/; // 0 - 99\nvar match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\nvar match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\nvar match1to3 = /\\d{1,3}/; // 0 - 999\nvar match1to4 = /\\d{1,4}/; // 0 - 9999\nvar match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\nvar matchUnsigned = /\\d+/; // 0 - inf\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\nvar matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n// any word (or two) characters or numbers including two/three word month in arabic.\n// includes scottish gaelic two word and hyphenated months\nvar matchWord = /[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i;\n\n\nvar regexes = {};\n\nfunction addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n}\n\nfunction getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n}\n\n// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\nfunction unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n}\n\nfunction regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nvar tokens = {};\n\nfunction addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n}\n\nfunction addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n}\n\nfunction addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n}\n\nvar YEAR = 0;\nvar MONTH = 1;\nvar DATE = 2;\nvar HOUR = 3;\nvar MINUTE = 4;\nvar SECOND = 5;\nvar MILLISECOND = 6;\nvar WEEK = 7;\nvar WEEKDAY = 8;\n\nvar indexOf;\n\nif (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n} else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n}\n\nvar indexOf$1 = indexOf;\n\nfunction daysInMonth(year, month) {\n return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();\n}\n\n// FORMATTING\n\naddFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n});\n\naddFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n});\n\naddFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n});\n\n// ALIASES\n\naddUnitAlias('month', 'M');\n\n// PRIORITY\n\naddUnitPriority('month', 8);\n\n// PARSING\n\naddRegexToken('M', match1to2);\naddRegexToken('MM', match1to2, match2);\naddRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n});\naddRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n});\n\naddParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n});\n\naddParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n});\n\n// LOCALES\n\nvar MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\nvar defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\nfunction localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nvar defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\nfunction localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n}\n\nfunction handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n}\n\nfunction getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n}\n\nfunction getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n}\n\nvar defaultMonthsShortRegex = matchWord;\nfunction monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n}\n\nvar defaultMonthsRegex = matchWord;\nfunction monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n}\n\nfunction computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\naddFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n});\n\naddFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n});\n\naddFormatToken(0, ['YYYY', 4], 0, 'year');\naddFormatToken(0, ['YYYYY', 5], 0, 'year');\naddFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n// ALIASES\n\naddUnitAlias('year', 'y');\n\n// PRIORITIES\n\naddUnitPriority('year', 1);\n\n// PARSING\n\naddRegexToken('Y', matchSigned);\naddRegexToken('YY', match1to2, match2);\naddRegexToken('YYYY', match1to4, match4);\naddRegexToken('YYYYY', match1to6, match6);\naddRegexToken('YYYYYY', match1to6, match6);\n\naddParseToken(['YYYYY', 'YYYYYY'], YEAR);\naddParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n});\naddParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n});\naddParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n});\n\n// HELPERS\n\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nfunction isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n// HOOKS\n\nhooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n};\n\n// MOMENTS\n\nvar getSetYear = makeGetSet('FullYear', true);\n\nfunction getIsLeapYear () {\n return isLeapYear(this.year());\n}\n\nfunction createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n}\n\nfunction createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n}\n\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n}\n\n// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\nfunction dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n}\n\nfunction weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n}\n\nfunction weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n}\n\n// FORMATTING\n\naddFormatToken('w', ['ww', 2], 'wo', 'week');\naddFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n// ALIASES\n\naddUnitAlias('week', 'w');\naddUnitAlias('isoWeek', 'W');\n\n// PRIORITIES\n\naddUnitPriority('week', 5);\naddUnitPriority('isoWeek', 5);\n\n// PARSING\n\naddRegexToken('w', match1to2);\naddRegexToken('ww', match1to2, match2);\naddRegexToken('W', match1to2);\naddRegexToken('WW', match1to2, match2);\n\naddWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n});\n\n// HELPERS\n\n// LOCALES\n\nfunction localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n}\n\nvar defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n};\n\nfunction localeFirstDayOfWeek () {\n return this._week.dow;\n}\n\nfunction localeFirstDayOfYear () {\n return this._week.doy;\n}\n\n// MOMENTS\n\nfunction getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\nfunction getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n}\n\n// FORMATTING\n\naddFormatToken('d', 0, 'do', 'day');\n\naddFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n});\n\naddFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n});\n\naddFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n});\n\naddFormatToken('e', 0, 0, 'weekday');\naddFormatToken('E', 0, 0, 'isoWeekday');\n\n// ALIASES\n\naddUnitAlias('day', 'd');\naddUnitAlias('weekday', 'e');\naddUnitAlias('isoWeekday', 'E');\n\n// PRIORITY\naddUnitPriority('day', 11);\naddUnitPriority('weekday', 11);\naddUnitPriority('isoWeekday', 11);\n\n// PARSING\n\naddRegexToken('d', match1to2);\naddRegexToken('e', match1to2);\naddRegexToken('E', match1to2);\naddRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n});\naddRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n});\naddRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n});\n\naddWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n});\n\naddWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n});\n\n// HELPERS\n\nfunction parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n}\n\nfunction parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n}\n\n// LOCALES\n\nvar defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\nfunction localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n}\n\nvar defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\nfunction localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n}\n\nvar defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\nfunction localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n}\n\nfunction handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf$1.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf$1.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n}\n\nfunction localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n}\n\n// MOMENTS\n\nfunction getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n}\n\nfunction getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n}\n\nfunction getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n}\n\nvar defaultWeekdaysRegex = matchWord;\nfunction weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n}\n\nvar defaultWeekdaysShortRegex = matchWord;\nfunction weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n}\n\nvar defaultWeekdaysMinRegex = matchWord;\nfunction weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n}\n\n\nfunction computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n}\n\n// FORMATTING\n\nfunction hFormat() {\n return this.hours() % 12 || 12;\n}\n\nfunction kFormat() {\n return this.hours() || 24;\n}\n\naddFormatToken('H', ['HH', 2], 0, 'hour');\naddFormatToken('h', ['hh', 2], 0, hFormat);\naddFormatToken('k', ['kk', 2], 0, kFormat);\n\naddFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\naddFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n});\n\naddFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n});\n\nfunction meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n}\n\nmeridiem('a', true);\nmeridiem('A', false);\n\n// ALIASES\n\naddUnitAlias('hour', 'h');\n\n// PRIORITY\naddUnitPriority('hour', 13);\n\n// PARSING\n\nfunction matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n}\n\naddRegexToken('a', matchMeridiem);\naddRegexToken('A', matchMeridiem);\naddRegexToken('H', match1to2);\naddRegexToken('h', match1to2);\naddRegexToken('k', match1to2);\naddRegexToken('HH', match1to2, match2);\naddRegexToken('hh', match1to2, match2);\naddRegexToken('kk', match1to2, match2);\n\naddRegexToken('hmm', match3to4);\naddRegexToken('hmmss', match5to6);\naddRegexToken('Hmm', match3to4);\naddRegexToken('Hmmss', match5to6);\n\naddParseToken(['H', 'HH'], HOUR);\naddParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n});\naddParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n});\naddParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n});\naddParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n});\naddParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n});\n\n// LOCALES\n\nfunction localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n}\n\nvar defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\nfunction localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n}\n\n\n// MOMENTS\n\n// Setting the hour should keep the time, because the user explicitly\n// specified which hour he wants. So trying to maintain the same hour (in\n// a new timezone) makes sense. Adding/subtracting hours does not follow\n// this rule.\nvar getSetHour = makeGetSet('Hours', true);\n\n// months\n// week\n// weekdays\n// meridiem\nvar baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n};\n\n// internal storage for locale config files\nvar locales = {};\nvar localeFamilies = {};\nvar globalLocale;\n\nfunction normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n}\n\n// pick the locale from the array\n// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\nfunction chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return null;\n}\n\nfunction loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n __webpack_require__(329)(\"./\" + name);\n // because defineLocale currently also sets the global locale, we\n // want to undo that for lazy loaded locales\n getSetGlobalLocale(oldLocale);\n } catch (e) { }\n }\n return locales[name];\n}\n\n// This function will load locale and then set the global locale. If\n// no arguments are passed in, it will simply return the current global\n// locale key.\nfunction getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n }\n\n return globalLocale._abbr;\n}\n\nfunction defineLocale (name, config) {\n if (config !== null) {\n var parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n}\n\nfunction updateLocale(name, config) {\n if (config != null) {\n var locale, parentConfig = baseConfig;\n // MERGE\n if (locales[name] != null) {\n parentConfig = locales[name]._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n}\n\n// returns locale data\nfunction getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n}\n\nfunction listLocales() {\n return keys$1(locales);\n}\n\nfunction checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n}\n\n// iso 8601 regex\n// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\nvar extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\nvar basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\nvar tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\nvar isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n];\n\n// iso time formats and regexes\nvar isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n];\n\nvar aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n// date from iso format\nfunction configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n}\n\n// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\nvar basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;\n\n// date and time from ref 2822 format\nfunction configFromRFC2822(config) {\n var string, match, dayFormat,\n dateFormat, timeFormat, tzFormat;\n var timezones = {\n ' GMT': ' +0000',\n ' EDT': ' -0400',\n ' EST': ' -0500',\n ' CDT': ' -0500',\n ' CST': ' -0600',\n ' MDT': ' -0600',\n ' MST': ' -0700',\n ' PDT': ' -0700',\n ' PST': ' -0800'\n };\n var military = 'YXWVUTSRQPONZABCDEFGHIKLM';\n var timezone, timezoneIndex;\n\n string = config._i\n .replace(/\\([^\\)]*\\)|[\\n\\t]/g, ' ') // Remove comments and folding whitespace\n .replace(/(\\s\\s+)/g, ' ') // Replace multiple-spaces with a single space\n .replace(/^\\s|\\s$/g, ''); // Remove leading and trailing spaces\n match = basicRfcRegex.exec(string);\n\n if (match) {\n dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';\n dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');\n timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');\n\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n if (match[1]) { // day of week given\n var momentDate = new Date(match[2]);\n var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];\n\n if (match[1].substr(0,3) !== momentDay) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return;\n }\n }\n\n switch (match[5].length) {\n case 2: // military\n if (timezoneIndex === 0) {\n timezone = ' +0000';\n } else {\n timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;\n timezone = ((timezoneIndex < 0) ? ' -' : ' +') +\n (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';\n }\n break;\n case 4: // Zone\n timezone = timezones[match[5]];\n break;\n default: // UT or +/-9999\n timezone = timezones[' GMT'];\n }\n match[5] = timezone;\n config._i = match.splice(1).join('');\n tzFormat = ' ZZ';\n config._f = dayFormat + dateFormat + timeFormat + tzFormat;\n configFromStringAndFormat(config);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n}\n\n// date from iso format or fallback\nfunction configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n}\n\nhooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n);\n\n// Pick the first defined of two or three arguments.\nfunction defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n}\n\nfunction currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n}\n\n// convert an array to a date.\n// the array should mirror the parameters below\n// note: all values past the year are optional and will default to the lowest possible value.\n// [year, month, day , hour, minute, second, millisecond]\nfunction configFromArray (config) {\n var i, date, input = [], currentDate, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n}\n\nfunction dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n}\n\n// constant that refers to the ISO standard\nhooks.ISO_8601 = function () {};\n\n// constant that refers to the RFC 2822 form\nhooks.RFC_2822 = function () {};\n\n// date from string and format string\nfunction configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n}\n\n\nfunction meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n}\n\n// date from string and array of format strings\nfunction configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n}\n\nfunction configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n}\n\nfunction createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n}\n\nfunction prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n}\n\nfunction configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n}\n\nfunction createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n}\n\nfunction createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n}\n\nvar prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\nvar prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n);\n\n// Pick a moment m from moments so that m[fn](other) is true for all\n// other. This relies on the function fn to be transitive.\n//\n// moments should either be an array of moment objects or an array, whose\n// first element is an array of moment objects.\nfunction pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n}\n\n// TODO: Use [].sort instead?\nfunction min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n}\n\nfunction max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n}\n\nvar now = function () {\n return Date.now ? Date.now() : +(new Date());\n};\n\nvar ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\nfunction isDurationValid(m) {\n for (var key in m) {\n if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n}\n\nfunction isValid$1() {\n return this._isValid;\n}\n\nfunction createInvalid$1() {\n return createDuration(NaN);\n}\n\nfunction Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n}\n\nfunction isDuration (obj) {\n return obj instanceof Duration;\n}\n\nfunction absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n}\n\n// FORMATTING\n\nfunction offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n}\n\noffset('Z', ':');\noffset('ZZ', '');\n\n// PARSING\n\naddRegexToken('Z', matchShortOffset);\naddRegexToken('ZZ', matchShortOffset);\naddParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n});\n\n// HELPERS\n\n// timezone chunker\n// '+10:00' > ['10', '00']\n// '-1530' > ['-15', '30']\nvar chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\nfunction offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n}\n\n// Return a moment from input, that is local/utc/zone equivalent to model.\nfunction cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n}\n\nfunction getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n}\n\n// HOOKS\n\n// This function will be called whenever a moment is mutated.\n// It is intended to keep the offset in sync with the timezone.\nhooks.updateOffset = function () {};\n\n// MOMENTS\n\n// keepLocalTime = true means only change the timezone, without\n// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n// +0200, so we adjust the time as needed, to be valid.\n//\n// Keeping the time actually adds/subtracts (one hour)\n// from the actual represented time. That is why we call updateOffset\n// a second time. In case it wants us to change the offset again\n// _changeInProgress == true case, then we have to adjust, because\n// there is no such time in the given timezone.\nfunction getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n}\n\nfunction getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n}\n\nfunction setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n}\n\nfunction setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n}\n\nfunction setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n}\n\nfunction hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n}\n\nfunction isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n}\n\nfunction isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n}\n\nfunction isLocal () {\n return this.isValid() ? !this._isUTC : false;\n}\n\nfunction isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n}\n\nfunction isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n}\n\n// ASP.NET json date format regex\nvar aspNetRegex = /^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n// and further modified to allow for strings containing both week and day\nvar isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;\n\nfunction createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n}\n\ncreateDuration.fn = Duration.prototype;\ncreateDuration.invalid = createInvalid$1;\n\nfunction parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n}\n\nfunction positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n}\n\nfunction momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n}\n\n// TODO: remove 'name' arg after deprecation is removed\nfunction createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n}\n\nfunction addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n}\n\nvar add = createAdder(1, 'add');\nvar subtract = createAdder(-1, 'subtract');\n\nfunction getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n}\n\nfunction calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n}\n\nfunction clone () {\n return new Moment(this);\n}\n\nfunction isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n}\n\nfunction isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n}\n\nfunction isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n}\n\nfunction isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n}\n\nfunction isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n}\n\nfunction isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n}\n\nfunction diff (input, units, asFloat) {\n var that,\n zoneDelta,\n delta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n if (units === 'year' || units === 'month' || units === 'quarter') {\n output = monthDiff(this, that);\n if (units === 'quarter') {\n output = output / 3;\n } else if (units === 'year') {\n output = output / 12;\n }\n } else {\n delta = this - that;\n output = units === 'second' ? delta / 1e3 : // 1000\n units === 'minute' ? delta / 6e4 : // 1000 * 60\n units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60\n units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst\n units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst\n delta;\n }\n return asFloat ? output : absFloor(output);\n}\n\nfunction monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n}\n\nhooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\nhooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\nfunction toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n}\n\nfunction toISOString() {\n if (!this.isValid()) {\n return null;\n }\n var m = this.clone().utc();\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n return this.toDate().toISOString();\n }\n return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');\n}\n\n/**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\nfunction inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n}\n\nfunction format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n}\n\nfunction from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n}\n\nfunction to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n}\n\nfunction toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n}\n\n// If passed a locale key, it will set the locale for this\n// instance. Otherwise, it will return the locale configuration\n// variables for this instance.\nfunction locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n}\n\nvar lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n);\n\nfunction localeData () {\n return this._locale;\n}\n\nfunction startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n}\n\nfunction endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n}\n\nfunction valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n}\n\nfunction unix () {\n return Math.floor(this.valueOf() / 1000);\n}\n\nfunction toDate () {\n return new Date(this.valueOf());\n}\n\nfunction toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n}\n\nfunction toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n}\n\nfunction toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n}\n\nfunction isValid$2 () {\n return isValid(this);\n}\n\nfunction parsingFlags () {\n return extend({}, getParsingFlags(this));\n}\n\nfunction invalidAt () {\n return getParsingFlags(this).overflow;\n}\n\nfunction creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n}\n\n// FORMATTING\n\naddFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n});\n\naddFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n});\n\nfunction addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n}\n\naddWeekYearFormatToken('gggg', 'weekYear');\naddWeekYearFormatToken('ggggg', 'weekYear');\naddWeekYearFormatToken('GGGG', 'isoWeekYear');\naddWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n// ALIASES\n\naddUnitAlias('weekYear', 'gg');\naddUnitAlias('isoWeekYear', 'GG');\n\n// PRIORITY\n\naddUnitPriority('weekYear', 1);\naddUnitPriority('isoWeekYear', 1);\n\n\n// PARSING\n\naddRegexToken('G', matchSigned);\naddRegexToken('g', matchSigned);\naddRegexToken('GG', match1to2, match2);\naddRegexToken('gg', match1to2, match2);\naddRegexToken('GGGG', match1to4, match4);\naddRegexToken('gggg', match1to4, match4);\naddRegexToken('GGGGG', match1to6, match6);\naddRegexToken('ggggg', match1to6, match6);\n\naddWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n});\n\naddWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n});\n\n// MOMENTS\n\nfunction getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n}\n\nfunction getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n}\n\nfunction getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n}\n\nfunction getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n}\n\nfunction getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n}\n\nfunction setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n}\n\n// FORMATTING\n\naddFormatToken('Q', 0, 'Qo', 'quarter');\n\n// ALIASES\n\naddUnitAlias('quarter', 'Q');\n\n// PRIORITY\n\naddUnitPriority('quarter', 7);\n\n// PARSING\n\naddRegexToken('Q', match1);\naddParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n});\n\n// MOMENTS\n\nfunction getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n}\n\n// FORMATTING\n\naddFormatToken('D', ['DD', 2], 'Do', 'date');\n\n// ALIASES\n\naddUnitAlias('date', 'D');\n\n// PRIOROITY\naddUnitPriority('date', 9);\n\n// PARSING\n\naddRegexToken('D', match1to2);\naddRegexToken('DD', match1to2, match2);\naddRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n});\n\naddParseToken(['D', 'DD'], DATE);\naddParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0], 10);\n});\n\n// MOMENTS\n\nvar getSetDayOfMonth = makeGetSet('Date', true);\n\n// FORMATTING\n\naddFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n// ALIASES\n\naddUnitAlias('dayOfYear', 'DDD');\n\n// PRIORITY\naddUnitPriority('dayOfYear', 4);\n\n// PARSING\n\naddRegexToken('DDD', match1to3);\naddRegexToken('DDDD', match3);\naddParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n});\n\n// HELPERS\n\n// MOMENTS\n\nfunction getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n}\n\n// FORMATTING\n\naddFormatToken('m', ['mm', 2], 0, 'minute');\n\n// ALIASES\n\naddUnitAlias('minute', 'm');\n\n// PRIORITY\n\naddUnitPriority('minute', 14);\n\n// PARSING\n\naddRegexToken('m', match1to2);\naddRegexToken('mm', match1to2, match2);\naddParseToken(['m', 'mm'], MINUTE);\n\n// MOMENTS\n\nvar getSetMinute = makeGetSet('Minutes', false);\n\n// FORMATTING\n\naddFormatToken('s', ['ss', 2], 0, 'second');\n\n// ALIASES\n\naddUnitAlias('second', 's');\n\n// PRIORITY\n\naddUnitPriority('second', 15);\n\n// PARSING\n\naddRegexToken('s', match1to2);\naddRegexToken('ss', match1to2, match2);\naddParseToken(['s', 'ss'], SECOND);\n\n// MOMENTS\n\nvar getSetSecond = makeGetSet('Seconds', false);\n\n// FORMATTING\n\naddFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n});\n\naddFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n});\n\naddFormatToken(0, ['SSS', 3], 0, 'millisecond');\naddFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n});\naddFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n});\naddFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n});\naddFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n});\naddFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n});\naddFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n});\n\n\n// ALIASES\n\naddUnitAlias('millisecond', 'ms');\n\n// PRIORITY\n\naddUnitPriority('millisecond', 16);\n\n// PARSING\n\naddRegexToken('S', match1to3, match1);\naddRegexToken('SS', match1to3, match2);\naddRegexToken('SSS', match1to3, match3);\n\nvar token;\nfor (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n}\n\nfunction parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n}\n\nfor (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n}\n// MOMENTS\n\nvar getSetMillisecond = makeGetSet('Milliseconds', false);\n\n// FORMATTING\n\naddFormatToken('z', 0, 0, 'zoneAbbr');\naddFormatToken('zz', 0, 0, 'zoneName');\n\n// MOMENTS\n\nfunction getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n}\n\nfunction getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n}\n\nvar proto = Moment.prototype;\n\nproto.add = add;\nproto.calendar = calendar$1;\nproto.clone = clone;\nproto.diff = diff;\nproto.endOf = endOf;\nproto.format = format;\nproto.from = from;\nproto.fromNow = fromNow;\nproto.to = to;\nproto.toNow = toNow;\nproto.get = stringGet;\nproto.invalidAt = invalidAt;\nproto.isAfter = isAfter;\nproto.isBefore = isBefore;\nproto.isBetween = isBetween;\nproto.isSame = isSame;\nproto.isSameOrAfter = isSameOrAfter;\nproto.isSameOrBefore = isSameOrBefore;\nproto.isValid = isValid$2;\nproto.lang = lang;\nproto.locale = locale;\nproto.localeData = localeData;\nproto.max = prototypeMax;\nproto.min = prototypeMin;\nproto.parsingFlags = parsingFlags;\nproto.set = stringSet;\nproto.startOf = startOf;\nproto.subtract = subtract;\nproto.toArray = toArray;\nproto.toObject = toObject;\nproto.toDate = toDate;\nproto.toISOString = toISOString;\nproto.inspect = inspect;\nproto.toJSON = toJSON;\nproto.toString = toString;\nproto.unix = unix;\nproto.valueOf = valueOf;\nproto.creationData = creationData;\n\n// Year\nproto.year = getSetYear;\nproto.isLeapYear = getIsLeapYear;\n\n// Week Year\nproto.weekYear = getSetWeekYear;\nproto.isoWeekYear = getSetISOWeekYear;\n\n// Quarter\nproto.quarter = proto.quarters = getSetQuarter;\n\n// Month\nproto.month = getSetMonth;\nproto.daysInMonth = getDaysInMonth;\n\n// Week\nproto.week = proto.weeks = getSetWeek;\nproto.isoWeek = proto.isoWeeks = getSetISOWeek;\nproto.weeksInYear = getWeeksInYear;\nproto.isoWeeksInYear = getISOWeeksInYear;\n\n// Day\nproto.date = getSetDayOfMonth;\nproto.day = proto.days = getSetDayOfWeek;\nproto.weekday = getSetLocaleDayOfWeek;\nproto.isoWeekday = getSetISODayOfWeek;\nproto.dayOfYear = getSetDayOfYear;\n\n// Hour\nproto.hour = proto.hours = getSetHour;\n\n// Minute\nproto.minute = proto.minutes = getSetMinute;\n\n// Second\nproto.second = proto.seconds = getSetSecond;\n\n// Millisecond\nproto.millisecond = proto.milliseconds = getSetMillisecond;\n\n// Offset\nproto.utcOffset = getSetOffset;\nproto.utc = setOffsetToUTC;\nproto.local = setOffsetToLocal;\nproto.parseZone = setOffsetToParsedOffset;\nproto.hasAlignedHourOffset = hasAlignedHourOffset;\nproto.isDST = isDaylightSavingTime;\nproto.isLocal = isLocal;\nproto.isUtcOffset = isUtcOffset;\nproto.isUtc = isUtc;\nproto.isUTC = isUtc;\n\n// Timezone\nproto.zoneAbbr = getZoneAbbr;\nproto.zoneName = getZoneName;\n\n// Deprecations\nproto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\nproto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\nproto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\nproto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\nproto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\nfunction createUnix (input) {\n return createLocal(input * 1000);\n}\n\nfunction createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n}\n\nfunction preParsePostFormat (string) {\n return string;\n}\n\nvar proto$1 = Locale.prototype;\n\nproto$1.calendar = calendar;\nproto$1.longDateFormat = longDateFormat;\nproto$1.invalidDate = invalidDate;\nproto$1.ordinal = ordinal;\nproto$1.preparse = preParsePostFormat;\nproto$1.postformat = preParsePostFormat;\nproto$1.relativeTime = relativeTime;\nproto$1.pastFuture = pastFuture;\nproto$1.set = set;\n\n// Month\nproto$1.months = localeMonths;\nproto$1.monthsShort = localeMonthsShort;\nproto$1.monthsParse = localeMonthsParse;\nproto$1.monthsRegex = monthsRegex;\nproto$1.monthsShortRegex = monthsShortRegex;\n\n// Week\nproto$1.week = localeWeek;\nproto$1.firstDayOfYear = localeFirstDayOfYear;\nproto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n// Day of Week\nproto$1.weekdays = localeWeekdays;\nproto$1.weekdaysMin = localeWeekdaysMin;\nproto$1.weekdaysShort = localeWeekdaysShort;\nproto$1.weekdaysParse = localeWeekdaysParse;\n\nproto$1.weekdaysRegex = weekdaysRegex;\nproto$1.weekdaysShortRegex = weekdaysShortRegex;\nproto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n// Hours\nproto$1.isPM = localeIsPM;\nproto$1.meridiem = localeMeridiem;\n\nfunction get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n}\n\nfunction listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n}\n\n// ()\n// (5)\n// (fmt, 5)\n// (fmt)\n// (true)\n// (true, 5)\n// (true, fmt, 5)\n// (true, fmt)\nfunction listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n}\n\nfunction listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n}\n\nfunction listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n}\n\nfunction listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n}\n\nfunction listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n}\n\nfunction listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n}\n\ngetSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\n// Side effect imports\nhooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\nhooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\nvar mathAbs = Math.abs;\n\nfunction abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n}\n\nfunction addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n}\n\n// supports only 2.0-style add(1, 's') or add(duration)\nfunction add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n}\n\n// supports only 2.0-style subtract(1, 's') or subtract(duration)\nfunction subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n}\n\nfunction absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n}\n\nfunction bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n}\n\nfunction daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n}\n\nfunction monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n}\n\nfunction as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n}\n\n// TODO: Use this.as('ms')?\nfunction valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n}\n\nfunction makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n}\n\nvar asMilliseconds = makeAs('ms');\nvar asSeconds = makeAs('s');\nvar asMinutes = makeAs('m');\nvar asHours = makeAs('h');\nvar asDays = makeAs('d');\nvar asWeeks = makeAs('w');\nvar asMonths = makeAs('M');\nvar asYears = makeAs('y');\n\nfunction get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n}\n\nfunction makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n}\n\nvar milliseconds = makeGetter('milliseconds');\nvar seconds = makeGetter('seconds');\nvar minutes = makeGetter('minutes');\nvar hours = makeGetter('hours');\nvar days = makeGetter('days');\nvar months = makeGetter('months');\nvar years = makeGetter('years');\n\nfunction weeks () {\n return absFloor(this.days() / 7);\n}\n\nvar round = Math.round;\nvar thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n};\n\n// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\nfunction substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n}\n\nfunction relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n}\n\n// This function allows you to set the rounding function for relative time strings\nfunction getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n}\n\n// This function allows you to set a threshold for relative time strings\nfunction getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n}\n\nfunction humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n}\n\nvar abs$1 = Math.abs;\n\nfunction toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds;\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n return (total < 0 ? '-' : '') +\n 'P' +\n (Y ? Y + 'Y' : '') +\n (M ? M + 'M' : '') +\n (D ? D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? h + 'H' : '') +\n (m ? m + 'M' : '') +\n (s ? s + 'S' : '');\n}\n\nvar proto$2 = Duration.prototype;\n\nproto$2.isValid = isValid$1;\nproto$2.abs = abs;\nproto$2.add = add$1;\nproto$2.subtract = subtract$1;\nproto$2.as = as;\nproto$2.asMilliseconds = asMilliseconds;\nproto$2.asSeconds = asSeconds;\nproto$2.asMinutes = asMinutes;\nproto$2.asHours = asHours;\nproto$2.asDays = asDays;\nproto$2.asWeeks = asWeeks;\nproto$2.asMonths = asMonths;\nproto$2.asYears = asYears;\nproto$2.valueOf = valueOf$1;\nproto$2._bubble = bubble;\nproto$2.get = get$2;\nproto$2.milliseconds = milliseconds;\nproto$2.seconds = seconds;\nproto$2.minutes = minutes;\nproto$2.hours = hours;\nproto$2.days = days;\nproto$2.weeks = weeks;\nproto$2.months = months;\nproto$2.years = years;\nproto$2.humanize = humanize;\nproto$2.toISOString = toISOString$1;\nproto$2.toString = toISOString$1;\nproto$2.toJSON = toISOString$1;\nproto$2.locale = locale;\nproto$2.localeData = localeData;\n\n// Deprecations\nproto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\nproto$2.lang = lang;\n\n// Side effect imports\n\n// FORMATTING\n\naddFormatToken('X', 0, 0, 'unix');\naddFormatToken('x', 0, 0, 'valueOf');\n\n// PARSING\n\naddRegexToken('x', matchSigned);\naddRegexToken('X', matchTimestamp);\naddParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n});\naddParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n});\n\n// Side effect imports\n\n\nhooks.version = '2.18.1';\n\nsetHookCallback(createLocal);\n\nhooks.fn = proto;\nhooks.min = min;\nhooks.max = max;\nhooks.now = now;\nhooks.utc = createUTC;\nhooks.unix = createUnix;\nhooks.months = listMonths;\nhooks.isDate = isDate;\nhooks.locale = getSetGlobalLocale;\nhooks.invalid = createInvalid;\nhooks.duration = createDuration;\nhooks.isMoment = isMoment;\nhooks.weekdays = listWeekdays;\nhooks.parseZone = createInZone;\nhooks.localeData = getLocale;\nhooks.isDuration = isDuration;\nhooks.monthsShort = listMonthsShort;\nhooks.weekdaysMin = listWeekdaysMin;\nhooks.defineLocale = defineLocale;\nhooks.updateLocale = updateLocale;\nhooks.locales = listLocales;\nhooks.weekdaysShort = listWeekdaysShort;\nhooks.normalizeUnits = normalizeUnits;\nhooks.relativeTimeRounding = getSetRelativeTimeRounding;\nhooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\nhooks.calendarFormat = getCalendarFormat;\nhooks.prototype = proto;\n\nreturn hooks;\n\n})));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(264)(module)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/moment.js\n ** module id = 1\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/moment.js?"); },,function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/invariant.js\n ** module id = 3\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/invariant.js?")},function(module,exports){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/Object.assign.js\n ** module id = 4\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/Object.assign.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = __webpack_require__(78);\nvar ReactCurrentOwner = __webpack_require__(19);\n\nvar assign = __webpack_require__(4);\nvar warning = __webpack_require__(6);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n ( false ? warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n ) : null);\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (false) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (false) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. <Foo />.type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (false) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactElement.js\n ** module id = 5\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactElement.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = __webpack_require__(23);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (false) {\n warning = function(condition, format ) {for (var args=[],$__0=2,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function() {return args[argIndex++];});\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/warning.js\n ** module id = 6\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/warning.js?")},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = mixinComponent;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsBind = __webpack_require__(62);\n\nvar _lodashAmdModernFunctionsBind2 = _interopRequireDefault(_lodashAmdModernFunctionsBind);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\n// Ensure all components also have eventing.\n\nvar _events = __webpack_require__(295);\n\nvar _events2 = _interopRequireDefault(_events);\n\n/**\n * Sets up the Component instance with consistent defaults.\n *\n * @param {Object} $el - A jQuery object.\n */\nvar initializeAsComponent = function initializeAsComponent($el) {\n\tvar component = this;\n\n\t// Cache this element for later use.\n\tcomponent.$el = $el;\n\n\t// Provide a convenient scoped lookup function.\n\tcomponent.$ = function () {\n\t\treturn component.$el.find.apply(component.$el, arguments);\n\t};\n\n\t// Shorthand data access.\n\tcomponent.dataset = $el.data();\n\n\t// Store this component instance inside the element\'s data.\n\t$el.data("component", component);\n\n\tbindEvents(this.events, $el);\n\tbindEvents(this.globalEvents, (0, _jquery2["default"])("body"));\n\n\tfunction bindEvents(eventList, context) {\n\t\t(0, _lodashAmdModernCollectionsForEach2["default"])(eventList, function (fn, eventAndSelector) {\n\t\t\tvar parts = eventAndSelector.split(" ");\n\t\t\tvar event = parts[0];\n\t\t\tvar selector = parts.slice(1).join(" ");\n\n\t\t\tcontext.on(event, selector, (0, _lodashAmdModernFunctionsBind2["default"])(component[fn], component));\n\t\t});\n\t}\n};\n\n/**\n * Activate a component with a given DOM node.\n *\n * @param {Object} el - A DOM node.\n *\n * @return {Object} An instance of the Component being activated.\n */\nvar activate = function activate(el) {\n\treturn new this((0, _jquery2["default"])(el));\n};\n\n/**\n * Activates all matching elements on the page.\n *\n * @param {*} context - A valid value that can be passed to jQuery.\n * @returns {Object} jQuery collection of elements.\n */\nvar activateAll = function activateAll(context) {\n\t// Ensure the activate method know\'s about this constructor.\n\tvar activateThis = (0, _lodashAmdModernFunctionsBind2["default"])(function (index, element) {\n\t\tthis.activate(element);\n\t}, this);\n\n\t// Automatically render the existing set of elements.\n\treturn (0, _jquery2["default"])(this.selector, context || document).each(activateThis);\n};\n\n/**\n * Add the activation methods and update the prototype chain.\n *\n * @param {Function} Component - A Component constructor.\n * @param {string} selector - An optional selector to set.\n */\n\nfunction mixinComponent(Component, selector) {\n\tComponent.activate = activate;\n\tComponent.activateAll = activateAll;\n\tComponent.selector = selector;\n\n\tComponent.prototype.initializeAsComponent = initializeAsComponent;\n\n\t// Ensure components have events.\n\t(0, _events2["default"])(Component.prototype);\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/mixins/component.js\n ** module id = 7\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/mixins/component.js?')},,function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n\"use strict\";\n\nvar canUseDOM = !!(\n (typeof window !== 'undefined' &&\n window.document && window.document.createElement)\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ExecutionEnvironment.js\n ** module id = 9\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ExecutionEnvironment.js?")},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsBind = __webpack_require__(62);\n\nvar _lodashAmdModernFunctionsBind2 = _interopRequireDefault(_lodashAmdModernFunctionsBind);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\n//import historyService from "./history";\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\n/**\n * Supported HBR Services\n */\nvar hbrServices = {\n\tshared: __webpack_require__(306),\n\tsaved: __webpack_require__(304),\n\ttopic: __webpack_require__(299),\n\tnewsletter: __webpack_require__(307),\n\tlists: __webpack_require__(302),\n\tlistItem: __webpack_require__(300),\n\tlistUrl: __webpack_require__(301),\n\tsearchFilter: __webpack_require__(305),\n\tarticle: __webpack_require__(296),\n\tcart: __webpack_require__(298),\n\tattributes: __webpack_require__(297),\n\tmigrate: __webpack_require__(303)\n};\n\n/**\n * Make an activity request respective to the type and track history.\n *\n * @param {string} activity - A string notifiying the activity type.\n * @param {string} method - An optional string indicating the HTTP verb.\n * @param {object} contentObject - A normalized object to transmit.\n * @returns {object} A promise that resolves from post and history success.\n */\nexports.request = function (activity, method, contentObject) {\n\tvar service = hbrServices[activity];\n\n\t// Shift arguments if the method isn\'t provided.\n\tif (typeof method !== "string") {\n\t\tcontentObject = method;\n\t\tmethod = "post";\n\t}\n\n\tif (!service) {\n\t\tthrow new Error("Unsupported activity: " + activity);\n\t}\n\n\t// Get the URI to post to, passing the contentObject to inform activities.\n\tvar uri = _jquery2["default"].isFunction(service.getURI) && service.getURI(contentObject);\n\n\t// Use either the post provided to the service or make a custom call using\n\t// the provided URI. If the URI provided is incorrect the server will\n\t// fail helping narrow down the origin of bugs.\n\tvar requestMethod = method || "post";\n\tvar req = _jquery2["default"].isFunction(service[method]) ? service[method] : (0, _lodashAmdModernFunctionsBind2["default"])(_request2["default"].ajax, this, requestMethod, uri);\n\n\tif (!_modelsUser2["default"].isGuest() && _jquery2["default"].isFunction(service.trackHistory) && method === "post") {\n\t\t// contentObject may be modified, so clone it before sending to track history\n\t\tservice.trackHistory(_jquery2["default"].extend({}, contentObject));\n\t}\n\t// track interaction with history for non-gets\n\treturn req(contentObject);\n};\n\n/**\n* function that will count the number of stream contents in order\n* to see if there are any stream content within a section\n*\n* @param {object} element - jQuery object of the stream item\n*\n* @return {number} number of siblings of the stream item\n*/\nexports.streamContentCount = function (element) {\n\treturn (0, _jquery2["default"])(element).siblings(".stream-entry").length;\n};\n\n/**\n* function that will hide the stream-section-label, if there are\n* no stream items within the stream section\n*\n* @param {object} element - element to be inspected for sibling content\n*\n*/\nexports.hideStreamLabel = function (element) {\n\tif (this.streamContentCount(element) === 0) {\n\t\t(0, _jquery2["default"])(element).siblings(".stream-section-label").hide();\n\t}\n\n\treturn this;\n};\n/**\n * linkSocialProvider\n * @param {String} provider\n */\nexports.linkSocialNetwork = hbrServices.shared.linkSocialProvider;\n\n/**\n * unlinkSocialProvider\n * @param {String} provider\n */\nexports.unlinkSocialNetwork = hbrServices.shared.unlinkSocialProvider;\n\n/**\n * checkSocialLogin\n * @param {String} provider\n */\nexports.checkSocialLogin = hbrServices.shared.checkSocialLogin;\n\nexports.notifyLogin = hbrServices.shared.notifyLogin;\n\nexports.notifyLogout = hbrServices.shared.notifyLogout;\n\nexports.getConnections = hbrServices.shared.getConnections;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/interaction.js\n ** module id = 10\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/interaction.js?')},,function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nexports.ajax = function (method, uri, data) {\n\treturn _jquery2["default"].ajax({\n\t\ttype: method,\n\t\tdataType: "json",\n\t\tcontentType: "application/json",\n\t\tdata: JSON.stringify(data),\n\t\turl: uri\n\t}).promise();\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/request.js\n ** module id = 12\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/request.js?')},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventConstants\n */\n\n'use strict';\n\nvar keyMirror = __webpack_require__(47);\n\nvar PropagationPhases = keyMirror({bubbled: null, captured: null});\n\n/**\n * Types of raw signals from the browser caught at the top level.\n */\nvar topLevelTypes = keyMirror({\n topBlur: null,\n topChange: null,\n topClick: null,\n topCompositionEnd: null,\n topCompositionStart: null,\n topCompositionUpdate: null,\n topContextMenu: null,\n topCopy: null,\n topCut: null,\n topDoubleClick: null,\n topDrag: null,\n topDragEnd: null,\n topDragEnter: null,\n topDragExit: null,\n topDragLeave: null,\n topDragOver: null,\n topDragStart: null,\n topDrop: null,\n topError: null,\n topFocus: null,\n topInput: null,\n topKeyDown: null,\n topKeyPress: null,\n topKeyUp: null,\n topLoad: null,\n topMouseDown: null,\n topMouseMove: null,\n topMouseOut: null,\n topMouseOver: null,\n topMouseUp: null,\n topPaste: null,\n topReset: null,\n topScroll: null,\n topSelectionChange: null,\n topSubmit: null,\n topTextInput: null,\n topTouchCancel: null,\n topTouchEnd: null,\n topTouchMove: null,\n topTouchStart: null,\n topWheel: null\n});\n\nvar EventConstants = {\n topLevelTypes: topLevelTypes,\n PropagationPhases: PropagationPhases\n};\n\nmodule.exports = EventConstants;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventConstants.js\n ** module id = 13\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventConstants.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactClass\n */\n\n'use strict';\n\nvar ReactComponent = __webpack_require__(240);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactElement = __webpack_require__(5);\nvar ReactErrorUtils = __webpack_require__(359);\nvar ReactInstanceMap = __webpack_require__(37);\nvar ReactLifeCycle = __webpack_require__(81);\nvar ReactPropTypeLocations = __webpack_require__(82);\nvar ReactPropTypeLocationNames = __webpack_require__(55);\nvar ReactUpdateQueue = __webpack_require__(83);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\nvar keyMirror = __webpack_require__(47);\nvar keyOf = __webpack_require__(24);\nvar warning = __webpack_require__(6);\n\nvar MIXINS_KEY = keyOf({mixins: null});\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\nvar SpecPolicy = keyMirror({\n /**\n * These methods may be defined only once by the class specification or mixin.\n */\n DEFINE_ONCE: null,\n /**\n * These methods may be defined by both the class specification and mixins.\n * Subsequent definitions will be chained. These methods must return void.\n */\n DEFINE_MANY: null,\n /**\n * These methods are overriding the base class.\n */\n OVERRIDE_BASE: null,\n /**\n * These methods are similar to DEFINE_MANY, except we assume they return\n * objects. We try to merge the keys of the return values of all the mixed in\n * functions. If there is a key conflict we throw.\n */\n DEFINE_MANY_MERGED: null\n});\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or native components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (false) {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n }\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (false) {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n }\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (false) {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n }\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but not in __DEV__\n ( false ? warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n ) : null);\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ?\n ReactClassInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n ( false ? invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n ) : invariant(specPolicy === SpecPolicy.OVERRIDE_BASE));\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n ( false ? invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n ) : invariant(specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED));\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n ( false ? invariant(\n typeof spec !== 'function',\n 'ReactClass: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n ) : invariant(typeof spec !== 'function'));\n ( false ? invariant(\n !ReactElement.isValidElement(spec),\n 'ReactClass: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n ) : invariant(!ReactElement.isValidElement(spec)));\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod =\n ReactClassInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n ( false ? invariant(\n isReactClassMethod && (\n (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)\n ),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n ) : invariant(isReactClassMethod && (\n (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)\n )));\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (false) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n ( false ? invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n ) : invariant(!isReserved));\n\n var isInherited = name in Constructor;\n ( false ? invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n ) : invariant(!isInherited));\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n ( false ? invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n ) : invariant(one && two && typeof one === 'object' && typeof two === 'object'));\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n ( false ? invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n ) : invariant(one[key] === undefined));\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (false) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n /* eslint-disable block-scoped-var, no-undef */\n boundMethod.bind = function(newThis ) {for (var args=[],$__0=1,$__1=arguments.length;$__0<$__1;$__0++) args.push(arguments[$__0]);\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n ) : null);\n } else if (!args.length) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n ) : null);\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n /* eslint-enable */\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n for (var autoBindKey in component.__reactAutoBindMap) {\n if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n var method = component.__reactAutoBindMap[autoBindKey];\n component[autoBindKey] = bindAutoBindMethod(\n component,\n ReactErrorUtils.guard(\n method,\n component.constructor.displayName + '.' + autoBindKey\n )\n );\n }\n }\n}\n\nvar typeDeprecationDescriptor = {\n enumerable: false,\n get: function() {\n var displayName = this.displayName || this.name || 'Component';\n ( false ? warning(\n false,\n '%s.type is deprecated. Use %s directly to access the class.',\n displayName,\n displayName\n ) : null);\n Object.defineProperty(this, 'type', {\n value: this\n });\n return this;\n }\n};\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n ReactUpdateQueue.enqueueReplaceState(this, newState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing isMounted inside its render() function. ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n ) : null);\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(this);\n return (\n internalInstance &&\n internalInstance !== ReactLifeCycle.currentlyMountingInstance\n );\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n setProps: function(partialProps, callback) {\n ReactUpdateQueue.enqueueSetProps(this, partialProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Replace all the props.\n *\n * @param {object} newProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n replaceProps: function(newProps, callback) {\n ReactUpdateQueue.enqueueReplaceProps(this, newProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n }\n};\n\nvar ReactClassComponent = function() {};\nassign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props, context) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n ) : null);\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindMap) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof initialState === 'undefined' &&\n this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n ( false ? invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n ) : invariant(typeof initialState === 'object' && !Array.isArray(initialState)));\n\n this.state = initialState;\n };\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (false) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n ( false ? invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n ) : invariant(Constructor.prototype.render));\n\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n ) : null);\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n // Legacy hook\n Constructor.type = Constructor;\n if (false) {\n try {\n Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactClass.js\n ** module id = 14\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactClass.js?"); },function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _moment = __webpack_require__(1);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n// Services\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _servicesHbrInteraction3 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\nvar _modelsSubscriber = __webpack_require__(284);\n\nvar _modelsSubscriber2 = _interopRequireDefault(_modelsSubscriber);\n\n// modified date time format\nvar MODIFIED_DATE_TIME_FORMAT = "dd, DD MMM YYYY HH:mm:ss ZZ";\n\nvar USER_STATUS = {\n\tGUEST: "guest",\n\tREGISTERED: "registered",\n\tSUBSCRIBER: "subscribers"\n};\n\n// Default user state for guests\nvar userProfile = {\n\tid: null,\n\tguid: null,\n\tfirstName: null,\n\tlastName: null,\n\tdisplayName: null,\n\temailAddress: null,\n\ttopics: [],\n\tnewsletters: [],\n\tviewed: [],\n\tquota: {\n\t\tlimit: 4,\n\t\tcount: 0,\n\t\tremaining: 4\n\t},\n\tcreatedDate: null,\n\tlastUpdatedDate: null,\n\tlastVisitDate: null,\n\tsubscriber: null,\n\tstatus: USER_STATUS.GUEST,\n\tstate: "guest"\n};\n\n// Resolved once the user has successfully logged in.\nvar userAuthDeferred = _jquery2["default"].Deferred();\n\nexports.setQuota = function (quota) {\n\tuserProfile.quota = quota;\n};\n\n/**\n * getStatus\n * Helper method used by exported methods\n * @returns {*}\n */\nfunction getStatus() {\n\treturn userProfile.status;\n}\n\nexports.isRegistered = function () {\n\treturn getStatus() === USER_STATUS.REGISTERED;\n};\n\nexports.isSubscriber = function () {\n\treturn getStatus() === USER_STATUS.SUBSCRIBER;\n};\n\nexports.isGuest = function () {\n\treturn getStatus() === USER_STATUS.GUEST;\n};\n\nexports.getId = function () {\n\treturn userProfile.guid;\n};\n\nexports.getEmail = function () {\n\treturn userProfile.emailAddress;\n};\n\nexports.getFirstName = function () {\n\treturn userProfile.firstName;\n};\n\nexports.getLastName = function () {\n\treturn userProfile.lastName;\n};\n\nexports.getFullName = function () {\n\treturn userProfile.displayName;\n};\n\nexports.getQuotaLimit = function () {\n\treturn userProfile.quota.limit;\n};\n\nexports.getQuotaProgress = function () {\n\treturn userProfile.quota.count;\n};\n\nexports.getQuotaRemaining = function () {\n\treturn userProfile.quota.remaining;\n};\n\n/**\n * getFollowingUnread\n * Returns the number of unread items in the users "following" queue\n */\nexports.getFollowingUnread = function () {\n\treturn 0;\n};\n\nexports.getFollowing = function () {\n\treturn userProfile.topics.map(function (topic) {\n\t\treturn topic.name;\n\t});\n};\n\nexports.getNewsletters = function () {\n\treturn userProfile.newsletters.map(function (newsletter) {\n\t\treturn newsletter.name;\n\t});\n};\n\nexports.getSubscriberId = function () {\n\tif (userProfile.subscriber) {\n\t\treturn userProfile.subscriber.digest;\n\t}\n\treturn null;\n};\n\n/**\n * Authenticate a user.\n *\n * @param {String} username - The username of the user.\n * @param {String} password - The password of the user.\n * @returns {object} A promise resolving when the login completes.\n */\nexports.authenticate = function (username, password) {\n\tvar dfd = _jquery2["default"].Deferred();\n\n\t// Log in the user and fetch the user object.\n\t_servicesAuth2["default"].login(username, password).then(function (response) {\n\t\trefreshUser().then(function () {\n\t\t\t_servicesHbrInteraction2["default"].notifyLogin().then(function () {\n\t\t\t\tdfd.resolve(response);\n\t\t\t}, function (errorResp) {\n\t\t\t\tconsole.log("Error while gigya login: " + errorResp.errorCode);\n\t\t\t\tdfd.resolve(response);\n\t\t\t});\n\t\t\t(0, _jquery2["default"])("body").trigger("sign-in:success");\n\t\t});\n\t}, function (response) {\n\t\tdfd.reject(response);\n\t});\n\n\treturn dfd;\n};\n\n/**\n * Log out a user.\n *\n * @returns {object} A promise resolving when the logout completes.\n */\nexports.logout = function () {\n\t_servicesLocalstorageUtil2["default"].removeCache("user");\n\t_servicesHbrInteraction2["default"].notifyLogout();\n\t_servicesAuth2["default"].logoutRedirect();\n};\n\n/**\n * update - Updates the user\n * @param {string} attrs - data to update\n * @returns {promise.<object, Error>} - Promise with the updated user\n */\nexports.update = function (attrs) {\n\treturn _servicesAuth2["default"].updateUser(attrs).then(saveAndNotify);\n};\n\nexports.register = function (attrs) {\n\tvar promise = _jquery2["default"].Deferred();\n\t_modelsSubscriber2["default"].fetch(attrs.emailAddress, null).then(function () {\n\t\tvar encodedEmailAddress = btoa(attrs.emailAddress);\n\t\twindow.location = "/subscriber-registration?emailAddress=" + encodeURIComponent(encodedEmailAddress);\n\t}, function () {\n\t\t_servicesAuth2["default"].createNewUser(attrs).then(function (user) {\n\t\t\tuser.id = user.guid;\n\t\t\tsaveAndNotify(user);\n\t\t\t_servicesHbrInteraction3["default"].notifyLogin(true).then(function (resp) {\n\t\t\t\tpromise.resolve(user);\n\t\t\t}, function (error) {\n\t\t\t\tpromise.resolve(user);\n\t\t\t});\n\t\t}, function (res) {\n\t\t\tpromise.reject(JSON.parse(res.responseText));\n\t\t});\n\t});\n\treturn promise;\n};\n\nexports.paywallRegister = function (attrs) {\n\tvar promise = _jquery2["default"].Deferred();\n\t_servicesAuth2["default"].createNewUser(attrs).then(function (user) {\n\t\tuser.id = user.guid;\n\t\tsaveAndNotify(user);\n\t\t_servicesHbrInteraction3["default"].notifyLogin(true).then(function (resp) {\n\t\t\tpromise.resolve(user);\n\t\t}, function (error) {\n\t\t\tpromise.resolve(user);\n\t\t});\n\t}, function (res) {\n\t\tpromise.reject(res);\n\t});\n\n\treturn promise;\n};\n\n/**\n * fetch\n * Fetches the user model from the server or the localStorage.\n * @returns {promise.<object, Error>} - A promise with the user\n * profile attached.\n */\nexports.fetch = refreshUser;\n\n/**\n * getUpdatedUser\n * Fetches the user model from the server\n * @returns {promise.<object, Error>} - A promise with the user\n * profile attached.\n */\nfunction getUpdatedUser() {\n\treturn _servicesAuth2["default"].getUser().then(function (user) {\n\t\treturn saveAndNotify(user);\n\t});\n}\n\n/**\n * fetchUpdated\n * Fetches the user model from the server.\n * @returns {promise.<object, Error>} - A promise with the user\n * profile attached.\n */\nexports.fetchUpdated = getUpdatedUser;\n\n/**\n * refreshUser\n * Fetches the user model, either from the server or localStorage\n * @returns {promise.<object, Error>} - A promise with the user\n * profile attached.\n */\nfunction refreshUser() {\n\t// check local storage\n\tvar localStorageUser = _servicesLocalstorageUtil2["default"].getCache("user");\n\tif (localStorageUser) {\n\t\t// return the promise from the modified query\n\t\treturn _servicesAuth2["default"].getUserModifiedTime().then(function (modifiedTime) {\n\t\t\tvar userModified = (0, _moment2["default"])(modifiedTime, MODIFIED_DATE_TIME_FORMAT);\n\t\t\tvar savedProfileModified = (0, _moment2["default"])(localStorageUser.lastModified, MODIFIED_DATE_TIME_FORMAT);\n\n\t\t\t// compare the dates, if the local storage one is good\n\t\t\t// return the local copy.\n\t\t\tif (savedProfileModified.isSame(userModified)) {\n\t\t\t\treturn saveAndNotify(localStorageUser);\n\t\t\t} else {\n\t\t\t\t// get the user from the service\n\t\t\t\treturn getUpdatedUser();\n\t\t\t}\n\t\t}, function () {\n\t\t\t// failed, remove the user from local storage\n\t\t\t_servicesLocalstorageUtil2["default"].removeCache("user");\n\n\t\t\t// return the default user profile\n\t\t\treturn userProfile;\n\t\t});\n\t} else {\n\t\t// no cached user, get it from the server\n\t\treturn getUpdatedUser();\n\t}\n}\n\n/**\n * saveAndNotify\n * @param {object} user - User Object to save and to resolve with\n * @returns {object} - Updated user object\n */\nfunction saveAndNotify(user) {\n\t// copy the common properties\n\tuserProfile.id = user.id;\n\tuserProfile.guid = user.guid;\n\tuserProfile.status = user.status;\n\tuserProfile.firstName = user.firstName;\n\tuserProfile.lastName = user.lastName;\n\tuserProfile.emailAddress = user.emailAddress;\n\tuserProfile.createdDate = new Date(user.createdDate);\n\tuserProfile.lastUpdatedDate = new Date(user.lastUpdatedDate);\n\tuserProfile.lastVisitDate = new Date(user.lastVisitDate);\n\tuserProfile.quota = user.quota;\n\tuserProfile.displayName = user.displayName;\n\tuserProfile.username = user.username;\n\tuserProfile.subscriber = user.subscriber;\n\tuserProfile.state = user.state;\n\n\t// map over the topics, newsletters if they exist, they are optional\n\tif (_jquery2["default"].isArray(user.topics)) {\n\t\tuserProfile.topics = user.topics;\n\t}\n\tif (_jquery2["default"].isArray(user.newsletters)) {\n\t\tuserProfile.newsletters = user.newsletters;\n\t}\n\n\t// save the user\n\t_servicesLocalstorageUtil2["default"].setCache("user", userProfile);\n\n\t// update the state\n\t_servicesState2["default"].set(userProfile.state);\n\n\t// resolve any login promise callbacks\n\tuserAuthDeferred.resolve(userProfile);\n\treturn userProfile;\n}\n\n/**\n * Determine if a user is authenticated.\n *\n * @return {boolean} Whether or not the user is logged in.\n */\nexports.isAuthenticated = function () {\n\treturn userAuthDeferred.state() === "resolved";\n};\n\nexports.authPromise = userAuthDeferred.promise();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/models/user.js\n ** module id = 15\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/models/user.js?')},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdates\n */\n\n'use strict';\n\nvar CallbackQueue = __webpack_require__(72);\nvar PooledClass = __webpack_require__(17);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactPerf = __webpack_require__(28);\nvar ReactReconciler = __webpack_require__(38);\nvar Transaction = __webpack_require__(57);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\nvar dirtyComponents = [];\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n ( false ? invariant(\n ReactUpdates.ReactReconcileTransaction && batchingStrategy,\n 'ReactUpdates: must inject a reconcile transaction class and batching ' +\n 'strategy'\n ) : invariant(ReactUpdates.ReactReconcileTransaction && batchingStrategy));\n}\n\nvar NESTED_UPDATES = {\n initialize: function() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function() {\n this.callbackQueue.reset();\n },\n close: function() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction =\n ReactUpdates.ReactReconcileTransaction.getPooled();\n}\n\nassign(\n ReactUpdatesFlushTransaction.prototype,\n Transaction.Mixin, {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.Mixin.perform.call(\n this,\n this.reconcileTransaction.perform,\n this.reconcileTransaction,\n method,\n scope,\n a\n );\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d) {\n ensureInjected();\n batchingStrategy.batchedUpdates(callback, a, b, c, d);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n ( false ? invariant(\n len === dirtyComponents.length,\n 'Expected flush transaction\\'s stored dirty-components length (%s) to ' +\n 'match dirty-components array length (%s).',\n len,\n dirtyComponents.length\n ) : invariant(len === dirtyComponents.length));\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n ReactReconciler.performUpdateIfNecessary(\n component,\n transaction.reconcileTransaction\n );\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(\n callbacks[j],\n component.getPublicInstance()\n );\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\nflushBatchedUpdates = ReactPerf.measure(\n 'ReactUpdates',\n 'flushBatchedUpdates',\n flushBatchedUpdates\n);\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setProps, setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n ( false ? warning(\n ReactCurrentOwner.current == null,\n 'enqueueUpdate(): Render methods should be a pure function of props ' +\n 'and state; triggering nested component updates from render is not ' +\n 'allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n ) : null);\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n ( false ? invariant(\n batchingStrategy.isBatchingUpdates,\n 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' +\n 'updates are not being batched.'\n ) : invariant(batchingStrategy.isBatchingUpdates));\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function(ReconcileTransaction) {\n ( false ? invariant(\n ReconcileTransaction,\n 'ReactUpdates: must provide a reconcile transaction class'\n ) : invariant(ReconcileTransaction));\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function(_batchingStrategy) {\n ( false ? invariant(\n _batchingStrategy,\n 'ReactUpdates: must provide a batching strategy'\n ) : invariant(_batchingStrategy));\n ( false ? invariant(\n typeof _batchingStrategy.batchedUpdates === 'function',\n 'ReactUpdates: must provide a batchedUpdates() function'\n ) : invariant(typeof _batchingStrategy.batchedUpdates === 'function'));\n ( false ? invariant(\n typeof _batchingStrategy.isBatchingUpdates === 'boolean',\n 'ReactUpdates: must provide an isBatchingUpdates boolean attribute'\n ) : invariant(typeof _batchingStrategy.isBatchingUpdates === 'boolean'));\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactUpdates.js\n ** module id = 16\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactUpdates.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PooledClass\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fiveArgumentPooler = function(a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function(instance) {\n var Klass = this;\n ( false ? invariant(\n instance instanceof Klass,\n 'Trying to release an instance into a pool of a different type.'\n ) : invariant(instance instanceof Klass));\n if (instance.destructor) {\n instance.destructor();\n }\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances (optional).\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function(CopyConstructor, pooler) {\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/PooledClass.js\n ** module id = 17\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/PooledClass.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserComponentMixin\n */\n\n'use strict';\n\nvar findDOMNode = __webpack_require__(251);\n\nvar ReactBrowserComponentMixin = {\n /**\n * Returns the DOM node rendered by this component.\n *\n * @return {DOMElement} The root node of this component.\n * @final\n * @protected\n */\n getDOMNode: function() {\n return findDOMNode(this);\n }\n};\n\nmodule.exports = ReactBrowserComponentMixin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactBrowserComponentMixin.js\n ** module id = 18\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactBrowserComponentMixin.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactCurrentOwner.js\n ** module id = 19\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactCurrentOwner.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMount\n */\n\n'use strict';\n\nvar DOMProperty = __webpack_require__(34);\nvar ReactBrowserEventEmitter = __webpack_require__(35);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactElement = __webpack_require__(5);\nvar ReactElementValidator = __webpack_require__(45);\nvar ReactEmptyComponent = __webpack_require__(80);\nvar ReactInstanceHandles = __webpack_require__(36);\nvar ReactInstanceMap = __webpack_require__(37);\nvar ReactMarkupChecksum = __webpack_require__(244);\nvar ReactPerf = __webpack_require__(28);\nvar ReactReconciler = __webpack_require__(38);\nvar ReactUpdateQueue = __webpack_require__(83);\nvar ReactUpdates = __webpack_require__(16);\n\nvar emptyObject = __webpack_require__(58);\nvar containsNode = __webpack_require__(250);\nvar getReactRootElementInContainer = __webpack_require__(391);\nvar instantiateReactComponent = __webpack_require__(89);\nvar invariant = __webpack_require__(3);\nvar setInnerHTML = __webpack_require__(91);\nvar shouldUpdateReactComponent = __webpack_require__(92);\nvar warning = __webpack_require__(6);\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache = {};\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\n\n/** Mapping from reactRootID to React component instance. */\nvar instancesByReactRootID = {};\n\n/** Mapping from reactRootID to `container` nodes. */\nvar containersByReactRootID = {};\n\nif (false) {\n /** __DEV__-only mapping from reactRootID to root elements. */\n var rootElementsByReactRootID = {};\n}\n\n// Used to store breadth-first search state in findComponentRoot.\nvar findComponentRootReusableArray = [];\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement} container DOM element that may contain a React component.\n * @return {?string} A \"reactRoot\" ID, if a React component is rendered.\n */\nfunction getReactRootID(container) {\n var rootElement = getReactRootElementInContainer(container);\n return rootElement && ReactMount.getID(rootElement);\n}\n\n/**\n * Accessing node[ATTR_NAME] or calling getAttribute(ATTR_NAME) on a form\n * element can return its control whose name or ID equals ATTR_NAME. All\n * DOM nodes support `getAttributeNode` but this can also get called on\n * other objects so just return '' if we're given something other than a\n * DOM node (such as window).\n *\n * @param {?DOMElement|DOMWindow|DOMDocument|DOMTextNode} node DOM node.\n * @return {string} ID of the supplied `domNode`.\n */\nfunction getID(node) {\n var id = internalGetID(node);\n if (id) {\n if (nodeCache.hasOwnProperty(id)) {\n var cached = nodeCache[id];\n if (cached !== node) {\n ( false ? invariant(\n !isValid(cached, id),\n 'ReactMount: Two valid but unequal nodes with the same `%s`: %s',\n ATTR_NAME, id\n ) : invariant(!isValid(cached, id)));\n\n nodeCache[id] = node;\n }\n } else {\n nodeCache[id] = node;\n }\n }\n\n return id;\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Sets the React-specific ID of the given node.\n *\n * @param {DOMElement} node The DOM node whose ID will be set.\n * @param {string} id The value of the ID attribute.\n */\nfunction setID(node, id) {\n var oldID = internalGetID(node);\n if (oldID !== id) {\n delete nodeCache[oldID];\n }\n node.setAttribute(ATTR_NAME, id);\n nodeCache[id] = node;\n}\n\n/**\n * Finds the node with the supplied React-generated DOM ID.\n *\n * @param {string} id A React-generated DOM ID.\n * @return {DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNode(id) {\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * Finds the node with the supplied public React instance.\n *\n * @param {*} instance A public React instance.\n * @return {?DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNodeFromInstance(instance) {\n var id = ReactInstanceMap.get(instance)._rootNodeID;\n if (ReactEmptyComponent.isNullComponentID(id)) {\n return null;\n }\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * A node is \"valid\" if it is contained by a currently mounted container.\n *\n * This means that the node does not have to be contained by a document in\n * order to be considered valid.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @param {string} id The expected ID of the node.\n * @return {boolean} Whether the node is contained by a mounted container.\n */\nfunction isValid(node, id) {\n if (node) {\n ( false ? invariant(\n internalGetID(node) === id,\n 'ReactMount: Unexpected modification of `%s`',\n ATTR_NAME\n ) : invariant(internalGetID(node) === id));\n\n var container = ReactMount.findReactContainerForID(id);\n if (container && containsNode(container, node)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Causes the cache to forget about one React-specific ID.\n *\n * @param {string} id The ID to forget.\n */\nfunction purgeID(id) {\n delete nodeCache[id];\n}\n\nvar deepestNodeSoFar = null;\nfunction findDeepestCachedAncestorImpl(ancestorID) {\n var ancestor = nodeCache[ancestorID];\n if (ancestor && isValid(ancestor, ancestorID)) {\n deepestNodeSoFar = ancestor;\n } else {\n // This node isn't populated in the cache, so presumably none of its\n // descendants are. Break out of the loop.\n return false;\n }\n}\n\n/**\n * Return the deepest cached node whose ID is a prefix of `targetID`.\n */\nfunction findDeepestCachedAncestor(targetID) {\n deepestNodeSoFar = null;\n ReactInstanceHandles.traverseAncestors(\n targetID,\n findDeepestCachedAncestorImpl\n );\n\n var foundNode = deepestNodeSoFar;\n deepestNodeSoFar = null;\n return foundNode;\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactMount._mountImageIntoNode(markup, container, shouldReuseMarkup);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n shouldReuseMarkup) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n /** Exposed for debugging purposes **/\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function(\n prevComponent,\n nextElement,\n container,\n callback) {\n if (false) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n ReactMount.scrollMonitor(container, function() {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n if (false) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[getReactRootID(container)] =\n getReactRootElementInContainer(container);\n }\n\n return prevComponent;\n },\n\n /**\n * Register a component into the instance map and starts scroll value\n * monitoring\n * @param {ReactComponent} nextComponent component instance to render\n * @param {DOMElement} container container to render into\n * @return {string} reactRoot ID prefix\n */\n _registerComponent: function(nextComponent, container) {\n ( false ? invariant(\n container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n ),\n '_registerComponent(...): Target container is not a DOM element.'\n ) : invariant(container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n )));\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\n var reactRootID = ReactMount.registerContainer(container);\n instancesByReactRootID[reactRootID] = nextComponent;\n return reactRootID;\n },\n\n /**\n * Render a new component into the DOM.\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function(\n nextElement,\n container,\n shouldReuseMarkup\n ) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n ( false ? warning(\n ReactCurrentOwner.current == null,\n '_renderNewRootComponent(): Render methods should be a pure function ' +\n 'of props and state; triggering nested component updates from ' +\n 'render is not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n ) : null);\n\n var componentInstance = instantiateReactComponent(nextElement, null);\n var reactRootID = ReactMount._registerComponent(\n componentInstance,\n container\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n componentInstance,\n reactRootID,\n container,\n shouldReuseMarkup\n );\n\n if (false) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[reactRootID] =\n getReactRootElementInContainer(container);\n }\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function(nextElement, container, callback) {\n ( false ? invariant(\n ReactElement.isValidElement(nextElement),\n 'React.render(): Invalid component element.%s',\n (\n typeof nextElement === 'string' ?\n ' Instead of passing an element string, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n typeof nextElement === 'function' ?\n ' Instead of passing a component class, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ?\n ' This may be caused by unintentionally loading two independent ' +\n 'copies of React.' :\n ''\n )\n ) : invariant(ReactElement.isValidElement(nextElement)));\n\n var prevComponent = instancesByReactRootID[getReactRootID(container)];\n\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n return ReactMount._updateRootComponent(\n prevComponent,\n nextElement,\n container,\n callback\n ).getPublicInstance();\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup =\n reactRootElement && ReactMount.isRenderedByReact(reactRootElement);\n\n if (false) {\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (ReactMount.isRenderedByReact(rootElementSibling)) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'render(): Target node has markup rendered by React, but there ' +\n 'are unrelated nodes as well. This is most commonly caused by ' +\n 'white-space inserted around server-rendered markup.'\n ) : null);\n break;\n }\n\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent;\n\n var component = ReactMount._renderNewRootComponent(\n nextElement,\n container,\n shouldReuseMarkup\n ).getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into the supplied `container`.\n *\n * @param {function} constructor React component constructor.\n * @param {?object} props Initial props of the component instance.\n * @param {DOMElement} container DOM element to render into.\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n constructAndRenderComponent: function(constructor, props, container) {\n var element = ReactElement.createElement(constructor, props);\n return ReactMount.render(element, container);\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into a container node identified by supplied `id`.\n *\n * @param {function} componentConstructor React component constructor\n * @param {?object} props Initial props of the component instance.\n * @param {string} id ID of the DOM element to render into.\n * @return {ReactComponent} Component instance rendered in the container node.\n */\n constructAndRenderComponentByID: function(constructor, props, id) {\n var domNode = document.getElementById(id);\n ( false ? invariant(\n domNode,\n 'Tried to get element with id of \"%s\" but it is not present on the page.',\n id\n ) : invariant(domNode));\n return ReactMount.constructAndRenderComponent(constructor, props, domNode);\n },\n\n /**\n * Registers a container node into which React components will be rendered.\n * This also creates the \"reactRoot\" ID that will be assigned to the element\n * rendered within.\n *\n * @param {DOMElement} container DOM element to register as a container.\n * @return {string} The \"reactRoot\" ID of elements rendered within.\n */\n registerContainer: function(container) {\n var reactRootID = getReactRootID(container);\n if (reactRootID) {\n // If one exists, make sure it is a valid \"reactRoot\" ID.\n reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);\n }\n if (!reactRootID) {\n // No valid \"reactRoot\" ID found, create one.\n reactRootID = ReactInstanceHandles.createReactRootID();\n }\n containersByReactRootID[reactRootID] = container;\n return reactRootID;\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n ( false ? warning(\n ReactCurrentOwner.current == null,\n 'unmountComponentAtNode(): Render methods should be a pure function of ' +\n 'props and state; triggering nested component updates from render is ' +\n 'not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n ) : null);\n\n ( false ? invariant(\n container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n ),\n 'unmountComponentAtNode(...): Target container is not a DOM element.'\n ) : invariant(container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n )));\n\n var reactRootID = getReactRootID(container);\n var component = instancesByReactRootID[reactRootID];\n if (!component) {\n return false;\n }\n ReactMount.unmountComponentFromNode(component, container);\n delete instancesByReactRootID[reactRootID];\n delete containersByReactRootID[reactRootID];\n if (false) {\n delete rootElementsByReactRootID[reactRootID];\n }\n return true;\n },\n\n /**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(instance, container) {\n ReactReconciler.unmountComponent(instance);\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n },\n\n /**\n * Finds the container DOM element that contains React component to which the\n * supplied DOM `id` belongs.\n *\n * @param {string} id The ID of an element rendered by a React component.\n * @return {?DOMElement} DOM element that contains the `id`.\n */\n findReactContainerForID: function(id) {\n var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id);\n var container = containersByReactRootID[reactRootID];\n\n if (false) {\n var rootElement = rootElementsByReactRootID[reactRootID];\n if (rootElement && rootElement.parentNode !== container) {\n (\"production\" !== process.env.NODE_ENV ? invariant(\n // Call internalGetID here because getID calls isValid which calls\n // findReactContainerForID (this function).\n internalGetID(rootElement) === reactRootID,\n 'ReactMount: Root element ID differed from reactRootID.'\n ) : invariant(// Call internalGetID here because getID calls isValid which calls\n // findReactContainerForID (this function).\n internalGetID(rootElement) === reactRootID));\n\n var containerChild = container.firstChild;\n if (containerChild &&\n reactRootID === internalGetID(containerChild)) {\n // If the container has a new child with the same ID as the old\n // root element, then rootElementsByReactRootID[reactRootID] is\n // just stale and needs to be updated. The case that deserves a\n // warning is when the container is empty.\n rootElementsByReactRootID[reactRootID] = containerChild;\n } else {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'ReactMount: Root element has been removed from its original ' +\n 'container. New container:', rootElement.parentNode\n ) : null);\n }\n }\n }\n\n return container;\n },\n\n /**\n * Finds an element rendered by React with the supplied ID.\n *\n * @param {string} id ID of a DOM node in the React component.\n * @return {DOMElement} Root DOM node of the React component.\n */\n findReactNodeByID: function(id) {\n var reactRoot = ReactMount.findReactContainerForID(id);\n return ReactMount.findComponentRoot(reactRoot, id);\n },\n\n /**\n * True if the supplied `node` is rendered by React.\n *\n * @param {*} node DOM Element to check.\n * @return {boolean} True if the DOM Element appears to be rendered by React.\n * @internal\n */\n isRenderedByReact: function(node) {\n if (node.nodeType !== 1) {\n // Not a DOMElement, therefore not a React component\n return false;\n }\n var id = ReactMount.getID(node);\n return id ? id.charAt(0) === SEPARATOR : false;\n },\n\n /**\n * Traverses up the ancestors of the supplied node to find a node that is a\n * DOM representation of a React component.\n *\n * @param {*} node\n * @return {?DOMEventTarget}\n * @internal\n */\n getFirstReactDOM: function(node) {\n var current = node;\n while (current && current.parentNode !== current) {\n if (ReactMount.isRenderedByReact(current)) {\n return current;\n }\n current = current.parentNode;\n }\n return null;\n },\n\n /**\n * Finds a node with the supplied `targetID` inside of the supplied\n * `ancestorNode`. Exploits the ID naming scheme to perform the search\n * quickly.\n *\n * @param {DOMEventTarget} ancestorNode Search from this root.\n * @pararm {string} targetID ID of the DOM representation of the component.\n * @return {DOMEventTarget} DOM node with the supplied `targetID`.\n * @internal\n */\n findComponentRoot: function(ancestorNode, targetID) {\n var firstChildren = findComponentRootReusableArray;\n var childIndex = 0;\n\n var deepestAncestor = findDeepestCachedAncestor(targetID) || ancestorNode;\n\n firstChildren[0] = deepestAncestor.firstChild;\n firstChildren.length = 1;\n\n while (childIndex < firstChildren.length) {\n var child = firstChildren[childIndex++];\n var targetChild;\n\n while (child) {\n var childID = ReactMount.getID(child);\n if (childID) {\n // Even if we find the node we're looking for, we finish looping\n // through its siblings to ensure they're cached so that we don't have\n // to revisit this node again. Otherwise, we make n^2 calls to getID\n // when visiting the many children of a single node in order.\n\n if (targetID === childID) {\n targetChild = child;\n } else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) {\n // If we find a child whose ID is an ancestor of the given ID,\n // then we can be sure that we only want to search the subtree\n // rooted at this child, so we can throw out the rest of the\n // search state.\n firstChildren.length = childIndex = 0;\n firstChildren.push(child.firstChild);\n }\n\n } else {\n // If this child had no ID, then there's a chance that it was\n // injected automatically by the browser, as when a `<table>`\n // element sprouts an extra `<tbody>` child as a side effect of\n // `.innerHTML` parsing. Optimistically continue down this\n // branch, but not before examining the other siblings.\n firstChildren.push(child.firstChild);\n }\n\n child = child.nextSibling;\n }\n\n if (targetChild) {\n // Emptying firstChildren/findComponentRootReusableArray is\n // not necessary for correctness, but it helps the GC reclaim\n // any nodes that were left at the end of the search.\n firstChildren.length = 0;\n\n return targetChild;\n }\n }\n\n firstChildren.length = 0;\n\n ( false ? invariant(\n false,\n 'findComponentRoot(..., %s): Unable to find element. This probably ' +\n 'means the DOM was unexpectedly mutated (e.g., by the browser), ' +\n 'usually due to forgetting a <tbody> when using tables, nesting tags ' +\n 'like <form>, <p>, or <a>, or using non-SVG elements in an <svg> ' +\n 'parent. ' +\n 'Try inspecting the child nodes of the element with React ID `%s`.',\n targetID,\n ReactMount.getID(ancestorNode)\n ) : invariant(false));\n },\n\n _mountImageIntoNode: function(markup, container, shouldReuseMarkup) {\n ( false ? invariant(\n container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n ),\n 'mountComponentIntoNode(...): Target container is not valid.'\n ) : invariant(container && (\n (container.nodeType === ELEMENT_NODE_TYPE || container.nodeType === DOC_NODE_TYPE)\n )));\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n return;\n } else {\n var checksum = rootElement.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME,\n checksum\n );\n\n var diffIndex = firstDifferenceIndex(markup, rootMarkup);\n var difference = ' (client) ' +\n markup.substring(diffIndex - 20, diffIndex + 20) +\n '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n ( false ? invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document using ' +\n 'server rendering but the checksum was invalid. This usually ' +\n 'means you rendered a different component type or props on ' +\n 'the client from the one on the server, or your render() ' +\n 'methods are impure. React cannot handle this case due to ' +\n 'cross-browser quirks by rendering at the document root. You ' +\n 'should look for environment dependent code in your components ' +\n 'and ensure the props are the same client and server side:\\n%s',\n difference\n ) : invariant(container.nodeType !== DOC_NODE_TYPE));\n\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'React attempted to reuse markup in a container but the ' +\n 'checksum was invalid. This generally means that you are ' +\n 'using server rendering and the markup generated on the ' +\n 'server was not what the client was expecting. React injected ' +\n 'new markup to compensate which works but you have lost many ' +\n 'of the benefits of server rendering. Instead, figure out ' +\n 'why the markup being generated is different on the client ' +\n 'or server:\\n%s',\n difference\n ) : null);\n }\n }\n }\n\n ( false ? invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document but ' +\n 'you didn\\'t use server rendering. We can\\'t do this ' +\n 'without using server rendering due to cross-browser quirks. ' +\n 'See React.renderToString() for server rendering.'\n ) : invariant(container.nodeType !== DOC_NODE_TYPE));\n\n setInnerHTML(container, markup);\n },\n\n /**\n * React ID utilities.\n */\n\n getReactRootID: getReactRootID,\n\n getID: getID,\n\n setID: setID,\n\n getNode: getNode,\n\n getNodeFromInstance: getNodeFromInstance,\n\n purgeID: purgeID\n};\n\nReactPerf.measureMethods(ReactMount, 'ReactMount', {\n _renderNewRootComponent: '_renderNewRootComponent',\n _mountImageIntoNode: '_mountImageIntoNode'\n});\n\nmodule.exports = ReactMount;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactMount.js\n ** module id = 20\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactMount.js?"); },,function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(64), __webpack_require__(317), __webpack_require__(100), __webpack_require__(101), __webpack_require__(328)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreateCallback, baseIsEqual, isObject, keys, property) {\n\n /**\n * Produces a callback bound to an optional `thisArg`. If `func` is a property\n * name the created callback will return the property value for a given element.\n * If `func` is an object the created callback will return `true` for elements\n * that contain the equivalent object properties, otherwise it will return `false`.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @param {*} [func=identity] The value to convert to a callback.\n * @param {*} [thisArg] The `this` binding of the created callback.\n * @param {number} [argCount] The number of arguments the callback accepts.\n * @returns {Function} Returns a callback function.\n * @example\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36 },\n * { 'name': 'fred', 'age': 40 }\n * ];\n *\n * // wrap to create custom callback shorthands\n * _.createCallback = _.wrap(_.createCallback, function(func, callback, thisArg) {\n * var match = /^(.+?)__([gl]t)(.+)$/.exec(callback);\n * return !match ? func(callback, thisArg) : function(object) {\n * return match[2] == 'gt' ? object[match[1]] > match[3] : object[match[1]] < match[3];\n * };\n * });\n *\n * _.filter(characters, 'age__gt38');\n * // => [{ 'name': 'fred', 'age': 40 }]\n */\n function createCallback(func, thisArg, argCount) {\n var type = typeof func;\n if (func == null || type == 'function') {\n return baseCreateCallback(func, thisArg, argCount);\n }\n // handle \"_.pluck\" style callback shorthands\n if (type != 'object') {\n return property(func);\n }\n var props = keys(func),\n key = props[0],\n a = func[key];\n\n // handle \"_.where\" style callback shorthands\n if (props.length == 1 && a === a && !isObject(a)) {\n // fast path the common case of providing an object with a single\n // property containing a primitive value\n return function(object) {\n var b = object[key];\n return a === b && (a !== 0 || (1 / a == 1 / b));\n };\n }\n return function(object) {\n var length = props.length,\n result = false;\n\n while (length--) {\n if (!(result = baseIsEqual(object[props[length]], func[props[length]], null, true))) {\n break;\n }\n }\n return result;\n };\n }\n\n return createCallback;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/createCallback.js\n ** module id = 22\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/createCallback.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyFunction.js\n ** module id = 23\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/emptyFunction.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/keyOf.js\n ** module id = 24\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/keyOf.js?")},function(module,exports,__webpack_require__){eval('/**\n * A series of functions that can be used throughout the localstorage.\n */\n\n// Dependencies\n"use strict";\n\n__webpack_require__(8);\n\n/**\n* function that will cache the values given\n* on the client side\n*\n* @param {string} key - key of the cached values that\n* will be used as a key in the storing the value\n* @param {string} value - the object that will be stored on the client\n* side\n*\n*/\nexports.setCache = function (key, value) {\n\tif (typeof value === "object") {\n\t\tvalue = JSON.stringify(value);\n\t}\n\n\twindow.localStorage.setItem(key, value);\n};\n\n/**\n* function that will retrieve the cached values from the client side\n*\n* @param {string} key - the key used to store the values on the client side\n*\n* @return {string|object|array}\n*/\nexports.getCache = function (key) {\n\treturn JSON.parse(window.localStorage.getItem(key));\n};\n\n/**\n* function that will remove the given cached object\n*\n* @param {string} key\n*\n*/\nexports.removeCache = function (key) {\n\twindow.localStorage.removeItem(key);\n};\n\n/**\n* function that will clear the client side cache\n*\n*/\nexports.clearCache = function () {\n\twindow.localStorage.clear();\n};\n\n/**\n* function that will retrieve the key of the cached client at the given\n* location\n*\n* @param {number} i - index of the key of the client cache\n*\n* @return {string} key\n*/\nexports.getCacheKey = function (i) {\n\treturn window.localStorage.key(i);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/localstorage-util.js\n ** module id = 25\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/localstorage-util.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _lodashAmdModernObjectsClone = __webpack_require__(48);\n\nvar _lodashAmdModernObjectsClone2 = _interopRequireDefault(_lodashAmdModernObjectsClone);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\nfunction assoc(d, k, v) {\n\tvar d1 = (0, _lodashAmdModernObjectsClone2["default"])(d);\n\td1[k] = v;\n\treturn d1;\n}\n\nfunction assocIn(d, ks, v) {\n\treturn assoc(d, ks[0], ks.length === 1 ? v : assocIn(d[ks[0]] || {}, ks.slice(1), v));\n}\n\nfunction merge() {\n\treturn _lodashAmdModernObjectsAssign2["default"].bind(undefined, {}).apply(undefined, arguments);\n}\n\nfunction trigger(name, detail) {\n\tdocument.body.dispatchEvent(new CustomEvent(name, { bubbles: true, detail: detail }));\n}\n\nfunction isElementInViewport(el) {\n\tvar rect = el.getBoundingClientRect();\n\treturn rect.bottom > 0 && rect.right > 0 && rect.left < (window.innerWidth || document.documentElement.clientWidth) && rect.top < (window.innerHeight || document.documentElement.clientHeight);\n}\n\nfunction setEllipsis(el) {\n\tvar wordArray = el.innerHTML.split(" ");\n\t/* the 4 is to adjust for the weird Webkit behaviour when scrollHeight == offsetHeigt - 1 even with no scrollable content */\n\twhile (el.scrollHeight - 4 > el.offsetHeight) {\n\t\twordArray.pop();\n\t\tel.innerHTML = wordArray.join(" ") + "...";\n\t}\n}\n\nfunction isElementAboveViewport(el) {\n\tvar rect = el.getBoundingClientRect();\n\treturn rect.top < 0;\n}\n\n(function () {\n\tif (typeof window.CustomEvent === "function") {\n\t\treturn false;\n\t}\n\tfunction CustomEvent(event, params) {\n\t\tparams = params || { bubbles: false, cancelable: false, detail: undefined };\n\t\tvar evt = document.createEvent("CustomEvent");\n\t\tevt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n\t\treturn evt;\n\t}\n\tCustomEvent.prototype = window.Event.prototype;\n\twindow.CustomEvent = CustomEvent;\n})();\n\nexports.assoc = assoc;\nexports.assocIn = assocIn;\nexports.merge = merge;\nexports.trigger = trigger;\nexports.isElementInViewport = isElementInViewport;\nexports.isElementAboveViewport = isElementAboveViewport;\nexports.setEllipsis = setEllipsis;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/utilities.js\n ** module id = 26\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/support/utilities.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(22), __webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createCallback, forOwn) {\n\n /**\n * Creates an array of values by running each element in the collection\n * through the callback. The callback is bound to `thisArg` and invoked with\n * three arguments; (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @alias collect\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array} Returns a new array of the results of each `callback` execution.\n * @example\n *\n * _.map([1, 2, 3], function(num) { return num * 3; });\n * // => [3, 6, 9]\n *\n * _.map({ 'one': 1, 'two': 2, 'three': 3 }, function(num) { return num * 3; });\n * // => [3, 6, 9] (property order is not guaranteed across environments)\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36 },\n * { 'name': 'fred', 'age': 40 }\n * ];\n *\n * // using \"_.pluck\" callback shorthand\n * _.map(characters, 'name');\n * // => ['barney', 'fred']\n */\n function map(collection, callback, thisArg) {\n var index = -1,\n length = collection ? collection.length : 0;\n\n callback = createCallback(callback, thisArg, 3);\n if (typeof length == 'number') {\n var result = Array(length);\n while (++index < length) {\n result[index] = callback(collection[index], index, collection);\n }\n } else {\n result = [];\n forOwn(collection, function(value, key, collection) {\n result[++index] = callback(value, key, collection);\n });\n }\n return result;\n }\n\n return map;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/map.js\n ** module id = 27\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/map.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPerf\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactPerf is a general AOP system designed to measure performance. This\n * module only has the hooks: see ReactDefaultPerf for the analysis tool.\n */\nvar ReactPerf = {\n /**\n * Boolean to enable/disable measurement. Set to false by default to prevent\n * accidental logging and perf loss.\n */\n enableMeasure: false,\n\n /**\n * Holds onto the measure function in use. By default, don't measure\n * anything, but we'll override this if we inject a measure function.\n */\n storedMeasure: _noMeasure,\n\n /**\n * @param {object} object\n * @param {string} objectName\n * @param {object<string>} methodNames\n */\n measureMethods: function(object, objectName, methodNames) {\n if (false) {\n for (var key in methodNames) {\n if (!methodNames.hasOwnProperty(key)) {\n continue;\n }\n object[key] = ReactPerf.measure(\n objectName,\n methodNames[key],\n object[key]\n );\n }\n }\n },\n\n /**\n * Use this to wrap methods you want to measure. Zero overhead in production.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n measure: function(objName, fnName, func) {\n if (false) {\n var measuredFunc = null;\n var wrapper = function() {\n if (ReactPerf.enableMeasure) {\n if (!measuredFunc) {\n measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);\n }\n return measuredFunc.apply(this, arguments);\n }\n return func.apply(this, arguments);\n };\n wrapper.displayName = objName + '_' + fnName;\n return wrapper;\n }\n return func;\n },\n\n injection: {\n /**\n * @param {function} measure\n */\n injectMeasure: function(measure) {\n ReactPerf.storedMeasure = measure;\n }\n }\n};\n\n/**\n * Simply passes through the measured function, without measuring it.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\nfunction _noMeasure(objName, fnName, func) {\n return func;\n}\n\nmodule.exports = ReactPerf;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPerf.js\n ** module id = 28\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactPerf.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\n\nvar assign = __webpack_require__(4);\nvar emptyFunction = __webpack_require__(23);\nvar getEventTarget = __webpack_require__(88);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: getEventTarget,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n */\nfunction SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n this.dispatchConfig = dispatchConfig;\n this.dispatchMarker = dispatchMarker;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ?\n nativeEvent.defaultPrevented :\n nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n}\n\nassign(SyntheticEvent.prototype, {\n\n preventDefault: function() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function() {\n var event = this.nativeEvent;\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n this[propName] = null;\n }\n this.dispatchConfig = null;\n this.dispatchMarker = null;\n this.nativeEvent = null;\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function(Class, Interface) {\n var Super = this;\n\n var prototype = Object.create(Super.prototype);\n assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.threeArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticEvent.js\n ** module id = 29\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticEvent.js?")},function(module,exports,__webpack_require__){eval("/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(275)\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/~/safe-buffer/index.js\n ** module id = 30\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/~/safe-buffer/index.js?")},,function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(64), __webpack_require__(101), __webpack_require__(102)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreateCallback, keys, objectTypes) {\n\n /**\n * Assigns own enumerable properties of source object(s) to the destination\n * object. Subsequent sources will overwrite property assignments of previous\n * sources. If a callback is provided it will be executed to produce the\n * assigned values. The callback is bound to `thisArg` and invoked with two\n * arguments; (objectValue, sourceValue).\n *\n * @static\n * @memberOf _\n * @type Function\n * @alias extend\n * @category Objects\n * @param {Object} object The destination object.\n * @param {...Object} [source] The source objects.\n * @param {Function} [callback] The function to customize assigning values.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns the destination object.\n * @example\n *\n * _.assign({ 'name': 'fred' }, { 'employer': 'slate' });\n * // => { 'name': 'fred', 'employer': 'slate' }\n *\n * var defaults = _.partialRight(_.assign, function(a, b) {\n * return typeof a == 'undefined' ? b : a;\n * });\n *\n * var object = { 'name': 'barney' };\n * defaults(object, { 'name': 'fred', 'employer': 'slate' });\n * // => { 'name': 'barney', 'employer': 'slate' }\n */\n var assign = function(object, source, guard) {\n var index, iterable = object, result = iterable;\n if (!iterable) return result;\n var args = arguments,\n argsIndex = 0,\n argsLength = typeof guard == 'number' ? 2 : args.length;\n if (argsLength > 3 && typeof args[argsLength - 2] == 'function') {\n var callback = baseCreateCallback(args[--argsLength - 1], args[argsLength--], 2);\n } else if (argsLength > 2 && typeof args[argsLength - 1] == 'function') {\n callback = args[--argsLength];\n }\n while (++argsIndex < argsLength) {\n iterable = args[argsIndex];\n if (iterable && objectTypes[typeof iterable]) {\n var ownIndex = -1,\n ownProps = objectTypes[typeof iterable] && keys(iterable),\n length = ownProps ? ownProps.length : 0;\n\n while (++ownIndex < length) {\n index = ownProps[ownIndex];\n result[index] = callback ? callback(result[index], iterable[index]) : iterable[index];\n }\n }\n }\n return result\n };\n\n return assign;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/assign.js\n ** module id = 32\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/assign.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative) {\n\n /** `Object#toString` result shortcuts */\n var arrayClass = '[object Array]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /* Native method shortcuts for methods with the same name as other `lodash` methods */\n var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray;\n\n /**\n * Checks if `value` is an array.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is an array, else `false`.\n * @example\n *\n * (function() { return _.isArray(arguments); })();\n * // => false\n *\n * _.isArray([1, 2, 3]);\n * // => true\n */\n var isArray = nativeIsArray || function(value) {\n return value && typeof value == 'object' && typeof value.length == 'number' &&\n toString.call(value) == arrayClass || false;\n };\n\n return isArray;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isArray.js\n ** module id = 33\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isArray.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n * @typechecks static-only\n */\n\n/*jslint bitwise: true */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_ATTRIBUTE: 0x1,\n MUST_USE_PROPERTY: 0x2,\n HAS_SIDE_EFFECTS: 0x4,\n HAS_BOOLEAN_VALUE: 0x8,\n HAS_NUMERIC_VALUE: 0x10,\n HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function(domPropertyConfig) {\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(\n domPropertyConfig.isCustomAttribute\n );\n }\n\n for (var propName in Properties) {\n ( false ? invariant(\n !DOMProperty.isStandardName.hasOwnProperty(propName),\n 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' +\n '\\'%s\\' which has already been injected. You may be accidentally ' +\n 'injecting the same DOM property config twice, or you may be ' +\n 'injecting two configs that have conflicting property names.',\n propName\n ) : invariant(!DOMProperty.isStandardName.hasOwnProperty(propName)));\n\n DOMProperty.isStandardName[propName] = true;\n\n var lowerCased = propName.toLowerCase();\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n DOMProperty.getAttributeName[propName] = attributeName;\n } else {\n DOMProperty.getAttributeName[propName] = lowerCased;\n }\n\n DOMProperty.getPropertyName[propName] =\n DOMPropertyNames.hasOwnProperty(propName) ?\n DOMPropertyNames[propName] :\n propName;\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];\n } else {\n DOMProperty.getMutationMethod[propName] = null;\n }\n\n var propConfig = Properties[propName];\n DOMProperty.mustUseAttribute[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);\n DOMProperty.mustUseProperty[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);\n DOMProperty.hasSideEffects[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);\n DOMProperty.hasBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);\n DOMProperty.hasNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);\n DOMProperty.hasPositiveNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\n DOMProperty.hasOverloadedBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\n ( false ? invariant(\n !DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName],\n 'DOMProperty: Cannot require using both attribute and property: %s',\n propName\n ) : invariant(!DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName]));\n ( false ? invariant(\n DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName],\n 'DOMProperty: Properties that have side effects must use property: %s',\n propName\n ) : invariant(DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName]));\n ( false ? invariant(\n !!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +\n 'numeric value, but not a combination: %s',\n propName\n ) : invariant(!!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1));\n }\n }\n};\nvar defaultValueCache = {};\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n\n /**\n * Checks whether a property name is a standard property.\n * @type {Object}\n */\n isStandardName: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties.\n * @type {Object}\n */\n getPossibleStandardName: {},\n\n /**\n * Mapping from normalized names to attribute names that differ. Attribute\n * names are used when rendering markup or with `*Attribute()`.\n * @type {Object}\n */\n getAttributeName: {},\n\n /**\n * Mapping from normalized names to properties on DOM node instances.\n * (This includes properties that mutate due to external factors.)\n * @type {Object}\n */\n getPropertyName: {},\n\n /**\n * Mapping from normalized names to mutation methods. This will only exist if\n * mutation cannot be set simply by the property or `setAttribute()`.\n * @type {Object}\n */\n getMutationMethod: {},\n\n /**\n * Whether the property must be accessed and mutated as an object property.\n * @type {Object}\n */\n mustUseAttribute: {},\n\n /**\n * Whether the property must be accessed and mutated using `*Attribute()`.\n * (This includes anything that fails `<propName> in <element>`.)\n * @type {Object}\n */\n mustUseProperty: {},\n\n /**\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. We must ensure that\n * the value is only set if it has changed.\n * @type {Object}\n */\n hasSideEffects: {},\n\n /**\n * Whether the property should be removed when set to a falsey value.\n * @type {Object}\n */\n hasBooleanValue: {},\n\n /**\n * Whether the property must be numeric or parse as a\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasNumericValue: {},\n\n /**\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasPositiveNumericValue: {},\n\n /**\n * Whether the property can be used as a flag as well as with a value. Removed\n * when strictly equal to false; present without a value when strictly equal\n * to true; present with a value otherwise.\n * @type {Object}\n */\n hasOverloadedBooleanValue: {},\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Returns the default property value for a DOM property (i.e., not an\n * attribute). Most default values are '' or false, but not all. Worse yet,\n * some (in particular, `type`) vary depending on the type of element.\n *\n * TODO: Is it better to grab all the possible properties when creating an\n * element to avoid having to create the same element twice?\n */\n getDefaultValueForProperty: function(nodeName, prop) {\n var nodeDefaults = defaultValueCache[nodeName];\n var testElement;\n if (!nodeDefaults) {\n defaultValueCache[nodeName] = nodeDefaults = {};\n }\n if (!(prop in nodeDefaults)) {\n testElement = document.createElement(nodeName);\n nodeDefaults[prop] = testElement[prop];\n }\n return nodeDefaults[prop];\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/DOMProperty.js\n ** module id = 34\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/DOMProperty.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserEventEmitter\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPluginHub = __webpack_require__(43);\nvar EventPluginRegistry = __webpack_require__(239);\nvar ReactEventEmitterMixin = __webpack_require__(360);\nvar ViewportMetrics = __webpack_require__(249);\n\nvar assign = __webpack_require__(4);\nvar isEventSupported = __webpack_require__(90);\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topBlur: 'blur',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topScroll: 'scroll',\n topSelectionChange: 'selectionchange',\n topTextInput: 'textInput',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * ReactBrowserEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(\n ReactBrowserEventEmitter.handleTopLevel\n );\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function() {\n return !!(\n (ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled())\n );\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.\n registrationNameDependencies[registrationName];\n\n var topLevelTypes = EventConstants.topLevelTypes;\n for (var i = 0, l = dependencies.length; i < l; i++) {\n var dependency = dependencies[i];\n if (!(\n (isListening.hasOwnProperty(dependency) && isListening[dependency])\n )) {\n if (dependency === topLevelTypes.topWheel) {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'wheel',\n mountAt\n );\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'mousewheel',\n mountAt\n );\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'DOMMouseScroll',\n mountAt\n );\n }\n } else if (dependency === topLevelTypes.topScroll) {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topScroll,\n 'scroll',\n mountAt\n );\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topScroll,\n 'scroll',\n ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE\n );\n }\n } else if (dependency === topLevelTypes.topFocus ||\n dependency === topLevelTypes.topBlur) {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topFocus,\n 'focus',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topBlur,\n 'blur',\n mountAt\n );\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topFocus,\n 'focusin',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topBlur,\n 'focusout',\n mountAt\n );\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening[topLevelTypes.topBlur] = true;\n isListening[topLevelTypes.topFocus] = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n dependency,\n topEventMapping[dependency],\n mountAt\n );\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function() {\n if (!isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n },\n\n eventNameDispatchConfigs: EventPluginHub.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactBrowserEventEmitter.js\n ** module id = 35\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactBrowserEventEmitter.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceHandles\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactRootIndex = __webpack_require__(248);\n\nvar invariant = __webpack_require__(3);\n\nvar SEPARATOR = '.';\nvar SEPARATOR_LENGTH = SEPARATOR.length;\n\n/**\n * Maximum depth of traversals before we consider the possibility of a bad ID.\n */\nvar MAX_TREE_DEPTH = 100;\n\n/**\n * Creates a DOM ID prefix to use when mounting React components.\n *\n * @param {number} index A unique integer\n * @return {string} React root ID.\n * @internal\n */\nfunction getReactRootIDString(index) {\n return SEPARATOR + index.toString(36);\n}\n\n/**\n * Checks if a character in the supplied ID is a separator or the end.\n *\n * @param {string} id A React DOM ID.\n * @param {number} index Index of the character to check.\n * @return {boolean} True if the character is a separator or end of the ID.\n * @private\n */\nfunction isBoundary(id, index) {\n return id.charAt(index) === SEPARATOR || index === id.length;\n}\n\n/**\n * Checks if the supplied string is a valid React DOM ID.\n *\n * @param {string} id A React DOM ID, maybe.\n * @return {boolean} True if the string is a valid React DOM ID.\n * @private\n */\nfunction isValidID(id) {\n return id === '' || (\n id.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR\n );\n}\n\n/**\n * Checks if the first ID is an ancestor of or equal to the second ID.\n *\n * @param {string} ancestorID\n * @param {string} descendantID\n * @return {boolean} True if `ancestorID` is an ancestor of `descendantID`.\n * @internal\n */\nfunction isAncestorIDOf(ancestorID, descendantID) {\n return (\n descendantID.indexOf(ancestorID) === 0 &&\n isBoundary(descendantID, ancestorID.length)\n );\n}\n\n/**\n * Gets the parent ID of the supplied React DOM ID, `id`.\n *\n * @param {string} id ID of a component.\n * @return {string} ID of the parent, or an empty string.\n * @private\n */\nfunction getParentID(id) {\n return id ? id.substr(0, id.lastIndexOf(SEPARATOR)) : '';\n}\n\n/**\n * Gets the next DOM ID on the tree path from the supplied `ancestorID` to the\n * supplied `destinationID`. If they are equal, the ID is returned.\n *\n * @param {string} ancestorID ID of an ancestor node of `destinationID`.\n * @param {string} destinationID ID of the destination node.\n * @return {string} Next ID on the path from `ancestorID` to `destinationID`.\n * @private\n */\nfunction getNextDescendantID(ancestorID, destinationID) {\n ( false ? invariant(\n isValidID(ancestorID) && isValidID(destinationID),\n 'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\n ancestorID,\n destinationID\n ) : invariant(isValidID(ancestorID) && isValidID(destinationID)));\n ( false ? invariant(\n isAncestorIDOf(ancestorID, destinationID),\n 'getNextDescendantID(...): React has made an invalid assumption about ' +\n 'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\n ancestorID,\n destinationID\n ) : invariant(isAncestorIDOf(ancestorID, destinationID)));\n if (ancestorID === destinationID) {\n return ancestorID;\n }\n // Skip over the ancestor and the immediate separator. Traverse until we hit\n // another separator or we reach the end of `destinationID`.\n var start = ancestorID.length + SEPARATOR_LENGTH;\n var i;\n for (i = start; i < destinationID.length; i++) {\n if (isBoundary(destinationID, i)) {\n break;\n }\n }\n return destinationID.substr(0, i);\n}\n\n/**\n * Gets the nearest common ancestor ID of two IDs.\n *\n * Using this ID scheme, the nearest common ancestor ID is the longest common\n * prefix of the two IDs that immediately preceded a \"marker\" in both strings.\n *\n * @param {string} oneID\n * @param {string} twoID\n * @return {string} Nearest common ancestor ID, or the empty string if none.\n * @private\n */\nfunction getFirstCommonAncestorID(oneID, twoID) {\n var minLength = Math.min(oneID.length, twoID.length);\n if (minLength === 0) {\n return '';\n }\n var lastCommonMarkerIndex = 0;\n // Use `<=` to traverse until the \"EOL\" of the shorter string.\n for (var i = 0; i <= minLength; i++) {\n if (isBoundary(oneID, i) && isBoundary(twoID, i)) {\n lastCommonMarkerIndex = i;\n } else if (oneID.charAt(i) !== twoID.charAt(i)) {\n break;\n }\n }\n var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);\n ( false ? invariant(\n isValidID(longestCommonID),\n 'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\n oneID,\n twoID,\n longestCommonID\n ) : invariant(isValidID(longestCommonID)));\n return longestCommonID;\n}\n\n/**\n * Traverses the parent path between two IDs (either up or down). The IDs must\n * not be the same, and there must exist a parent path between them. If the\n * callback returns `false`, traversal is stopped.\n *\n * @param {?string} start ID at which to start traversal.\n * @param {?string} stop ID at which to end traversal.\n * @param {function} cb Callback to invoke each ID with.\n * @param {?boolean} skipFirst Whether or not to skip the first node.\n * @param {?boolean} skipLast Whether or not to skip the last node.\n * @private\n */\nfunction traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {\n start = start || '';\n stop = stop || '';\n ( false ? invariant(\n start !== stop,\n 'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\n start\n ) : invariant(start !== stop));\n var traverseUp = isAncestorIDOf(stop, start);\n ( false ? invariant(\n traverseUp || isAncestorIDOf(start, stop),\n 'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' +\n 'not have a parent path.',\n start,\n stop\n ) : invariant(traverseUp || isAncestorIDOf(start, stop)));\n // Traverse from `start` to `stop` one depth at a time.\n var depth = 0;\n var traverse = traverseUp ? getParentID : getNextDescendantID;\n for (var id = start; /* until break */; id = traverse(id, stop)) {\n var ret;\n if ((!skipFirst || id !== start) && (!skipLast || id !== stop)) {\n ret = cb(id, traverseUp, arg);\n }\n if (ret === false || id === stop) {\n // Only break //after// visiting `stop`.\n break;\n }\n ( false ? invariant(\n depth++ < MAX_TREE_DEPTH,\n 'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' +\n 'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\n start, stop\n ) : invariant(depth++ < MAX_TREE_DEPTH));\n }\n}\n\n/**\n * Manages the IDs assigned to DOM representations of React components. This\n * uses a specific scheme in order to traverse the DOM efficiently (e.g. in\n * order to simulate events).\n *\n * @internal\n */\nvar ReactInstanceHandles = {\n\n /**\n * Constructs a React root ID\n * @return {string} A React root ID.\n */\n createReactRootID: function() {\n return getReactRootIDString(ReactRootIndex.createReactRootIndex());\n },\n\n /**\n * Constructs a React ID by joining a root ID with a name.\n *\n * @param {string} rootID Root ID of a parent component.\n * @param {string} name A component's name (as flattened children).\n * @return {string} A React ID.\n * @internal\n */\n createReactID: function(rootID, name) {\n return rootID + name;\n },\n\n /**\n * Gets the DOM ID of the React component that is the root of the tree that\n * contains the React component with the supplied DOM ID.\n *\n * @param {string} id DOM ID of a React component.\n * @return {?string} DOM ID of the React component that is the root.\n * @internal\n */\n getReactRootIDFromNodeID: function(id) {\n if (id && id.charAt(0) === SEPARATOR && id.length > 1) {\n var index = id.indexOf(SEPARATOR, 1);\n return index > -1 ? id.substr(0, index) : id;\n }\n return null;\n },\n\n /**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * NOTE: Does not invoke the callback on the nearest common ancestor because\n * nothing \"entered\" or \"left\" that element.\n *\n * @param {string} leaveID ID being left.\n * @param {string} enterID ID being entered.\n * @param {function} cb Callback to invoke on each entered/left ID.\n * @param {*} upArg Argument to invoke the callback with on left IDs.\n * @param {*} downArg Argument to invoke the callback with on entered IDs.\n * @internal\n */\n traverseEnterLeave: function(leaveID, enterID, cb, upArg, downArg) {\n var ancestorID = getFirstCommonAncestorID(leaveID, enterID);\n if (ancestorID !== leaveID) {\n traverseParentPath(leaveID, ancestorID, cb, upArg, false, true);\n }\n if (ancestorID !== enterID) {\n traverseParentPath(ancestorID, enterID, cb, downArg, true, false);\n }\n },\n\n /**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseTwoPhase: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, false);\n traverseParentPath(targetID, '', cb, arg, false, true);\n }\n },\n\n /**\n * Traverse a node ID, calling the supplied `cb` for each ancestor ID. For\n * example, passing `.0.$row-0.1` would result in `cb` getting called\n * with `.0`, `.0.$row-0`, and `.0.$row-0.1`.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseAncestors: function(targetID, cb, arg) {\n traverseParentPath('', targetID, cb, arg, true, false);\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getFirstCommonAncestorID: getFirstCommonAncestorID,\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getNextDescendantID: getNextDescendantID,\n\n isAncestorIDOf: isAncestorIDOf,\n\n SEPARATOR: SEPARATOR\n\n};\n\nmodule.exports = ReactInstanceHandles;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactInstanceHandles.js\n ** module id = 36\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactInstanceHandles.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceMap\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function(key) {\n return key._reactInternalInstance;\n },\n\n has: function(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactInstanceMap.js\n ** module id = 37\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactInstanceMap.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconciler\n */\n\n'use strict';\n\nvar ReactRef = __webpack_require__(366);\nvar ReactElementValidator = __webpack_require__(45);\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(internalInstance, rootID, transaction, context) {\n var markup = internalInstance.mountComponent(rootID, transaction, context);\n if (false) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n internalInstance._currentElement\n );\n }\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function(internalInstance) {\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent();\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(\n internalInstance, nextElement, transaction, context\n ) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && nextElement._owner != null) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n return;\n }\n\n if (false) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(\n prevElement,\n nextElement\n );\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(\n internalInstance,\n transaction\n ) {\n internalInstance.performUpdateIfNecessary(transaction);\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactReconciler.js\n ** module id = 38\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactReconciler.js?")},function(module,exports,__webpack_require__){eval("var Buffer = __webpack_require__(30).Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = bits & 0xffffffff\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/hash.js\n ** module id = 39\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/hash.js?")},function(module,exports){eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/~/inherits/inherits_browser.js\n ** module id = 40\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/~/inherits/inherits_browser.js?"); },function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(67), __webpack_require__(31), __webpack_require__(33), __webpack_require__(120)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseIndexOf, forOwn, isArray, isString) {\n\n /* Native method shortcuts for methods with the same name as other `lodash` methods */\n var nativeMax = Math.max;\n\n /**\n * Checks if a given value is present in a collection using strict equality\n * for comparisons, i.e. `===`. If `fromIndex` is negative, it is used as the\n * offset from the end of the collection.\n *\n * @static\n * @memberOf _\n * @alias include\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {*} target The value to check for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {boolean} Returns `true` if the `target` element is found, else `false`.\n * @example\n *\n * _.contains([1, 2, 3], 1);\n * // => true\n *\n * _.contains([1, 2, 3], 1, 2);\n * // => false\n *\n * _.contains({ 'name': 'fred', 'age': 40 }, 'fred');\n * // => true\n *\n * _.contains('pebbles', 'eb');\n * // => true\n */\n function contains(collection, target, fromIndex) {\n var index = -1,\n indexOf = baseIndexOf,\n length = collection ? collection.length : 0,\n result = false;\n\n fromIndex = (fromIndex < 0 ? nativeMax(0, length + fromIndex) : fromIndex) || 0;\n if (isArray(collection)) {\n result = indexOf(collection, target, fromIndex) > -1;\n } else if (typeof length == 'number') {\n result = (isString(collection) ? collection.indexOf(target, fromIndex) : indexOf(collection, target, fromIndex)) > -1;\n } else {\n forOwn(collection, function(value) {\n if (++index >= fromIndex) {\n return !(result = value === target);\n }\n });\n }\n return result;\n }\n\n return contains;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/contains.js\n ** module id = 41\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/contains.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMPropertyOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar DOMProperty = __webpack_require__(34);\n\nvar quoteAttributeValueForBrowser = __webpack_require__(399);\nvar warning = __webpack_require__(6);\n\nfunction shouldIgnoreValue(name, value) {\n return value == null ||\n (DOMProperty.hasBooleanValue[name] && !value) ||\n (DOMProperty.hasNumericValue[name] && isNaN(value)) ||\n (DOMProperty.hasPositiveNumericValue[name] && (value < 1)) ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === false);\n}\n\nif (false) {\n var reactProps = {\n children: true,\n dangerouslySetInnerHTML: true,\n key: true,\n ref: true\n };\n var warnedProperties = {};\n\n var warnUnknownProperty = function(name) {\n if (reactProps.hasOwnProperty(name) && reactProps[name] ||\n warnedProperties.hasOwnProperty(name) && warnedProperties[name]) {\n return;\n }\n\n warnedProperties[name] = true;\n var lowerCasedName = name.toLowerCase();\n\n // data-* attributes should be lowercase; suggest the lowercase version\n var standardName = (\n DOMProperty.isCustomAttribute(lowerCasedName) ?\n lowerCasedName :\n DOMProperty.getPossibleStandardName.hasOwnProperty(lowerCasedName) ?\n DOMProperty.getPossibleStandardName[lowerCasedName] :\n null\n );\n\n // For now, only warn when we have a suggested correction. This prevents\n // logging too much when using transferPropsTo.\n (\"production\" !== process.env.NODE_ENV ? warning(\n standardName == null,\n 'Unknown DOM property %s. Did you mean %s?',\n name,\n standardName\n ) : null);\n\n };\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function(id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' +\n quoteAttributeValueForBrowser(id);\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function(name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n if (shouldIgnoreValue(name, value)) {\n return '';\n }\n var attributeName = DOMProperty.getAttributeName[name];\n if (DOMProperty.hasBooleanValue[name] ||\n (DOMProperty.hasOverloadedBooleanValue[name] && value === true)) {\n return attributeName;\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n } else if (false) {\n warnUnknownProperty(name);\n }\n return null;\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function(node, name, value) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(name, value)) {\n this.deleteValueForProperty(node, name);\n } else if (DOMProperty.mustUseAttribute[name]) {\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n node.setAttribute(DOMProperty.getAttributeName[name], '' + value);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the\n // property type before comparing; only `value` does and is string.\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== ('' + value)) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propName] = value;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n } else if (false) {\n warnUnknownProperty(name);\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function(node, name) {\n if (DOMProperty.isStandardName.hasOwnProperty(name) &&\n DOMProperty.isStandardName[name]) {\n var mutationMethod = DOMProperty.getMutationMethod[name];\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (DOMProperty.mustUseAttribute[name]) {\n node.removeAttribute(DOMProperty.getAttributeName[name]);\n } else {\n var propName = DOMProperty.getPropertyName[name];\n var defaultValue = DOMProperty.getDefaultValueForProperty(\n node.nodeName,\n propName\n );\n if (!DOMProperty.hasSideEffects[name] ||\n ('' + node[propName]) !== defaultValue) {\n node[propName] = defaultValue;\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n } else if (false) {\n warnUnknownProperty(name);\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/DOMPropertyOperations.js\n ** module id = 42\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/DOMPropertyOperations.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginHub\n */\n\n'use strict';\n\nvar EventPluginRegistry = __webpack_require__(239);\nvar EventPluginUtils = __webpack_require__(73);\n\nvar accumulateInto = __webpack_require__(84);\nvar forEachAccumulated = __webpack_require__(85);\nvar invariant = __webpack_require__(3);\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @private\n */\nvar executeDispatchesAndRelease = function(event) {\n if (event) {\n var executeDispatch = EventPluginUtils.executeDispatch;\n // Plugins can provide custom behavior when dispatching events.\n var PluginModule = EventPluginRegistry.getPluginModuleForEvent(event);\n if (PluginModule && PluginModule.executeDispatch) {\n executeDispatch = PluginModule.executeDispatch;\n }\n EventPluginUtils.executeDispatchesInOrder(event, executeDispatch);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\n\n/**\n * - `InstanceHandle`: [required] Module that performs logical traversals of DOM\n * hierarchy given ids of the logical DOM elements involved.\n */\nvar InstanceHandle = null;\n\nfunction validateInstanceHandle() {\n var valid =\n InstanceHandle &&\n InstanceHandle.traverseTwoPhase &&\n InstanceHandle.traverseEnterLeave;\n ( false ? invariant(\n valid,\n 'InstanceHandle not injected before use!'\n ) : invariant(valid));\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {object} InjectedMount\n * @public\n */\n injectMount: EventPluginUtils.injection.injectMount,\n\n /**\n * @param {object} InjectedInstanceHandle\n * @public\n */\n injectInstanceHandle: function(InjectedInstanceHandle) {\n InstanceHandle = InjectedInstanceHandle;\n if (false) {\n validateInstanceHandle();\n }\n },\n\n getInstanceHandle: function() {\n if (false) {\n validateInstanceHandle();\n }\n return InstanceHandle;\n },\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n eventNameDispatchConfigs: EventPluginRegistry.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginRegistry.registrationNameModules,\n\n /**\n * Stores `listener` at `listenerBank[registrationName][id]`. Is idempotent.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {?function} listener The callback to store.\n */\n putListener: function(id, registrationName, listener) {\n ( false ? invariant(\n !listener || typeof listener === 'function',\n 'Expected %s listener to be a function, instead got type %s',\n registrationName, typeof listener\n ) : invariant(!listener || typeof listener === 'function'));\n\n var bankForRegistrationName =\n listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[id] = listener;\n },\n\n /**\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n return bankForRegistrationName && bankForRegistrationName[id];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n if (bankForRegistrationName) {\n delete bankForRegistrationName[id];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {string} id ID of the DOM element.\n */\n deleteAllListeners: function(id) {\n for (var registrationName in listenerBank) {\n delete listenerBank[registrationName][id];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0, l = plugins.length; i < l; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function() {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);\n ( false ? invariant(\n !eventQueue,\n 'processEventQueue(): Additional events were enqueued while processing ' +\n 'an event queue. Support for this has not yet been implemented.'\n ) : invariant(!eventQueue));\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function() {\n listenerBank = {};\n },\n\n __getListenerBank: function() {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventPluginHub.js\n ** module id = 43\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventPluginHub.js?")},function(module,exports,__webpack_require__){eval('/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPropagators\n */\n\n\'use strict\';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPluginHub = __webpack_require__(43);\n\nvar accumulateInto = __webpack_require__(84);\nvar forEachAccumulated = __webpack_require__(85);\n\nvar PropagationPhases = EventConstants.PropagationPhases;\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * "phases" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(id, event, propagationPhase) {\n var registrationName =\n event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(id, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event\'s members allows us to not have to create a wrapping\n * "dispatch" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(domID, upwards, event) {\n if (false) {\n if (!domID) {\n throw new Error(\'Dispatching id must not be null\');\n }\n }\n var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured;\n var listener = listenerAtPhase(domID, event, phase);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, domID);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We can not perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginHub.injection.getInstanceHandle().traverseTwoPhase(\n event.dispatchMarker,\n accumulateDirectionalDispatches,\n event\n );\n }\n}\n\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(id, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(id, registrationName);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, id);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event.dispatchMarker, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {\n EventPluginHub.injection.getInstanceHandle().traverseEnterLeave(\n fromID,\n toID,\n accumulateDispatches,\n leave,\n enter\n );\n}\n\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of "dispatch ready event objects" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventPropagators.js\n ** module id = 44\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventPropagators.js?')},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElementValidator\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactFragment = __webpack_require__(53);\nvar ReactPropTypeLocations = __webpack_require__(82);\nvar ReactPropTypeLocationNames = __webpack_require__(55);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactNativeComponent = __webpack_require__(54);\n\nvar getIteratorFn = __webpack_require__(254);\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nvar loggedTypeFailures = {};\n\nvar NUMERIC_PROPERTY_REGEX = /^\\d+$/;\n\n/**\n * Gets the instance's name for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getName(instance) {\n var publicInstance = instance && instance.getPublicInstance();\n if (!publicInstance) {\n return undefined;\n }\n var constructor = publicInstance.constructor;\n if (!constructor) {\n return undefined;\n }\n return constructor.displayName || constructor.name || undefined;\n}\n\n/**\n * Gets the current owner's displayName for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getCurrentOwnerDisplayName() {\n var current = ReactCurrentOwner.current;\n return (\n current && getName(current) || undefined\n );\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n warnAndMonitorForKeyUse(\n 'Each child in an array or iterator should have a unique \"key\" prop.',\n element,\n parentType\n );\n}\n\n/**\n * Warn if the key is being defined as an object property but has an incorrect\n * value.\n *\n * @internal\n * @param {string} name Property name of the key.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validatePropertyKey(name, element, parentType) {\n if (!NUMERIC_PROPERTY_REGEX.test(name)) {\n return;\n }\n warnAndMonitorForKeyUse(\n 'Child objects should have non-numeric keys so ordering is preserved.',\n element,\n parentType\n );\n}\n\n/**\n * Shared warning and monitoring code for the key warnings.\n *\n * @internal\n * @param {string} message The base warning that gets output.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction warnAndMonitorForKeyUse(message, element, parentType) {\n var ownerName = getCurrentOwnerDisplayName();\n var parentName = typeof parentType === 'string' ?\n parentType : parentType.displayName || parentType.name;\n\n var useName = ownerName || parentName;\n var memoizer = ownerHasKeyUseWarning[message] || (\n (ownerHasKeyUseWarning[message] = {})\n );\n if (memoizer.hasOwnProperty(useName)) {\n return;\n }\n memoizer[useName] = true;\n\n var parentOrOwnerAddendum =\n ownerName ? (\" Check the render method of \" + ownerName + \".\") :\n parentName ? (\" Check the React.render call using <\" + parentName + \">.\") :\n '';\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwnerAddendum = '';\n if (element &&\n element._owner &&\n element._owner !== ReactCurrentOwner.current) {\n // Name of the component that originally created this child.\n var childOwnerName = getName(element._owner);\n\n childOwnerAddendum = (\" It was passed a child from \" + childOwnerName + \".\");\n }\n\n ( false ? warning(\n false,\n message + '%s%s See https://fb.me/react-warning-keys for more information.',\n parentOrOwnerAddendum,\n childOwnerAddendum\n ) : null);\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n node._store.validated = true;\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n // Entry iterators provide implicit keys.\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n } else if (typeof node === 'object') {\n var fragment = ReactFragment.extractIfFragment(node);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n validatePropertyKey(key, fragment[key], parentType);\n }\n }\n }\n }\n}\n\n/**\n * Assert that the props are valid\n *\n * @param {string} componentName Name of the component for error messages.\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\nfunction checkPropTypes(componentName, propTypes, props, location) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n ( false ? invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n ) : invariant(typeof propTypes[propName] === 'function'));\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(this);\n ( false ? warning(false, 'Failed propType: %s%s', error.message, addendum) : null);\n }\n }\n }\n}\n\nvar warnedPropsMutations = {};\n\n/**\n * Warn about mutating props when setting `propName` on `element`.\n *\n * @param {string} propName The string key within props that was set\n * @param {ReactElement} element\n */\nfunction warnForPropsMutation(propName, element) {\n var type = element.type;\n var elementName = typeof type === 'string' ? type : type.displayName;\n var ownerName = element._owner ?\n element._owner.getPublicInstance().constructor.displayName : null;\n\n var warningKey = propName + '|' + elementName + '|' + ownerName;\n if (warnedPropsMutations.hasOwnProperty(warningKey)) {\n return;\n }\n warnedPropsMutations[warningKey] = true;\n\n var elementInfo = '';\n if (elementName) {\n elementInfo = ' <' + elementName + ' />';\n }\n var ownerInfo = '';\n if (ownerName) {\n ownerInfo = ' The element was created by ' + ownerName + '.';\n }\n\n ( false ? warning(\n false,\n 'Don\\'t set .props.%s of the React component%s. Instead, specify the ' +\n 'correct value when initially creating the element or use ' +\n 'React.cloneElement to make a new element with updated props.%s',\n propName,\n elementInfo,\n ownerInfo\n ) : null);\n}\n\n// Inline Object.is polyfill\nfunction is(a, b) {\n if (a !== a) {\n // NaN\n return b !== b;\n }\n if (a === 0 && b === 0) {\n // +-0\n return 1 / a === 1 / b;\n }\n return a === b;\n}\n\n/**\n * Given an element, check if its props have been mutated since element\n * creation (or the last call to this function). In particular, check if any\n * new props have been added, which we can't directly catch by defining warning\n * properties on the props object.\n *\n * @param {ReactElement} element\n */\nfunction checkAndWarnForMutatedProps(element) {\n if (!element._store) {\n // Element was created using `new ReactElement` directly or with\n // `ReactElement.createElement`; skip mutation checking\n return;\n }\n\n var originalProps = element._store.originalProps;\n var props = element.props;\n\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n if (!originalProps.hasOwnProperty(propName) ||\n !is(originalProps[propName], props[propName])) {\n warnForPropsMutation(propName, element);\n\n // Copy over the new value so that the two props objects match again\n originalProps[propName] = props[propName];\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n if (element.type == null) {\n // This has already warned. Don't throw.\n return;\n }\n // Extract the component class from the element. Converts string types\n // to a composite class which may have propTypes.\n // TODO: Validating a string's propTypes is not decoupled from the\n // rendering target which is problematic.\n var componentClass = ReactNativeComponent.getComponentClassForElement(\n element\n );\n var name = componentClass.displayName || componentClass.name;\n if (componentClass.propTypes) {\n checkPropTypes(\n name,\n componentClass.propTypes,\n element.props,\n ReactPropTypeLocations.prop\n );\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n ( false ? warning(\n componentClass.getDefaultProps.isReactClassApproved,\n 'getDefaultProps is only used on classic React.createClass ' +\n 'definitions. Use a static property named `defaultProps` instead.'\n ) : null);\n }\n}\n\nvar ReactElementValidator = {\n\n checkAndWarnForMutatedProps: checkAndWarnForMutatedProps,\n\n createElement: function(type, props, children) {\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n ( false ? warning(\n type != null,\n 'React.createElement: type should not be null or undefined. It should ' +\n 'be a string (for DOM elements) or a ReactClass (for composite ' +\n 'components).'\n ) : null);\n\n var element = ReactElement.createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n\n validatePropTypes(element);\n\n return element;\n },\n\n createFactory: function(type) {\n var validatedFactory = ReactElementValidator.createElement.bind(\n null,\n type\n );\n // Legacy hook TODO: Warn if this is accessed\n validatedFactory.type = type;\n\n if (false) {\n try {\n Object.defineProperty(\n validatedFactory,\n 'type',\n {\n enumerable: false,\n get: function() {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Factory.type is deprecated. Access the class directly ' +\n 'before passing it to createFactory.'\n ) : null);\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n }\n );\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n\n return validatedFactory;\n },\n\n cloneElement: function(element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n\n};\n\nmodule.exports = ReactElementValidator;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactElementValidator.js\n ** module id = 45\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactElementValidator.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticUIEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticEvent = __webpack_require__(29);\n\nvar getEventTarget = __webpack_require__(88);\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function(event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target != null && target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function(event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticUIEvent.js\n ** module id = 46\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticUIEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyMirror\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n ( false ? invariant(\n obj instanceof Object && !Array.isArray(obj),\n 'keyMirror(...): Argument must be an object.'\n ) : invariant(obj instanceof Object && !Array.isArray(obj)));\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/keyMirror.js\n ** module id = 47\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/keyMirror.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(315), __webpack_require__(64)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseClone, baseCreateCallback) {\n\n /**\n * Creates a clone of `value`. If `isDeep` is `true` nested objects will also\n * be cloned, otherwise they will be assigned by reference. If a callback\n * is provided it will be executed to produce the cloned values. If the\n * callback returns `undefined` cloning will be handled by the method instead.\n * The callback is bound to `thisArg` and invoked with one argument; (value).\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep=false] Specify a deep clone.\n * @param {Function} [callback] The function to customize cloning values.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {*} Returns the cloned value.\n * @example\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36 },\n * { 'name': 'fred', 'age': 40 }\n * ];\n *\n * var shallow = _.clone(characters);\n * shallow[0] === characters[0];\n * // => true\n *\n * var deep = _.clone(characters, true);\n * deep[0] === characters[0];\n * // => false\n *\n * _.mixin({\n * 'clone': _.partialRight(_.clone, function(value) {\n * return _.isElement(value) ? value.cloneNode(false) : undefined;\n * })\n * });\n *\n * var clone = _.clone(document.body);\n * clone.childNodes.length;\n * // => 0\n */\n function clone(value, isDeep, callback, thisArg) {\n // allows working with \"Collections\" methods without using their `index`\n // and `collection` arguments for `isDeep` and `callback`\n if (typeof isDeep != 'boolean' && isDeep != null) {\n thisArg = callback;\n callback = isDeep;\n isDeep = false;\n }\n return baseClone(value, isDeep, typeof callback == 'function' && baseCreateCallback(callback, thisArg, 1));\n }\n\n return clone;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/clone.js\n ** module id = 48\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/clone.js?")},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar API_ENDPOINTS = {\n\tAUTHENTICATE: "/authenticate",\n\tLOGOUT: "/logout",\n\tPROFILE: _common2["default"].API + "user/profile",\n\tQUOTA: _common2["default"].API + "user/quota",\n\tCREATE: _common2["default"].API + "user/register",\n\tUPDATE_PASSWORD: _common2["default"].API + "user/password",\n\tFORGOT_PASSWORD: _common2["default"].API + "user/forgot-password",\n\tRESET_PASSWORD: _common2["default"].API + "user/reset-password",\n\tCREATE_NEW: "/api/user/register",\n\tPAYWALL_FORGOT_PASSWORD: "/api/user/forgotpassword"\n};\n/**\n * Makes an POST request to the `user/auth` endpoint to log in a user.\n *\n * @param {string} username - something that identifies the user.\n * @param {string} password - something that verifies the user.\n *\n * @returns {promise.<object, Error>} - Promise resolves with the user\n * object, and rejects with an error if logging in fails.\n */\nexports.login = function (username, password) {\n\treturn _jquery2["default"].ajax({\n\t\ttype: "post",\n\t\turl: API_ENDPOINTS.AUTHENTICATE,\n\t\tdataType: "json",\n\t\tdata: {\n\t\t\tusername: username,\n\t\t\tpassword: password\n\t\t}\n\t});\n};\n\n/**\n * AJAX based logout.\n * Makes a GET request to the `user/logout` endpoint to log out the user.\n *\n * @returns {promise.<object, Error>} - Promise resolves with the user\n * object, and rejects with an error if logging out fails.\n */\nexports.logout = function () {\n\treturn _jquery2["default"].get(API_ENDPOINTS.LOGOUT);\n};\n\n/**\n * Redirects to the Logout end point. Used when you want to perform\n * a full logout, including page redirection.\n */\nexports.logoutRedirect = function () {\n\t/* get the current path and redirect back */\n\tvar path = window.location.pathname;\n\twindow.location.href = API_ENDPOINTS.LOGOUT + "?return=" + path;\n};\n\nexports.getUserModifiedTime = function () {\n\treturn _jquery2["default"].ajax({\n\t\ttype: "head",\n\t\turl: API_ENDPOINTS.PROFILE\n\t}).then(function (data, status, response) {\n\t\treturn response.getResponseHeader("Last-Modified");\n\t});\n};\n/**\n * getUser\n * @returns {object}\n */\nexports.getUser = function () {\n\t// TODO: send a new request to the profile endpoint to get the\n\t// user object, maybe synchronous? if not this will\n\t// have to return a promise that resolves with updated userProfile.\n\t// TODO: update local userProfile object if server has more recent data\n\t//return userProfile;\n\treturn _jquery2["default"].getJSON(API_ENDPOINTS.PROFILE);\n};\n\n/**\n * getUserQuota\n * @returns {object}\n */\nexports.getUserQuota = function () {\n\treturn _jquery2["default"].getJSON(API_ENDPOINTS.QUOTA);\n};\n\n/**\n * updateUser\n * @param {object} attrs - data to update\n * @returns {promise<object, Error>} a promise with the updated user\n */\nexports.updateUser = function (attrs) {\n\treturn _request2["default"].ajax("post", API_ENDPOINTS.PROFILE, attrs).then(function (data) {\n\t\treturn data;\n\t});\n};\n\n/**\n * createUser - Create a new User\n * @param {object} attrs - new user attributes\n * @returns {promise.<object, Error>} - promise that resolves the new user\n */\nexports.createUser = function (attrs) {\n\treturn _request2["default"].ajax("post", API_ENDPOINTS.CREATE, attrs).then(function (data) {\n\t\treturn data;\n\t});\n};\n\nexports.createNewUser = function (attrs) {\n\treturn _request2["default"].ajax("post", API_ENDPOINTS.CREATE_NEW, attrs).then(function (data) {\n\t\treturn data;\n\t});\n};\n\n/**\n * changeUserPassword - Change the User Password\n * @param {string} current - Current Password\n * @param {string} password - New Password\n * @returns {promise.<object, Error>} - promise that resolves the update request.\n */\nexports.changeUserPassword = function (current, password) {\n\treturn _request2["default"].ajax("post", API_ENDPOINTS.UPDATE_PASSWORD, { current: current, password: password });\n};\n\n/**\n * forgotUserPassword - Send an email to the user with the password request\n * @param {string} email - Email\n * @returns {promise.<object, Error>} - promise that resolves the request\n */\nexports.forgotUserPassword = function (email) {\n\treturn _jquery2["default"].post(API_ENDPOINTS.FORGOT_PASSWORD, {\n\t\temail: email\n\t});\n};\n\n/**\n * resetUserPassword - Reset the User Password\n * @param {string} password - New Password\n * @returns {promise.<object, Error>} - promise that resolves the update request.\n */\nexports.resetUserPassword = function (password, token) {\n\treturn _jquery2["default"].post(API_ENDPOINTS.RESET_PASSWORD, {\n\t\tpassword: password,\n\t\ttoken: token\n\t});\n};\n\nexports.verifyForgotPassword = function (email) {\n\tvar data = {\n\t\temailAddress: email\n\t};\n\treturn _jquery2["default"].ajax({\n\t\ttype: "post",\n\t\turl: API_ENDPOINTS.PAYWALL_FORGOT_PASSWORD,\n\t\tdata: JSON.stringify(data),\n\t\tcontentType: "application/json"\n\t});\n};\n\nexports.verifySubscription = function (userDetail, endpointURL) {\n\tvar requestData = {\n\t\temailAddress: userDetail.emailAddress,\n\t\taccountNo: userDetail.accountNo,\n\t\tpassword: userDetail.password,\n\t\toptIn: userDetail.optIn\n\t};\n\treturn _jquery2["default"].ajax({\n\t\ttype: "post",\n\t\turl: endpointURL,\n\t\tdata: JSON.stringify(requestData),\n\t\tcontentType: "application/json"\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/auth.js\n ** module id = 49\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/auth.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _react = __webpack_require__(60);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar _lodashAmdModernCollectionsIndexBy = __webpack_require__(94);\n\nvar _lodashAmdModernCollectionsIndexBy2 = _interopRequireDefault(_lodashAmdModernCollectionsIndexBy);\n\nvar _lodashAmdModernCollectionsEvery = __webpack_require__(313);\n\nvar _lodashAmdModernCollectionsEvery2 = _interopRequireDefault(_lodashAmdModernCollectionsEvery);\n\nvar _lodashAmdModernArraysZipObject = __webpack_require__(312);\n\nvar _lodashAmdModernArraysZipObject2 = _interopRequireDefault(_lodashAmdModernArraysZipObject);\n\nvar _lodashAmdModernObjectsPick = __webpack_require__(327);\n\nvar _lodashAmdModernObjectsPick2 = _interopRequireDefault(_lodashAmdModernObjectsPick);\n\nvar _lodashAmdModernObjectsIsPlainObject = __webpack_require__(326);\n\nvar _lodashAmdModernObjectsIsPlainObject2 = _interopRequireDefault(_lodashAmdModernObjectsIsPlainObject);\n\nvar _lodashAmdModernObjectsIsString = __webpack_require__(120);\n\nvar _lodashAmdModernObjectsIsString2 = _interopRequireDefault(_lodashAmdModernObjectsIsString);\n\nvar _lodashAmdModernChainingTap = __webpack_require__(113);\n\nvar _lodashAmdModernChainingTap2 = _interopRequireDefault(_lodashAmdModernChainingTap);\n\nvar _lodashAmdModernFunctionsOnce = __webpack_require__(114);\n\nvar _lodashAmdModernFunctionsOnce2 = _interopRequireDefault(_lodashAmdModernFunctionsOnce);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar _servicesGeoip = __webpack_require__(281);\n\nvar _servicesGeoip2 = _interopRequireDefault(_servicesGeoip);\n\nvar _componentsSignInSignIn = __webpack_require__(61);\n\nvar _componentsSignInSignIn2 = _interopRequireDefault(_componentsSignInSignIn);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar dom = _react2["default"].DOM;\n\nvar trigger = __webpack_require__(26).trigger;\n\nvar startRegistration = (0, _lodashAmdModernFunctionsOnce2["default"])(function () {\n\ttrigger("metrics:registration_start");\n});\n\nvar SignInModal = _react2["default"].createClass({\n\tdisplayName: "SignInModal",\n\n\tgetInitialState: function getInitialState() {\n\t\treturn { mode: this.props.mode ? this.props.mode : "sign-in", emailAddress: "", password: "", firstName: "", lastName: "", optIn: false, button: "ready", error: "", isDomUser: true };\n\t},\n\n\tcomponentWillMount: function componentWillMount() {\n\t\tvar _this = this;\n\n\t\t_servicesGeoip2["default"].determineIfUSDomesticUser().then(function (response) {\n\t\t\treturn _this.setState({ isDomUser: response });\n\t\t});\n\t\tif (_servicesState2["default"].isMobile()) {\n\t\t\t(0, _jquery2["default"])(document).on("focusin", "input", function () {\n\t\t\t\t(0, _jquery2["default"])(".sign-in-modal--container").addClass("modal-open");\n\t\t\t});\n\t\t\t(0, _jquery2["default"])(document).on("focusout", "input", function () {\n\t\t\t\t(0, _jquery2["default"])(".sign-in-modal--container").removeClass("modal-open");\n\t\t\t});\n\t\t}\n\t},\n\n\t// NOTE: The following is a workaround for Safari not firing change events on autofill\n\t// https://github.com/facebook/react/issues/1159\n\n\tcomponentDidMount: function componentDidMount() {\n\t\tif (_servicesState2["default"].isMobile()) {\n\t\t\t(0, _jquery2["default"])(".sign-in-modal--container").data("scrollPos", (0, _jquery2["default"])(window).scrollTop());\n\t\t}\n\t\tthis.interval = setInterval((function () {\n\t\t\tvar e = _react2["default"].findDOMNode(this.refs.emailAddress),\n\t\t\t p = _react2["default"].findDOMNode(this.refs.password);\n\t\t\tif (p && e) {\n\t\t\t\tthis.setState({ emailAddress: e.value, password: p.value });\n\t\t\t}\n\t\t}).bind(this), 250);\n\t},\n\n\tcomponentWillUnmount: function componentWillUnmount() {\n\t\tclearInterval(this.interval);\n\t},\n\n\tchangeMode: function changeMode(mode, ev) {\n\t\tev.preventDefault();\n\t\tif (mode === "register" && this.state.mode !== "register") {\n\t\t\tstartRegistration();\n\t\t\t(0, _jquery2["default"])("body").trigger("set-page-info", ["Registration", "Registration - Modal"]);\n\t\t}\n\t\tthis.setState({ mode: mode, error: "" });\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", [mode, "Form Initiations"]);\n\t},\n\n\tsignIn: function signIn(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ button: "busy", error: "" });\n\t\t_modelsUser2["default"].authenticate(this.state.emailAddress, this.state.password).then((function (user) {\n\t\t\t_componentsSignInSignIn2["default"].signInPromise.resolve(user);\n\t\t\tthis.props.promise.resolve();\n\t\t\ttrigger("metrics:signin_success", { user: user });\n\t\t}).bind(this), (function (data) {\n\t\t\tthis.setState({ button: "ready", error: "You have entered an invalid email and password combination. Please try again." });\n\t\t}).bind(this));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", [this.state.mode, "Form Submission"]);\n\t},\n\n\tregister: function register(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ button: "busy", error: "" });\n\t\t_modelsUser2["default"].register((0, _lodashAmdModernObjectsPick2["default"])(this.state, ["firstName", "lastName", "emailAddress", "password", "optIn"])).then((function (user) {\n\t\t\ttrigger("metrics:registration_success", { user: user });\n\t\t\t_componentsSignInSignIn2["default"].signInPromise.resolve(user);\n\t\t\tthis.props.promise.resolve();\n\t\t\t(0, _jquery2["default"])("body").trigger("register:success", ["Registration - Modal", user]);\n\t\t}).bind(this), (function (data) {\n\t\t\ttrigger("metrics:registration_failure", { errors: (0, _lodashAmdModernCollectionsMap2["default"])(data.errors || [], "field") });\n\t\t\tif (data.status === 409) {\n\t\t\t\tif (!data.errors) {\n\t\t\t\t\tdata.errors = [];\n\t\t\t\t}\n\t\t\t\tvar err = { "field": "emailAddress", "errorMessage": data.message };\n\t\t\t\tdata.errors.push(err);\n\t\t\t}\n\t\t\tthis.setState({ button: "ready", error: data.errors && data.errors.length ? (0, _lodashAmdModernCollectionsIndexBy2["default"])(data.errors, "field") : data.message });\n\t\t}).bind(this));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", [this.state.mode, "Form Submission"]);\n\t},\n\n\tforgotPassword: function forgotPassword(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ button: "busy", error: "" });\n\t\t_servicesAuth2["default"].verifyForgotPassword(this.state.emailAddress).then((function () {\n\t\t\tthis.setState({ button: "forgot-password-success" });\n\t\t\tsetTimeout((function () {\n\t\t\t\tthis.props.promise.reject();\n\t\t\t}).bind(this), 3000);\n\t\t}).bind(this), (function () {\n\t\t\tthis.setState({ button: "ready", error: { emailAddress: { errorMessage: "Account not found" } } });\n\t\t}).bind(this));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", [this.state.mode, "Form Submission"]);\n\t},\n\n\tcancel: function cancel(ev) {\n\t\tif (ev.target.getAttribute("data-close-modal")) {\n\t\t\tev.preventDefault();\n\t\t\tthis.props.promise.reject();\n\t\t}\n\t},\n\n\trender: function render() {\n\t\tvar _this2 = this;\n\n\t\tvar allPresent = (function (attrs) {\n\t\t\treturn (0, _lodashAmdModernCollectionsEvery2["default"])(attrs, (function (a) {\n\t\t\t\treturn !!this.state[a];\n\t\t\t}).bind(this));\n\t\t}).bind(this);\n\n\t\tvar boundInput = (function (attr, autoFocus) {\n\t\t\tvar err = (0, _lodashAmdModernObjectsIsPlainObject2["default"])(this.state.error) ? this.state.error[attr] : null;\n\t\t\treturn [dom.input({ type: ({ emailAddress: "email", password: "password" })[attr] || "text", name: attr, ref: attr, disabled: this.state.button === "busy", className: err ? "error" : "", placeholder: ({ emailAddress: "EMAIL", firstName: "FIRST NAME", lastName: "LAST NAME", password: this.state.mode === "register" ? "PASSWORD (MINIMUM OF 8 CHARACTERS)" : "PASSWORD" })[attr] || attr.toUpperCase(), autoFocus: autoFocus, value: this.state[attr], onChange: (function (ev) {\n\t\t\t\t\tthis.setState((0, _lodashAmdModernArraysZipObject2["default"])([[attr, ev.target.value]]));\n\t\t\t\t}).bind(this) }), err ? dom.label({ className: "error" }, err.errorMessage.match(/<a /) ? [err.errorMessage.replace(/<a .+$/, ""), dom.a({ href: "#", onClick: this.changeMode.bind(this, "forgot-password") }, "reset your password")] : err.errorMessage) : ""];\n\t\t}).bind(this);\n\n\t\tvar busyButton = (function () {\n\t\t\treturn this.state.button === "busy" ? dom.div({ className: "text-center" }, dom.div({ className: "loading mts is-centered" }, dom.div({ className: "pie rotation" }), dom.div({ className: "pie filler" }), dom.div({ className: "mask" }))) : this.state.button === "forgot-password-success" ? dom.div({}, "Instructions to reset your password have been sent to " + this.state.emailAddress) : dom.button.apply(this, arguments);\n\t\t}).bind(this);\n\n\t\treturn dom.div({ onClick: this.cancel }, dom.div({ className: "modal-overlay", "data-close-modal": true }), dom.div({ className: "sign-in-modal--container fixed width-100pct flex-row justify-center", "data-close-modal": true }, dom.div({ className: "sign-in-modal--frame relative backdrop-off-white pal" }, dom.a({ href: "", className: "right icon icon-times link--black", "data-close-modal": true }), dom.div({ className: "flex-row justify-center mbm tab-strip" }, (0, _lodashAmdModernCollectionsMap2["default"])([{ text: "Sign In", mode: "sign-in" }, { text: "Register", mode: "register" }], (function (t) {\n\t\t\treturn dom.a({ href: "#", className: this.state.mode === t.mode ? "active" : "", onClick: this.changeMode.bind(this, t.mode) }, t.text);\n\t\t}).bind(this))), dom.form({ key: this.state.mode, "data-metric-tag": this.state.mode === "register" ? "registration-form" : null }, (0, _lodashAmdModernObjectsIsString2["default"])(this.state.error) ? dom.div({ className: "warning-color" }, this.state.error) : "", this.state.mode === "sign-in" ? [boundInput("emailAddress", true), boundInput("password"), busyButton({ className: "button expand", disabled: !allPresent(["emailAddress", "password"]), onClick: this.signIn }, "SIGN IN"), dom.div({ className: "text-center" }, dom.a({ href: "#", className: "link--black", onClick: this.changeMode.bind(this, "forgot-password") }, "Forgot password?"))] : this.state.mode === "forgot-password" ? [dom.div({ className: "mbm" }, "Enter the email address used to create your account to receive a password reset link."), boundInput("emailAddress", true), busyButton({ className: "button expand mbn", disabled: !this.state.emailAddress, onClick: this.forgotPassword }, "SEND")] : [boundInput("firstName", true), boundInput("lastName"), boundInput("emailAddress"), boundInput("password"), dom.label({ className: "mbm flex-row darker-gray line-height-tight font-size-default" }, dom.span({ className: "mrs" }, dom.input({ type: "checkbox", className: this.state.isDomUser ? "hide" : "mbn", checked: this.state.optIn, onChange: function onChange(ev) {\n\t\t\t\treturn _this2.setState({ optIn: _this2.state.isDomUser ? true : ev.target.checked });\n\t\t\t} })), this.state.isDomUser ? " By registering, you agree to receive occasional emails from HBR. You may unsubscribe at any time." : " I agree to receive occasional emails from HBR. I may unsubscribe at any time."), busyButton({ className: "button expand mbn", disabled: !allPresent(["firstName", "lastName", "emailAddress", "password"]), onClick: this.register }, "Register"), dom.a({ href: "/subscriber-registration", className: "alt-action text-center mtm is-block" }, "PAID SUBSCRIBERS REGISTER HERE"), dom.a({ href: "/corporate/privacy-policy", className: "darker-gray text-center mts is-block" }, "View Privacy Policy")]))));\n\t}\n});\n\nSignInModal.render = function (mode) {\n\t(0, _jquery2["default"])("body").trigger("form-interaction", [mode ? mode : "sign-in", "Form Initiations"]);\n\tif (mode && mode.toLowerCase() === "register") {\n\t\t(0, _jquery2["default"])("body").trigger("set-page-info", ["Registration", "Registration - Modal"]);\n\t}\n\treturn (0, _lodashAmdModernChainingTap2["default"])(_jquery2["default"].Deferred(), function (promise) {\n\t\tvar container = document.body.appendChild(document.createElement("div"));\n\t\t_react2["default"].render(_react2["default"].createElement(SignInModal, { promise: promise, mode: mode ? mode : "sign-in" }), container);\n\t\tpromise.always(function () {\n\t\t\tvar scrollPosition = (0, _jquery2["default"])(".sign-in-modal--container").data("scrollPos");\n\t\t\t_react2["default"].unmountComponentAtNode(container);\n\t\t\tcontainer.remove();\n\t\t\tif (_servicesState2["default"].isMobile()) {\n\t\t\t\t(0, _jquery2["default"])(window).scrollTop(scrollPosition);\n\t\t\t}\n\t\t});\n\t});\n};\n\nSignInModal.ensureSignedIn = function (param) {\n\tif (param === "save") {\n\t\treturn _modelsUser2["default"].isAuthenticated() ? _jquery2["default"].Deferred().resolve() : SignInModal.render("register");\n\t} else {\n\t\treturn _modelsUser2["default"].isAuthenticated() ? _jquery2["default"].Deferred().resolve() : SignInModal.render();\n\t}\n};\n\nexports["default"] = SignInModal;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/sign-in/sign-in-modal.js\n ** module id = 50\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/sign-in/sign-in-modal.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(64), __webpack_require__(102)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseCreateCallback, objectTypes) {\n\n /**\n * Iterates over own and inherited enumerable properties of an object,\n * executing the callback for each property. The callback is bound to `thisArg`\n * and invoked with three arguments; (value, key, object). Callbacks may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Objects\n * @param {Object} object The object to iterate over.\n * @param {Function} [callback=identity] The function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * Shape.prototype.move = function(x, y) {\n * this.x += x;\n * this.y += y;\n * };\n *\n * _.forIn(new Shape, function(value, key) {\n * console.log(key);\n * });\n * // => logs 'x', 'y', and 'move' (property order is not guaranteed across environments)\n */\n var forIn = function(collection, callback, thisArg) {\n var index, iterable = collection, result = iterable;\n if (!iterable) return result;\n if (!objectTypes[typeof iterable]) return result;\n callback = callback && typeof thisArg == 'undefined' ? callback : baseCreateCallback(callback, thisArg, 3);\n for (index in iterable) {\n if (callback(iterable[index], index, collection) === false) return result;\n }\n return result\n };\n\n return forIn;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/forIn.js\n ** module id = 51\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/forIn.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AutoFocusMixin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar focusNode = __webpack_require__(252);\n\nvar AutoFocusMixin = {\n componentDidMount: function() {\n if (this.props.autoFocus) {\n focusNode(this.getDOMNode());\n }\n }\n};\n\nmodule.exports = AutoFocusMixin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/AutoFocusMixin.js\n ** module id = 52\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/AutoFocusMixin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactFragment\n*/\n\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\n\nvar warning = __webpack_require__(6);\n\n/**\n * We used to allow keyed objects to serve as a collection of ReactElements,\n * or nested sets. This allowed us a way to explicitly key a set a fragment of\n * components. This is now being replaced with an opaque data structure.\n * The upgrade path is to call React.addons.createFragment({ key: value }) to\n * create a keyed fragment. The resulting data structure is opaque, for now.\n */\n\nif (false) {\n var fragmentKey = '_reactFragment';\n var didWarnKey = '_reactDidWarn';\n var canWarnForReactFragment = false;\n\n try {\n // Feature test. Don't even try to issue this warning if we can't use\n // enumerable: false.\n\n var dummy = function() {\n return 1;\n };\n\n Object.defineProperty(\n {},\n fragmentKey,\n {enumerable: false, value: true}\n );\n\n Object.defineProperty(\n {},\n 'key',\n {enumerable: true, get: dummy}\n );\n\n canWarnForReactFragment = true;\n } catch (x) { }\n\n var proxyPropertyAccessWithWarning = function(obj, key) {\n Object.defineProperty(obj, key, {\n enumerable: true,\n get: function() {\n (\"production\" !== process.env.NODE_ENV ? warning(\n this[didWarnKey],\n 'A ReactFragment is an opaque type. Accessing any of its ' +\n 'properties is deprecated. Pass it to one of the React.Children ' +\n 'helpers.'\n ) : null);\n this[didWarnKey] = true;\n return this[fragmentKey][key];\n },\n set: function(value) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n this[didWarnKey],\n 'A ReactFragment is an immutable opaque type. Mutating its ' +\n 'properties is deprecated.'\n ) : null);\n this[didWarnKey] = true;\n this[fragmentKey][key] = value;\n }\n });\n };\n\n var issuedWarnings = {};\n\n var didWarnForFragment = function(fragment) {\n // We use the keys and the type of the value as a heuristic to dedupe the\n // warning to avoid spamming too much.\n var fragmentCacheKey = '';\n for (var key in fragment) {\n fragmentCacheKey += key + ':' + (typeof fragment[key]) + ',';\n }\n var alreadyWarnedOnce = !!issuedWarnings[fragmentCacheKey];\n issuedWarnings[fragmentCacheKey] = true;\n return alreadyWarnedOnce;\n };\n}\n\nvar ReactFragment = {\n // Wrap a keyed object in an opaque proxy that warns you if you access any\n // of its properties.\n create: function(object) {\n if (false) {\n if (typeof object !== 'object' || !object || Array.isArray(object)) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'React.addons.createFragment only accepts a single object.',\n object\n ) : null);\n return object;\n }\n if (ReactElement.isValidElement(object)) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'React.addons.createFragment does not accept a ReactElement ' +\n 'without a wrapper object.'\n ) : null);\n return object;\n }\n if (canWarnForReactFragment) {\n var proxy = {};\n Object.defineProperty(proxy, fragmentKey, {\n enumerable: false,\n value: object\n });\n Object.defineProperty(proxy, didWarnKey, {\n writable: true,\n enumerable: false,\n value: false\n });\n for (var key in object) {\n proxyPropertyAccessWithWarning(proxy, key);\n }\n Object.preventExtensions(proxy);\n return proxy;\n }\n }\n return object;\n },\n // Extract the original keyed object from the fragment opaque type. Warn if\n // a plain object is passed here.\n extract: function(fragment) {\n if (false) {\n if (canWarnForReactFragment) {\n if (!fragment[fragmentKey]) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n didWarnForFragment(fragment),\n 'Any use of a keyed object should be wrapped in ' +\n 'React.addons.createFragment(object) before being passed as a ' +\n 'child.'\n ) : null);\n return fragment;\n }\n return fragment[fragmentKey];\n }\n }\n return fragment;\n },\n // Check if this is a fragment and if so, extract the keyed object. If it\n // is a fragment-like object, warn that it should be wrapped. Ignore if we\n // can't determine what kind of object this is.\n extractIfFragment: function(fragment) {\n if (false) {\n if (canWarnForReactFragment) {\n // If it is the opaque type, return the keyed object.\n if (fragment[fragmentKey]) {\n return fragment[fragmentKey];\n }\n // Otherwise, check each property if it has an element, if it does\n // it is probably meant as a fragment, so we can warn early. Defer,\n // the warning to extract.\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key) &&\n ReactElement.isValidElement(fragment[key])) {\n // This looks like a fragment object, we should provide an\n // early warning.\n return ReactFragment.extract(fragment);\n }\n }\n }\n }\n return fragment;\n }\n};\n\nmodule.exports = ReactFragment;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactFragment.js\n ** module id = 53\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactFragment.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponent\n */\n\n'use strict';\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\n\nvar autoGenerateWrapperClass = null;\nvar genericComponentClass = null;\n// This registry keeps track of wrapper classes around native tags\nvar tagToComponentClass = {};\nvar textComponentClass = null;\n\nvar ReactNativeComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function(componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function(componentClasses) {\n assign(tagToComponentClass, componentClasses);\n },\n // Temporary hack since we expect DOM refs to behave like composites,\n // for this release.\n injectAutoWrapper: function(wrapperFactory) {\n autoGenerateWrapperClass = wrapperFactory;\n }\n};\n\n/**\n * Get a composite component wrapper class for a specific tag.\n *\n * @param {ReactElement} element The tag for which to get the class.\n * @return {function} The React class constructor function.\n */\nfunction getComponentClassForElement(element) {\n if (typeof element.type === 'function') {\n return element.type;\n }\n var tag = element.type;\n var componentClass = tagToComponentClass[tag];\n if (componentClass == null) {\n tagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);\n }\n return componentClass;\n}\n\n/**\n * Get a native internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n ( false ? invariant(\n genericComponentClass,\n 'There is no registered component for the tag %s',\n element.type\n ) : invariant(genericComponentClass));\n return new genericComponentClass(element.type, element.props);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactNativeComponent = {\n getComponentClassForElement: getComponentClassForElement,\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactNativeComponentInjection\n};\n\nmodule.exports = ReactNativeComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactNativeComponent.js\n ** module id = 54\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactNativeComponent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocationNames\n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (false) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPropTypeLocationNames.js\n ** module id = 55\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactPropTypeLocationNames.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticMouseEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticUIEvent = __webpack_require__(46);\nvar ViewportMetrics = __webpack_require__(249);\n\nvar getEventModifierState = __webpack_require__(87);\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function(event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function(event) {\n return event.relatedTarget || (\n ((event.fromElement === event.srcElement ? event.toElement : event.fromElement))\n );\n },\n // \"Proprietary\" Interface.\n pageX: function(event) {\n return 'pageX' in event ?\n event.pageX :\n event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function(event) {\n return 'pageY' in event ?\n event.pageY :\n event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticMouseEvent.js\n ** module id = 56\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticMouseEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Transaction\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar Mixin = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (!this.wrapperInitData) {\n this.wrapperInitData = [];\n } else {\n this.wrapperInitData.length = 0;\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} args... Arguments to pass to the method (optional).\n * Helps prevent need to bind in many cases.\n * @return Return value from `method`.\n */\n perform: function(method, scope, a, b, c, d, e, f) {\n ( false ? invariant(\n !this.isInTransaction(),\n 'Transaction.perform(...): Cannot initialize a transaction when there ' +\n 'is already an outstanding transaction.'\n ) : invariant(!this.isInTransaction()));\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {\n }\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ?\n wrapper.initialize.call(this) :\n null;\n } finally {\n if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {\n }\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function(startIndex) {\n ( false ? invariant(\n this.isInTransaction(),\n 'Transaction.closeAll(): Cannot close transaction when none are open.'\n ) : invariant(this.isInTransaction()));\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {\n }\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nvar Transaction = {\n\n Mixin: Mixin,\n\n /**\n * Token to look for to determine if an error occured.\n */\n OBSERVED_ERROR: {}\n\n};\n\nmodule.exports = Transaction;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/Transaction.js\n ** module id = 57\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/Transaction.js?")},function(module,exports,__webpack_require__){eval('/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n"use strict";\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/emptyObject.js\n ** module id = 58\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/emptyObject.js?')},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule escapeTextContentForBrowser\n */\n\n'use strict';\n\nvar ESCAPE_LOOKUP = {\n '&': '&amp;',\n '>': '&gt;',\n '<': '&lt;',\n '\"': '&quot;',\n '\\'': '&#x27;'\n};\n\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n return ('' + text).replace(ESCAPE_REGEX, escaper);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/escapeTextContentForBrowser.js\n ** module id = 59\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/escapeTextContentForBrowser.js?")},function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(343);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/react.js\n ** module id = 60\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/react.js?")},function(module,exports,__webpack_require__){eval('/**\n * @module components/sign-in/sign-in\n * @requires module:jquery\n * @requires module:model/user\n * @requires module:services/state\n */\n\n// jquery\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = SignIn;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// user model\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\n// state service\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\n// Component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// global authentication promise\nvar signInPromise = _jquery2["default"].Deferred();\n\n// constructor\n\nfunction SignIn($el) {\n\tthis.initializeAsComponent($el);\n}\n\n// events\nSignIn.prototype = {\n\tevents: {\n\t\t"click [js-target=\'submit-sign-in\']": "authenticate"\n\t},\n\n\tauthenticate: function authenticate(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\t// pull the username and password from the form\n\t\tvar username = this.$el.find("input[js-target=\'username-input\']").val();\n\t\tvar password = this.$el.find("input[js-target=\'password-input\']").val();\n\n\t\t// set the pending state\n\t\t_servicesState2["default"].set("guest:sign-in:pending");\n\n\t\t// submit the authentication\n\t\t_modelsUser2["default"].authenticate(username, password).then(function (user) {\n\t\t\t// resolve the sign in promise\n\t\t\tsignInPromise.resolve(user);\n\t\t}, function () {\n\t\t\t// reset the state to failed\n\t\t\t_servicesState2["default"].set("guest:sign-in:fail");\n\t\t});\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["sign-in", "Form Submission"]);\n\t}\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(SignIn, "sign-in");\n\n// expose the authentication promise\nSignIn.signInPromise = signInPromise;\n\n// export the component\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/sign-in/sign-in.js\n ** module id = 61\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/sign-in/sign-in.js?')},,,,,function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _templateTemplate = __webpack_require__(409);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _servicesSubscriptionUtils = __webpack_require__(110);\n\nvar _servicesSubscriptionUtils2 = _interopRequireDefault(_servicesSubscriptionUtils);\n\nvar _servicesValidatorUtils = __webpack_require__(112);\n\nvar _servicesValidatorUtils2 = _interopRequireDefault(_servicesValidatorUtils);\n\nvar _folderListFolderList = __webpack_require__(108);\n\nvar _folderListFolderList2 = _interopRequireDefault(_folderListFolderList);\n\nvar _lodashAmdModernCollectionsSortBy = __webpack_require__(95);\n\nvar _lodashAmdModernCollectionsSortBy2 = _interopRequireDefault(_lodashAmdModernCollectionsSortBy);\n\nvar options = {\n\tsaveButtonTarget: "[js-target=\'save-submit\']",\n\tsaveListButtonTarget: "[js-target=\'save-new-list\']",\n\treadingListCheckboxes: "[js-target=\'save-list-checkbox\']",\n\tnewListFormTarget: "[js-target=\'save-new-list-form\']",\n\tlistNameTarget: "[js-target=\'list-form-name\']",\n\tlistDescTarget: "[js-target=\'list-form-description\']",\n\tlistIdTarget: "[js-target=\'list-form-id\']",\n\tcreateListButtonTarget: "[js-target=\'create-new-list\']",\n\tsaveNewListFormError: "[js-target=\'save-new-list-form-error\']"\n};\n\nvar saveContent = null;\nvar currentStreamItem = null;\n\nvar destroy = function destroy() {\n\t(0, _jquery2["default"])(exports).trigger("destroy", { message: "Saved!" });\n\t// Update digital data\n\tvar eventData = {};\n\teventData.eventAction = "Content Save";\n\teventData.element = currentStreamItem;\n\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n};\n\nvar destroyOnError = function destroyOnError(failureMessage) {\n\t(0, _jquery2["default"])(exports).trigger("destroy", { message: failureMessage || "Saving failed!" });\n};\n\n/**\n * render\n * @returns {Object} Promise\n */\nexports.render = function () {\n\tvar saveRenderDeferred = _jquery2["default"].Deferred();\n\tvar renderedTemplate = null;\n\n\t// Get all reading lists.\n\t_servicesHbrInteraction2["default"].request("lists", "get").then(function (response) {\n\t\tif (response) {\n\t\t\trenderedTemplate = (0, _templateTemplate2["default"])({\n\t\t\t\treadingLists: (0, _lodashAmdModernCollectionsSortBy2["default"])(response, "name")\n\t\t\t});\n\t\t}\n\t\t// Find which reading lists this list-item belongs to.\n\t}).then(function () {\n\t\tif (saveContent) {\n\t\t\treturn _servicesHbrInteraction2["default"].request("listItem", "get", saveContent.id).then(function (resp) {\n\t\t\t\tsaveRenderDeferred.resolve(renderedTemplate);\n\t\t\t\t// Ensure all valid items are checked.\n\t\t\t\tresp.forEach(function (list) {\n\t\t\t\t\t(0, _jquery2["default"])("#save-" + list.id).attr("checked", true);\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tsaveRenderDeferred.resolve(renderedTemplate);\n\t\t}\n\t});\n\n\treturn saveRenderDeferred.promise();\n};\n\nvar showNewListForm = function showNewListForm(e) {\n\te.preventDefault();\n\t(0, _jquery2["default"])(options.saveListButtonTarget).find("i.icon").hide();\n\t(0, _jquery2["default"])(options.newListFormTarget).show();\n\tcheckTitle();\n};\n\n/**\n * createNewList\n * Click Handler for the Create New List Flyout.\n */\nvar createNewList = function createNewList(e) {\n\te.preventDefault();\n\n\tvar createListPromise = exports.createList();\n\tif (typeof createListPromise === "boolean" && !createListPromise) {\n\t\treturn false;\n\t} else {\n\t\tcreateListPromise.fail(destroy);\n\t\treturn _jquery2["default"].when.apply(createListPromise).always(destroy);\n\t}\n};\n\n/**\n * save\n * Click handler for save button. First executes a general "save" using the\n * interaction service. Then posts a request to any existing selected reading\n * lists.\n *\n * Finally, creates a new reading list and saves the item to that new list if\n * the user has requested it.\n */\nfunction save(e) {\n\te.preventDefault();\n\n\tif (saveContent) {\n\t\treturn addToSaves().then(function (resp) {\n\t\t\tvar saveId = resp.id;\n\t\t\treturn exports.addToLists(saveId);\n\t\t}, destroy);\n\t}\n}\n\nfunction addToSaves() {\n\treturn _servicesHbrInteraction2["default"].request("saved", saveContent);\n}\n\nexports.addToLists = function (saveId) {\n\tvar saveCheckboxes = (0, _jquery2["default"])(options.readingListCheckboxes);\n\tvar savePromises = saveCheckboxes.map(function (index, item) {\n\t\tvar method = (0, _jquery2["default"])(item).is(":checked") ? "post" : "delete";\n\t\treturn _servicesHbrInteraction2["default"].request("listItem", method, {\n\t\t\tname: (0, _jquery2["default"])(item).data("list-id"),\n\t\t\tdata: {\n\t\t\t\tid: saveId\n\t\t\t}\n\t\t});\n\t});\n\n\tvar newListName = (0, _jquery2["default"])(options.listNameTarget).val();\n\tif (newListName.length !== 0) {\n\t\tsavePromises.push(exports.createList().then(function (list) {\n\t\t\t_servicesHbrInteraction2["default"].request("listItem", {\n\t\t\t\tname: list.id,\n\t\t\t\tdata: {\n\t\t\t\t\tid: saveId\n\t\t\t\t}\n\t\t\t});\n\t\t}));\n\t}\n\treturn _jquery2["default"].when.apply(_jquery2["default"], savePromises).fail(function () {\n\t\t(0, _jquery2["default"])(options.saveListButtonTarget).find("i.icon").show();\n\t\t(0, _jquery2["default"])(options.newListFormTarget).hide();\n\n\t\tvar errorLabel = document.querySelector("[js-target=\'save-new-list-form-error\']");\n\t\tif (errorLabel) {\n\t\t\terrorLabel.className = errorLabel.className.replace("is-hidden");\n\t\t\tsetTimeout(function () {\n\t\t\t\terrorLabel.className += "is-hidden";\n\t\t\t\tdestroyOnError("Save operation failed!");\n\t\t\t}, 5000);\n\t\t}\n\t}).done(destroy);\n};\n\nexports.createList = function () {\n\tvar listName = (0, _jquery2["default"])(options.listNameTarget).val();\n\tvar listDesc = (0, _jquery2["default"])(options.listDescTarget).val();\n\tvar listId = (0, _jquery2["default"])(options.listIdTarget).val();\n\n\t_servicesValidatorUtils2["default"].removeError((0, _jquery2["default"])(options.listNameTarget));\n\tif (!_servicesValidatorUtils2["default"].validateElement((0, _jquery2["default"])(options.listNameTarget), "listName")) {\n\t\treturn false;\n\t}\n\treturn _servicesHbrInteraction2["default"].request("lists", {\n\t\tname: listName,\n\t\tdescription: listDesc,\n\t\tid: listId\n\t}).then(function (response) {\n\t\t// trigger a list refresh event\n\t\t_folderListFolderList2["default"].updateFolder(response);\n\t\treturn response;\n\t});\n};\n\n/**\n * getOverrideOptions\n * Returns a list of options specific to the save flyout\n * @returns {{}}\n */\nexports.getOverrideOptions = function () {\n\treturn options;\n};\n\n/**\n * getData\n * Gets necessary data from the DOM for rendering share template and\n * hitting share/history end points\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\tvar $streamItem = $element.parents("stream-item");\n\tcurrentStreamItem = $streamItem;\n\n\tsaveContent = {\n\t\tid: $streamItem.attr("data-id"),\n\t\ttitle: $streamItem.data("title"),\n\t\turl: _servicesSubscriptionUtils2["default"].processUrl($streamItem.attr("data-url")),\n\t\ttopic: $streamItem.data("topic"),\n\t\tauthors: $streamItem.data("authors"),\n\t\tcontentType: $streamItem.data("content-type"),\n\t\timage: $streamItem.data("content-image"),\n\t\tsummary: $streamItem.data("summary"),\n\t\tlistPrice: $streamItem.data("list-price"),\n\t\tactivityType: "saved"\n\t};\n};\n\nexports.bindInteractions = function () {\n\t(0, _jquery2["default"])(options.saveButtonTarget).on("click", save);\n\t(0, _jquery2["default"])(options.saveListButtonTarget).on("click", showNewListForm);\n\t(0, _jquery2["default"])(options.createListButtonTarget).on("click", createNewList);\n};\n\nfunction checkTitle() {\n\tvar $err = undefined,\n\t $submit = undefined,\n\t $lnTarget = undefined;\n\t$err = document.getElementsByClassName("list-error")[0].classList;\n\t$submit = document.querySelectorAll("[js-target=\'save-submit\']")[0];\n\n\tdocument.getElementById("list-form-name").addEventListener("input", function () {\n\n\t\t$lnTarget = document.getElementById("list-form-name").value;\n\t\tif ($lnTarget !== undefined) {\n\t\t\tif ($lnTarget.match(/[-!$%^&*()_+|~=`{}:;<>?,.@#]/g)) {\n\t\t\t\t$err.add("on");\n\t\t\t\t$submit.setAttribute("disabled", "disabled");\n\t\t\t} else {\n\t\t\t\t$err.remove("on");\n\t\t\t\t$submit.removeAttribute("disabled", "disabled");\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/save/save.js\n ** module id = 66\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/save/save.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * The base implementation of `_.indexOf` without support for binary searches\n * or `fromIndex` constraints.\n *\n * @private\n * @param {Array} array The array to search.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value or `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n var index = (fromIndex || 0) - 1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n return baseIndexOf;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseIndexOf.js\n ** module id = 67\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseIndexOf.js?'); },function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(115)], __WEBPACK_AMD_DEFINE_RESULT__ = function(arrayPool) {\n\n /**\n * Gets an array from the array pool or creates a new one if the pool is empty.\n *\n * @private\n * @returns {Array} The array from the pool.\n */\n function getArray() {\n return arrayPool.pop() || [];\n }\n\n return getArray;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/getArray.js\n ** module id = 68\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/getArray.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used to prefix keys to avoid issues with `__proto__` and properties on `Object.prototype` */\n var keyPrefix = +new Date + '';\n\n return keyPrefix;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/keyPrefix.js\n ** module id = 69\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/keyPrefix.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(115), __webpack_require__(118)], __WEBPACK_AMD_DEFINE_RESULT__ = function(arrayPool, maxPoolSize) {\n\n /**\n * Releases the given array back to the array pool.\n *\n * @private\n * @param {Array} [array] The array to release.\n */\n function releaseArray(array) {\n array.length = 0;\n if (arrayPool.length < maxPoolSize) {\n arrayPool.push(array);\n }\n }\n\n return releaseArray;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/releaseArray.js\n ** module id = 70\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/releaseArray.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(118), __webpack_require__(119)], __WEBPACK_AMD_DEFINE_RESULT__ = function(maxPoolSize, objectPool) {\n\n /**\n * Releases the given object back to the object pool.\n *\n * @private\n * @param {Object} [object] The object to release.\n */\n function releaseObject(object) {\n var cache = object.cache;\n if (cache) {\n releaseObject(cache);\n }\n object.array = object.cache = object.criteria = object.object = object.number = object.string = object.value = null;\n if (objectPool.length < maxPoolSize) {\n objectPool.push(object);\n }\n }\n\n return releaseObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/releaseObject.js\n ** module id = 71\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/releaseObject.js?')},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n ( false ? invariant(\n callbacks.length === contexts.length,\n 'Mismatched list of contexts in callback queue'\n ) : invariant(callbacks.length === contexts.length));\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/CallbackQueue.js\n ** module id = 72\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/CallbackQueue.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginUtils\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `Mount`: [required] Module that can convert between React dom IDs and\n * actual node references.\n */\nvar injection = {\n Mount: null,\n injectMount: function(InjectedMount) {\n injection.Mount = InjectedMount;\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? invariant(\n InjectedMount && InjectedMount.getNode,\n 'EventPluginUtils.injection.injectMount(...): Injected Mount module ' +\n 'is missing getNode.'\n ) : invariant(InjectedMount && InjectedMount.getNode));\n }\n }\n};\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseUp ||\n topLevelType === topLevelTypes.topTouchEnd ||\n topLevelType === topLevelTypes.topTouchCancel;\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseMove ||\n topLevelType === topLevelTypes.topTouchMove;\n}\nfunction isStartish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseDown ||\n topLevelType === topLevelTypes.topTouchStart;\n}\n\n\nvar validateEventDispatches;\nif (false) {\n validateEventDispatches = function(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var idsIsArr = Array.isArray(dispatchIDs);\n var IDsLen = idsIsArr ? dispatchIDs.length : dispatchIDs ? 1 : 0;\n var listenersLen = listenersIsArr ?\n dispatchListeners.length :\n dispatchListeners ? 1 : 0;\n\n (\"production\" !== process.env.NODE_ENV ? invariant(\n idsIsArr === listenersIsArr && IDsLen === listenersLen,\n 'EventPluginUtils: Invalid `event`.'\n ) : invariant(idsIsArr === listenersIsArr && IDsLen === listenersLen));\n };\n}\n\n/**\n * Invokes `cb(event, listener, id)`. Avoids using call if no scope is\n * provided. The `(listener,id)` pair effectively forms the \"dispatch\" but are\n * kept separate to conserve memory.\n */\nfunction forEachEventDispatch(event, cb) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n cb(event, dispatchListeners[i], dispatchIDs[i]);\n }\n } else if (dispatchListeners) {\n cb(event, dispatchListeners, dispatchIDs);\n }\n}\n\n/**\n * Default implementation of PluginModule.executeDispatch().\n * @param {SyntheticEvent} SyntheticEvent to handle\n * @param {function} Application-level callback\n * @param {string} domID DOM id to pass to the callback.\n */\nfunction executeDispatch(event, listener, domID) {\n event.currentTarget = injection.Mount.getNode(domID);\n var returnValue = listener(event, domID);\n event.currentTarget = null;\n return returnValue;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, cb) {\n forEachEventDispatch(event, cb);\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return id of the first dispatch execution who's listener returns true, or\n * null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (false) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchIDs[i])) {\n return dispatchIDs[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchIDs)) {\n return dispatchIDs;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchIDs = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (false) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchID = event._dispatchIDs;\n ( false ? invariant(\n !Array.isArray(dispatchListener),\n 'executeDirectDispatch(...): Invalid `event`.'\n ) : invariant(!Array.isArray(dispatchListener)));\n var res = dispatchListener ?\n dispatchListener(event, dispatchID) :\n null;\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {bool} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatch: executeDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n injection: injection,\n useTouchEvents: false\n};\n\nmodule.exports = EventPluginUtils;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventPluginUtils.js\n ** module id = 73\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventPluginUtils.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkedValueUtils\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactPropTypes = __webpack_require__(246);\n\nvar invariant = __webpack_require__(3);\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(input) {\n ( false ? invariant(\n input.props.checkedLink == null || input.props.valueLink == null,\n 'Cannot provide a checkedLink and a valueLink. If you want to use ' +\n 'checkedLink, you probably don\\'t want to use valueLink and vice versa.'\n ) : invariant(input.props.checkedLink == null || input.props.valueLink == null));\n}\nfunction _assertValueLink(input) {\n _assertSingleLink(input);\n ( false ? invariant(\n input.props.value == null && input.props.onChange == null,\n 'Cannot provide a valueLink and a value or onChange event. If you want ' +\n 'to use value or onChange, you probably don\\'t want to use valueLink.'\n ) : invariant(input.props.value == null && input.props.onChange == null));\n}\n\nfunction _assertCheckedLink(input) {\n _assertSingleLink(input);\n ( false ? invariant(\n input.props.checked == null && input.props.onChange == null,\n 'Cannot provide a checkedLink and a checked property or onChange event. ' +\n 'If you want to use checked or onChange, you probably don\\'t want to ' +\n 'use checkedLink'\n ) : invariant(input.props.checked == null && input.props.onChange == null));\n}\n\n/**\n * @param {SyntheticEvent} e change event to handle\n */\nfunction _handleLinkedValueChange(e) {\n /*jshint validthis:true */\n this.props.valueLink.requestChange(e.target.value);\n}\n\n/**\n * @param {SyntheticEvent} e change event to handle\n */\nfunction _handleLinkedCheckChange(e) {\n /*jshint validthis:true */\n this.props.checkedLink.requestChange(e.target.checked);\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n Mixin: {\n propTypes: {\n value: function(props, propName, componentName) {\n if (!props[propName] ||\n hasReadOnlyValue[props.type] ||\n props.onChange ||\n props.readOnly ||\n props.disabled) {\n return null;\n }\n return new Error(\n 'You provided a `value` prop to a form field without an ' +\n '`onChange` handler. This will render a read-only field. If ' +\n 'the field should be mutable use `defaultValue`. Otherwise, ' +\n 'set either `onChange` or `readOnly`.'\n );\n },\n checked: function(props, propName, componentName) {\n if (!props[propName] ||\n props.onChange ||\n props.readOnly ||\n props.disabled) {\n return null;\n }\n return new Error(\n 'You provided a `checked` prop to a form field without an ' +\n '`onChange` handler. This will render a read-only field. If ' +\n 'the field should be mutable use `defaultChecked`. Otherwise, ' +\n 'set either `onChange` or `readOnly`.'\n );\n },\n onChange: ReactPropTypes.func\n }\n },\n\n /**\n * @param {ReactComponent} input Form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function(input) {\n if (input.props.valueLink) {\n _assertValueLink(input);\n return input.props.valueLink.value;\n }\n return input.props.value;\n },\n\n /**\n * @param {ReactComponent} input Form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function(input) {\n if (input.props.checkedLink) {\n _assertCheckedLink(input);\n return input.props.checkedLink.value;\n }\n return input.props.checked;\n },\n\n /**\n * @param {ReactComponent} input Form component\n * @return {function} change callback either from onChange prop or link.\n */\n getOnChange: function(input) {\n if (input.props.valueLink) {\n _assertValueLink(input);\n return _handleLinkedValueChange;\n } else if (input.props.checkedLink) {\n _assertCheckedLink(input);\n return _handleLinkedCheckChange;\n }\n return input.props.onChange;\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/LinkedValueUtils.js\n ** module id = 74\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/LinkedValueUtils.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LocalEventTrapMixin\n */\n\n'use strict';\n\nvar ReactBrowserEventEmitter = __webpack_require__(35);\n\nvar accumulateInto = __webpack_require__(84);\nvar forEachAccumulated = __webpack_require__(85);\nvar invariant = __webpack_require__(3);\n\nfunction remove(event) {\n event.remove();\n}\n\nvar LocalEventTrapMixin = {\n trapBubbledEvent:function(topLevelType, handlerBaseName) {\n ( false ? invariant(this.isMounted(), 'Must be mounted to trap events') : invariant(this.isMounted()));\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n var node = this.getDOMNode();\n ( false ? invariant(\n node,\n 'LocalEventTrapMixin.trapBubbledEvent(...): Requires node to be rendered.'\n ) : invariant(node));\n var listener = ReactBrowserEventEmitter.trapBubbledEvent(\n topLevelType,\n handlerBaseName,\n node\n );\n this._localEventListeners =\n accumulateInto(this._localEventListeners, listener);\n },\n\n // trapCapturedEvent would look nearly identical. We don't implement that\n // method because it isn't currently needed.\n\n componentWillUnmount:function() {\n if (this._localEventListeners) {\n forEachAccumulated(this._localEventListeners, remove);\n }\n }\n};\n\nmodule.exports = LocalEventTrapMixin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/LocalEventTrapMixin.js\n ** module id = 75\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/LocalEventTrapMixin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentBrowserEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar ReactDOMIDOperations = __webpack_require__(241);\nvar ReactMount = __webpack_require__(20);\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates:\n ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkupByID:\n ReactDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n /**\n * If a particular environment requires that some resources be cleaned up,\n * specify this in the injected Mixin. In the DOM, we would likely want to\n * purge any cached node ID lookups.\n *\n * @private\n */\n unmountIDFromEnvironment: function(rootNodeID) {\n ReactMount.purgeID(rootNodeID);\n }\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactComponentBrowserEnvironment.js\n ** module id = 76\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactComponentBrowserEnvironment.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkupByID: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function(environment) {\n ( false ? invariant(\n !injected,\n 'ReactCompositeComponent: injectEnvironment() can only be called once.'\n ) : invariant(!injected));\n ReactComponentEnvironment.unmountIDFromEnvironment =\n environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkupByID =\n environment.replaceNodeWithMarkupByID;\n ReactComponentEnvironment.processChildrenUpdates =\n environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactComponentEnvironment.js\n ** module id = 77\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactComponentEnvironment.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = __webpack_require__(4);\nvar emptyObject = __webpack_require__(58);\nvar warning = __webpack_require__(6);\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return <div>{children}</div>;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array<ReactComponent>}\n */\n withContext: function(newContext, scopedCallback) {\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n ) : null);\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactContext.js\n ** module id = 78\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactContext.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMComponent\n * @typechecks static-only\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar CSSPropertyOperations = __webpack_require__(238);\nvar DOMProperty = __webpack_require__(34);\nvar DOMPropertyOperations = __webpack_require__(42);\nvar ReactBrowserEventEmitter = __webpack_require__(35);\nvar ReactComponentBrowserEnvironment =\n __webpack_require__(76);\nvar ReactMount = __webpack_require__(20);\nvar ReactMultiChild = __webpack_require__(363);\nvar ReactPerf = __webpack_require__(28);\n\nvar assign = __webpack_require__(4);\nvar escapeTextContentForBrowser = __webpack_require__(59);\nvar invariant = __webpack_require__(3);\nvar isEventSupported = __webpack_require__(90);\nvar keyOf = __webpack_require__(24);\nvar warning = __webpack_require__(6);\n\nvar deleteListener = ReactBrowserEventEmitter.deleteListener;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = ReactBrowserEventEmitter.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = {'string': true, 'number': true};\n\nvar STYLE = keyOf({style: null});\n\nvar ELEMENT_NODE_TYPE = 1;\n\n/**\n * Optionally injectable operations for mutating the DOM\n */\nvar BackendIDOperations = null;\n\n/**\n * @param {?object} props\n */\nfunction assertValidProps(props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (props.dangerouslySetInnerHTML != null) {\n ( false ? invariant(\n props.children == null,\n 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.'\n ) : invariant(props.children == null));\n ( false ? invariant(\n typeof props.dangerouslySetInnerHTML === 'object' &&\n '__html' in props.dangerouslySetInnerHTML,\n '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' +\n 'Please visit https://fb.me/react-invariant-dangerously-set-inner-html ' +\n 'for more information.'\n ) : invariant(typeof props.dangerouslySetInnerHTML === 'object' &&\n '__html' in props.dangerouslySetInnerHTML));\n }\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n props.innerHTML == null,\n 'Directly setting property `innerHTML` is not permitted. ' +\n 'For more information, lookup documentation on `dangerouslySetInnerHTML`.'\n ) : null);\n (\"production\" !== process.env.NODE_ENV ? warning(\n !props.contentEditable || props.children == null,\n 'A component is `contentEditable` and contains `children` managed by ' +\n 'React. It is now your responsibility to guarantee that none of ' +\n 'those nodes are unexpectedly modified or duplicated. This is ' +\n 'probably not intentional.'\n ) : null);\n }\n ( false ? invariant(\n props.style == null || typeof props.style === 'object',\n 'The `style` prop expects a mapping from style properties to values, ' +\n 'not a string. For example, style={{marginRight: spacing + \\'em\\'}} when ' +\n 'using JSX.'\n ) : invariant(props.style == null || typeof props.style === 'object'));\n}\n\nfunction putListener(id, registrationName, listener, transaction) {\n if (false) {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n (\"production\" !== process.env.NODE_ENV ? warning(\n registrationName !== 'onScroll' || isEventSupported('scroll', true),\n 'This browser doesn\\'t support the `onScroll` event'\n ) : null);\n }\n var container = ReactMount.findReactContainerForID(id);\n if (container) {\n var doc = container.nodeType === ELEMENT_NODE_TYPE ?\n container.ownerDocument :\n container;\n listenTo(registrationName, doc);\n }\n transaction.getPutListenerQueue().enqueuePutListener(\n id,\n registrationName,\n listener\n );\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special cased tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\n// We accept any tag to be rendered but since this gets injected into abitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n ( false ? invariant(VALID_TAG_REGEX.test(tag), 'Invalid tag: %s', tag) : invariant(VALID_TAG_REGEX.test(tag)));\n validatedTagCache[tag] = true;\n }\n}\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(tag) {\n validateDangerousTag(tag);\n this._tag = tag;\n this._renderedChildren = null;\n this._previousStyleCopy = null;\n this._rootNodeID = null;\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n construct: function(element) {\n this._currentElement = element;\n },\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {string} rootID The root DOM ID for this node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} The computed markup.\n */\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n assertValidProps(this._currentElement.props);\n var closeTag = omittedCloseTags[this._tag] ? '' : '</' + this._tag + '>';\n return (\n this._createOpenTagMarkupAndPutListeners(transaction) +\n this._createContentMarkup(transaction, context) +\n closeTag\n );\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function(transaction) {\n var props = this._currentElement.props;\n var ret = '<' + this._tag;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n putListener(this._rootNodeID, propKey, propValue, transaction);\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n propValue = this._previousStyleCopy = assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue);\n }\n var markup =\n DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret + '>';\n }\n\n var markupForID = DOMPropertyOperations.createMarkupForID(this._rootNodeID);\n return ret + ' ' + markupForID + '>';\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function(transaction, context) {\n var prefix = '';\n if (this._tag === 'listing' ||\n this._tag === 'pre' ||\n this._tag === 'textarea') {\n // Add an initial newline because browsers ignore the first newline in\n // a <listing>, <pre>, or <textarea> as an \"authoring convenience\" -- see\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody.\n prefix = '\\n';\n }\n\n var props = this._currentElement.props;\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n return prefix + innerHTML.__html;\n }\n } else {\n var contentToUse =\n CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n return prefix + escapeTextContentForBrowser(contentToUse);\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(\n childrenToUse,\n transaction,\n context\n );\n return prefix + mountImages.join('');\n }\n }\n return prefix;\n },\n\n receiveComponent: function(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a native DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function(transaction, prevElement, nextElement, context) {\n assertValidProps(this._currentElement.props);\n this._updateDOMProperties(prevElement.props, transaction);\n this._updateDOMChildren(prevElement.props, transaction, context);\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {ReactReconcileTransaction} transaction\n */\n _updateDOMProperties: function(lastProps, transaction) {\n var nextProps = this._currentElement.props;\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) ||\n !lastProps.hasOwnProperty(propKey)) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n deleteListener(this._rootNodeID, propKey);\n } else if (\n DOMProperty.isStandardName[propKey] ||\n DOMProperty.isCustomAttribute(propKey)) {\n BackendIDOperations.deletePropertyByID(\n this._rootNodeID,\n propKey\n );\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ?\n this._previousStyleCopy :\n lastProps[propKey];\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n nextProp = this._previousStyleCopy = assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) &&\n (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) &&\n lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n putListener(this._rootNodeID, propKey, nextProp, transaction);\n } else if (\n DOMProperty.isStandardName[propKey] ||\n DOMProperty.isCustomAttribute(propKey)) {\n BackendIDOperations.updatePropertyByID(\n this._rootNodeID,\n propKey,\n nextProp\n );\n }\n }\n if (styleUpdates) {\n BackendIDOperations.updateStylesByID(\n this._rootNodeID,\n styleUpdates\n );\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {ReactReconcileTransaction} transaction\n */\n _updateDOMChildren: function(lastProps, transaction, context) {\n var nextProps = this._currentElement.props;\n\n var lastContent =\n CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent =\n CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml =\n lastProps.dangerouslySetInnerHTML &&\n lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml =\n nextProps.dangerouslySetInnerHTML &&\n nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n BackendIDOperations.updateInnerHTMLByID(\n this._rootNodeID,\n nextHtml\n );\n }\n } else if (nextChildren != null) {\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function() {\n this.unmountChildren();\n ReactBrowserEventEmitter.deleteAllListeners(this._rootNodeID);\n ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);\n this._rootNodeID = null;\n }\n\n};\n\nReactPerf.measureMethods(ReactDOMComponent, 'ReactDOMComponent', {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent'\n});\n\nassign(\n ReactDOMComponent.prototype,\n ReactDOMComponent.Mixin,\n ReactMultiChild.Mixin\n);\n\nReactDOMComponent.injection = {\n injectIDOperations: function(IDOperations) {\n ReactDOMComponent.BackendIDOperations = BackendIDOperations = IDOperations;\n }\n};\n\nmodule.exports = ReactDOMComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMComponent.js\n ** module id = 79\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMComponent.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEmptyComponent\n */\n\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactInstanceMap = __webpack_require__(37);\n\nvar invariant = __webpack_require__(3);\n\nvar component;\n// This registry keeps track of the React IDs of the components that rendered to\n// `null` (in reality a placeholder such as `noscript`)\nvar nullComponentIDsRegistry = {};\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponent: function(emptyComponent) {\n component = ReactElement.createFactory(emptyComponent);\n }\n};\n\nvar ReactEmptyComponentType = function() {};\nReactEmptyComponentType.prototype.componentDidMount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Make sure we run these methods in the correct order, we shouldn't\n // need this check. We're going to assume if we're here it means we ran\n // componentWillUnmount already so there is no internal instance (it gets\n // removed as part of the unmounting process).\n if (!internalInstance) {\n return;\n }\n registerNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.componentWillUnmount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Get rid of this check. See TODO in componentDidMount.\n if (!internalInstance) {\n return;\n }\n deregisterNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.render = function() {\n ( false ? invariant(\n component,\n 'Trying to return null from a render, but no null placeholder component ' +\n 'was injected.'\n ) : invariant(component));\n return component();\n};\n\nvar emptyElement = ReactElement.createElement(ReactEmptyComponentType);\n\n/**\n * Mark the component as having rendered to null.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction registerNullComponentID(id) {\n nullComponentIDsRegistry[id] = true;\n}\n\n/**\n * Unmark the component as having rendered to null: it renders to something now.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction deregisterNullComponentID(id) {\n delete nullComponentIDsRegistry[id];\n}\n\n/**\n * @param {string} id Component's `_rootNodeID`.\n * @return {boolean} True if the component is rendered to null.\n */\nfunction isNullComponentID(id) {\n return !!nullComponentIDsRegistry[id];\n}\n\nvar ReactEmptyComponent = {\n emptyElement: emptyElement,\n injection: ReactEmptyComponentInjection,\n isNullComponentID: isNullComponentID\n};\n\nmodule.exports = ReactEmptyComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactEmptyComponent.js\n ** module id = 80\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactEmptyComponent.js?")},function(module,exports){eval("/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLifeCycle\n */\n\n'use strict';\n\n/**\n * This module manages the bookkeeping when a component is in the process\n * of being mounted or being unmounted. This is used as a way to enforce\n * invariants (or warnings) when it is not recommended to call\n * setState/forceUpdate.\n *\n * currentlyMountingInstance: During the construction phase, it is not possible\n * to trigger an update since the instance is not fully mounted yet. However, we\n * currently allow this as a convenience for mutating the initial state.\n *\n * currentlyUnmountingInstance: During the unmounting phase, the instance is\n * still mounted and can therefore schedule an update. However, this is not\n * recommended and probably an error since it's about to be unmounted.\n * Therefore we still want to trigger in an error for that case.\n */\n\nvar ReactLifeCycle = {\n currentlyMountingInstance: null,\n currentlyUnmountingInstance: null\n};\n\nmodule.exports = ReactLifeCycle;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactLifeCycle.js\n ** module id = 81\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactLifeCycle.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocations\n */\n\n'use strict';\n\nvar keyMirror = __webpack_require__(47);\n\nvar ReactPropTypeLocations = keyMirror({\n prop: null,\n context: null,\n childContext: null\n});\n\nmodule.exports = ReactPropTypeLocations;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPropTypeLocations.js\n ** module id = 82\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactPropTypeLocations.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdateQueue\n */\n\n'use strict';\n\nvar ReactLifeCycle = __webpack_require__(81);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactElement = __webpack_require__(5);\nvar ReactInstanceMap = __webpack_require__(37);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\nfunction enqueueUpdate(internalInstance) {\n if (internalInstance !== ReactLifeCycle.currentlyMountingInstance) {\n // If we're in a componentWillMount handler, don't enqueue a rerender\n // because ReactUpdates assumes we're in a browser context (which is\n // wrong for server rendering) and we're about to do a render anyway.\n // See bug in #1740.\n ReactUpdates.enqueueUpdate(internalInstance);\n }\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n ( false ? invariant(\n ReactCurrentOwner.current == null,\n '%s(...): Cannot update during an existing state transition ' +\n '(such as within `render`). Render methods should be a pure function ' +\n 'of props and state.',\n callerName\n ) : invariant(ReactCurrentOwner.current == null));\n\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (false) {\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n (\"production\" !== process.env.NODE_ENV ? warning(\n !callerName,\n '%s(...): Can only update a mounted or mounting component. ' +\n 'This usually means you called %s() on an unmounted ' +\n 'component. This is a no-op.',\n callerName,\n callerName\n ) : null);\n }\n return null;\n }\n\n if (internalInstance === ReactLifeCycle.currentlyUnmountingInstance) {\n return null;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function(publicInstance, callback) {\n ( false ? invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n ) : invariant(typeof callback === 'function'));\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance ||\n internalInstance === ReactLifeCycle.currentlyMountingInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function(internalInstance, callback) {\n ( false ? invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n ) : invariant(typeof callback === 'function'));\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldUpdateComponent`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'forceUpdate'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function(publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function(publicInstance, partialState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n var queue =\n internalInstance._pendingStateQueue ||\n (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialProps Subset of the next props.\n * @internal\n */\n enqueueSetProps: function(publicInstance, partialProps) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n ( false ? invariant(\n internalInstance._isTopLevel,\n 'setProps(...): You called `setProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n ) : invariant(internalInstance._isTopLevel));\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n var props = assign({}, element.props, partialProps);\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} props New props.\n * @internal\n */\n enqueueReplaceProps: function(publicInstance, props) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n ( false ? invariant(\n internalInstance._isTopLevel,\n 'replaceProps(...): You called `replaceProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n ) : invariant(internalInstance._isTopLevel));\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function(internalInstance, newElement) {\n internalInstance._pendingElement = newElement;\n enqueueUpdate(internalInstance);\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactUpdateQueue.js\n ** module id = 83\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactUpdateQueue.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulateInto\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n *\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n ( false ? invariant(\n next != null,\n 'accumulateInto(...): Accumulated items must not be null or undefined.'\n ) : invariant(next != null));\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n\n if (currentIsArray && nextIsArray) {\n current.push.apply(current, next);\n return current;\n }\n\n if (currentIsArray) {\n current.push(next);\n return current;\n }\n\n if (nextIsArray) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/accumulateInto.js\n ** module id = 84\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/accumulateInto.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule forEachAccumulated\n */\n\n'use strict';\n\n/**\n * @param {array} an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\nvar forEachAccumulated = function(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n};\n\nmodule.exports = forEachAccumulated;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/forEachAccumulated.js\n ** module id = 85\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/forEachAccumulated.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventCharCode\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getEventCharCode.js\n ** module id = 86\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getEventCharCode.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventModifierState\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n /*jshint validthis:true */\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getEventModifierState.js\n ** module id = 87\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getEventModifierState.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventTarget\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getEventTarget.js\n ** module id = 88\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getEventTarget.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule instantiateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactCompositeComponent = __webpack_require__(346);\nvar ReactEmptyComponent = __webpack_require__(80);\nvar ReactNativeComponent = __webpack_require__(54);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function() { };\nassign(\n ReactCompositeComponentWrapper.prototype,\n ReactCompositeComponent.Mixin,\n {\n _instantiateReactComponent: instantiateReactComponent\n }\n);\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return (\n typeof type === 'function' &&\n typeof type.prototype !== 'undefined' &&\n typeof type.prototype.mountComponent === 'function' &&\n typeof type.prototype.receiveComponent === 'function'\n );\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {*} parentCompositeType The composite type that resolved this.\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, parentCompositeType) {\n var instance;\n\n if (node === null || node === false) {\n node = ReactEmptyComponent.emptyElement;\n }\n\n if (typeof node === 'object') {\n var element = node;\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n element && (typeof element.type === 'function' ||\n typeof element.type === 'string'),\n 'Only functions or strings can be mounted as React components.'\n ) : null);\n }\n\n // Special case string values\n if (parentCompositeType === element.type &&\n typeof element.type === 'string') {\n // Avoid recursion if the wrapper renders itself.\n instance = ReactNativeComponent.createInternalComponent(element);\n // All native components are currently wrapped in a composite so we're\n // safe to assume that this is what we should instantiate.\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // represenations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n } else {\n instance = new ReactCompositeComponentWrapper();\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactNativeComponent.createInstanceForText(node);\n } else {\n ( false ? invariant(\n false,\n 'Encountered invalid React node of type %s',\n typeof node\n ) : invariant(false));\n }\n\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n typeof instance.construct === 'function' &&\n typeof instance.mountComponent === 'function' &&\n typeof instance.receiveComponent === 'function' &&\n typeof instance.unmountComponent === 'function',\n 'Only React Components can be mounted.'\n ) : null);\n }\n\n // Sets up the instance. This can probably just move into the constructor now.\n instance.construct(node);\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (false) {\n instance._isOwnerNecessary = false;\n instance._warnedAboutRefsInRender = false;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (false) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/instantiateReactComponent.js\n ** module id = 89\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/instantiateReactComponent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/isEventSupported.js\n ** module id = 90\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/isEventSupported.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setInnerHTML\n */\n\n/* globals MSApp */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = function(node, html) {\n node.innerHTML = html;\n};\n\n// Win8 apps: Allow all html to be inserted\nif (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n setInnerHTML = function(node, html) {\n MSApp.execUnsafeLocalFunction(function() {\n node.innerHTML = html;\n });\n };\n}\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) ||\n html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n node.innerHTML = '\\uFEFF' + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n}\n\nmodule.exports = setInnerHTML;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/setInnerHTML.js\n ** module id = 91\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/setInnerHTML.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shouldUpdateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar warning = __webpack_require__(6);\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n if (prevElement != null && nextElement != null) {\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return (nextType === 'string' || nextType === 'number');\n } else {\n if (nextType === 'object' &&\n prevElement.type === nextElement.type &&\n prevElement.key === nextElement.key) {\n var ownersMatch = prevElement._owner === nextElement._owner;\n var prevName = null;\n var nextName = null;\n var nextDisplayName = null;\n if (false) {\n if (!ownersMatch) {\n if (prevElement._owner != null &&\n prevElement._owner.getPublicInstance() != null &&\n prevElement._owner.getPublicInstance().constructor != null) {\n prevName =\n prevElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement._owner != null &&\n nextElement._owner.getPublicInstance() != null &&\n nextElement._owner.getPublicInstance().constructor != null) {\n nextName =\n nextElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement.type != null &&\n nextElement.type.displayName != null) {\n nextDisplayName = nextElement.type.displayName;\n }\n if (nextElement.type != null && typeof nextElement.type === 'string') {\n nextDisplayName = nextElement.type;\n }\n if (typeof nextElement.type !== 'string' ||\n nextElement.type === 'input' ||\n nextElement.type === 'textarea') {\n if ((prevElement._owner != null &&\n prevElement._owner._isOwnerNecessary === false) ||\n (nextElement._owner != null &&\n nextElement._owner._isOwnerNecessary === false)) {\n if (prevElement._owner != null) {\n prevElement._owner._isOwnerNecessary = true;\n }\n if (nextElement._owner != null) {\n nextElement._owner._isOwnerNecessary = true;\n }\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n '<%s /> is being rendered by both %s and %s using the same ' +\n 'key (%s) in the same place. Currently, this means that ' +\n 'they don\\'t preserve state. This behavior should be very ' +\n 'rare so we\\'re considering deprecating it. Please contact ' +\n 'the React team and explain your use case so that we can ' +\n 'take that into consideration.',\n nextDisplayName || 'Unknown Component',\n prevName || '[Unknown]',\n nextName || '[Unknown]',\n prevElement.key\n ) : null);\n }\n }\n }\n }\n return ownersMatch;\n }\n }\n }\n return false;\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/shouldUpdateReactComponent.js\n ** module id = 92\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/shouldUpdateReactComponent.js?")},function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(setImmediate, clearImmediate) {var nextTick = __webpack_require__(404).nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// That\'s not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) {\n var id = nextImmediateId++;\n var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n immediateIds[id] = true;\n\n nextTick(function onNextTick() {\n if (immediateIds[id]) {\n // fn.call() is faster so we optimize for the common use-case\n // @see http://jsperf.com/call-apply-segu\n if (args) {\n fn.apply(null, args);\n } else {\n fn.call(null);\n }\n // Prevent ids from leaking\n exports.clearImmediate(id);\n }\n });\n\n return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) {\n delete immediateIds[id];\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(93).setImmediate, __webpack_require__(93).clearImmediate))\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/timers-browserify/main.js\n ** module id = 93\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/timers-browserify/main.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(321)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createAggregator) {\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of the collection through the given callback. The corresponding\n * value of each key is the last element responsible for generating the key.\n * The callback is bound to `thisArg` and invoked with three arguments;\n * (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var keys = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.indexBy(keys, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(keys, function(key) { return String.fromCharCode(key.code); });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.indexBy(characters, function(key) { this.fromCharCode(key.code); }, String);\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n */\n var indexBy = createAggregator(function(result, value, key) {\n result[key] = value;\n });\n\n return indexBy;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/indexBy.js\n ** module id = 94\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/indexBy.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(320), __webpack_require__(22), __webpack_require__(21), __webpack_require__(68), __webpack_require__(117), __webpack_require__(33), __webpack_require__(27), __webpack_require__(70), __webpack_require__(71)], __WEBPACK_AMD_DEFINE_RESULT__ = function(compareAscending, createCallback, forEach, getArray, getObject, isArray, map, releaseArray, releaseObject) {\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection through the callback. This method\n * performs a stable sort, that is, it will preserve the original sort order\n * of equal elements. The callback is bound to `thisArg` and invoked with\n * three arguments; (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an array of property names is provided for `callback` the collection\n * will be sorted by each property value.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Array|Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array} Returns a new array of sorted elements.\n * @example\n *\n * _.sortBy([1, 2, 3], function(num) { return Math.sin(num); });\n * // => [3, 1, 2]\n *\n * _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math);\n * // => [3, 1, 2]\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36 },\n * { 'name': 'fred', 'age': 40 },\n * { 'name': 'barney', 'age': 26 },\n * { 'name': 'fred', 'age': 30 }\n * ];\n *\n * // using \"_.pluck\" callback shorthand\n * _.map(_.sortBy(characters, 'age'), _.values);\n * // => [['barney', 26], ['fred', 30], ['barney', 36], ['fred', 40]]\n *\n * // sorting by multiple properties\n * _.map(_.sortBy(characters, ['name', 'age']), _.values);\n * // = > [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]]\n */\n function sortBy(collection, callback, thisArg) {\n var index = -1,\n isArr = isArray(callback),\n length = collection ? collection.length : 0,\n result = Array(typeof length == 'number' ? length : 0);\n\n if (!isArr) {\n callback = createCallback(callback, thisArg, 3);\n }\n forEach(collection, function(value, key, collection) {\n var object = result[++index] = getObject();\n if (isArr) {\n object.criteria = map(callback, function(key) { return value[key]; });\n } else {\n (object.criteria = getArray())[0] = callback(value, key, collection);\n }\n object.index = index;\n object.value = value;\n });\n\n length = result.length;\n result.sort(compareAscending);\n while (length--) {\n var object = result[length];\n result[length] = object.value;\n if (!isArr) {\n releaseArray(object.criteria);\n }\n releaseObject(object);\n }\n return result;\n }\n\n return sortBy;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/sortBy.js\n ** module id = 95\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/sortBy.js?")},function(module,exports,__webpack_require__){eval('\n// Depedencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = PersonalizationPlacement;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n__webpack_require__(104);\n\nvar _supportUtilities = __webpack_require__(26);\n\nvar _supportUtilities2 = _interopRequireDefault(_supportUtilities);\n\n// The component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\n// Templates\n\nvar _templateTemplatesStreamEntry = __webpack_require__(99);\n\nvar _templateTemplatesStreamEntry2 = _interopRequireDefault(_templateTemplatesStreamEntry);\n\nvar _templateTemplatesLoadMore = __webpack_require__(98);\n\nvar _templateTemplatesLoadMore2 = _interopRequireDefault(_templateTemplatesLoadMore);\n\n// Refer to /source/js/support/personalization-placement/personalization-placement.js for how RR component names used in page-metadata.xml files are mapped to these template names explicitly.\nvar templates = {\n\t"bottom-recirc": __webpack_require__(481),\n\t"dive-deeper": __webpack_require__(483),\n\t"get-more": __webpack_require__(484),\n\thmm: __webpack_require__(485),\n\t"large-carousel": __webpack_require__(486),\n\t"load-more": __webpack_require__(98),\n\t"mag-cover": __webpack_require__(487),\n\t"no-results": __webpack_require__(488),\n\t"pop-topics": __webpack_require__(492),\n\t"popup-slider": __webpack_require__(493),\n\t"red-strip": __webpack_require__(494),\n\t"slider-promo": __webpack_require__(496),\n\t"small-carousel": __webpack_require__(497),\n\t"related-section": __webpack_require__(495),\n\t"stream-content": __webpack_require__(498),\n\t"stream-entry": __webpack_require__(99),\n\t"subscribe-button": __webpack_require__(499),\n\t"subscribe-now": __webpack_require__(500),\n\tsubscription: __webpack_require__(501),\n\t"top-deals": __webpack_require__(502),\n\t"top-recirc": __webpack_require__(503),\n\t"topbar-subscribe": __webpack_require__(504),\n\t"button-link": __webpack_require__(482),\n\t"better-together": __webpack_require__(478),\n\t"big-idea-promo": __webpack_require__(479),\n\t"orange-strip-box": __webpack_require__(489),\n\t"orange-strip-line1": __webpack_require__(490),\n\t"orange-strip-line2": __webpack_require__(491),\n\t"books-recirc": __webpack_require__(480)\n};\n\nfunction PersonalizationPlacement($el) {\n\tthis.initializeAsComponent($el);\n}\n\nPersonalizationPlacement.prototype = {\n\t/**\n * function that will render the placement information\n * based on the information given\n *\n * @param {object} elem - element to attach the rendered HTML\n * @param {string} templateName - name of the template to be retrieved\n * @param {object} responseObj - the response object returned from Rich Relevance\n * @param {string} objectType\n *\n */\n\trender: function render(elem, templateName, responseObj, objectType) {\n\t\tvar defaultImageURL = "/resources/images/no-image.png";\n\t\tvar replacementDefaultImageURL = "/resources/css/images/article-default-img.png";\n\n\t\tif (templateName === "top-recirc") {\n\t\t\tif (responseObj.skus && Array.isArray(responseObj.skus) && responseObj.skus.length > 0) {\n\t\t\t\tif (responseObj.skus[0].ImageURL && responseObj.skus[0].ImageURL === defaultImageURL) {\n\t\t\t\t\tresponseObj.skus[0].ImageURL = replacementDefaultImageURL;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tvar promise = _jquery2["default"].Deferred();\n\t\tvar templateSettings = responseObj;\n\t\tvar showLoadMore = responseObj.showLoadMore || false;\n\n\t\t// check for type\n\t\tif (objectType !== "promo") {\n\t\t\ttemplateSettings = {};\n\t\t\tvar templateObj = responseObj;\n\t\t\tif (responseObj.skus) {\n\t\t\t\ttemplateObj = updateResponseObject(responseObj);\n\t\t\t}\n\n\t\t\ttemplateSettings.skus = templateObj.skus;\n\t\t\ttemplateSettings.showLoadMore = showLoadMore;\n\t\t\ttemplateSettings.heading = templateObj.heading;\n\t\t\tif (templateName === "stream-content") {\n\t\t\t\ttemplateSettings.streamEntry = _templateTemplatesStreamEntry2["default"];\n\t\t\t\ttemplateSettings.loadMore = _templateTemplatesLoadMore2["default"];\n\t\t\t}\n\t\t}\n\n\t\tif (templateName.indexOf("better-together") >= 0) {\n\t\t\t// Adding IDP product details as the first item needs to be the same\n\t\t\ttemplateSettings = addIdpProduct(templateSettings);\n\t\t}\n\n\t\t(0, _jquery2["default"])(elem).html(templates[templateName](templateSettings));\n\t\t_servicesState2["default"].initializeElement((0, _jquery2["default"])(elem));\n\n\t\tif (templateName.indexOf("carousel") >= 0) {\n\t\t\t(0, _jquery2["default"])(elem).find(".poster-carousel").slick({\n\t\t\t\tarrows: true,\n\t\t\t\tautoplay: true,\n\t\t\t\tautoplaySpeed: 7000,\n\t\t\t\tdots: true\n\t\t\t});\n\n\t\t\t(0, _jquery2["default"])(elem).find("store-carousel").slick({\n\t\t\t\tarrows: true,\n\t\t\t\tautoplay: false,\n\t\t\t\tdots: false,\n\t\t\t\tinfinite: true,\n\t\t\t\tspeed: 300,\n\t\t\t\tslidesToShow: 3,\n\t\t\t\tslidesToScroll: 1,\n\t\t\t\tresponsive: [{\n\t\t\t\t\tbreakpoint: 767,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tslidesToShow: 2\n\t\t\t\t\t}\n\t\t\t\t}, {\n\t\t\t\t\tbreakpoint: 480,\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tslidesToShow: 1\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t});\n\t\t}\n\t\t// truncate longer text and append ellipses for title for these components\n\t\tif (templateName.indexOf("better-together") >= 0 || templateName.indexOf("related-section") >= 0 || templateName.indexOf("dive-deeper") >= 0 || templateName.indexOf("books-recirc") >= 0 || templateName.indexOf("small-carousel") >= 0) {\n\t\t\tvar elems = (0, _jquery2["default"])("[js-target=\'ellipse-product-title\']");\n\t\t\telems.each(function (i, el) {\n\t\t\t\t_supportUtilities2["default"].setEllipsis(el);\n\t\t\t});\n\t\t}\n\n\t\tif (templateName.indexOf("orange-strip-box") >= 0) {\n\t\t\t_supportUtilities2["default"].trigger("updateOrangeBar");\n\t\t}\n\t\tpromise.resolve();\n\t\treturn promise;\n\t}\n};\n\n/**\n* function that will massage the response object to add\n* some flags and data values based on the provided data.\n* This is because RR does not have all the information\n*\n* @param {object} respObj\n*\n* @return {object} respObj\n*/\nvar updateResponseObject = function updateResponseObject(respObj) {\n\trespObj.skus.forEach(function (sku) {\n\t\tvar showAddToCart = true;\n\t\t// remove quotation marks and html from sku.Description\n\t\tsku.Description = sku.Description.substring(1, sku.Description.length - 1).replace(/<\\/?[^>]+(>|$)/g, "").replace(/\\\\\\"/g, "&#34;");\n\t\tif (sku.ProductID.indexOf("tag:") >= 0) {\n\t\t\tshowAddToCart = false;\n\t\t}\n\n\t\tsku.showAddToCart = showAddToCart;\n\n\t\tif (sku.Description.length > 195) {\n\t\t\tsku.Description = sku.Description.slice(0, 195) + "...";\n\t\t}\n\t});\n\n\treturn respObj;\n};\n\nvar addIdpProduct = function addIdpProduct(templateSettings) {\n\tvar idpProduct = (0, _jquery2["default"])(".content-area--idp product-preferred-details");\n\tif (idpProduct) {\n\t\tvar imageUrl = idpProduct.data("product-image");\n\t\tvar productLink = idpProduct.data("product-url");\n\t\tvar name = idpProduct.data("product-title");\n\t\tvar productFormat = idpProduct.data("product-format");\n\t\tvar productID = idpProduct.data("id");\n\t\tvar price = idpProduct.data("product-price");\n\t\tvar idpSku = {};\n\t\tidpSku.ImageUrl = imageUrl ? imageUrl : "";\n\t\tidpSku.ProductLink = productLink ? productLink : "";\n\t\tidpSku.Name = name ? name : "";\n\t\tidpSku.ProductTypeName = productFormat ? productFormat : "";\n\t\tidpSku.Price = price ? price : "";\n\t\tidpSku.ProductID = productID ? productID : "";\n\t\ttemplateSettings.skus.unshift(idpSku);\n\t\treturn templateSettings;\n\t}\n};\n\n(0, _mixinsComponent2["default"])(PersonalizationPlacement, "personalization-placement");\n\nPersonalizationPlacement.render = PersonalizationPlacement.prototype.render;\nPersonalizationPlacement.updateResponseObject = updateResponseObject;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/personalization-placement/personalization-placement.js\n ** module id = 96\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/personalization-placement.js?')},function(module,exports,__webpack_require__){eval('/**\n */\n\n// Depedencies\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernObjectsClone = __webpack_require__(48);\n\nvar _lodashAmdModernObjectsClone2 = _interopRequireDefault(_lodashAmdModernObjectsClone);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\nvar _lodashAmdModernCollectionsContains = __webpack_require__(41);\n\nvar _lodashAmdModernCollectionsContains2 = _interopRequireDefault(_lodashAmdModernCollectionsContains);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\n// Services\n\nvar _supportPersonalizationPlacementPersonalizationPlacement = __webpack_require__(447);\n\nvar _supportPersonalizationPlacementPersonalizationPlacement2 = _interopRequireDefault(_supportPersonalizationPlacementPersonalizationPlacement);\n\nvar _localstorageUtil = __webpack_require__(25);\n\nvar _localstorageUtil2 = _interopRequireDefault(_localstorageUtil);\n\nvar _state = __webpack_require__(11);\n\nvar _state2 = _interopRequireDefault(_state);\n\n//Redux\n\nvar _servicesReduxReduxStateRR_State = __webpack_require__(266);\n\nvar _HandlingDataHandler = __webpack_require__(435);\n\nvar _HandlingDataHandler2 = _interopRequireDefault(_HandlingDataHandler);\n\n// initialize R3_COMMON\nvar R3_COMMON = window.R3_COMMON = new r3_common(); // eslint-disable-line camelcase\nvar queue = [];\nvar placementPromise = new _jquery2["default"].Deferred();\nvar queuePromise = new _jquery2["default"].Deferred();\n\n/**\n * function that will add to the queue so that we\n * can process the placements one at a time\n *\n * @param {object} placementSetting\n *\n */\nvar addToQueue = function addToQueue(placementSetting) {\n\tqueue.push(placementSetting);\n};\n\n/**\n * function that will process the placement queue\n *\n */\nvar processPlacementQueue = function processPlacementQueue() {\n\tif (queue.length > 0) {\n\t\t// process the first placement\n\t\tinitialize(queue[0]);\n\t\tstartProcess();\n\t}\n};\n\nqueuePromise.then(function () {\n\tif (queue.length > 0) {\n\t\tprocessPlacementQueue();\n\t}\n});\n\n/**\n * function that will reset the RR settings in order to\n * be able to make multiple RR requests\n *\n */\nvar reset = function reset() {\n\tif (window.R3_HOME !== undefined) {\n\t\twindow.R3_HOME = undefined;\n\t}\n\n\tif (window.R3_SEARCH !== undefined) {\n\t\twindow.R3_SEARCH = undefined;\n\t}\n\n\tif (window.R3_CATEGORY !== undefined) {\n\t\twindow.R3_CATEGORY = undefined;\n\t}\n\n\tif (window.R3_ITEM !== undefined) {\n\t\twindow.R3_ITEM = undefined;\n\t}\n\n\tif (window.R3_CART !== undefined) {\n\t\twindow.R3_CART = undefined;\n\t}\n\n\tif (window.R3_PURCHASED !== undefined) {\n\t\twindow.R3_PURCHASED = undefined;\n\t}\n\n\tif (window.R3_ERROR !== undefined) {\n\t\twindow.R3_ERROR = undefined;\n\t}\n\n\tif (window.R3_ADDTOCART !== undefined) {\n\t\twindow.R3_ADDTOCART = undefined;\n\t}\n\n\tif (window.R3_COMMON !== undefined) {\n\t\tif (window.R3_COMMON.placementTypes !== undefined) {\n\t\t\twindow.R3_COMMON.placementTypes = "";\n\t\t}\n\n\t\tif (window.R3_COMMON.categoryHintIds !== undefined) {\n\t\t\twindow.R3_COMMON.categoryHintIds = "";\n\t\t}\n\t}\n};\n\n/**\n * function that will setup the initial settings for Rich Relevance\n * setup\n *\n * @param {string} uid\n * @param {string} sid\n * @param {array} placements\n * @param {array} shopperAttributes\n *\n */\nvar placementSetup = function placementSetup(uid, sid, placements, shopperAttributes) {\n\tR3_COMMON.setApiKey(_supportPersonalizationPlacementPersonalizationPlacement2["default"].RR_COMMON.API_KEY);\n\tR3_COMMON.setBaseUrl(window.location.protocol + "//" + _supportPersonalizationPlacementPersonalizationPlacement2["default"].RR_COMMON.env + ".richrelevance.com/rrserver/");\n\tR3_COMMON.setClickthruServer(window.location.protocol + "//" + window.location.host);\n\tR3_COMMON.setSessionId(sid);\n\tR3_COMMON.setUserId(uid);\n\tplacements.forEach(function (elem) {\n\t\tR3_COMMON.addPlacementType(elem);\n\t});\n\tif (shopperAttributes && shopperAttributes.length > 0) {\n\t\tvar shopperObj = {};\n\t\t(0, _lodashAmdModernCollectionsForEach2["default"])(shopperAttributes, function (attribute) {\n\t\t\tvar tempArray = attribute.split(":");\n\t\t\tshopperObj[tempArray[0]] = tempArray[1];\n\t\t});\n\n\t\tif (_state2["default"].current.indexOf("guest") === 0) {\n\t\t\tif (window.digitalData && window.digitalData.users && window.digitalData.users[0] && window.digitalData.users[0].profile) {\n\t\t\t\tshopperObj.timeSinceLastVisit = window.digitalData.users[0].profile.secondsSinceLastVisit;\n\t\t\t}\n\t\t}\n\n\t\tR3_COMMON.addContext({ "userAttribute": shopperObj });\n\t\t// Add segment code here:\n\t\tif (shopperObj.industry) {\n\t\t\tR3_COMMON.addSegment("industry", shopperObj.industry);\n\t\t}\n\t}\n};\n\n/**\n * function that will set the initial configuration of the rich\n * relevance setup\n *\n * @param {string} category\n * @param {object} settings\n *\n * @return {object}\n */\nvar placementConfigure = function placementConfigure(category, settings) {\n\tvar func = _supportPersonalizationPlacementPersonalizationPlacement2["default"].RR_COMMON.pages[category];\n\n\treturn func.call(this, settings);\n};\n\n/**\n * function that will process the JSON information\n * returned from the RR js service\n * mapState function coming from Redux ../services/redux/\n */\n\nvar handleJSON = function handleJSON() {\n\tvar h = new _HandlingDataHandler2["default"]();\n\tif (h.checking(RR.data.JSON.placements)) {\n\t\t_localstorageUtil2["default"].setCache(RR.hbrCacheName, _servicesReduxReduxStateRR_State.mapState.RRgettingState());\n\t\tplacementPromise.resolve(_servicesReduxReduxStateRR_State.mapState.RRgettingState());\n\t}\n};\n\nvar triggerPlacement = function triggerPlacement() {\n\tvar h = new _HandlingDataHandler2["default"]();\n\tif (h.checking(RR.data.JSON.placements)) {\n\t\t_localstorageUtil2["default"].setCache(RR.hbrCacheName, _servicesReduxReduxStateRR_State.mapState.RRgettingState());\n\t\tqueue.shift();\n\t\tqueuePromise.resolve();\n\t\t(0, _jquery2["default"])("body").trigger("update:placement", _servicesReduxReduxStateRR_State.mapState.RRgettingState());\n\t}\n};\n\nvar triggerConfirmationPlacement = function triggerConfirmationPlacement() {\n\tvar h = new _HandlingDataHandler2["default"]();\n\tif (h.checking(RR.data.JSON.placements)) {\n\t\t(0, _jquery2["default"])("add-to-cart-confirmation").trigger("update:placement:confirmation", _servicesReduxReduxStateRR_State.mapState.RRgettingState());\n\t}\n};\n\n/**\n * function that will retrieve the cached placements for the given\n * page\n *\n * @param {string} cacheName\n *\n * @return {object} cached placements\n */\nexports.retrieveCachedPlacements = function (cacheName) {\n\treturn _localstorageUtil2["default"].getCache(cacheName);\n};\n\n/**\n * function that will initial the Rich Relevance process and set\n * all the relevant information\n *\n * @param {object} options\n *\n */\nvar initialize = function initialize(settings) {\n\treset();\n\tvar opts = settings || setup();\n\tvar category = opts.category ? opts.category.toLowerCase() : "home";\n\tplacementSetup(opts.uid, opts.sid, opts.placements, opts["shopper-attributes"]);\n\n\tRR.jsonCallback = settings ? settings.handleJSON : handleJSON;\n\tRR.hbrCacheName = opts.cacheName;\n\n\tplacementConfigure(category, opts);\n};\n\n/**\n * function that will kick off the Rich Relevance process\n *\n */\nvar startProcess = function startProcess() {\n\trr_flush_onload();\n\tr3();\n};\n\n/**\n * function that will setup the placement object and all\n * the necessary information for Rich Relevance\n *\n * @return {object}\n */\nvar setup = function setup() {\n\tvar placement = (0, _lodashAmdModernObjectsClone2["default"])(_supportPersonalizationPlacementPersonalizationPlacement2["default"].placementObj, true);\n\n\t(0, _lodashAmdModernObjectsAssign2["default"])(placement, getMetaData());\n\n\texports.placementCategory = placement.category.toLowerCase();\n\treturn placement;\n};\n\n/**\n * function that will get the meta data information\n * and return an object\n *\n * @return {object}\n */\nvar getMetaData = function getMetaData() {\n\tvar thisPlacementObj = {};\n\tvar metaTags = (0, _jquery2["default"])("meta");\n\tvar metaData = ["cart-total", "order-id", "uid", "sid", "search-term", "page-category-id", "page-category-name", "item-name", "item-id"];\n\tvar metaDataArrays = ["cart-items", "search-results", "shopper-attributes"];\n\t_jquery2["default"].each(metaTags, function (index, meta) {\n\t\tvar metaName = (0, _jquery2["default"])(meta).attr("name");\n\t\tif (metaName === "page-type") {\n\t\t\tvar pageType = (0, _jquery2["default"])(meta).attr("content").toLowerCase();\n\t\t\tpageType = pageType.replace(/_/g, "-");\n\t\t\tif (pageType === "landing" || pageType === "user") {\n\t\t\t\tthisPlacementObj.category = "home";\n\t\t\t\tthisPlacementObj.cacheName = "home";\n\t\t\t} else {\n\t\t\t\tthisPlacementObj.category = pageType;\n\t\t\t\tthisPlacementObj.cacheName = pageType;\n\t\t\t}\n\t\t}\n\n\t\tif (metaName === "rr-placements") {\n\t\t\tvar placements = (0, _jquery2["default"])(meta).attr("content");\n\n\t\t\tthisPlacementObj.placements = placements.split(",");\n\t\t}\n\n\t\tif ((0, _lodashAmdModernCollectionsContains2["default"])(metaDataArrays, metaName)) {\n\t\t\tthisPlacementObj[metaName] = (0, _jquery2["default"])(meta).attr("content") && (0, _jquery2["default"])(meta).attr("content").length > 0 ? (0, _jquery2["default"])(meta).attr("content").split(",") : [];\n\t\t}\n\n\t\tif ((0, _lodashAmdModernCollectionsContains2["default"])(metaData, metaName)) {\n\t\t\tthisPlacementObj[metaName] = (0, _jquery2["default"])(meta).attr("content");\n\t\t}\n\t});\n\n\treturn thisPlacementObj;\n};\n\nexports.R3_COMMON = R3_COMMON;\nexports.placementPromise = placementPromise;\nexports.placementTemplateMap = _supportPersonalizationPlacementPersonalizationPlacement2["default"].RR_COMMON.templates;\nexports.placementObj = _supportPersonalizationPlacementPersonalizationPlacement2["default"].placementObj;\nexports.initialize = initialize;\nexports.triggerPlacement = triggerPlacement;\nexports.triggerConfirmationPlacement = triggerConfirmationPlacement;\nexports.getMetaData = getMetaData;\nexports.addToQueue = addToQueue;\nexports.processPlacementQueue = processPlacementQueue;\nexports.startProcess = startProcess;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/personalization-placement-manager.js\n ** module id = 97\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/hbr/personalization-placement-manager.js?'); },function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<li class="stream-entry">\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="load-ten-more">\\n\t\t\t\t<a href="#" js-target="load-ten-more-link">\\n\t\t\t\t<i class="icon icon-load-more mrs"></i> Load more items</a>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</li>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/load-more.html\n ** module id = 98\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/load-more.html?./web_loaders/template.loader.js')},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(moment) {module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n skus.forEach(function(sku, index) { ;\n__p += '\\n\t<li class=\"stream-entry\">\\n\t\t<div class=\"row\">\\n\t\t\t<div class=\"content-area column\">\\n\t\t\t\\n\t\t\t\t<stream-item class=\"stream-item\" \\n\t\t\t\t\tdata-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-content-type=\"';\n if (sku.Entity_Type !== undefined) { ;\n__p +=\n((__t = ( sku.Entity_Type )) == null ? '' : __t) +\n' ';\n } ;\n__p += '\"\\n\t\t\t\t\tdata-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t>\\n\t\t\t\t\t';\n if (sku.ImageUrl && sku.ImageUrl !== \"/resources/images/no-image.png\") { ;\n__p += '\\n\t\t\t\t\t<!-- thumbnail image -->\\n\t\t\t\t\t<div class=\"stream-image\">\\n\t\t\t\t\t\t<figure>\\n\t\t\t\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\" alt=\"\" /></a>\\n\t\t\t\t\t\t</figure>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t';\n } ;\n__p += '\\n\\n\t\t\t\t\t<!-- Link and title -->\\n\t\t\t\t\t<h3 class=\"hed\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h3>\\n\\n\t\t\t\t\t<!-- item info -->\\n\t\t\t\t\t<div class=\"stream-item-info\">\\n\\n\t\t\t\t\t\t';\n if (typeof sku.Major_Subject !== \"undefined\") { \n\t\t\t\t\t\t\tvar termlink = sku.Major_Subject.toLowerCase().replace(\"&\",\"and\").replace(/ /g,\"-\");\n\t\t\t\t\t\t;\n__p += '\\n\t\t\t\t\t\t<a href=\"/topic/' +\n((__t = ( termlink )) == null ? '' : __t) +\n'\" class=\"topic\">' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'</a>\\n\t\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t\t\t<span class=\"content-type\">';\n if (sku.Product_Type_Name !== undefined) { ;\n__p +=\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n' ';\n } ;\n__p += '</span>\\n\t\t\t\t\t\t<!-- author could be none, one or many -->\\n\t\t\t\t\t\t<ul class=\"byline byline-list\"><li>' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'</li></ul>\\n\t\t\t\t\t</div>\\n\\n\t\t\t\t\t<!-- product price/add to cart -->\\n\t\t\t\t\t';\n if (sku.Price && sku.Price > 0) { ;\n__p += '\\n\t\t\t\t\t<div class=\"stream-item-price\">\\n\t\t\t\t\t\t<div class=\"price\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</div>\\n\t\t\t\t\t\t<add-to-cart class=\"add-to-cart is-inline-block\" \\n\t\t\t\t\t\t\tdata-type=\"\"\\n\t\t\t\t\t\t\tdata-product-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-major-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-author=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-content-type=\"';\n if (sku.Product_Type_Name !== undefined) { ;\n__p +=\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n' ';\n } ;\n__p += '\"\\n\t\t\t\t\t\t\tdata-product-format=\"\"\\n\t\t\t\t\t\t\t>\\n\t\t\t\t\t\t\t<input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n\\n\t\t\t\t\t\t\t<button js-target=\"add\" class=\"button--tight\">Add to cart</button>\\n\t\t\t\t\t\t</add-to-cart>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t';\n } ;\n__p += '\\n\\n\t\t\t\t\t<!-- dek -->\\n\t\t\t\t\t<div class=\"dek\">' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'</div>\\n\\n\t\t\t\t\t<!-- utility -->\\n\t\t\t\t\t<ul class=\"stream-utility\">\\n\t\t\t\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"save-flyout\"><i class=\"icon icon-file-text-o\"></i> Save</a></li>\\n\t\t\t\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"share-flyout\"><i class=\"icon icon-share-square-o\"></i> Share</a></li>\\n\t\t\t\t\t\t<li class=\"utility pubdate\"><time>' +\n((__t = ( moment(sku.Pub_Date).format(\"MMMM DD, YYYY\") )) == null ? '' : __t) +\n'</time></li>\\n\t\t\t\t\t</ul>\\n\t\t\t\t</stream-item>\\n\\n\t\t\t</div>\\n\t\t</div>\\n\t</li>\\n\t';\n if (index === 3) { ;\n__p += '\\n\t<li class=\"stream-entry is-hidden\" js-target=\"stream-ad-more\">\\n\\n\t</li>\\n\t';\n } ;\n__p += '\\n\\n';\n }); ;\n__p += '\\n';\n\n}\nreturn __p\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/stream-entry.html\n ** module id = 99\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/stream-entry.html?./web_loaders/template.loader.js")},,,,function(module,exports,__webpack_require__){eval('/**\n * @module components/modal-box\n * @requires module:jquery\n * @requires module:mixins/component\n */\n\n// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.ModalBox = ModalBox;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// The component mixin\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction ModalBox($el) {\n\tthis.initializeAsComponent($el);\n}\n\nModalBox.prototype = {\n\trender: function render(template) {\n\t\tvar quarterTop = (0, _jquery2["default"])(window).height() / 4;\n\n\t\t// Let\'s add a transparent layer on top of the entire site\n\t\tcreateTransparentLayer();\n\n\t\t(0, _jquery2["default"])("<modal-box/>").appendTo("body");\n\n\t\t(0, _jquery2["default"])("modal-box").addClass("reveal-modal tiny").html("<div class=\'text-center lighter-gray font-light font-size-large\'>" + "<i class=\'icon icon-spinner icon-spin info-color\'></i> Processing...</div>");\n\n\t\tif (template) {\n\t\t\t(0, _jquery2["default"])("modal-box").html(template);\n\t\t}\n\n\t\tvar scrollPosition = (0, _jquery2["default"])("body").scrollTop() || (0, _jquery2["default"])("html").scrollTop();\n\t\tif (scrollPosition === 0) {\n\t\t\t(0, _jquery2["default"])("modal-box").addClass("show-modal");\n\t\t} else {\n\t\t\t(0, _jquery2["default"])("modal-box").animate({ top: scrollPosition + quarterTop }, 1000);\n\t\t}\n\n\t\t(0, _jquery2["default"])("modal-box").addClass("open-modal");\n\t},\n\n\tclose: function close() {\n\t\t(0, _jquery2["default"])("modal-box").animate({ top: -750 }, 1000).delay(500).remove();\n\n\t\t(0, _jquery2["default"])(".transparent-layer").fadeOut(500).remove();\n\t}\n};\n\n/**\n* function that will create a transparent layer on top of\n* the entire page\n*\n*/\nvar createTransparentLayer = function createTransparentLayer() {\n\tvar width = (0, _jquery2["default"])(document).width();\n\tvar height = (0, _jquery2["default"])(document).height();\n\n\t(0, _jquery2["default"])("<div/>", {\n\t\t"class": "transparent-layer",\n\t\theight: height,\n\t\twidth: width\n\t}).appendTo("body");\n};\n\n(0, _mixinsComponent2["default"])(ModalBox, "modal-box");\n\nModalBox.render = ModalBox.prototype.render;\nModalBox.close = ModalBox.prototype.close;\n\nexports["default"] = ModalBox;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/modal-box/modal-box.js\n ** module id = 103\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/modal-box/modal-box.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n _ _ _ _\n ___| (_) ___| | __ (_)___\n/ __| | |/ __| |/ / | / __|\n\\__ \\ | | (__| < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.6.0\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n(function(factory) {\n 'use strict';\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n\n}(function($) {\n 'use strict';\n var Slick = window.Slick || {};\n\n Slick = (function() {\n\n var instanceUid = 0;\n\n function Slick(element, settings) {\n\n var _ = this, dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-prev\" aria-label=\"Previous\" tabindex=\"0\" role=\"button\">Previous</button>',\n nextArrow: '<button type=\"button\" data-role=\"none\" class=\"slick-next\" aria-label=\"Next\" tabindex=\"0\" role=\"button\">Next</button>',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function(slider, i) {\n return $('<button type=\"button\" data-role=\"none\" role=\"button\" tabindex=\"0\" />').text(i + 1);\n },\n dots: false,\n dotsClass: 'slick-dots',\n draggable: true,\n easing: 'linear',\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: 'ondemand',\n mobileFirst: false,\n pauseOnHover: true,\n pauseOnFocus: true,\n pauseOnDotsHover: false,\n respondTo: 'window',\n responsive: null,\n rows: 1,\n rtl: false,\n slide: '',\n slidesPerRow: 1,\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 500,\n swipe: true,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n verticalSwiping: false,\n waitForAnimate: true,\n zIndex: 1000\n };\n\n _.initials = {\n animating: false,\n dragging: false,\n autoPlayTimer: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n $dots: null,\n listWidth: null,\n listHeight: null,\n loadIndex: 0,\n $nextArrow: null,\n $prevArrow: null,\n slideCount: null,\n slideWidth: null,\n $slideTrack: null,\n $slides: null,\n sliding: false,\n slideOffset: 0,\n swipeLeft: null,\n $list: null,\n touchObject: {},\n transformsEnabled: false,\n unslicked: false\n };\n\n $.extend(_, _.initials);\n\n _.activeBreakpoint = null;\n _.animType = null;\n _.animProp = null;\n _.breakpoints = [];\n _.breakpointSettings = [];\n _.cssTransitions = false;\n _.focussed = false;\n _.interrupted = false;\n _.hidden = 'hidden';\n _.paused = true;\n _.positionProp = null;\n _.respondTo = null;\n _.rowCount = 1;\n _.shouldClick = true;\n _.$slider = $(element);\n _.$slidesCache = null;\n _.transformType = null;\n _.transitionType = null;\n _.visibilityChange = 'visibilitychange';\n _.windowWidth = 0;\n _.windowTimer = null;\n\n dataSettings = $(element).data('slick') || {};\n\n _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n _.currentSlide = _.options.initialSlide;\n\n _.originalSettings = _.options;\n\n if (typeof document.mozHidden !== 'undefined') {\n _.hidden = 'mozHidden';\n _.visibilityChange = 'mozvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n _.hidden = 'webkitHidden';\n _.visibilityChange = 'webkitvisibilitychange';\n }\n\n _.autoPlay = $.proxy(_.autoPlay, _);\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n _.changeSlide = $.proxy(_.changeSlide, _);\n _.clickHandler = $.proxy(_.clickHandler, _);\n _.selectHandler = $.proxy(_.selectHandler, _);\n _.setPosition = $.proxy(_.setPosition, _);\n _.swipeHandler = $.proxy(_.swipeHandler, _);\n _.dragHandler = $.proxy(_.dragHandler, _);\n _.keyHandler = $.proxy(_.keyHandler, _);\n\n _.instanceUid = instanceUid++;\n\n // A simple way to check for HTML strings\n // Strict HTML recognition (must start with <)\n // Extracted from jQuery v1.11 source\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n _.registerBreakpoints();\n _.init(true);\n\n }\n\n return Slick;\n\n }());\n\n Slick.prototype.activateADA = function() {\n var _ = this;\n\n _.$slideTrack.find('.slick-active').attr({\n 'aria-hidden': 'false'\n }).find('a, input, button, select').attr({\n 'tabindex': '0'\n });\n\n };\n\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n addBefore = index;\n index = null;\n } else if (index < 0 || (index >= _.slideCount)) {\n return false;\n }\n\n _.unload();\n\n if (typeof(index) === 'number') {\n if (index === 0 && _.$slides.length === 0) {\n $(markup).appendTo(_.$slideTrack);\n } else if (addBefore) {\n $(markup).insertBefore(_.$slides.eq(index));\n } else {\n $(markup).insertAfter(_.$slides.eq(index));\n }\n } else {\n if (addBefore === true) {\n $(markup).prependTo(_.$slideTrack);\n } else {\n $(markup).appendTo(_.$slideTrack);\n }\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slides.each(function(index, element) {\n $(element).attr('data-slick-index', index);\n });\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.animateHeight = function() {\n var _ = this;\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.animate({\n height: targetHeight\n }, _.options.speed);\n }\n };\n\n Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n var animProps = {},\n _ = this;\n\n _.animateHeight();\n\n if (_.options.rtl === true && _.options.vertical === false) {\n targetLeft = -targetLeft;\n }\n if (_.transformsEnabled === false) {\n if (_.options.vertical === false) {\n _.$slideTrack.animate({\n left: targetLeft\n }, _.options.speed, _.options.easing, callback);\n } else {\n _.$slideTrack.animate({\n top: targetLeft\n }, _.options.speed, _.options.easing, callback);\n }\n\n } else {\n\n if (_.cssTransitions === false) {\n if (_.options.rtl === true) {\n _.currentLeft = -(_.currentLeft);\n }\n $({\n animStart: _.currentLeft\n }).animate({\n animStart: targetLeft\n }, {\n duration: _.options.speed,\n easing: _.options.easing,\n step: function(now) {\n now = Math.ceil(now);\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate(' +\n now + 'px, 0px)';\n _.$slideTrack.css(animProps);\n } else {\n animProps[_.animType] = 'translate(0px,' +\n now + 'px)';\n _.$slideTrack.css(animProps);\n }\n },\n complete: function() {\n if (callback) {\n callback.call();\n }\n }\n });\n\n } else {\n\n _.applyTransition();\n targetLeft = Math.ceil(targetLeft);\n\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n } else {\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n }\n _.$slideTrack.css(animProps);\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition();\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n }\n\n };\n\n Slick.prototype.getNavTarget = function() {\n\n var _ = this,\n asNavFor = _.options.asNavFor;\n\n if ( asNavFor && asNavFor !== null ) {\n asNavFor = $(asNavFor).not(_.$slider);\n }\n\n return asNavFor;\n\n };\n\n Slick.prototype.asNavFor = function(index) {\n\n var _ = this,\n asNavFor = _.getNavTarget();\n\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n asNavFor.each(function() {\n var target = $(this).slick('getSlick');\n if(!target.unslicked) {\n target.slideHandler(index, true);\n }\n });\n }\n\n };\n\n Slick.prototype.applyTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n if (_.options.fade === false) {\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n } else {\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n }\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.autoPlay = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n\n if ( _.slideCount > _.options.slidesToShow ) {\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n }\n\n };\n\n Slick.prototype.autoPlayClear = function() {\n\n var _ = this;\n\n if (_.autoPlayTimer) {\n clearInterval(_.autoPlayTimer);\n }\n\n };\n\n Slick.prototype.autoPlayIterator = function() {\n\n var _ = this,\n slideTo = _.currentSlide + _.options.slidesToScroll;\n\n if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n if ( _.options.infinite === false ) {\n\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n _.direction = 0;\n }\n\n else if ( _.direction === 0 ) {\n\n slideTo = _.currentSlide - _.options.slidesToScroll;\n\n if ( _.currentSlide - 1 === 0 ) {\n _.direction = 1;\n }\n\n }\n\n }\n\n _.slideHandler( slideTo );\n\n }\n\n };\n\n Slick.prototype.buildArrows = function() {\n\n var _ = this;\n\n if (_.options.arrows === true ) {\n\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n if( _.slideCount > _.options.slidesToShow ) {\n\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n if (_.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.prependTo(_.options.appendArrows);\n }\n\n if (_.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.appendTo(_.options.appendArrows);\n }\n\n if (_.options.infinite !== true) {\n _.$prevArrow\n .addClass('slick-disabled')\n .attr('aria-disabled', 'true');\n }\n\n } else {\n\n _.$prevArrow.add( _.$nextArrow )\n\n .addClass('slick-hidden')\n .attr({\n 'aria-disabled': 'true',\n 'tabindex': '-1'\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.buildDots = function() {\n\n var _ = this,\n i, dot;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$slider.addClass('slick-dotted');\n\n dot = $('<ul />').addClass(_.options.dotsClass);\n\n for (i = 0; i <= _.getDotCount(); i += 1) {\n dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n }\n\n _.$dots = dot.appendTo(_.options.appendDots);\n\n _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');\n\n }\n\n };\n\n Slick.prototype.buildOut = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slider\n .children( _.options.slide + ':not(.slick-cloned)')\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n _.$slides.each(function(index, element) {\n $(element)\n .attr('data-slick-index', index)\n .data('originalStyling', $(element).attr('style') || '');\n });\n\n _.$slider.addClass('slick-slider');\n\n _.$slideTrack = (_.slideCount === 0) ?\n $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n _.$list = _.$slideTrack.wrap(\n '<div aria-live=\"polite\" class=\"slick-list\"/>').parent();\n _.$slideTrack.css('opacity', 0);\n\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n _.options.slidesToScroll = 1;\n }\n\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n _.setupInfinite();\n\n _.buildArrows();\n\n _.buildDots();\n\n _.updateDots();\n\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n if (_.options.draggable === true) {\n _.$list.addClass('draggable');\n }\n\n };\n\n Slick.prototype.buildRows = function() {\n\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n newSlides = document.createDocumentFragment();\n originalSlides = _.$slider.children();\n\n if(_.options.rows > 1) {\n\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\n numOfSlides = Math.ceil(\n originalSlides.length / slidesPerSection\n );\n\n for(a = 0; a < numOfSlides; a++){\n var slide = document.createElement('div');\n for(b = 0; b < _.options.rows; b++) {\n var row = document.createElement('div');\n for(c = 0; c < _.options.slidesPerRow; c++) {\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n if (originalSlides.get(target)) {\n row.appendChild(originalSlides.get(target));\n }\n }\n slide.appendChild(row);\n }\n newSlides.appendChild(slide);\n }\n\n _.$slider.empty().append(newSlides);\n _.$slider.children().children().children()\n .css({\n 'width':(100 / _.options.slidesPerRow) + '%',\n 'display': 'inline-block'\n });\n\n }\n\n };\n\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n var _ = this,\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n var sliderWidth = _.$slider.width();\n var windowWidth = window.innerWidth || $(window).width();\n\n if (_.respondTo === 'window') {\n respondToWidth = windowWidth;\n } else if (_.respondTo === 'slider') {\n respondToWidth = sliderWidth;\n } else if (_.respondTo === 'min') {\n respondToWidth = Math.min(windowWidth, sliderWidth);\n }\n\n if ( _.options.responsive &&\n _.options.responsive.length &&\n _.options.responsive !== null) {\n\n targetBreakpoint = null;\n\n for (breakpoint in _.breakpoints) {\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\n if (_.originalSettings.mobileFirst === false) {\n if (respondToWidth < _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n } else {\n if (respondToWidth > _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n }\n }\n }\n\n if (targetBreakpoint !== null) {\n if (_.activeBreakpoint !== null) {\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n _.activeBreakpoint =\n targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n _.activeBreakpoint = targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n if (_.activeBreakpoint !== null) {\n _.activeBreakpoint = null;\n _.options = _.originalSettings;\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n triggerBreakpoint = targetBreakpoint;\n }\n }\n\n // only trigger breakpoints during an actual break. not on initialize.\n if( !initial && triggerBreakpoint !== false ) {\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n }\n }\n\n };\n\n Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n var _ = this,\n $target = $(event.currentTarget),\n indexOffset, slideOffset, unevenOffset;\n\n // If target is a link, prevent default action.\n if($target.is('a')) {\n event.preventDefault();\n }\n\n // If target is not the <li> element (ie: a child), find the <li>.\n if(!$target.is('li')) {\n $target = $target.closest('li');\n }\n\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n switch (event.data.message) {\n\n case 'previous':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n }\n break;\n\n case 'next':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n }\n break;\n\n case 'index':\n var index = event.data.index === 0 ? 0 :\n event.data.index || $target.index() * _.options.slidesToScroll;\n\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n $target.children().trigger('focus');\n break;\n\n default:\n return;\n }\n\n };\n\n Slick.prototype.checkNavigable = function(index) {\n\n var _ = this,\n navigables, prevNavigable;\n\n navigables = _.getNavigableIndexes();\n prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n };\n\n Slick.prototype.cleanUpEvents = function() {\n\n var _ = this;\n\n if (_.options.dots && _.$dots !== null) {\n\n $('li', _.$dots)\n .off('click.slick', _.changeSlide)\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n _.$slider.off('focus.slick blur.slick');\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n }\n\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n _.$list.off('click.slick', _.clickHandler);\n\n $(document).off(_.visibilityChange, _.visibility);\n\n _.cleanUpSlideEvents();\n\n if (_.options.accessibility === true) {\n _.$list.off('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n }\n\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);\n\n };\n\n Slick.prototype.cleanUpSlideEvents = function() {\n\n var _ = this;\n\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n };\n\n Slick.prototype.cleanUpRows = function() {\n\n var _ = this, originalSlides;\n\n if(_.options.rows > 1) {\n originalSlides = _.$slides.children().children();\n originalSlides.removeAttr('style');\n _.$slider.empty().append(originalSlides);\n }\n\n };\n\n Slick.prototype.clickHandler = function(event) {\n\n var _ = this;\n\n if (_.shouldClick === false) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n\n };\n\n Slick.prototype.destroy = function(refresh) {\n\n var _ = this;\n\n _.autoPlayClear();\n\n _.touchObject = {};\n\n _.cleanUpEvents();\n\n $('.slick-cloned', _.$slider).detach();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n\n if ( _.$prevArrow && _.$prevArrow.length ) {\n\n _.$prevArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.prevArrow )) {\n _.$prevArrow.remove();\n }\n }\n\n if ( _.$nextArrow && _.$nextArrow.length ) {\n\n _.$nextArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.nextArrow )) {\n _.$nextArrow.remove();\n }\n\n }\n\n\n if (_.$slides) {\n\n _.$slides\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n .removeAttr('aria-hidden')\n .removeAttr('data-slick-index')\n .each(function(){\n $(this).attr('style', $(this).data('originalStyling'));\n });\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.detach();\n\n _.$list.detach();\n\n _.$slider.append(_.$slides);\n }\n\n _.cleanUpRows();\n\n _.$slider.removeClass('slick-slider');\n _.$slider.removeClass('slick-initialized');\n _.$slider.removeClass('slick-dotted');\n\n _.unslicked = true;\n\n if(!refresh) {\n _.$slider.trigger('destroy', [_]);\n }\n\n };\n\n Slick.prototype.disableTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n transition[_.transitionType] = '';\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).css({\n zIndex: _.options.zIndex\n });\n\n _.$slides.eq(slideIndex).animate({\n opacity: 1\n }, _.options.speed, _.options.easing, callback);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 1,\n zIndex: _.options.zIndex\n });\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition(slideIndex);\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n };\n\n Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).animate({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n }, _.options.speed, _.options.easing);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n });\n\n }\n\n };\n\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n var _ = this;\n\n if (filter !== null) {\n\n _.$slidesCache = _.$slides;\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.focusHandler = function() {\n\n var _ = this;\n\n _.$slider\n .off('focus.slick blur.slick')\n .on('focus.slick blur.slick',\n '*:not(.slick-arrow)', function(event) {\n\n event.stopImmediatePropagation();\n var $sf = $(this);\n\n setTimeout(function() {\n\n if( _.options.pauseOnFocus ) {\n _.focussed = $sf.is(':focus');\n _.autoPlay();\n }\n\n }, 0);\n\n });\n };\n\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n var _ = this;\n return _.currentSlide;\n\n };\n\n Slick.prototype.getDotCount = function() {\n\n var _ = this;\n\n var breakPoint = 0;\n var counter = 0;\n var pagerQty = 0;\n\n if (_.options.infinite === true) {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n } else if (_.options.centerMode === true) {\n pagerQty = _.slideCount;\n } else if(!_.options.asNavFor) {\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n }else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n\n return pagerQty - 1;\n\n };\n\n Slick.prototype.getLeft = function(slideIndex) {\n\n var _ = this,\n targetLeft,\n verticalHeight,\n verticalOffset = 0,\n targetSlide;\n\n _.slideOffset = 0;\n verticalHeight = _.$slides.first().outerHeight(true);\n\n if (_.options.infinite === true) {\n if (_.slideCount > _.options.slidesToShow) {\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;\n }\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n if (slideIndex > _.slideCount) {\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n } else {\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n }\n }\n }\n } else {\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n }\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.slideOffset = 0;\n verticalOffset = 0;\n }\n\n if (_.options.centerMode === true && _.options.infinite === true) {\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n } else if (_.options.centerMode === true) {\n _.slideOffset = 0;\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n }\n\n if (_.options.vertical === false) {\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n } else {\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n }\n\n if (_.options.variableWidth === true) {\n\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n if (_.options.centerMode === true) {\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n }\n }\n\n return targetLeft;\n\n };\n\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n var _ = this;\n\n return _.options[option];\n\n };\n\n Slick.prototype.getNavigableIndexes = function() {\n\n var _ = this,\n breakPoint = 0,\n counter = 0,\n indexes = [],\n max;\n\n if (_.options.infinite === false) {\n max = _.slideCount;\n } else {\n breakPoint = _.options.slidesToScroll * -1;\n counter = _.options.slidesToScroll * -1;\n max = _.slideCount * 2;\n }\n\n while (breakPoint < max) {\n indexes.push(breakPoint);\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n\n return indexes;\n\n };\n\n Slick.prototype.getSlick = function() {\n\n return this;\n\n };\n\n Slick.prototype.getSlideCount = function() {\n\n var _ = this,\n slidesTraversed, swipedSlide, centerOffset;\n\n centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n if (_.options.swipeToSlide === true) {\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n swipedSlide = slide;\n return false;\n }\n });\n\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n return slidesTraversed;\n\n } else {\n return _.options.slidesToScroll;\n }\n\n };\n\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'index',\n index: parseInt(slide)\n }\n }, dontAnimate);\n\n };\n\n Slick.prototype.init = function(creation) {\n\n var _ = this;\n\n if (!$(_.$slider).hasClass('slick-initialized')) {\n\n $(_.$slider).addClass('slick-initialized');\n\n _.buildRows();\n _.buildOut();\n _.setProps();\n _.startLoad();\n _.loadSlider();\n _.initializeEvents();\n _.updateArrows();\n _.updateDots();\n _.checkResponsive(true);\n _.focusHandler();\n\n }\n\n if (creation) {\n _.$slider.trigger('init', [_]);\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n }\n\n if ( _.options.autoplay ) {\n\n _.paused = false;\n _.autoPlay();\n\n }\n\n };\n\n Slick.prototype.initADA = function() {\n var _ = this;\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n }).find('a, input, button, select').attr({\n 'tabindex': '-1'\n });\n\n _.$slideTrack.attr('role', 'listbox');\n\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n $(this).attr({\n 'role': 'option',\n 'aria-describedby': 'slick-slide' + _.instanceUid + i + ''\n });\n });\n\n if (_.$dots !== null) {\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n $(this).attr({\n 'role': 'presentation',\n 'aria-selected': 'false',\n 'aria-controls': 'navigation' + _.instanceUid + i + '',\n 'id': 'slick-slide' + _.instanceUid + i + ''\n });\n })\n .first().attr('aria-selected', 'true').end()\n .find('button').attr('role', 'button').end()\n .closest('div').attr('role', 'toolbar');\n }\n _.activateADA();\n\n };\n\n Slick.prototype.initArrowEvents = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'previous'\n }, _.changeSlide);\n _.$nextArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'next'\n }, _.changeSlide);\n }\n\n };\n\n Slick.prototype.initDotEvents = function() {\n\n var _ = this;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n $('li', _.$dots).on('click.slick', {\n message: 'index'\n }, _.changeSlide);\n }\n\n if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {\n\n $('li', _.$dots)\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initSlideEvents = function() {\n\n var _ = this;\n\n if ( _.options.pauseOnHover ) {\n\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initializeEvents = function() {\n\n var _ = this;\n\n _.initArrowEvents();\n\n _.initDotEvents();\n _.initSlideEvents();\n\n _.$list.on('touchstart.slick mousedown.slick', {\n action: 'start'\n }, _.swipeHandler);\n _.$list.on('touchmove.slick mousemove.slick', {\n action: 'move'\n }, _.swipeHandler);\n _.$list.on('touchend.slick mouseup.slick', {\n action: 'end'\n }, _.swipeHandler);\n _.$list.on('touchcancel.slick mouseleave.slick', {\n action: 'end'\n }, _.swipeHandler);\n\n _.$list.on('click.slick', _.clickHandler);\n\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n if (_.options.accessibility === true) {\n _.$list.on('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);\n\n };\n\n Slick.prototype.initUI = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.show();\n _.$nextArrow.show();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.show();\n\n }\n\n };\n\n Slick.prototype.keyHandler = function(event) {\n\n var _ = this;\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n if (event.keyCode === 37 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'next' : 'previous'\n }\n });\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'previous' : 'next'\n }\n });\n }\n }\n\n };\n\n Slick.prototype.lazyLoad = function() {\n\n var _ = this,\n loadRange, cloneRange, rangeStart, rangeEnd;\n\n function loadImages(imagesScope) {\n\n $('img[data-lazy]', imagesScope).each(function() {\n\n var image = $(this),\n imageSource = $(this).attr('data-lazy'),\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n image\n .animate({ opacity: 0 }, 100, function() {\n image\n .attr('src', imageSource)\n .animate({ opacity: 1 }, 200, function() {\n image\n .removeAttr('data-lazy')\n .removeClass('slick-loading');\n });\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n });\n\n };\n\n imageToLoad.onerror = function() {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n };\n\n imageToLoad.src = imageSource;\n\n });\n\n }\n\n if (_.options.centerMode === true) {\n if (_.options.infinite === true) {\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\n } else {\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n }\n } else {\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n if (_.options.fade === true) {\n if (rangeStart > 0) rangeStart--;\n if (rangeEnd <= _.slideCount) rangeEnd++;\n }\n }\n\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n loadImages(loadRange);\n\n if (_.slideCount <= _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-slide');\n loadImages(cloneRange);\n } else\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n loadImages(cloneRange);\n } else if (_.currentSlide === 0) {\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n loadImages(cloneRange);\n }\n\n };\n\n Slick.prototype.loadSlider = function() {\n\n var _ = this;\n\n _.setPosition();\n\n _.$slideTrack.css({\n opacity: 1\n });\n\n _.$slider.removeClass('slick-loading');\n\n _.initUI();\n\n if (_.options.lazyLoad === 'progressive') {\n _.progressiveLazyLoad();\n }\n\n };\n\n Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'next'\n }\n });\n\n };\n\n Slick.prototype.orientationChange = function() {\n\n var _ = this;\n\n _.checkResponsive();\n _.setPosition();\n\n };\n\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n _.paused = true;\n\n };\n\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n var _ = this;\n\n _.autoPlay();\n _.options.autoplay = true;\n _.paused = false;\n _.focussed = false;\n _.interrupted = false;\n\n };\n\n Slick.prototype.postSlide = function(index) {\n\n var _ = this;\n\n if( !_.unslicked ) {\n\n _.$slider.trigger('afterChange', [_, index]);\n\n _.animating = false;\n\n _.setPosition();\n\n _.swipeLeft = null;\n\n if ( _.options.autoplay ) {\n _.autoPlay();\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n }\n\n }\n\n };\n\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'previous'\n }\n });\n\n };\n\n Slick.prototype.preventDefault = function(event) {\n\n event.preventDefault();\n\n };\n\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n tryCount = tryCount || 1;\n\n var _ = this,\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n image,\n imageSource,\n imageToLoad;\n\n if ( $imgsToLoad.length ) {\n\n image = $imgsToLoad.first();\n imageSource = image.attr('data-lazy');\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n image\n .attr( 'src', imageSource )\n .removeAttr('data-lazy')\n .removeClass('slick-loading');\n\n if ( _.options.adaptiveHeight === true ) {\n _.setPosition();\n }\n\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n _.progressiveLazyLoad();\n\n };\n\n imageToLoad.onerror = function() {\n\n if ( tryCount < 3 ) {\n\n /**\n * try to load the image 3 times,\n * leave a slight delay so we don't get\n * servers blocking the request.\n */\n setTimeout( function() {\n _.progressiveLazyLoad( tryCount + 1 );\n }, 500 );\n\n } else {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n _.progressiveLazyLoad();\n\n }\n\n };\n\n imageToLoad.src = imageSource;\n\n } else {\n\n _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n }\n\n };\n\n Slick.prototype.refresh = function( initializing ) {\n\n var _ = this, currentSlide, lastVisibleIndex;\n\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n // in non-infinite sliders, we don't want to go past the\n // last visible index.\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n _.currentSlide = lastVisibleIndex;\n }\n\n // if less slides than to show, go to start.\n if ( _.slideCount <= _.options.slidesToShow ) {\n _.currentSlide = 0;\n\n }\n\n currentSlide = _.currentSlide;\n\n _.destroy(true);\n\n $.extend(_, _.initials, { currentSlide: currentSlide });\n\n _.init();\n\n if( !initializing ) {\n\n _.changeSlide({\n data: {\n message: 'index',\n index: currentSlide\n }\n }, false);\n\n }\n\n };\n\n Slick.prototype.registerBreakpoints = function() {\n\n var _ = this, breakpoint, currentBreakpoint, l,\n responsiveSettings = _.options.responsive || null;\n\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n _.respondTo = _.options.respondTo || 'window';\n\n for ( breakpoint in responsiveSettings ) {\n\n l = _.breakpoints.length-1;\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\n\n // loop through the breakpoints and cut out any existing\n // ones with the same breakpoint number, we don't want dupes.\n while( l >= 0 ) {\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n _.breakpoints.splice(l,1);\n }\n l--;\n }\n\n _.breakpoints.push(currentBreakpoint);\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n }\n\n }\n\n _.breakpoints.sort(function(a, b) {\n return ( _.options.mobileFirst ) ? a-b : b-a;\n });\n\n }\n\n };\n\n Slick.prototype.reinit = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slideTrack\n .children(_.options.slide)\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.currentSlide = 0;\n }\n\n _.registerBreakpoints();\n\n _.setProps();\n _.setupInfinite();\n _.buildArrows();\n _.updateArrows();\n _.initArrowEvents();\n _.buildDots();\n _.updateDots();\n _.initDotEvents();\n _.cleanUpSlideEvents();\n _.initSlideEvents();\n\n _.checkResponsive(false, true);\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n _.setPosition();\n _.focusHandler();\n\n _.paused = !_.options.autoplay;\n _.autoPlay();\n\n _.$slider.trigger('reInit', [_]);\n\n };\n\n Slick.prototype.resize = function() {\n\n var _ = this;\n\n if ($(window).width() !== _.windowWidth) {\n clearTimeout(_.windowDelay);\n _.windowDelay = window.setTimeout(function() {\n _.windowWidth = $(window).width();\n _.checkResponsive();\n if( !_.unslicked ) { _.setPosition(); }\n }, 50);\n }\n };\n\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n removeBefore = index;\n index = removeBefore === true ? 0 : _.slideCount - 1;\n } else {\n index = removeBefore === true ? --index : index;\n }\n\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n return false;\n }\n\n _.unload();\n\n if (removeAll === true) {\n _.$slideTrack.children().remove();\n } else {\n _.$slideTrack.children(this.options.slide).eq(index).remove();\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.setCSS = function(position) {\n\n var _ = this,\n positionProps = {},\n x, y;\n\n if (_.options.rtl === true) {\n position = -position;\n }\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n positionProps[_.positionProp] = position;\n\n if (_.transformsEnabled === false) {\n _.$slideTrack.css(positionProps);\n } else {\n positionProps = {};\n if (_.cssTransitions === false) {\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n _.$slideTrack.css(positionProps);\n } else {\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n _.$slideTrack.css(positionProps);\n }\n }\n\n };\n\n Slick.prototype.setDimensions = function() {\n\n var _ = this;\n\n if (_.options.vertical === false) {\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: ('0px ' + _.options.centerPadding)\n });\n }\n } else {\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: (_.options.centerPadding + ' 0px')\n });\n }\n }\n\n _.listWidth = _.$list.width();\n _.listHeight = _.$list.height();\n\n\n if (_.options.vertical === false && _.options.variableWidth === false) {\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n } else if (_.options.variableWidth === true) {\n _.$slideTrack.width(5000 * _.slideCount);\n } else {\n _.slideWidth = Math.ceil(_.listWidth);\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n }\n\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n };\n\n Slick.prototype.setFade = function() {\n\n var _ = this,\n targetLeft;\n\n _.$slides.each(function(index, element) {\n targetLeft = (_.slideWidth * index) * -1;\n if (_.options.rtl === true) {\n $(element).css({\n position: 'relative',\n right: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n } else {\n $(element).css({\n position: 'relative',\n left: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n }\n });\n\n _.$slides.eq(_.currentSlide).css({\n zIndex: _.options.zIndex - 1,\n opacity: 1\n });\n\n };\n\n Slick.prototype.setHeight = function() {\n\n var _ = this;\n\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.css('height', targetHeight);\n }\n\n };\n\n Slick.prototype.setOption =\n Slick.prototype.slickSetOption = function() {\n\n /**\n * accepts arguments in format of:\n *\n * - for changing a single option's value:\n * .slick(\"setOption\", option, value, refresh )\n *\n * - for changing a set of responsive options:\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n *\n * - for updating multiple values at once (not responsive)\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\n */\n\n var _ = this, l, item, option, value, refresh = false, type;\n\n if( $.type( arguments[0] ) === 'object' ) {\n\n option = arguments[0];\n refresh = arguments[1];\n type = 'multiple';\n\n } else if ( $.type( arguments[0] ) === 'string' ) {\n\n option = arguments[0];\n value = arguments[1];\n refresh = arguments[2];\n\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n type = 'responsive';\n\n } else if ( typeof arguments[1] !== 'undefined' ) {\n\n type = 'single';\n\n }\n\n }\n\n if ( type === 'single' ) {\n\n _.options[option] = value;\n\n\n } else if ( type === 'multiple' ) {\n\n $.each( option , function( opt, val ) {\n\n _.options[opt] = val;\n\n });\n\n\n } else if ( type === 'responsive' ) {\n\n for ( item in value ) {\n\n if( $.type( _.options.responsive ) !== 'array' ) {\n\n _.options.responsive = [ value[item] ];\n\n } else {\n\n l = _.options.responsive.length-1;\n\n // loop through the responsive object and splice out duplicates.\n while( l >= 0 ) {\n\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n _.options.responsive.splice(l,1);\n\n }\n\n l--;\n\n }\n\n _.options.responsive.push( value[item] );\n\n }\n\n }\n\n }\n\n if ( refresh ) {\n\n _.unload();\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.setPosition = function() {\n\n var _ = this;\n\n _.setDimensions();\n\n _.setHeight();\n\n if (_.options.fade === false) {\n _.setCSS(_.getLeft(_.currentSlide));\n } else {\n _.setFade();\n }\n\n _.$slider.trigger('setPosition', [_]);\n\n };\n\n Slick.prototype.setProps = function() {\n\n var _ = this,\n bodyStyle = document.body.style;\n\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n if (_.positionProp === 'top') {\n _.$slider.addClass('slick-vertical');\n } else {\n _.$slider.removeClass('slick-vertical');\n }\n\n if (bodyStyle.WebkitTransition !== undefined ||\n bodyStyle.MozTransition !== undefined ||\n bodyStyle.msTransition !== undefined) {\n if (_.options.useCSS === true) {\n _.cssTransitions = true;\n }\n }\n\n if ( _.options.fade ) {\n if ( typeof _.options.zIndex === 'number' ) {\n if( _.options.zIndex < 3 ) {\n _.options.zIndex = 3;\n }\n } else {\n _.options.zIndex = _.defaults.zIndex;\n }\n }\n\n if (bodyStyle.OTransform !== undefined) {\n _.animType = 'OTransform';\n _.transformType = '-o-transform';\n _.transitionType = 'OTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.MozTransform !== undefined) {\n _.animType = 'MozTransform';\n _.transformType = '-moz-transform';\n _.transitionType = 'MozTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.webkitTransform !== undefined) {\n _.animType = 'webkitTransform';\n _.transformType = '-webkit-transform';\n _.transitionType = 'webkitTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.msTransform !== undefined) {\n _.animType = 'msTransform';\n _.transformType = '-ms-transform';\n _.transitionType = 'msTransition';\n if (bodyStyle.msTransform === undefined) _.animType = false;\n }\n if (bodyStyle.transform !== undefined && _.animType !== false) {\n _.animType = 'transform';\n _.transformType = 'transform';\n _.transitionType = 'transition';\n }\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n };\n\n\n Slick.prototype.setSlideClasses = function(index) {\n\n var _ = this,\n centerOffset, allSlides, indexOffset, remainder;\n\n allSlides = _.$slider\n .find('.slick-slide')\n .removeClass('slick-active slick-center slick-current')\n .attr('aria-hidden', 'true');\n\n _.$slides\n .eq(index)\n .addClass('slick-current');\n\n if (_.options.centerMode === true) {\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if (_.options.infinite === true) {\n\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n\n _.$slides\n .slice(index - centerOffset, index + centerOffset + 1)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n indexOffset = _.options.slidesToShow + index;\n allSlides\n .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n if (index === 0) {\n\n allSlides\n .eq(allSlides.length - 1 - _.options.slidesToShow)\n .addClass('slick-center');\n\n } else if (index === _.slideCount - 1) {\n\n allSlides\n .eq(_.options.slidesToShow)\n .addClass('slick-center');\n\n }\n\n }\n\n _.$slides\n .eq(index)\n .addClass('slick-center');\n\n } else {\n\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n _.$slides\n .slice(index, index + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else if (allSlides.length <= _.options.slidesToShow) {\n\n allSlides\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n remainder = _.slideCount % _.options.slidesToShow;\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n allSlides\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n allSlides\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n }\n\n }\n\n if (_.options.lazyLoad === 'ondemand') {\n _.lazyLoad();\n }\n\n };\n\n Slick.prototype.setupInfinite = function() {\n\n var _ = this,\n i, slideIndex, infiniteCount;\n\n if (_.options.fade === true) {\n _.options.centerMode = false;\n }\n\n if (_.options.infinite === true && _.options.fade === false) {\n\n slideIndex = null;\n\n if (_.slideCount > _.options.slidesToShow) {\n\n if (_.options.centerMode === true) {\n infiniteCount = _.options.slidesToShow + 1;\n } else {\n infiniteCount = _.options.slidesToShow;\n }\n\n for (i = _.slideCount; i > (_.slideCount -\n infiniteCount); i -= 1) {\n slideIndex = i - 1;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex - _.slideCount)\n .prependTo(_.$slideTrack).addClass('slick-cloned');\n }\n for (i = 0; i < infiniteCount; i += 1) {\n slideIndex = i;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex + _.slideCount)\n .appendTo(_.$slideTrack).addClass('slick-cloned');\n }\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n $(this).attr('id', '');\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.interrupt = function( toggle ) {\n\n var _ = this;\n\n if( !toggle ) {\n _.autoPlay();\n }\n _.interrupted = toggle;\n\n };\n\n Slick.prototype.selectHandler = function(event) {\n\n var _ = this;\n\n var targetElement =\n $(event.target).is('.slick-slide') ?\n $(event.target) :\n $(event.target).parents('.slick-slide');\n\n var index = parseInt(targetElement.attr('data-slick-index'));\n\n if (!index) index = 0;\n\n if (_.slideCount <= _.options.slidesToShow) {\n\n _.setSlideClasses(index);\n _.asNavFor(index);\n return;\n\n }\n\n _.slideHandler(index);\n\n };\n\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n _ = this, navTarget;\n\n sync = sync || false;\n\n if (_.animating === true && _.options.waitForAnimate === true) {\n return;\n }\n\n if (_.options.fade === true && _.currentSlide === index) {\n return;\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n return;\n }\n\n if (sync === false) {\n _.asNavFor(index);\n }\n\n targetSlide = index;\n targetLeft = _.getLeft(targetSlide);\n slideLeft = _.getLeft(_.currentSlide);\n\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n }\n\n if ( _.options.autoplay ) {\n clearInterval(_.autoPlayTimer);\n }\n\n if (targetSlide < 0) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n } else {\n animSlide = _.slideCount + targetSlide;\n }\n } else if (targetSlide >= _.slideCount) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = 0;\n } else {\n animSlide = targetSlide - _.slideCount;\n }\n } else {\n animSlide = targetSlide;\n }\n\n _.animating = true;\n\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n oldSlide = _.currentSlide;\n _.currentSlide = animSlide;\n\n _.setSlideClasses(_.currentSlide);\n\n if ( _.options.asNavFor ) {\n\n navTarget = _.getNavTarget();\n navTarget = navTarget.slick('getSlick');\n\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n navTarget.setSlideClasses(_.currentSlide);\n }\n\n }\n\n _.updateDots();\n _.updateArrows();\n\n if (_.options.fade === true) {\n if (dontAnimate !== true) {\n\n _.fadeSlideOut(oldSlide);\n\n _.fadeSlide(animSlide, function() {\n _.postSlide(animSlide);\n });\n\n } else {\n _.postSlide(animSlide);\n }\n _.animateHeight();\n return;\n }\n\n if (dontAnimate !== true) {\n _.animateSlide(targetLeft, function() {\n _.postSlide(animSlide);\n });\n } else {\n _.postSlide(animSlide);\n }\n\n };\n\n Slick.prototype.startLoad = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.hide();\n _.$nextArrow.hide();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.hide();\n\n }\n\n _.$slider.addClass('slick-loading');\n\n };\n\n Slick.prototype.swipeDirection = function() {\n\n var xDist, yDist, r, swipeAngle, _ = this;\n\n xDist = _.touchObject.startX - _.touchObject.curX;\n yDist = _.touchObject.startY - _.touchObject.curY;\n r = Math.atan2(yDist, xDist);\n\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n return (_.options.rtl === false ? 'right' : 'left');\n }\n if (_.options.verticalSwiping === true) {\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n return 'vertical';\n\n };\n\n Slick.prototype.swipeEnd = function(event) {\n\n var _ = this,\n slideCount,\n direction;\n\n _.dragging = false;\n _.interrupted = false;\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n if ( _.touchObject.curX === undefined ) {\n return false;\n }\n\n if ( _.touchObject.edgeHit === true ) {\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n }\n\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n direction = _.swipeDirection();\n\n switch ( direction ) {\n\n case 'left':\n case 'down':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n _.currentSlide + _.getSlideCount();\n\n _.currentDirection = 0;\n\n break;\n\n case 'right':\n case 'up':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n _.currentSlide - _.getSlideCount();\n\n _.currentDirection = 1;\n\n break;\n\n default:\n\n\n }\n\n if( direction != 'vertical' ) {\n\n _.slideHandler( slideCount );\n _.touchObject = {};\n _.$slider.trigger('swipe', [_, direction ]);\n\n }\n\n } else {\n\n if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n _.slideHandler( _.currentSlide );\n _.touchObject = {};\n\n }\n\n }\n\n };\n\n Slick.prototype.swipeHandler = function(event) {\n\n var _ = this;\n\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n return;\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n return;\n }\n\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n event.originalEvent.touches.length : 1;\n\n _.touchObject.minSwipe = _.listWidth / _.options\n .touchThreshold;\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.minSwipe = _.listHeight / _.options\n .touchThreshold;\n }\n\n switch (event.data.action) {\n\n case 'start':\n _.swipeStart(event);\n break;\n\n case 'move':\n _.swipeMove(event);\n break;\n\n case 'end':\n _.swipeEnd(event);\n break;\n\n }\n\n };\n\n Slick.prototype.swipeMove = function(event) {\n\n var _ = this,\n edgeWasHit = false,\n curLeft, swipeDirection, swipeLength, positionOffset, touches;\n\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n if (!_.dragging || touches && touches.length !== 1) {\n return false;\n }\n\n curLeft = _.getLeft(_.currentSlide);\n\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n _.touchObject.swipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.swipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n }\n\n swipeDirection = _.swipeDirection();\n\n if (swipeDirection === 'vertical') {\n return;\n }\n\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n event.preventDefault();\n }\n\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n if (_.options.verticalSwiping === true) {\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n }\n\n\n swipeLength = _.touchObject.swipeLength;\n\n _.touchObject.edgeHit = false;\n\n if (_.options.infinite === false) {\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n _.touchObject.edgeHit = true;\n }\n }\n\n if (_.options.vertical === false) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n } else {\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n }\n if (_.options.verticalSwiping === true) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n }\n\n if (_.options.fade === true || _.options.touchMove === false) {\n return false;\n }\n\n if (_.animating === true) {\n _.swipeLeft = null;\n return false;\n }\n\n _.setCSS(_.swipeLeft);\n\n };\n\n Slick.prototype.swipeStart = function(event) {\n\n var _ = this,\n touches;\n\n _.interrupted = true;\n\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n _.touchObject = {};\n return false;\n }\n\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n touches = event.originalEvent.touches[0];\n }\n\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n _.dragging = true;\n\n };\n\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n var _ = this;\n\n if (_.$slidesCache !== null) {\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.unload = function() {\n\n var _ = this;\n\n $('.slick-cloned', _.$slider).remove();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.remove();\n }\n\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.remove();\n }\n\n _.$slides\n .removeClass('slick-slide slick-active slick-visible slick-current')\n .attr('aria-hidden', 'true')\n .css('width', '');\n\n };\n\n Slick.prototype.unslick = function(fromBreakpoint) {\n\n var _ = this;\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\n _.destroy();\n\n };\n\n Slick.prototype.updateArrows = function() {\n\n var _ = this,\n centerOffset;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if ( _.options.arrows === true &&\n _.slideCount > _.options.slidesToShow &&\n !_.options.infinite ) {\n\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n if (_.currentSlide === 0) {\n\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n }\n\n }\n\n };\n\n Slick.prototype.updateDots = function() {\n\n var _ = this;\n\n if (_.$dots !== null) {\n\n _.$dots\n .find('li')\n .removeClass('slick-active')\n .attr('aria-hidden', 'true');\n\n _.$dots\n .find('li')\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n };\n\n Slick.prototype.visibility = function() {\n\n var _ = this;\n\n if ( _.options.autoplay ) {\n\n if ( document[_.hidden] ) {\n\n _.interrupted = true;\n\n } else {\n\n _.interrupted = false;\n\n }\n\n }\n\n };\n\n $.fn.slick = function() {\n var _ = this,\n opt = arguments[0],\n args = Array.prototype.slice.call(arguments, 1),\n l = _.length,\n i,\n ret;\n for (i = 0; i < l; i++) {\n if (typeof opt == 'object' || typeof opt == 'undefined')\n _[i].slick = new Slick(_[i], opt);\n else\n ret = _[i].slick[opt].apply(_[i].slick, args);\n if (typeof ret != 'undefined') return ret;\n }\n return _;\n };\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/slick-carousel/slick/slick.js\n ** module id = 104\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28\n **/\n//# sourceURL=webpack:///./~/slick-carousel/slick/slick.js?"); },function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _hbrInteraction = __webpack_require__(10);\n\nvar _hbrInteraction2 = _interopRequireDefault(_hbrInteraction);\n\nvar _lodashAmdModernCollectionsFilter = __webpack_require__(449);\n\nvar _lodashAmdModernCollectionsFilter2 = _interopRequireDefault(_lodashAmdModernCollectionsFilter);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\n// Services\n\nvar _localstorageUtil = __webpack_require__(25);\n\nvar _localstorageUtil2 = _interopRequireDefault(_localstorageUtil);\n\n/**\n * function that will evaluate the carts modified date. If same, cached cart\n * should be used. If different, request new cart\n *\n * @param {object} cartInfo\n *\n * @return {boolean} - cart has been modified or not\n */\nvar isCartModified = function isCartModified(cartInfo) {\n\tvar cachedCart = _localstorageUtil2["default"].getCache("cart");\n\tif (cartInfo) {\n\t\tif (cachedCart) {\n\t\t\treturn cartInfo.modifiedTime !== cachedCart.modifiedTime;\n\t\t}\n\n\t\treturn true;\n\t} else {\n\t\tgetModifiedDate().done(function (data, status, response) {\n\t\t\tif (cachedCart) {\n\t\t\t\treturn response.getResponseHeader("Last-Modified") !== cachedCart.modifiedTime;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t});\n\t}\n};\n\n/**\n * function that will get the last modified date on a cart\n *\n * @return {promise.object}\n */\nvar getModifiedDate = function getModifiedDate() {\n\treturn _hbrInteraction2["default"].request("cart", "checkFreshness");\n};\n\n/**\n * function that will create cart object to be passed to\n * the server to be added\n *\n * @param {object} items\n *\n * @return {array} array of updateCart objects\n */\nvar createCartItem = function createCartItem(items) {\n\tvar tempArr = _jquery2["default"].isArray(items) ? items : [items];\n\tvar updateCart = new UpdateCart(deduceReferralCode(items));\n\tvar newItems = tempArr.map(function (item) {\n\t\treturn new CartItem(item.itemid, item.productId, parseFloat(item.productPrice), parseInt(item.quantity), item.type);\n\t});\n\n\treturn updateCart.addItems(newItems);\n};\n\n/**\n * class that will create a single cartItem\n *\n * @param {string} itemId - id of the item in the cart\n * @param {string} productId - id of the product placed in the cart\n * @param {number} listPrice - listPrice of the item\n * @param {number} quantity - value of the quantity of item in the cart\n * @param {string} type - type of item\n */\nvar CartItem = function CartItem(itemId, productId, listPrice, quantity, type) {\n\tthis.itemid = itemId || "";\n\tthis.productId = productId;\n\tthis.listPrice = listPrice;\n\tthis.quantity = quantity;\n\tthis.type = type;\n};\n\n/**\n* Class that will create an object to update the cart. This\n* object contains an empty array of CartItem objects\n*\n*/\nvar UpdateCart = function UpdateCart(referral) {\n\tthis.items = [];\n\tif (referral) {\n\t\tthis.referral = referral;\n\t}\n};\n\nvar deduceReferralCode = function deduceReferralCode(items) {\n\tfor (var i = 0, l = items.length; i < l; i++) {\n\t\tif (items[i].referral) {\n\t\t\treturn items[i].referral;\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n* function that will add the CartItem object\n* to the UpdateCart object\n*\n* @param {array} items\n*\n* @return {object} UpdateCart\n*/\nUpdateCart.prototype.addItems = function (items) {\n\tthis.items = items;\n\n\treturn this;\n};\n\n/**\n* class that will create an address\n*\n* @param {string} id\n* @param {string} firstName\n* @param {string} lastName\n* @param {string} address1\n* @param {string} address2\n* @param {string} city\n* @param {string} state\n* @param {string} postalCode\n* @param {string} countryCode\n*\n*/\nvar Address = function Address(id, firstName, lastName, address1, address2, city, state, postalCode, countryCode) {\n\tthis.id = id;\n\tthis.firstName = firstName;\n\tthis.lastName = lastName;\n\tthis.address1 = address1;\n\tthis.address2 = address2;\n\tthis.city = city;\n\tthis.state = state;\n\tthis.postalCode = postalCode;\n\tthis.countryCode = countryCode;\n};\n\n/**\n* function that will massage the key to the type that\n* can be used\n*\n* @param {string} key\n*\n* @return {string} key\n*/\nvar massageAddressKey = function massageAddressKey(key) {\n\tkey = key.replace("shipping", "");\n\tkey = key.replace("billing", "");\n\n\treturn key.charAt(0).toLowerCase() + key.slice(1);\n};\n\n/**\n * Abstracted function that will make the ajax call for the\n * shopping experience.\n *\n * @param {string} method - method of GET, POST, PUT, or DELETE\n * @param {object} contentObject - object to be passed in\n *\n * @return {promise.object}\n */\nexports.shoppingAjax = function (method, contentObject) {\n\treturn _hbrInteraction2["default"].request("cart", method, contentObject);\n};\n\n/**\n * function that will get all the cart information\n *\n * @return {object} - cartInfo\n */\nexports.getCart = function () {\n\tif (isCartModified()) {\n\t\tthis.shoppingAjax("GET").done(function (response) {\n\t\t\tif (response.status === 200) {\n\t\t\t\tvar cartInfo = response.cart;\n\t\t\t\t_localstorageUtil2["default"].setCache("cart", cartInfo);\n\n\t\t\t\treturn cartInfo;\n\t\t\t}\n\t\t});\n\t} else {\n\t\treturn _localstorageUtil2["default"].getCache("cart");\n\t}\n};\n\n/**\n * function save the referralCode to include it in the url when a request is made (see interaction.request())\n *\n * @param {string} referralCode - The referral code associated with the item being added to the cart.\n */\nexports.setReferralCode = function (referralCode) {\n\t_hbrInteraction2["default"].setReferralCode(referralCode);\n};\n\n/**\n * function that will add an item to the cart\n *\n * @param {Object} cartItem - The item to add to the cart.\n *\n * @return {object} cartInfo - new cart object\n */\nexports.addToCart = function (cartItem) {\n\tvar updateThisItem = createCartItem(cartItem);\n\n\treturn this.shoppingAjax("post", updateThisItem).done(function (response) {\n\t\tvar cartInfo = response.cart;\n\t\t_localstorageUtil2["default"].setCache("cart", cartInfo);\n\t\treturn cartInfo;\n\t}).fail(function (error) {\n\t\treturn error;\n\t});\n};\n\n/**\n * function that will remove given items from the cart\n *\n * @param {array} cartItems - ids of items to remove\n *\n * @return {object} cartInfo - new cart object\n */\nexports.removeFromCart = function (cartItems) {\n\tvar cartItemsToRemove = createCartItem(cartItems);\n\n\treturn this.shoppingAjax("delete", cartItemsToRemove).then(function (response) {\n\t\tvar cartInfo = response.cart;\n\t\t_localstorageUtil2["default"].setCache("cart", cartInfo);\n\t\treturn cartInfo;\n\t});\n};\n\n/**\n * function that will update the cart with changed information\n *\n * @param {array} cartItems - array of cartItems to be updated\n *\n * @return {object} cartInfo - new cart object\n */\nexports.updateCart = function (cartItems) {\n\tvar cartItemsToUpdate = createCartItem(cartItems);\n\n\treturn this.shoppingAjax("POST", cartItemsToUpdate).then(function (response) {\n\t\tvar cartInfo = response.cart;\n\t\t_localstorageUtil2["default"].setCache("cart", cartInfo);\n\t\treturn cartInfo;\n\t});\n};\n\n/**\n* function that will get the cartItem from the\n* cart object based on the given itemId\n*\n* @param {object} cart\n* @param {string} itemId\n*\n* @return {object cartItem}\n*/\nexports.getUpdatedItem = function (cart, itemId) {\n\tvar updatedItemArr = (0, _lodashAmdModernCollectionsFilter2["default"])(cart, function (cartItem) {\n\t\treturn cartItem.itemid === itemId;\n\t});\n\n\treturn updatedItemArr.length > 0 ? updatedItemArr[0] : null;\n};\n\n/**\n* function that will get the estimated shipping and handling\n* cost for the current cart\n*\n* @param {object} shippingInfo\n*\n* @return {object} cart\n*/\nexports.getShippingEstimate = function (shippingInfo) {\n\treturn this.shoppingAjax("shippingEstimate", shippingInfo).then(function (response) {\n\t\tvar cartInfo = response.cart;\n\t\t_localstorageUtil2["default"].setCache("cart", cartInfo);\n\t\treturn cartInfo;\n\t});\n};\n\n/**\n* function that will create an address object for consumption\n*\n* @param {array} address - individual address information are stored in an\n* array of object with the name and value of the information\n*\n* @return {Address} addressObj\n*/\nexports.createAddressObject = function (address) {\n\tvar addressObj = new Address();\n\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(address, function (info) {\n\t\tvar thisKey = Object.keys(info).join("");\n\t\tvar newKey = massageAddressKey(thisKey);\n\t\taddressObj[newKey] = info[thisKey];\n\t});\n\n\treturn addressObj;\n};\n\n/**\n* function that will convert the array of payment info\n* to an object\n*\n* @param {array} payment\n*\n* @return {object} payment\n*/\nexports.createPaymentObject = function (payment) {\n\tvar tempObj = {};\n\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(payment, function (val) {\n\t\tvar thisKey = Object.keys(val).join("");\n\t\ttempObj[thisKey] = val[thisKey];\n\t});\n\n\treturn tempObj;\n};\n\n/**\n* function that will post the shipping, billing and payment\n* information\n*\n* @param {object} shippingPaymentData\n*\n* @return {promise.object}\n*/\nexports.postShippingPayment = function (shippingPaymentData) {\n\treturn _hbrInteraction2["default"].request("cart", "shippingPayment", shippingPaymentData);\n};\n\n/**\n* function that will return the availble products for a given productId\n*\n* @param {string} productId\n*\n* @return {array}\n*/\nexports.getAvailableProducts = function (productId) {\n\treturn _hbrInteraction2["default"].request("cart", "productAvailability", productId);\n};\n\n/**\n* function that will get the states or provinces for\n* US and canada\n*\n* @param {string} countryCode\n*\n* @return {promise.object}\n*/\nexports.getStates = function (countryCode) {\n\treturn _hbrInteraction2["default"].request("cart", "statesProvinces", countryCode);\n};\n\n/**\n * Submit the current order\n * @return {promise.object}\n */\nexports.submitOrder = function () {\n\treturn _hbrInteraction2["default"].request("cart", "submitOrder");\n};\n\n/**\n * Update the shipping method on the current order\n * @return {promise.object}\n */\nexports.updateShippingMethod = function (shippingMethod) {\n\treturn _hbrInteraction2["default"].request("cart", "updateShippingMethod", shippingMethod);\n};\n\n/**\n * Apply the promo code\n * @return {promise.object}\n */\nexports.applyPromoCode = function (promoCode) {\n\treturn _hbrInteraction2["default"].request("cart", "applyPromoCode", promoCode);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/cart.js\n ** module id = 105\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/cart.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _templateTemplate = __webpack_require__(406);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar $component = (0, _jquery2["default"])(exports);\n\nvar discardContent = null;\n\n// reference to the element that this flyout is attached to.\nvar $flyoutElement = null;\n\n/**\n * render\n * @returns {*}\n */\nexports.render = function (flyoutData) {\n\tvar discardRenderDeferred = _jquery2["default"].Deferred();\n\tdiscardRenderDeferred.resolve((0, _templateTemplate2["default"])({\n\t\tdiscardWhat: _jquery2["default"].isArray(flyoutData) ? "all selected items" : "this"\n\t}));\n\treturn discardRenderDeferred.promise();\n};\n\n/**\n * getData\n * Gets necessary data from the DOM for rendering share template and\n * hitting share/history end points\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\t// discard takes a saveID which is on the checkbox, not the stream item\n\tvar $streamItemCheckbox = $element.parents(".stream-entry").find(".hbr-checkbox > input");\n\tdiscardContent = {\n\t\tid: $streamItemCheckbox.attr("id")\n\t};\n\n\tif ($streamItemCheckbox.data("list")) {\n\t\tdiscardContent.list = $streamItemCheckbox.data("list");\n\t}\n\n\t// store a reference to the element\n\t$flyoutElement = $element;\n};\n\nvar removeFromList = function removeFromList(e) {\n\te.preventDefault();\n\tvar request = {};\n\tif (discardContent.list) {\n\t\t// remove the item from the list\n\t\trequest.name = discardContent.list;\n\t\trequest.data = {\n\t\t\tid: discardContent.id\n\t\t};\n\n\t\t_servicesHbrInteraction2["default"].request("listItem", "delete", request).then(function () {\n\t\t\t$component.trigger("destroy", { message: "Removed from My Library" });\n\n\t\t\tvar $streamItem = $flyoutElement.closest(".stream-entry");\n\t\t\t// remove the row\n\t\t\t_servicesHbrInteraction2["default"].hideStreamLabel($streamItem);\n\t\t\t$streamItem.remove();\n\t\t});\n\t} else {\n\t\trequest.id = discardContent.id;\n\t\t_servicesHbrInteraction2["default"].request("saved", "delete", request).then(function () {\n\t\t\t$component.trigger("destroy", { message: "Removed from My Library" });\n\n\t\t\tvar $streamItem = $flyoutElement.closest(".stream-entry");\n\t\t\t// remove the row\n\t\t\t_servicesHbrInteraction2["default"].hideStreamLabel($streamItem);\n\t\t\t$streamItem.remove();\n\t\t});\n\t}\n};\n\nvar cancelAndClose = function cancelAndClose(e) {\n\te.preventDefault();\n\t$component.trigger("destroy");\n};\n\nexports.bindInteractions = function () {\n\t(0, _jquery2["default"])("[js-target=\'yes\']").on("click", removeFromList);\n\t(0, _jquery2["default"])("[js-target=\'cancel\']").on("click", cancelAndClose);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/discard/discard.js\n ** module id = 106\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/discard/discard.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsBind = __webpack_require__(62);\n\nvar _lodashAmdModernFunctionsBind2 = _interopRequireDefault(_lodashAmdModernFunctionsBind);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _servicesSubscriptionUtils = __webpack_require__(110);\n\nvar _servicesSubscriptionUtils2 = _interopRequireDefault(_servicesSubscriptionUtils);\n\nvar _servicesUrlLengthUtils = __webpack_require__(111);\n\nvar _servicesUrlLengthUtils2 = _interopRequireDefault(_servicesUrlLengthUtils);\n\nvar _servicesValidatorUtils = __webpack_require__(112);\n\nvar _servicesValidatorUtils2 = _interopRequireDefault(_servicesValidatorUtils);\n\nvar templates = {\n\tbase: __webpack_require__(410),\n\temail: __webpack_require__(411),\n\tsocial: __webpack_require__(412)\n};\n\nvar shareContent = {};\nvar currentStreamItem = null;\n\nvar shareNetworks = {\n\temail: {\n\t\tname: "email",\n\t\ticonName: null,\n\t\ttemplate: templates.email\n\t},\n\tfacebook: {\n\t\tname: "Facebook",\n\t\ticonName: "facebook",\n\t\ttemplate: templates.social\n\t},\n\tgooglePlus: {\n\t\tname: "Google+",\n\t\ticonName: "google-plus",\n\t\ttemplate: templates.social\n\t},\n\ttwitter: {\n\t\tname: "Twitter",\n\t\ticonName: "twitter",\n\t\ttemplate: templates.social\n\t},\n\tlinkedin: {\n\t\tname: "Linkedin",\n\t\ticonName: "linkedin",\n\t\ttemplate: templates.social\n\t}\n};\n\nvar options = {\n\tshareContentTarget: "[js-target=\'flyout-share-content\']",\n\tshareNavTarget: "[js-target=\'share-flyout-nav\']",\n\tshareNavItemTarget: "[js-target=\'share-flyout-nav-item\']",\n\tshareConnectTarget: "[js-target=\'share-connect\']",\n\tsharePostTarget: "[js-target=\'share-post\']",\n\tshareMessageTarget: "[js-target=\'share-message\']",\n\tshareToTarget: "[js-target=\'share-to\']",\n\tshareFromTarget: "[js-target=\'share-from\']",\n\tshareUrlTarget: "[js-target=\'share-url\']",\n\tdefaultShareNetwork: "facebook",\n\tallowMultiple: false,\n\trequiresSignIn: false\n};\n\nvar currentShareNetwork = options.defaultShareNetwork;\n\nvar navItemClickHandler = function navItemClickHandler(e) {\n\te.preventDefault();\n\tvar $navItem = (0, _jquery2["default"])(e.target).parents(options.shareNavItemTarget);\n\tif ($navItem.length === 1) {\n\t\t(0, _jquery2["default"])(options.shareNavTarget).find(".active").removeClass("active");\n\t\t$navItem.addClass("active");\n\t\tcurrentShareNetwork = $navItem.data("share-network");\n\t\tliveRender();\n\t}\n};\n\nvar shareConnectClickHandler = function shareConnectClickHandler(e) {\n\t_servicesHbrInteraction2["default"].linkSocialNetwork(currentShareNetwork).then(function (resp) {\n\t\tliveRender();\n\t}, function (resp) {\n\t\t// TODO we should be handling the error thrown by Gigya\n\t});\n};\n\nvar sharePostClickHandler = function sharePostClickHandler(e) {\n\te.stopImmediatePropagation();\n\te.preventDefault();\n\n\tvar isError = false;\n\tshareContent.url = _servicesUrlLengthUtils2["default"].setRelativePath(shareContent.url);\n\tshareContent.description = (0, _jquery2["default"])(options.shareContentTarget).find(options.shareMessageTarget).val();\n\tshareContent.provider = currentShareNetwork;\n\tif (currentShareNetwork === "email") {\n\t\t// get extra data from template: to, from\n\t\tvar shareToTarget = (0, _jquery2["default"])(options.shareContentTarget).find(options.shareToTarget);\n\t\tvar shareFromTarget = (0, _jquery2["default"])(options.shareContentTarget).find(options.shareFromTarget);\n\t\tshareContent.sharedWith = [];\n\t\tshareContent.sharedWith = (0, _jquery2["default"])(shareToTarget).val().split(",");\n\t\tshareContent.from = (0, _jquery2["default"])(shareFromTarget).val();\n\t\t// validate the to and from field\n\t\t_servicesValidatorUtils2["default"].removeError((0, _jquery2["default"])(shareToTarget));\n\t\tif ((0, _jquery2["default"])(shareFromTarget).length > 0 && !_servicesValidatorUtils2["default"].validateElement((0, _jquery2["default"])(shareFromTarget), "email")) {\n\t\t\tisError = true;\n\t\t}\n\t\tif (!_servicesValidatorUtils2["default"].validateMulitpleElements((0, _jquery2["default"])(shareToTarget), "email")) {\n\t\t\tisError = true;\n\t\t}\n\t\tif (isError) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// TODO I am removing the name value because it was causing issues\n\t// must investigate whether this is not necessary for all shares or\n\t// just this process\n\tdelete shareContent.name;\n\t_servicesHbrInteraction2["default"].request("shared", shareContent);\n\tvar confirmationMessage = {};\n\tif (currentShareNetwork === "twitter" || currentShareNetwork === "email") {\n\t\tconfirmationMessage.message = "Shared via " + shareNetworks[currentShareNetwork].name;\n\t}\n\t(0, _jquery2["default"])(this).trigger("destroy", confirmationMessage);\n\t// Update digital data\n\tvar eventData = {};\n\teventData.shareMedium = shareNetworks[currentShareNetwork].name;\n\teventData.eventAction = "Content Share - " + eventData.shareMedium;\n\teventData.element = currentStreamItem;\n\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n};\n\nfunction getShareNetworkTemplateData(loggedIn) {\n\treturn {\n\t\tshareNetwork: currentShareNetwork,\n\t\tshareNetworkLoggedIn: loggedIn,\n\t\tshareNetworkIcon: shareNetworks[currentShareNetwork].iconName,\n\t\tshareNetworkDisplayName: shareNetworks[currentShareNetwork].name,\n\t\tshareNetworkAvatarPath: options.defaultShareNetworkAvatarPath\n\t};\n}\n\nfunction renderShareNetworkTemplate() {\n\t// If there isn\'t an active share flyout, reset shareNetwork\n\t/*\n if ($(options.shareContentTarget).length === 0) {\n \tcurrentShareNetwork = options.defaultShareNetwork;\n }*/\n\treturn _servicesHbrInteraction2["default"].checkSocialLogin(currentShareNetwork).then(function (loggedIn) {\n\t\treturn shareNetworks[currentShareNetwork].template(getShareNetworkTemplateData(loggedIn));\n\t});\n}\n\n/**\n * liveRender\n * Used to swap out subview on share flyout nav interaction\n */\nfunction liveRender() {\n\trenderShareNetworkTemplate().then(function (renderedSubTemplate) {\n\t\t(0, _jquery2["default"])(options.shareContentTarget).html(renderedSubTemplate);\n\t});\n}\n/**\n * render\n * @param {Object} data\n * @returns {*} HTML string\n */\nexports.render = function (data) {\n\tif (data.network) {\n\t\t// the network was specified during the flyout render\n\t\t// set this as the\n\t\tcurrentShareNetwork = data.network;\n\t}\n\n\tif (!shareNetworks[currentShareNetwork]) {\n\t\tthrow "Unsupported share network!";\n\t}\n\n\t// save the data as the shareContent\n\t// shareContent is immutable after this point so setting\n\t// it here ensures that the flyout has the latest data before\n\t// rendering.\n\tshareContent = data;\n\n\treturn renderShareNetworkTemplate().then(function (renderedSubTemplate) {\n\t\treturn templates.base({\n\t\t\tshareTitle: data.title,\n\t\t\tshareUrl: data.url,\n\t\t\tsubTemplate: renderedSubTemplate,\n\t\t\tsetFullPath: _servicesUrlLengthUtils2["default"].setFullPath,\n\t\t\tnetwork: currentShareNetwork\n\t\t});\n\t});\n};\n\n/**\n * getData\n * Gets necessary data from the DOM for rendering share template and\n * hitting share/history end points\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\tvar $streamItem = $element.parents("stream-item");\n\tcurrentStreamItem = $streamItem;\n\tvar selectedNetwork = $element.data("share-network");\n\tif (!selectedNetwork) {\n\t\tselectedNetwork = options.defaultShareNetwork;\n\t}\n\treturn {\n\t\tid: $streamItem.attr("data-id"),\n\t\ttitle: $streamItem.data("title"),\n\t\turl: _servicesSubscriptionUtils2["default"].processUrl($streamItem.attr("data-url")),\n\t\ttopic: $streamItem.data("topic"),\n\t\tauthors: $streamItem.data("authors"),\n\t\tcontentType: $streamItem.data("content-type"),\n\t\timage: $streamItem.data("content-image"),\n\t\tsummary: $streamItem.data("summary"),\n\t\tactivityType: "shared",\n\t\tnetwork: selectedNetwork\n\t};\n};\n\n/**\n * bindInteractions\n * Binds interactions on template items\n */\nexports.bindInteractions = function () {\n\t(0, _jquery2["default"])(options.shareContentTarget).parent().on("click", options.shareNavItemTarget, (0, _lodashAmdModernFunctionsBind2["default"])(navItemClickHandler, this)).on("click", options.shareConnectTarget, (0, _lodashAmdModernFunctionsBind2["default"])(shareConnectClickHandler, this)).on("click", options.sharePostTarget, (0, _lodashAmdModernFunctionsBind2["default"])(sharePostClickHandler, this));\n};\n\n/**\n * getOverrideOptions\n * Returns a list of options specific to the share flyout\n * @returns {Object}\n */\nexports.getOverrideOptions = function () {\n\treturn options;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/share/share.js\n ** module id = 107\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/share/share.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _react = __webpack_require__(60);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar _lodashAmdModernCollectionsContains = __webpack_require__(41);\n\nvar _lodashAmdModernCollectionsContains2 = _interopRequireDefault(_lodashAmdModernCollectionsContains);\n\nvar _lodashAmdModernObjectsOmit = __webpack_require__(263);\n\nvar _lodashAmdModernObjectsOmit2 = _interopRequireDefault(_lodashAmdModernObjectsOmit);\n\nvar _lodashAmdModernObjectsValues = __webpack_require__(121);\n\nvar _lodashAmdModernObjectsValues2 = _interopRequireDefault(_lodashAmdModernObjectsValues);\n\nvar _lodashAmdModernCollectionsSortBy = __webpack_require__(95);\n\nvar _lodashAmdModernCollectionsSortBy2 = _interopRequireDefault(_lodashAmdModernCollectionsSortBy);\n\nvar _lodashAmdModernCollectionsFind = __webpack_require__(283);\n\nvar _lodashAmdModernCollectionsFind2 = _interopRequireDefault(_lodashAmdModernCollectionsFind);\n\nvar _lodashAmdModernCollectionsIndexBy = __webpack_require__(94);\n\nvar _lodashAmdModernCollectionsIndexBy2 = _interopRequireDefault(_lodashAmdModernCollectionsIndexBy);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// React component:\n// This UI component is rendered client-side using data from the server. The\n// initial state is conveyed as serialized JSON in a data attribute on the\n// container element, and is read by the activateAll function.\n\nvar dom = _react2["default"].DOM;\n\nvar assoc = __webpack_require__(26).assoc;\nvar merge = __webpack_require__(26).merge;\nvar FolderList = _react2["default"].createClass({\n\tdisplayName: "FolderList",\n\n\tgetInitialState: function getInitialState() {\n\t\tvar path = window.location.pathname;\n\t\tvar slugExpression = /^\\/my-library\\/library\\/([a-zA-Z0-9\\-]+)$/g;\n\t\tvar slugs = slugExpression.exec(path);\n\t\tvar slugFolder = null;\n\t\tif (slugs !== null) {\n\t\t\tvar slug = slugs[1];\n\t\t\tslugFolder = (0, _lodashAmdModernCollectionsFind2["default"])(this.props.folders, function (obj) {\n\t\t\t\tif (obj.slug !== "undefined" && obj.slug !== null && obj.slug === slug) {\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t}\n\t\tvar activeFolderId = slugFolder === null ? "all" : slugFolder.id;\n\t\treturn { folders: (0, _lodashAmdModernCollectionsIndexBy2["default"])(this.props.folders, "id"), open: false, active: activeFolderId, editing: null, newName: "", newDescription: "", error: null };\n\t},\n\n\tcomponentDidMount: function componentDidMount() {\n\t\tif (this.state.active !== "all") {\n\t\t\tvar d = function d(folder) {\n\t\t\t\treturn merge(folder, { streamEndpoint: "user/list/" + encodeURIComponent(folder.id), streamParam: "" });\n\t\t\t};\n\t\t\t(0, _jquery2["default"])(_react2["default"].findDOMNode(this)).trigger("change:stream", d(this.state.folders[this.state.active]));\n\t\t}\n\t},\n\n\tcomponentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n\t\tvar d = function d(folder) {\n\t\t\treturn merge(folder, { streamEndpoint: "user/list/" + encodeURIComponent(folder.id),\n\t\t\t\tstreamParam: prevState.editing === "new" ? "newFolderCreated" : "" });\n\t\t};\n\t\tif (this.state.active !== prevState.active || this.state.dirty) {\n\t\t\t(0, _jquery2["default"])(_react2["default"].findDOMNode(this)).trigger("change:stream", this.state.active === "all" ? { streamEndpoint: "user/saves", id: "all" } : d(this.state.folders[this.state.active]));\n\t\t}\n\t},\n\n\tonOpen: function onOpen(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ open: !this.state.open });\n\t},\n\n\tonActivate: function onActivate(folder, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: folder.id, editing: null, open: false });\n\t},\n\n\tonEdit: function onEdit(folder, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: folder.id, editing: "active", newName: folder.name, newDescription: folder.description, error: null });\n\t},\n\n\tonNew: function onNew(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ editing: "new", newName: "", newDescription: "", error: null });\n\t},\n\n\tonCancel: function onCancel(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ editing: null });\n\t},\n\n\tonUpdate: function onUpdate(folder, ev) {\n\t\tev.preventDefault();\n\t\t_servicesHbrInteraction2["default"].request("lists", merge(folder, { name: this.state.newName.trim(), description: this.state.newDescription })).then((function (res) {\n\t\t\tthis.setState({ active: res.id, editing: null, folders: assoc(this.state.folders, res.id, res), open: folder.id ? true : false, error: null });\n\t\t}).bind(this), (function (response) {\n\t\t\tif (response && response.responseJSON && (response.responseJSON.errors || response.responseJSON.error)) {\n\t\t\t\tvar errorMessage = "";\n\t\t\t\tvar errors = response.responseJSON.errors;\n\t\t\t\tif (errors && errors.length !== 0) {\n\t\t\t\t\terrorMessage = errors[0].error;\n\t\t\t\t} else {\n\t\t\t\t\terrorMessage = response.responseJSON.message;\n\t\t\t\t}\n\n\t\t\t\tthis.setState({ "error": errorMessage });\n\t\t\t}\n\t\t}).bind(this));\n\t},\n\n\tonDelete: function onDelete(folder, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: folder.id, editing: "active-delete" });\n\t},\n\n\tonDeleteYes: function onDeleteYes(folder, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: "all", editing: null, folders: (0, _lodashAmdModernObjectsOmit2["default"])(this.state.folders, folder.id) });\n\t\t_servicesHbrInteraction2["default"].request("lists", "delete", folder);\n\t},\n\n\tonDeleteNo: function onDeleteNo(folder, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ editing: null });\n\t},\n\n\trender: function render() {\n\t\tvar validName = /^[a-zA-Z0-9\\s&]+$/.test(this.state.newName);\n\t\tvar invalidName = this.state.newName && !validName;\n\t\tvar formContents = (function (action) {\n\t\t\treturn [dom.div({ className: "flex-row" }, dom.div({ className: "text-center eyebrow--small pbm flex-1" }, action + " FOLDER"), dom.a({ href: "#", className: "icon icon-times link--black", onClick: this.onCancel })), dom.input({ type: "text", className: invalidName || this.state.error ? "error" : "", placeholder: "Folder Title", autoFocus: true, value: this.state.newName, onChange: (function (ev) {\n\t\t\t\t\tthis.setState({ newName: ev.target.value, error: null });\n\t\t\t\t}).bind(this) }), invalidName || this.state.error ? dom.label({ className: "error" }, !validName ? "Letters, numbers, and spaces only" : this.state.error) : "", dom.textarea({ placeholder: "Folder Description", value: this.state.newDescription, onChange: (function (ev) {\n\t\t\t\t\tthis.setState({ newDescription: ev.target.value });\n\t\t\t\t}).bind(this) })];\n\t\t}).bind(this);\n\n\t\tvar creating = this.state.editing === "new";\n\t\treturn dom.div({ className: "folder-list" + (this.state.open ? " open" : "") }, dom.a({ href: "#", className: "folder-list--opener flex-row justify-between pvm prm pll link--white", onClick: this.onOpen }, this.state.active === "all" ? "All Folders" : this.state.folders[this.state.active].name, dom.span({ className: "icon icon-caret-right font-size-xlarge" })), dom.div({ className: "folder-list--folders" }, (0, _lodashAmdModernCollectionsMap2["default"])([{ id: "all", name: "All Folders" }].concat((0, _lodashAmdModernCollectionsSortBy2["default"])((0, _lodashAmdModernObjectsValues2["default"])(this.state.folders), "name")), (function (folder) {\n\t\t\tvar active = this.state.active === folder.id;\n\t\t\tvar editing = active && (0, _lodashAmdModernCollectionsContains2["default"])(["active", "active-delete"], this.state.editing);\n\t\t\treturn dom.div({ className: "folder-list--folder prm" + (active ? " active" : "") + (editing ? " editing" : "") }, editing ? dom.div({ className: "ptm pbl" }, this.state.editing === "active" ? [formContents("EDIT"), dom.button({ className: "button--black expand mbs", disabled: !validName, onClick: this.onUpdate.bind(this, folder) }, "SAVE")] : [dom.div({ className: "mbm" }, "Are you sure you want to discard this folder?"), dom.div({ className: "row" }, dom.div({ className: "small-6 columns" }, dom.button({ className: "button--black expand", onClick: this.onDeleteYes.bind(this, folder) }, "YES")), dom.div({ className: "small-6 columns" }, dom.button({ className: "button--alt-black expand", onClick: this.onDeleteNo.bind(this, folder) }, "NO")))]) : dom.div({ className: "flex-row justify-between" }, dom.a({ href: "#", className: "folder-list--folder-link flex-1 pvm", onClick: this.onActivate.bind(this, folder) }, folder.slug === "hbrgift" ? dom.i({ className: "icon icon-gift prs" }) : null, folder.name), folder.id !== "all" && !folder.readOnly ? [dom.a({ href: "#", className: "folder-list--edit-link icon icon-pencil font-size-large pvm", onClick: this.onEdit.bind(this, folder) }), dom.a({ href: "#", className: "folder-list--edit-link icon icon-circle-x font-size-xsmall pvm pls", onClick: this.onDelete.bind(this, folder) })] : null));\n\t\t}).bind(this)), dom.div({ className: "folder-list--folder pvm prm" + (creating ? " editing" : "") }, creating ? [formContents("NEW"), dom.button({ className: "button--black expand", disabled: !validName, onClick: this.onUpdate.bind(this, {}) }, "SAVE")] : dom.a({ href: "#", className: "button--alt-black expand mbn", onClick: this.onNew }, "NEW FOLDER"))));\n\t}\n});\n\nvar all;\n\nexports.activateAll = function () {\n\tall = (0, _lodashAmdModernCollectionsMap2["default"])(document.getElementsByTagName("folder-list"), function (el) {\n\t\treturn _react2["default"].render(_react2["default"].createElement(FolderList, { folders: JSON.parse(el.getAttribute("data-folders")) }), el);\n\t});\n};\n\nexports.updateFolder = function (folder) {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(all, function (component) {\n\t\tcomponent.setState({ folders: assoc(component.state.folders, folder.id, folder) });\n\t});\n};\n\nexports.updateOnToggleTab = function () {\n\tif (all) {\n\t\tfor (var i = 0; i < all.length; i++) {\n\t\t\tall[i].setState({ folder: all[i].state.folder, editing: null, dirty: true });\n\t\t}\n\t}\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/folder-list/folder-list.js\n ** module id = 108\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/folder-list/folder-list.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar URI = _common2["default"].API + "user/history";\n\nexports.post = function (contentObject) {\n\treturn _request2["default"].ajax("post", URI, contentObject).promise();\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/history.js\n ** module id = 109\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/history.js?')},function(module,exports){eval('\n/**\n* function that will abstract the correct url from the url\n*\n* @param {string} url\n*\n* @return {string} url\n*/\n"use strict";\n\nexports.processUrl = function (url) {\n\treturn url.match(/richrelevance/) ? decodeURIComponent(url.split("&ct=")[1]) : url;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/subscription-utils.js\n ** module id = 110\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/subscription-utils.js?')},function(module,exports){eval('/**\n * A series of functions that can be used throughoutfor checking\n * the url length and adjusting it according to need.\n */\n\n"use strict";\n\nvar urlRegex = new RegExp(/.*hbr\\.org\\//i);\n\n/**\n* function that will cehck to see if the url path is\n* absolute\n*\n* @param {string} url\n*\n* @return {boolean}\n*/\nvar isUrlAbsolute = function isUrlAbsolute(url) {\n return url && url.match(urlRegex);\n};\n\n/**\n* function that will add the full path to the relative URL\n*\n* @param {string} url\n*\n* @return {string}\n*/\nexports.setFullPath = function (url) {\n return !isUrlAbsolute(url) ? window.location.origin + url : url;\n};\n\n/**\n* function that will set the full path to relative path\n*\n* @param {string} url\n*\n* @return {string}\n*/\nexports.setRelativePath = function (url) {\n return isUrlAbsolute(url) ? url.replace(url.match(urlRegex), "/") : url;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/url-length-utils.js\n ** module id = 111\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/url-length-utils.js?')},function(module,exports,__webpack_require__){eval('/**\n * A series of functions that can be used throughout for validating\n * individual fields without having to rely heavily on jQuery\n * Validation plugin\n */\n\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar validatorPatterns = {\n\temail: {\n\t\tregex: new RegExp(/[^\\s@]+@[^\\s@]+\\.[^\\s@]+/),\n\t\tmessage: "Please enter a valid email address."\n\t},\n\tlistName: {\n\t\tregex: new RegExp(/[^-!$%^&*()_+|~=`{}:;<>?,.@#]/g),\n\t\tmessage: "A list name can only letters and numbers."\n\t},\n\trequired: {\n\t\tmessage: "This field is required."\n\t}\n};\n\n/**\n* function that will validate the string through the\n* designated regex\n*\n* @param {string} validatorString\n* @param {string} type\n*\n* @return {boolean}\n*/\nvar validate = function validate(validatorString, type) {\n\treturn validatorPatterns[type].regex.test(validatorString);\n};\n\n/**\n* function that will run the given element through its\n* proper validation\n*\n* @param {object} element\n* @param {string} type\n*\n* @return {boolean}\n*/\nexports.validateElement = function (element, type) {\n\tvar validateString = (0, _jquery2["default"])(element).val();\n\n\tif (validateRequired(element)) {\n\t\tif (!validate(validateString, type)) {\n\t\t\tdisplayError(element, type);\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n* function that will validate an input field that\n* has multiple inputs that will be comma separated\n*\n* @param {object} element\n* @param {string} type\n*\n* @return {boolean}\n*/\nexports.validateMulitpleElements = function (element, type) {\n\tvar validateString = (0, _jquery2["default"])(element).val();\n\n\tif (validateRequired(element)) {\n\t\tvar validateArr = validateString.split(",");\n\t\tvar dataLen = validateArr.length;\n\n\t\twhile (dataLen--) {\n\t\t\tif (!validate(validateArr[dataLen], type)) {\n\t\t\t\tdisplayError(element, type);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n* function that will check if a required field is null\n*\n* @param {object} element\n*\n* @return {boolean}\n*/\nvar validateRequired = function validateRequired(element) {\n\tvar isRequired = (0, _jquery2["default"])(element).attr("required") === "required";\n\tvar validateString = (0, _jquery2["default"])(element).val();\n\n\tif (isRequired && validateString.trim().length <= 0) {\n\t\tdisplayError(element, "required");\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n* function that will display the error message on an\n* invalid field based on jQuery Validation plugin criteria\n* http://jqueryvalidation.org/reference/#markup-recommendations\n*\n* @param {object} element\n* @param {string} type\n*\n*/\nvar displayError = exports.displayError = function (element, type) {\n\tvar fieldName = (0, _jquery2["default"])(element).attr("name");\n\tvar thisLabel;\n\tvar clonedLabel;\n\n\tthisLabel = (0, _jquery2["default"])(element).closest(".field-container").find("label[for=\'" + fieldName + "\']");\n\tif (!thisLabel || thisLabel.length <= 0) {\n\t\tthisLabel = (0, _jquery2["default"])(element).siblings("label[for=\'" + fieldName + "\']");\n\t}\n\tclonedLabel = (0, _jquery2["default"])(thisLabel).clone();\n\n\t(0, _jquery2["default"])(clonedLabel).html(validatorPatterns[type].message).addClass("error").insertAfter((0, _jquery2["default"])(element));\n\t(0, _jquery2["default"])(element).addClass("error");\n};\n\n/**\n* function that will remove all the previously displayed errors\n*\n* @param {object} element\n*\n*/\nexports.removeError = function (element) {\n\t(0, _jquery2["default"])(element).closest(".field-container").find("label.error").remove();\n\t(0, _jquery2["default"])(element).siblings("label.error").remove();\n\t(0, _jquery2["default"])(element).closest(".field-container").find("input.error, select.error").removeClass("error");\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/validator-utils.js\n ** module id = 112\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/validator-utils.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Invokes `interceptor` with the `value` as the first argument and then\n * returns `value`. The purpose of this method is to "tap into" a method\n * chain in order to perform operations on intermediate results within\n * the chain.\n *\n * @static\n * @memberOf _\n * @category Chaining\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3, 4])\n * .tap(function(array) { array.pop(); })\n * .reverse()\n * .value();\n * // => [3, 2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n return tap;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/chaining/tap.js\n ** module id = 113\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/chaining/tap.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(63)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isFunction) {\n\n /**\n * Creates a function that is restricted to execute `func` once. Repeat calls to\n * the function will return the value of the first call. The `func` is executed\n * with the `this` binding of the created function.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // `initialize` executes `createApplication` once\n */\n function once(func) {\n var ran,\n result;\n\n if (!isFunction(func)) {\n throw new TypeError;\n }\n return function() {\n if (ran) {\n return result;\n }\n ran = true;\n result = func.apply(this, arguments);\n\n // clear the `func` variable so the function may be garbage collected\n func = null;\n return result;\n };\n }\n\n return once;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/once.js\n ** module id = 114\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/once.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used to pool arrays and objects used internally */\n var arrayPool = [];\n\n return arrayPool;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/arrayPool.js\n ** module id = 115\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/arrayPool.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(325), __webpack_require__(33)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isArguments, isArray) {\n\n /**\n * The base implementation of `_.flatten` without support for callback\n * shorthands or `thisArg` binding.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {boolean} [isShallow=false] A flag to restrict flattening to a single level.\n * @param {boolean} [isStrict=false] A flag to restrict flattening to arrays and `arguments` objects.\n * @param {number} [fromIndex=0] The index to start from.\n * @returns {Array} Returns a new flattened array.\n */\n function baseFlatten(array, isShallow, isStrict, fromIndex) {\n var index = (fromIndex || 0) - 1,\n length = array ? array.length : 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (value && typeof value == 'object' && typeof value.length == 'number'\n && (isArray(value) || isArguments(value))) {\n // recursively flatten arrays (susceptible to call stack limits)\n if (!isShallow) {\n value = baseFlatten(value, isShallow, isStrict);\n }\n var valIndex = -1,\n valLength = value.length,\n resIndex = result.length;\n\n result.length += valLength;\n while (++valIndex < valLength) {\n result[resIndex++] = value[valIndex];\n }\n } else if (!isStrict) {\n result.push(value);\n }\n }\n return result;\n }\n\n return baseFlatten;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseFlatten.js\n ** module id = 116\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseFlatten.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(119)], __WEBPACK_AMD_DEFINE_RESULT__ = function(objectPool) {\n\n /**\n * Gets an object from the object pool or creates a new one if the pool is empty.\n *\n * @private\n * @returns {Object} The object from the pool.\n */\n function getObject() {\n return objectPool.pop() || {\n 'array': null,\n 'cache': null,\n 'criteria': null,\n 'false': false,\n 'index': 0,\n 'null': false,\n 'number': null,\n 'object': null,\n 'push': null,\n 'string': null,\n 'true': false,\n 'undefined': false,\n 'value': null\n };\n }\n\n return getObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/getObject.js\n ** module id = 117\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/getObject.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used as the max size of the `arrayPool` and `objectPool` */\n var maxPoolSize = 40;\n\n return maxPoolSize;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/maxPoolSize.js\n ** module id = 118\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/maxPoolSize.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used to pool arrays and objects used internally */\n var objectPool = [];\n\n return objectPool;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/objectPool.js\n ** module id = 119\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/objectPool.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** `Object#toString` result shortcuts */\n var stringClass = '[object String]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /**\n * Checks if `value` is a string.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is a string, else `false`.\n * @example\n *\n * _.isString('fred');\n * // => true\n */\n function isString(value) {\n return typeof value == 'string' ||\n value && typeof value == 'object' && toString.call(value) == stringClass || false;\n }\n\n return isString;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isString.js\n ** module id = 120\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isString.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(101)], __WEBPACK_AMD_DEFINE_RESULT__ = function(keys) {\n\n /**\n * Creates an array composed of the own enumerable property values of `object`.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns an array of property values.\n * @example\n *\n * _.values({ 'one': 1, 'two': 2, 'three': 3 });\n * // => [1, 2, 3] (property order is not guaranteed across environments)\n */\n function values(object) {\n var index = -1,\n props = keys(object),\n length = props.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = object[props[index]];\n }\n return result;\n }\n\n return values;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/values.js\n ** module id = 121\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/values.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar af = moment.defineLocale('af', {\n months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM : function (input) {\n return /^nm$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Vandag om] LT',\n nextDay : '[Môre om] LT',\n nextWeek : 'dddd [om] LT',\n lastDay : '[Gister om] LT',\n lastWeek : '[Laas] dddd [om] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'oor %s',\n past : '%s gelede',\n s : '\\'n paar sekondes',\n m : '\\'n minuut',\n mm : '%d minute',\n h : '\\'n uur',\n hh : '%d ure',\n d : '\\'n dag',\n dd : '%d dae',\n M : '\\'n maand',\n MM : '%d maande',\n y : '\\'n jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week : {\n dow : 1, // Maandag is die eerste dag van die week.\n doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n});\n\nreturn af;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/af.js\n ** module id = 122\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/af.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arDz = moment.defineLocale('ar-dz', {\n months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arDz;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-dz.js\n ** module id = 123\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-dz.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arKw = moment.defineLocale('ar-kw', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arKw;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-kw.js\n ** module id = 124\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-kw.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '0': '0'\n};\nvar pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر'\n];\n\nvar arLy = moment.defineLocale('ar-ly', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM : function (input) {\n return 'Ù…' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arLy;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-ly.js\n ** module id = 125\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-ly.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arMa = moment.defineLocale('ar-ma', {\n months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arMa;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-ma.js\n ** module id = 126\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-ma.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'Ù¡',\n '2': 'Ù¢',\n '3': 'Ù£',\n '4': 'Ù¤',\n '5': 'Ù¥',\n '6': 'Ù¦',\n '7': 'Ù§',\n '8': 'Ù¨',\n '9': 'Ù©',\n '0': 'Ù '\n};\nvar numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n};\n\nvar arSa = moment.defineLocale('ar-sa', {\n months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM : function (input) {\n return 'Ù…' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar : {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'في %s',\n past : 'منذ %s',\n s : 'ثوان',\n m : 'دقيقة',\n mm : '%d دقائق',\n h : 'ساعة',\n hh : '%d ساعات',\n d : 'يوم',\n dd : '%d أيام',\n M : 'شهر',\n MM : '%d أشهر',\n y : 'سنة',\n yy : '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn arSa;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-sa.js\n ** module id = 127\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-sa.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn arTn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar-tn.js\n ** module id = 128\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar-tn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'Ù¡',\n '2': 'Ù¢',\n '3': 'Ù£',\n '4': 'Ù¤',\n '5': 'Ù¥',\n '6': 'Ù¦',\n '7': 'Ù§',\n '8': 'Ù¨',\n '9': 'Ù©',\n '0': 'Ù '\n};\nvar numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n};\nvar pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n};\nvar plurals = {\n s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n};\nvar pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n};\nvar months = [\n 'كانون الثاني يناير',\n 'شباط فبراير',\n 'آذار مارس',\n 'نيسان أبريل',\n 'أيار مايو',\n 'حزيران يونيو',\n 'تموز يوليو',\n 'آب أغسطس',\n 'أيلول سبتمبر',\n 'تشرين الأول أكتوبر',\n 'تشرين الثاني نوفمبر',\n 'كانون الأول ديسمبر'\n];\n\nvar ar = moment.defineLocale('ar', {\n months : months,\n monthsShort : months,\n weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin : 'Ø­_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/\\u200FM/\\u200FYYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM : function (input) {\n return 'Ù…' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar : {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'بعد %s',\n past : 'منذ %s',\n s : pluralize('s'),\n m : pluralize('m'),\n mm : pluralize('m'),\n h : pluralize('h'),\n hh : pluralize('h'),\n d : pluralize('d'),\n dd : pluralize('d'),\n M : pluralize('M'),\n MM : pluralize('M'),\n y : pluralize('y'),\n yy : pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/\\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ar;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ar.js\n ** module id = 129\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ar.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n};\n\nvar az = moment.defineLocale('az', {\n months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays : 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split('_'),\n weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[sabah saat] LT',\n nextWeek : '[gÉ™lÉ™n hÉ™ftÉ™] dddd [saat] LT',\n lastDay : '[dünÉ™n] LT',\n lastWeek : '[keçən hÉ™ftÉ™] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s É™vvÉ™l',\n s : 'birneçə saniyyÉ™',\n m : 'bir dÉ™qiqÉ™',\n mm : '%d dÉ™qiqÉ™',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir il',\n yy : '%d il'\n },\n meridiemParse: /gecÉ™|sÉ™hÉ™r|gündüz|axÅŸam/,\n isPM : function (input) {\n return /^(gündüz|axÅŸam)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecÉ™';\n } else if (hour < 12) {\n return 'sÉ™hÉ™r';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axÅŸam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn az;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/az.js\n ** module id = 130\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/az.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n 'dd': 'дзень_дні_дзён',\n 'MM': 'месяц_месяцы_месяцаў',\n 'yy': 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\n\nvar be = moment.defineLocale('be', {\n months : {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n },\n monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays : {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/\n },\n weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сёння Ñž] LT',\n nextDay: '[Заўтра Ñž] LT',\n lastDay: '[Учора Ñž] LT',\n nextWeek: function () {\n return '[У] dddd [Ñž] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [Ñž] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [Ñž] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'праз %s',\n past : '%s таму',\n s : 'некалькі секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithPlural,\n hh : relativeTimeWithPlural,\n d : 'дзень',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM : function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(Ñ–|Ñ‹|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-Ñ–' : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn be;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/be.js\n ** module id = 131\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/be.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar bg = moment.defineLocale('bg', {\n months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Днес в] LT',\n nextDay : '[Утре в] LT',\n nextWeek : 'dddd [в] LT',\n lastDay : '[Вчера в] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Ð’ изминалата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Ð’ изминалия] dddd [в] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'след %s',\n past : 'преди %s',\n s : 'няколко секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дни',\n M : 'месец',\n MM : '%d месеца',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bg;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/bg.js\n ** module id = 132\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/bg.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'à§§',\n '2': '২',\n '3': 'à§©',\n '4': '৪',\n '5': 'à§«',\n '6': '৬',\n '7': 'à§­',\n '8': 'à§®',\n '9': '৯',\n '0': '০'\n};\nvar numberMap = {\n 'à§§': '1',\n '২': '2',\n 'à§©': '3',\n '৪': '4',\n 'à§«': '5',\n '৬': '6',\n 'à§­': '7',\n 'à§®': '8',\n '৯': '9',\n '০': '0'\n};\n\nvar bn = moment.defineLocale('bn', {\n months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n longDateFormat : {\n LT : 'A h:mm সময়',\n LTS : 'A h:mm:ss সময়',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm সময়',\n LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar : {\n sameDay : '[আজ] LT',\n nextDay : '[আগামীকাল] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[গতকাল] LT',\n lastWeek : '[গত] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s পরে',\n past : '%s আগে',\n s : 'কয়েক সেকেন্ড',\n m : 'এক মিনিট',\n mm : '%d মিনিট',\n h : 'এক ঘন্টা',\n hh : '%d ঘন্টা',\n d : 'এক দিন',\n dd : '%d দিন',\n M : 'এক মাস',\n MM : '%d মাস',\n y : 'এক বছর',\n yy : '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/bn.js\n ** module id = 133\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/bn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '༡',\n '2': '༢',\n '3': '༣',\n '4': '༤',\n '5': '༥',\n '6': '༦',\n '7': '༧',\n '8': '༨',\n '9': '༩',\n '0': '༠'\n};\nvar numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n};\n\nvar bo = moment.defineLocale('bo', {\n months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[དི་རིང] LT',\n nextDay : '[སང་ཉིན] LT',\n nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay : '[ཁ་སང] LT',\n lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ལ་',\n past : '%s སྔན་ལ',\n s : 'ལམ་སང',\n m : 'སྐར་མ་གཅིག',\n mm : '%d སྐར་མ',\n h : 'ཆུ་ཚོད་གཅིག',\n hh : '%d ཆུ་ཚོད',\n d : 'ཉིན་གཅིག',\n dd : '%d ཉིན་',\n M : 'ཟླ་བ་གཅིག',\n MM : '%d ཟླ་བ',\n y : 'ལོ་གཅིག',\n yy : '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/bo.js\n ** module id = 134\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/bo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n 'mm': 'munutenn',\n 'MM': 'miz',\n 'dd': 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n}\nfunction specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n}\nfunction lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n}\nfunction mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n}\nfunction softMutation(text) {\n var mutationTable = {\n 'm': 'v',\n 'b': 'v',\n 'd': 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n}\n\nvar br = moment.defineLocale('br', {\n months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h[e]mm A',\n LTS : 'h[e]mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [a viz] MMMM YYYY',\n LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n },\n calendar : {\n sameDay : '[Hiziv da] LT',\n nextDay : '[Warc\\'hoazh da] LT',\n nextWeek : 'dddd [da] LT',\n lastDay : '[Dec\\'h da] LT',\n lastWeek : 'dddd [paset da] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'a-benn %s',\n past : '%s \\'zo',\n s : 'un nebeud segondennoù',\n m : 'ur vunutenn',\n mm : relativeTimeWithMutation,\n h : 'un eur',\n hh : '%d eur',\n d : 'un devezh',\n dd : relativeTimeWithMutation,\n M : 'ur miz',\n MM : relativeTimeWithMutation,\n y : 'ur bloaz',\n yy : specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal : function (number) {\n var output = (number === 1) ? 'añ' : 'vet';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn br;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/br.js\n ** module id = 135\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/br.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nvar bs = moment.defineLocale('bs', {\n months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn bs;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/bs.js\n ** module id = 136\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/bs.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ca = moment.defineLocale('ca', {\n months : {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : '[el] D MMMM [de] YYYY',\n ll : 'D MMM YYYY',\n LLL : '[el] D MMMM [de] YYYY [a les] H:mm',\n lll : 'D MMM YYYY, H:mm',\n LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm',\n llll : 'ddd D MMM YYYY, H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextDay : function () {\n return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastDay : function () {\n return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'd\\'aquí %s',\n past : 'fa %s',\n s : 'uns segons',\n m : 'un minut',\n mm : '%d minuts',\n h : 'una hora',\n hh : '%d hores',\n d : 'un dia',\n dd : '%d dies',\n M : 'un mes',\n MM : '%d mesos',\n y : 'un any',\n yy : '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal : function (number, period) {\n var output = (number === 1) ? 'r' :\n (number === 2) ? 'n' :\n (number === 3) ? 'r' :\n (number === 4) ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ca;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ca.js\n ** module id = 137\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ca.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = 'leden_únor_bÅ™ezen_duben_kvÄ›ten_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');\nvar monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\nfunction plural(n) {\n return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mÄ›síc' : 'mÄ›sícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›síce' : 'mÄ›síců');\n } else {\n return result + 'mÄ›síci';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n break;\n }\n}\n\nvar cs = moment.defineLocale('cs', {\n months : months,\n monthsShort : monthsShort,\n monthsParse : (function (months, monthsShort) {\n var i, _monthsParse = [];\n for (i = 0; i < 12; i++) {\n // use custom parser to solve problem with July (červenec)\n _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');\n }\n return _monthsParse;\n }(months, monthsShort)),\n shortMonthsParse : (function (monthsShort) {\n var i, _shortMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');\n }\n return _shortMonthsParse;\n }(monthsShort)),\n longMonthsParse : (function (months) {\n var i, _longMonthsParse = [];\n for (i = 0; i < 12; i++) {\n _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');\n }\n return _longMonthsParse;\n }(months)),\n weekdays : 'nedÄ›le_pondÄ›lí_úterý_stÅ™eda_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm',\n l : 'D. M. YYYY'\n },\n calendar : {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pÅ™ed %s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn cs;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/cs.js\n ** module id = 138\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/cs.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar cv = moment.defineLocale('cv', {\n months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort : 'кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar : {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L'\n },\n relativeTime : {\n future : function (output) {\n var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past : '%s каялла',\n s : 'пӗр-ик ҫеккунт',\n m : 'пӗр минут',\n mm : '%d минут',\n h : 'пӗр сехет',\n hh : '%d сехет',\n d : 'пӗр кун',\n dd : '%d кун',\n M : 'пӗр уйӑх',\n MM : '%d уйӑх',\n y : 'пӗр ҫул',\n yy : '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal : '%d-мӗш',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn cv;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/cv.js\n ** module id = 139\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/cv.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact : true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn cy;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/cy.js\n ** module id = 140\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/cy.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar da = moment.defineLocale('da', {\n months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay : '[i dag kl.] LT',\n nextDay : '[i morgen kl.] LT',\n nextWeek : 'pÃ¥ dddd [kl.] LT',\n lastDay : '[i gÃ¥r kl.] LT',\n lastWeek : '[i] dddd[s kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'fÃ¥ sekunder',\n m : 'et minut',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dage',\n M : 'en mÃ¥ned',\n MM : '%d mÃ¥neder',\n y : 'et Ã¥r',\n yy : '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn da;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/da.js\n ** module id = 141\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/da.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar deAt = moment.defineLocale('de-at', {\n months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn deAt;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/de-at.js\n ** module id = 142\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/de-at.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar deCh = moment.defineLocale('de-ch', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH.mm',\n LLLL : 'dddd, D. MMMM YYYY HH.mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn deCh;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/de-ch.js\n ** module id = 143\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/de-ch.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eine Minute', 'einer Minute'],\n 'h': ['eine Stunde', 'einer Stunde'],\n 'd': ['ein Tag', 'einem Tag'],\n 'dd': [number + ' Tage', number + ' Tagen'],\n 'M': ['ein Monat', 'einem Monat'],\n 'MM': [number + ' Monate', number + ' Monaten'],\n 'y': ['ein Jahr', 'einem Jahr'],\n 'yy': [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar de = moment.defineLocale('de', {\n months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY HH:mm',\n LLLL : 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime : {\n future : 'in %s',\n past : 'vor %s',\n s : 'ein paar Sekunden',\n m : processRelativeTime,\n mm : '%d Minuten',\n h : processRelativeTime,\n hh : '%d Stunden',\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn de;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/de.js\n ** module id = 144\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/de.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©',\n 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©',\n 'Þ‰Þ§ÞƒÞ¨Þ—Þª',\n 'އޭޕްރީލު',\n 'Þ‰Þ­',\n 'Þ–Þ«Þ‚Þ°',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª',\n 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',\n 'ޑިސެމްބަރު'\n];\nvar weekdays = [\n 'އާދިއްތަ',\n 'Þ€Þ¯Þ‰Þ¦',\n 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦',\n 'Þ„ÞªÞ‹Þ¦',\n 'ބުރާސްފަތި',\n 'Þ€ÞªÞ†ÞªÞƒÞª',\n 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª'\n];\n\nvar dv = moment.defineLocale('dv', {\n months : months,\n monthsShort : months,\n weekdays : weekdays,\n weekdaysShort : weekdays,\n weekdaysMin : 'Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨'.split('_'),\n longDateFormat : {\n\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'D/M/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /Þ‰Þ†|Þ‰ÞŠ/,\n isPM : function (input) {\n return 'Þ‰ÞŠ' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Þ‰Þ†';\n } else {\n return 'Þ‰ÞŠ';\n }\n },\n calendar : {\n sameDay : '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',\n nextDay : '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',\n lastWeek : '[ފާއިތުވި] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ތެރޭގައި %s',\n past : 'Þ†ÞªÞƒÞ¨Þ‚Þ° %s',\n s : 'ސިކުންތުކޮޅެއް',\n m : 'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°',\n mm : 'Þ‰Þ¨Þ‚Þ¨Þ“Þª %d',\n h : 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°',\n hh : 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d',\n d : 'Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°',\n dd : 'ދުވަސް %d',\n M : 'Þ‰Þ¦Þ€Þ¬Þ‡Þ°',\n MM : 'މަސް %d',\n y : 'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°',\n yy : 'Þ‡Þ¦Þ€Þ¦ÞƒÞª %d'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 7, // Sunday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn dv;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/dv.js\n ** module id = 145\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/dv.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\nfunction isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n}\n\n\nvar el = moment.defineLocale('el', {\n monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM : function (input) {\n return ((input + '').toLowerCase()[0] === 'μ');\n },\n meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl : {\n sameDay : '[Σήμερα {}] LT',\n nextDay : '[Αύριο {}] LT',\n nextWeek : 'dddd [{}] LT',\n lastDay : '[Χθες {}] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse : 'L'\n },\n calendar : function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n },\n relativeTime : {\n future : 'σε %s',\n past : '%s πριν',\n s : 'λίγα δευτερόλεπτα',\n m : 'ένα λεπτό',\n mm : '%d λεπτά',\n h : 'μία ώρα',\n hh : '%d ώρες',\n d : 'μία μέρα',\n dd : '%d μέρες',\n M : 'ένας μήνας',\n MM : '%d μήνες',\n y : 'ένας χρόνος',\n yy : '%d χρόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4st is the first week of the year.\n }\n});\n\nreturn el;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/el.js\n ** module id = 146\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/el.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enAu = moment.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enAu;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/en-au.js\n ** module id = 147\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/en-au.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enCa = moment.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n});\n\nreturn enCa;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/en-ca.js\n ** module id = 148\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/en-ca.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enGb;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/en-gb.js\n ** module id = 149\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/en-gb.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enIe = moment.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enIe;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/en-ie.js\n ** module id = 150\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/en-ie.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar enNz = moment.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn enNz;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/en-nz.js\n ** module id = 151\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/en-nz.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar eo = moment.defineLocale('eo', {\n months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),\n weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaÅ­do_vendredo_sabato'.split('_'),\n weekdaysShort : 'dim_lun_mard_merk_ĵaÅ­_ven_sab'.split('_'),\n weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D[-a de] MMMM, YYYY',\n LLL : 'D[-a de] MMMM, YYYY HH:mm',\n LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar : {\n sameDay : '[HodiaÅ­ je] LT',\n nextDay : '[MorgaÅ­ je] LT',\n nextWeek : 'dddd [je] LT',\n lastDay : '[HieraÅ­ je] LT',\n lastWeek : '[pasinta] dddd [je] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'post %s',\n past : 'antaÅ­ %s',\n s : 'sekundoj',\n m : 'minuto',\n mm : '%d minutoj',\n h : 'horo',\n hh : '%d horoj',\n d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n dd : '%d tagoj',\n M : 'monato',\n MM : '%d monatoj',\n y : 'jaro',\n yy : '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal : '%da',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn eo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/eo.js\n ** module id = 152\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/eo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nvar esDo = moment.defineLocale('es-do', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY h:mm A',\n LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn esDo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/es-do.js\n ** module id = 153\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/es-do.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');\nvar monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\nvar es = moment.defineLocale('es', {\n months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextDay : function () {\n return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastDay : function () {\n return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n lastWeek : function () {\n return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'en %s',\n past : 'hace %s',\n s : 'unos segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'una hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un año',\n yy : '%d años'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn es;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/es.js\n ** module id = 154\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/es.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n 'm' : ['ühe minuti', 'üks minut'],\n 'mm': [number + ' minuti', number + ' minutit'],\n 'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n 'hh': [number + ' tunni', number + ' tundi'],\n 'd' : ['ühe päeva', 'üks päev'],\n 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n 'MM': [number + ' kuu', number + ' kuud'],\n 'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n 'yy': [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n}\n\nvar et = moment.defineLocale('et', {\n months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Täna,] LT',\n nextDay : '[Homme,] LT',\n nextWeek : '[Järgmine] dddd LT',\n lastDay : '[Eile,] LT',\n lastWeek : '[Eelmine] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s pärast',\n past : '%s tagasi',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : '%d päeva',\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn et;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/et.js\n ** module id = 155\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/et.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar eu = moment.defineLocale('eu', {\n months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact : true,\n weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY[ko] MMMM[ren] D[a]',\n LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l : 'YYYY-M-D',\n ll : 'YYYY[ko] MMM D[a]',\n lll : 'YYYY[ko] MMM D[a] HH:mm',\n llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar : {\n sameDay : '[gaur] LT[etan]',\n nextDay : '[bihar] LT[etan]',\n nextWeek : 'dddd LT[etan]',\n lastDay : '[atzo] LT[etan]',\n lastWeek : '[aurreko] dddd LT[etan]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s barru',\n past : 'duela %s',\n s : 'segundo batzuk',\n m : 'minutu bat',\n mm : '%d minutu',\n h : 'ordu bat',\n hh : '%d ordu',\n d : 'egun bat',\n dd : '%d egun',\n M : 'hilabete bat',\n MM : '%d hilabete',\n y : 'urte bat',\n yy : '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn eu;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/eu.js\n ** module id = 156\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/eu.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'Û±',\n '2': 'Û²',\n '3': 'Û³',\n '4': 'Û´',\n '5': 'Ûµ',\n '6': 'Û¶',\n '7': 'Û·',\n '8': 'Û¸',\n '9': 'Û¹',\n '0': 'Û°'\n};\nvar numberMap = {\n 'Û±': '1',\n 'Û²': '2',\n 'Û³': '3',\n 'Û´': '4',\n 'Ûµ': '5',\n 'Û¶': '6',\n 'Û·': '7',\n 'Û¸': '8',\n 'Û¹': '9',\n 'Û°': '0'\n};\n\nvar fa = moment.defineLocale('fa', {\n months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin : 'ÛŒ_د_س_Ú†_Ù¾_ج_Ø´'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar : {\n sameDay : '[امروز ساعت] LT',\n nextDay : '[فردا ساعت] LT',\n nextWeek : 'dddd [ساعت] LT',\n lastDay : '[دیروز ساعت] LT',\n lastWeek : 'dddd [پیش] [ساعت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'در %s',\n past : '%s پیش',\n s : 'چند ثانیه',\n m : 'یک دقیقه',\n mm : '%d دقیقه',\n h : 'یک ساعت',\n hh : '%d ساعت',\n d : 'یک روز',\n dd : '%d روز',\n M : 'یک ماه',\n MM : '%d ماه',\n y : 'یک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal : '%dÙ…',\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn fa;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fa.js\n ** module id = 157\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fa.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');\nvar numbersFuture = [\n 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n numbersPast[7], numbersPast[8], numbersPast[9]\n ];\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n}\nfunction verbalNumber(number, isFuture) {\n return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n}\n\nvar fi = moment.defineLocale('fi', {\n months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'Do MMMM[ta] YYYY',\n LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l : 'D.M.YYYY',\n ll : 'Do MMM YYYY',\n lll : 'Do MMM YYYY, [klo] HH.mm',\n llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar : {\n sameDay : '[tänään] [klo] LT',\n nextDay : '[huomenna] [klo] LT',\n nextWeek : 'dddd [klo] LT',\n lastDay : '[eilen] [klo] LT',\n lastWeek : '[viime] dddd[na] [klo] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s päästä',\n past : '%s sitten',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fi;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fi.js\n ** module id = 158\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fi.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar fo = moment.defineLocale('fo', {\n months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Í dag kl.] LT',\n nextDay : '[Í morgin kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[Í gjár kl.] LT',\n lastWeek : '[síðstu] dddd [kl] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'um %s',\n past : '%s síðani',\n s : 'fá sekund',\n m : 'ein minutt',\n mm : '%d minuttir',\n h : 'ein tími',\n hh : '%d tímar',\n d : 'ein dagur',\n dd : '%d dagar',\n M : 'ein mánaði',\n MM : '%d mánaðir',\n y : 'eitt ár',\n yy : '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fo.js\n ** module id = 159\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar frCa = moment.defineLocale('fr-ca', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n});\n\nreturn frCa;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fr-ca.js\n ** module id = 160\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fr-ca.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar frCh = moment.defineLocale('fr-ch', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal : function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn frCh;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fr-ch.js\n ** module id = 161\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fr-ch.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar fr = moment.defineLocale('fr', {\n months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact : true,\n weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Aujourd’hui à] LT',\n nextDay : '[Demain à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[Hier à] LT',\n lastWeek : 'dddd [dernier à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dans %s',\n past : 'il y a %s',\n s : 'quelques secondes',\n m : 'une minute',\n mm : '%d minutes',\n h : 'une heure',\n hh : '%d heures',\n d : 'un jour',\n dd : '%d jours',\n M : 'un mois',\n MM : '%d mois',\n y : 'un an',\n yy : '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal : function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fr.js\n ** module id = 162\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fr.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\nvar fy = moment.defineLocale('fy', {\n months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact : true,\n weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'oer %s',\n past : '%s lyn',\n s : 'in pear sekonden',\n m : 'ien minút',\n mm : '%d minuten',\n h : 'ien oere',\n hh : '%d oeren',\n d : 'ien dei',\n dd : '%d dagen',\n M : 'ien moanne',\n MM : '%d moannen',\n y : 'ien jier',\n yy : '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn fy;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/fy.js\n ** module id = 163\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/fy.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ã’gmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n];\n\nvar monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ã’gmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\nvar weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\nvar weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\nvar weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\nvar gd = moment.defineLocale('gd', {\n months : months,\n monthsShort : monthsShort,\n monthsParseExact : true,\n weekdays : weekdays,\n weekdaysShort : weekdaysShort,\n weekdaysMin : weekdaysMin,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[An-diugh aig] LT',\n nextDay : '[A-màireach aig] LT',\n nextWeek : 'dddd [aig] LT',\n lastDay : '[An-dè aig] LT',\n lastWeek : 'dddd [seo chaidh] [aig] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ann an %s',\n past : 'bho chionn %s',\n s : 'beagan diogan',\n m : 'mionaid',\n mm : '%d mionaidean',\n h : 'uair',\n hh : '%d uairean',\n d : 'latha',\n dd : '%d latha',\n M : 'mìos',\n MM : '%d mìosan',\n y : 'bliadhna',\n yy : '%d bliadhna'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n ordinal : function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn gd;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/gd.js\n ** module id = 164\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/gd.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar gl = moment.defineLocale('gl', {\n months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY H:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar : {\n sameDay : function () {\n return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextDay : function () {\n return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n },\n nextWeek : function () {\n return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n lastDay : function () {\n return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n },\n lastWeek : function () {\n return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past : 'hai %s',\n s : 'uns segundos',\n m : 'un minuto',\n mm : '%d minutos',\n h : 'unha hora',\n hh : '%d horas',\n d : 'un día',\n dd : '%d días',\n M : 'un mes',\n MM : '%d meses',\n y : 'un ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn gl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/gl.js\n ** module id = 165\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/gl.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['thodde secondanim', 'thodde second'],\n 'm': ['eka mintan', 'ek minute'],\n 'mm': [number + ' mintanim', number + ' mintam'],\n 'h': ['eka horan', 'ek hor'],\n 'hh': [number + ' horanim', number + ' hor'],\n 'd': ['eka disan', 'ek dis'],\n 'dd': [number + ' disanim', number + ' dis'],\n 'M': ['eka mhoinean', 'ek mhoino'],\n 'MM': [number + ' mhoineanim', number + ' mhoine'],\n 'y': ['eka vorsan', 'ek voros'],\n 'yy': [number + ' vorsanim', number + ' vorsam']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\n\nvar gomLatn = moment.defineLocale('gom-latn', {\n months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'A h:mm [vazta]',\n LTS : 'A h:mm:ss [vazta]',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY A h:mm [vazta]',\n LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar : {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Ieta to] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fatlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s',\n past : '%s adim',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n ordinal : function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /rati|sokalli|donparam|sanje/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokalli') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokalli';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n});\n\nreturn gomLatn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/gom-latn.js\n ** module id = 166\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/gom-latn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar he = moment.defineLocale('he', {\n months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin : 'א_ב_×’_ד_×”_ו_ש'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [ב]MMMM YYYY',\n LLL : 'D [ב]MMMM YYYY HH:mm',\n LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n l : 'D/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[היום ב־]LT',\n nextDay : '[מחר ב־]LT',\n nextWeek : 'dddd [בשעה] LT',\n lastDay : '[אתמול ב־]LT',\n lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'בעוד %s',\n past : 'לפני %s',\n s : 'מספר שניות',\n m : 'דקה',\n mm : '%d דקות',\n h : 'שעה',\n hh : function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d : 'יום',\n dd : function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M : 'חודש',\n MM : function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y : 'שנה',\n yy : function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n }\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM : function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n }\n});\n\nreturn he;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/he.js\n ** module id = 167\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/he.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nvar hi = moment.defineLocale('hi', {\n months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n monthsParseExact: true,\n weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm बजे',\n LTS : 'A h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[कल] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[कल] LT',\n lastWeek : '[पिछले] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s में',\n past : '%s पहले',\n s : 'कुछ ही क्षण',\n m : 'एक मिनट',\n mm : '%d मिनट',\n h : 'एक घंटा',\n hh : '%d घंटे',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महीने',\n MM : '%d महीने',\n y : 'एक वर्ष',\n yy : '%d वर्ष'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hi;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/hi.js\n ** module id = 168\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/hi.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n}\n\nvar hr = moment.defineLocale('hr', {\n months : {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danas u] LT',\n nextDay : '[sutra u] LT',\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[jučer u] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'par sekundi',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : 'dan',\n dd : translate,\n M : 'mjesec',\n MM : translate,\n y : 'godinu',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/hr.js\n ** module id = 169\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/hr.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar weekEndings = 'vasárnap hétfÅ‘n kedden szerdán csütörtökön pénteken szombaton'.split(' ');\nfunction translate(number, withoutSuffix, key, isFuture) {\n var num = number,\n suffix;\n switch (key) {\n case 's':\n return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n}\nfunction week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n}\n\nvar hu = moment.defineLocale('hu', {\n months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n weekdays : 'vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'YYYY.MM.DD.',\n LL : 'YYYY. MMMM D.',\n LLL : 'YYYY. MMMM D. H:mm',\n LLLL : 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar : {\n sameDay : '[ma] LT[-kor]',\n nextDay : '[holnap] LT[-kor]',\n nextWeek : function () {\n return week.call(this, true);\n },\n lastDay : '[tegnap] LT[-kor]',\n lastWeek : function () {\n return week.call(this, false);\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s múlva',\n past : '%s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn hu;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/hu.js\n ** module id = 170\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/hu.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar hyAm = moment.defineLocale('hy-am', {\n months : {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_'),\n standalone: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_')\n },\n monthsShort : 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'),\n weekdays : 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'),\n weekdaysShort : 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n weekdaysMin : 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY Õ©.',\n LLL : 'D MMMM YYYY Õ©., HH:mm',\n LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm'\n },\n calendar : {\n sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',\n nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',\n lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',\n nextWeek: function () {\n return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s Õ°Õ¥Õ¿Õ¸',\n past : '%s Õ¡Õ¼Õ¡Õ»',\n s : 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n m : 'Ö€Õ¸ÕºÕ¥',\n mm : '%d Ö€Õ¸ÕºÕ¥',\n h : 'ÕªÕ¡Õ´',\n hh : '%d ÕªÕ¡Õ´',\n d : 'Ö…Ö€',\n dd : '%d Ö…Ö€',\n M : 'Õ¡Õ´Õ«Õ½',\n MM : '%d Õ¡Õ´Õ«Õ½',\n y : 'Õ¿Õ¡Ö€Õ«',\n yy : '%d Õ¿Õ¡Ö€Õ«'\n },\n meridiemParse: /Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ցերեկվա|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶/,\n isPM: function (input) {\n return /^(ցերեկվա|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input);\n },\n meridiem : function (hour) {\n if (hour < 4) {\n return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';\n } else if (hour < 12) {\n return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-Õ«Õ¶';\n }\n return number + '-Ö€Õ¤';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn hyAm;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/hy-am.js\n ** module id = 171\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/hy-am.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar id = moment.defineLocale('id', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Besok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kemarin pukul] LT',\n lastWeek : 'dddd [lalu pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lalu',\n s : 'beberapa detik',\n m : 'semenit',\n mm : '%d menit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn id;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/id.js\n ** module id = 172\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/id.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n}\n\nvar is = moment.defineLocale('is', {\n months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar : {\n sameDay : '[í dag kl.] LT',\n nextDay : '[á morgun kl.] LT',\n nextWeek : 'dddd [kl.] LT',\n lastDay : '[í gær kl.] LT',\n lastWeek : '[síðasta] dddd [kl.] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'eftir %s',\n past : 'fyrir %s síðan',\n s : translate,\n m : translate,\n mm : translate,\n h : 'klukkustund',\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn is;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/is.js\n ** module id = 173\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/is.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar it = moment.defineLocale('it', {\n months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : function (s) {\n return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past : '%s fa',\n s : 'alcuni secondi',\n m : 'un minuto',\n mm : '%d minuti',\n h : 'un\\'ora',\n hh : '%d ore',\n d : 'un giorno',\n dd : '%d giorni',\n M : 'un mese',\n MM : '%d mesi',\n y : 'un anno',\n yy : '%d anni'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn it;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/it.js\n ** module id = 174\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/it.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ja = moment.defineLocale('ja', {\n months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort : 'æ—¥_月_火_æ°´_木_金_土'.split('_'),\n weekdaysMin : 'æ—¥_月_火_æ°´_木_金_土'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYYå¹´M月Dæ—¥',\n LLL : 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL : 'YYYYå¹´M月Dæ—¥ HH:mm dddd',\n l : 'YYYY/MM/DD',\n ll : 'YYYYå¹´M月Dæ—¥',\n lll : 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll : 'YYYYå¹´M月Dæ—¥ HH:mm dddd'\n },\n meridiemParse: /午前|午後/i,\n isPM : function (input) {\n return input === '午後';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar : {\n sameDay : '[今日] LT',\n nextDay : '[明日] LT',\n nextWeek : '[来週]dddd LT',\n lastDay : '[昨日] LT',\n lastWeek : '[前週]dddd LT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}æ—¥/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s後',\n past : '%s前',\n s : 'æ•°ç§’',\n m : '1分',\n mm : '%d分',\n h : '1時間',\n hh : '%d時間',\n d : '1æ—¥',\n dd : '%dæ—¥',\n M : '1ヶ月',\n MM : '%dヶ月',\n y : '1å¹´',\n yy : '%då¹´'\n }\n});\n\nreturn ja;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ja.js\n ** module id = 175\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ja.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar jv = moment.defineLocale('jv', {\n months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar : {\n sameDay : '[Dinten puniko pukul] LT',\n nextDay : '[Mbenjang pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kala wingi pukul] LT',\n lastWeek : 'dddd [kepengker pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'wonten ing %s',\n past : '%s ingkang kepengker',\n s : 'sawetawis detik',\n m : 'setunggal menit',\n mm : '%d menit',\n h : 'setunggal jam',\n hh : '%d jam',\n d : 'sedinten',\n dd : '%d dinten',\n M : 'sewulan',\n MM : '%d wulan',\n y : 'setaun',\n yy : '%d taun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn jv;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/jv.js\n ** module id = 176\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/jv.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ka = moment.defineLocale('ka', {\n months : {\n standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n },\n monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays : {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n isFormat: /(წინა|შემდეგ)/\n },\n weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[დღეს] LT[-ზე]',\n nextDay : '[ხვალ] LT[-ზე]',\n lastDay : '[გუშინ] LT[-ზე]',\n nextWeek : '[შემდეგ] dddd LT[-ზე]',\n lastWeek : '[წინა] dddd LT-ზე',\n sameElse : 'L'\n },\n relativeTime : {\n future : function (s) {\n return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n s.replace(/ი$/, 'ში') :\n s + 'ში';\n },\n past : function (s) {\n if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n return s.replace(/(ი|ე)$/, 'ის უკან');\n }\n if ((/წელი/).test(s)) {\n return s.replace(/წელი$/, 'წლის უკან');\n }\n },\n s : 'რამდენიმე წამი',\n m : 'წუთი',\n mm : '%d წუთი',\n h : 'საათი',\n hh : '%d საათი',\n d : 'დღე',\n dd : '%d დღე',\n M : 'თვე',\n MM : '%d თვე',\n y : 'წელი',\n yy : '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal : function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week : {\n dow : 1,\n doy : 7\n }\n});\n\nreturn ka;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ka.js\n ** module id = 177\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ka.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n};\n\nvar kk = moment.defineLocale('kk', {\n months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгін сағат] LT',\n nextDay : '[Ертең сағат] LT',\n nextWeek : 'dddd [сағат] LT',\n lastDay : '[Кеше сағат] LT',\n lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ішінде',\n past : '%s бұрын',\n s : 'бірнеше секунд',\n m : 'бір минут',\n mm : '%d минут',\n h : 'бір сағат',\n hh : '%d сағат',\n d : 'бір күн',\n dd : '%d күн',\n M : 'бір ай',\n MM : '%d ай',\n y : 'бір жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn kk;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/kk.js\n ** module id = 178\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/kk.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS : 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn km;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/km.js\n ** module id = 179\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/km.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'à³§',\n '2': '೨',\n '3': '೩',\n '4': '೪',\n '5': '೫',\n '6': '೬',\n '7': 'à³­',\n '8': 'à³®',\n '9': '೯',\n '0': '೦'\n};\nvar numberMap = {\n 'à³§': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n 'à³­': '7',\n 'à³®': '8',\n '೯': '9',\n '೦': '0'\n};\n\nvar kn = moment.defineLocale('kn', {\n months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'),\n monthsParseExact: true,\n weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[ಇಂದು] LT',\n nextDay : '[ನಾಳೆ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ನಿನ್ನೆ] LT',\n lastWeek : '[ಕೊನೆಯ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ನಂತರ',\n past : '%s ಹಿಂದೆ',\n s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n m : 'ಒಂದು ನಿಮಿಷ',\n mm : '%d ನಿಮಿಷ',\n h : 'ಒಂದು ಗಂಟೆ',\n hh : '%d ಗಂಟೆ',\n d : 'ಒಂದು ದಿನ',\n dd : '%d ದಿನ',\n M : 'ಒಂದು ತಿಂಗಳು',\n MM : '%d ತಿಂಗಳು',\n y : 'ಒಂದು ವರ್ಷ',\n yy : '%d ವರ್ಷ'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal : function (number) {\n return number + 'ನೇ';\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn kn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/kn.js\n ** module id = 180\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/kn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <[email protected]>\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ko = moment.defineLocale('ko', {\n months : '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n monthsShort : '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort : '일_ì›”_í™”_수_목_금_토'.split('_'),\n weekdaysMin : '일_ì›”_í™”_수_목_금_토'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'YYYY.MM.DD',\n LL : 'YYYYë…„ MMMM D일',\n LLL : 'YYYYë…„ MMMM D일 A h:mm',\n LLLL : 'YYYYë…„ MMMM D일 dddd A h:mm',\n l : 'YYYY.MM.DD',\n ll : 'YYYYë…„ MMMM D일',\n lll : 'YYYYë…„ MMMM D일 A h:mm',\n llll : 'YYYYë…„ MMMM D일 dddd A h:mm'\n },\n calendar : {\n sameDay : '오늘 LT',\n nextDay : '내일 LT',\n nextWeek : 'dddd LT',\n lastDay : 'ì–´ì œ LT',\n lastWeek : '지난주 dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s 후',\n past : '%s ì „',\n s : '몇 ì´ˆ',\n ss : '%dì´ˆ',\n m : '1ë¶„',\n mm : '%dë¶„',\n h : '한 시간',\n hh : '%d시간',\n d : '하루',\n dd : '%d일',\n M : '한 달',\n MM : '%d달',\n y : '일 ë…„',\n yy : '%dë…„'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}일/,\n ordinal : '%d일',\n meridiemParse : /오전|오후/,\n isPM : function (token) {\n return token === '오후';\n },\n meridiem : function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n }\n});\n\nreturn ko;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ko.js\n ** module id = 181\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ko.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n};\n\nvar ky = moment.defineLocale('ky', {\n months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Бүгүн саат] LT',\n nextDay : '[Эртең саат] LT',\n nextWeek : 'dddd [саат] LT',\n lastDay : '[Кече саат] LT',\n lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ичинде',\n past : '%s мурун',\n s : 'бирнече секунд',\n m : 'бир мүнөт',\n mm : '%d мүнөт',\n h : 'бир саат',\n hh : '%d саат',\n d : 'бир күн',\n dd : '%d күн',\n M : 'бир ай',\n MM : '%d ай',\n y : 'бир жыл',\n yy : '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal : function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ky;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ky.js\n ** module id = 182\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ky.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 'm': ['eng Minutt', 'enger Minutt'],\n 'h': ['eng Stonn', 'enger Stonn'],\n 'd': ['een Dag', 'engem Dag'],\n 'M': ['ee Mount', 'engem Mount'],\n 'y': ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n}\nfunction processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n}\nfunction processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n}\n/**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\nfunction eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10, firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n}\n\nvar lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact : true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime : {\n future : processFutureTime,\n past : processPastTime,\n s : 'e puer Sekonnen',\n m : processRelativeTime,\n mm : '%d Minutten',\n h : processRelativeTime,\n hh : '%d Stonnen',\n d : processRelativeTime,\n dd : '%d Deeg',\n M : processRelativeTime,\n MM : '%d Méint',\n y : processRelativeTime,\n yy : '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lb;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/lb.js\n ** module id = 183\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/lb.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar lo = moment.defineLocale('lo', {\n months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar : {\n sameDay : '[ມື້ນີ້ເວລາ] LT',\n nextDay : '[ມື້ອື່ນເວລາ] LT',\n nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ອີກ %s',\n past : '%sຜ່ານມາ',\n s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n m : '1 ນາທີ',\n mm : '%d ນາທີ',\n h : '1 ຊົ່ວໂມງ',\n hh : '%d ຊົ່ວໂມງ',\n d : '1 ມື້',\n dd : '%d ມື້',\n M : '1 ເດືອນ',\n MM : '%d ເດືອນ',\n y : '1 ປີ',\n yy : '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal : function (number) {\n return 'ທີ່' + number;\n }\n});\n\nreturn lo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/lo.js\n ** module id = 184\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/lo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar units = {\n 'm' : 'minutÄ—_minutÄ—s_minutÄ™',\n 'mm': 'minutÄ—s_minučių_minutes',\n 'h' : 'valanda_valandos_valandÄ…',\n 'hh': 'valandos_valandų_valandas',\n 'd' : 'diena_dienos_dienÄ…',\n 'dd': 'dienos_dienų_dienas',\n 'M' : 'mÄ—nuo_mÄ—nesio_mÄ—nesį',\n 'MM': 'mÄ—nesiai_mÄ—nesių_mÄ—nesius',\n 'y' : 'metai_metų_metus',\n 'yy': 'metai_metų_metus'\n};\nfunction translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundÄ—s';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n}\nfunction translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n}\nfunction special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n}\nfunction forms(key) {\n return units[key].split('_');\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n}\nvar lt = moment.defineLocale('lt', {\n months : {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsÄ—jo_spalio_lapkričio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays : {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'),\n weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'YYYY [m.] MMMM D [d.]',\n LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l : 'YYYY-MM-DD',\n ll : 'YYYY [m.] MMMM D [d.]',\n lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar : {\n sameDay : '[Å iandien] LT',\n nextDay : '[Rytoj] LT',\n nextWeek : 'dddd LT',\n lastDay : '[Vakar] LT',\n lastWeek : '[PraÄ—jusį] dddd LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'po %s',\n past : 'prieÅ¡ %s',\n s : translateSeconds,\n m : translateSingular,\n mm : translate,\n h : translateSingular,\n hh : translate,\n d : translateSingular,\n dd : translate,\n M : translateSingular,\n MM : translate,\n y : translateSingular,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal : function (number) {\n return number + '-oji';\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lt;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/lt.js\n ** module id = 185\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/lt.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar units = {\n 'm': 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n 'mm': 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n 'h': 'stundas_stundām_stunda_stundas'.split('_'),\n 'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n 'd': 'dienas_dienām_diena_dienas'.split('_'),\n 'dd': 'dienas_dienām_diena_dienas'.split('_'),\n 'M': 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n 'MM': 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n 'y': 'gada_gadiem_gads_gadi'.split('_'),\n 'yy': 'gada_gadiem_gads_gadi'.split('_')\n};\n/**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\nfunction format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minÅ«te\", \"3 minÅ«tes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minÅ«tes\" as in \"pÄ“c 21 minÅ«tes\".\n // E.g. \"3 minÅ«tÄ“m\" as in \"pÄ“c 3 minÅ«tÄ“m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n}\nfunction relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n}\nfunction relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundÄ“m';\n}\n\nvar lv = moment.defineLocale('lv', {\n months : 'janvāris_februāris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY.',\n LL : 'YYYY. [gada] D. MMMM',\n LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar : {\n sameDay : '[Å odien pulksten] LT',\n nextDay : '[RÄ«t pulksten] LT',\n nextWeek : 'dddd [pulksten] LT',\n lastDay : '[Vakar pulksten] LT',\n lastWeek : '[Pagājušā] dddd [pulksten] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'pÄ“c %s',\n past : 'pirms %s',\n s : relativeSeconds,\n m : relativeTimeWithSingular,\n mm : relativeTimeWithPlural,\n h : relativeTimeWithSingular,\n hh : relativeTimeWithPlural,\n d : relativeTimeWithSingular,\n dd : relativeTimeWithPlural,\n M : relativeTimeWithSingular,\n MM : relativeTimeWithPlural,\n y : relativeTimeWithSingular,\n yy : relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn lv;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/lv.js\n ** module id = 186\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/lv.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact : true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[proÅ¡le] [nedjelje] [u] LT',\n '[proÅ¡log] [ponedjeljka] [u] LT',\n '[proÅ¡log] [utorka] [u] LT',\n '[proÅ¡le] [srijede] [u] LT',\n '[proÅ¡log] [četvrtka] [u] LT',\n '[proÅ¡log] [petka] [u] LT',\n '[proÅ¡le] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'prije %s',\n s : 'nekoliko sekundi',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mjesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn me;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/me.js\n ** module id = 187\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/me.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <[email protected]> : https://github.com/johnideal\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_TÅ«rei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_TÅ«_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_TÅ«_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hÄ“kona ruarua',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn mi;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/mi.js\n ** module id = 188\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/mi.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar mk = moment.defineLocale('mk', {\n months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'D.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[Денес во] LT',\n nextDay : '[Утре во] LT',\n nextWeek : '[Во] dddd [во] LT',\n lastDay : '[Вчера во] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'после %s',\n past : 'пред %s',\n s : 'неколку секунди',\n m : 'минута',\n mm : '%d минути',\n h : 'час',\n hh : '%d часа',\n d : 'ден',\n dd : '%d дена',\n M : 'месец',\n MM : '%d месеци',\n y : 'година',\n yy : '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal : function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn mk;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/mk.js\n ** module id = 189\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/mk.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ml = moment.defineLocale('ml', {\n months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._à´“à´—._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin : 'à´žà´¾_തി_ചൊ_ബു_വ്യാ_വെ_à´¶'.split('_'),\n longDateFormat : {\n LT : 'A h:mm -നു',\n LTS : 'A h:mm:ss -നു',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm -നു',\n LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n },\n calendar : {\n sameDay : '[ഇന്ന്] LT',\n nextDay : '[നാളെ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ഇന്നലെ] LT',\n lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s കഴിഞ്ഞ്',\n past : '%s മുൻപ്',\n s : 'അൽപ നിമിഷങ്ങൾ',\n m : 'ഒരു മിനിറ്റ്',\n mm : '%d മിനിറ്റ്',\n h : 'ഒരു മണിക്കൂർ',\n hh : '%d മണിക്കൂർ',\n d : 'ഒരു ദിവസം',\n dd : '%d ദിവസം',\n M : 'ഒരു മാസം',\n MM : '%d മാസം',\n y : 'ഒരു വർഷം',\n yy : '%d വർഷം'\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if ((meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n }\n});\n\nreturn ml;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ml.js\n ** module id = 190\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ml.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nfunction relativeTimeMr(number, withoutSuffix, string, isFuture)\n{\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's': output = 'काही सेकंद'; break;\n case 'm': output = 'एक मिनिट'; break;\n case 'mm': output = '%d मिनिटे'; break;\n case 'h': output = 'एक तास'; break;\n case 'hh': output = '%d तास'; break;\n case 'd': output = 'एक दिवस'; break;\n case 'dd': output = '%d दिवस'; break;\n case 'M': output = 'एक महिना'; break;\n case 'MM': output = '%d महिने'; break;\n case 'y': output = 'एक वर्ष'; break;\n case 'yy': output = '%d वर्षे'; break;\n }\n }\n else {\n switch (string) {\n case 's': output = 'काही सेकंदां'; break;\n case 'm': output = 'एका मिनिटा'; break;\n case 'mm': output = '%d मिनिटां'; break;\n case 'h': output = 'एका तासा'; break;\n case 'hh': output = '%d तासां'; break;\n case 'd': output = 'एका दिवसा'; break;\n case 'dd': output = '%d दिवसां'; break;\n case 'M': output = 'एका महिन्या'; break;\n case 'MM': output = '%d महिन्यां'; break;\n case 'y': output = 'एका वर्षा'; break;\n case 'yy': output = '%d वर्षां'; break;\n }\n }\n return output.replace(/%d/i, number);\n}\n\nvar mr = moment.defineLocale('mr', {\n months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n monthsParseExact : true,\n weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat : {\n LT : 'A h:mm वाजता',\n LTS : 'A h:mm:ss वाजता',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm वाजता',\n LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[उद्या] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात्री') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दुपारी') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'सायंकाळी') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात्री';\n } else if (hour < 10) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn mr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/mr.js\n ** module id = 191\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/mr.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar msMy = moment.defineLocale('ms-my', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn msMy;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ms-my.js\n ** module id = 192\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ms-my.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ms = moment.defineLocale('ms', {\n months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [pukul] HH.mm',\n LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar : {\n sameDay : '[Hari ini pukul] LT',\n nextDay : '[Esok pukul] LT',\n nextWeek : 'dddd [pukul] LT',\n lastDay : '[Kelmarin pukul] LT',\n lastWeek : 'dddd [lepas pukul] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'dalam %s',\n past : '%s yang lepas',\n s : 'beberapa saat',\n m : 'seminit',\n mm : '%d minit',\n h : 'sejam',\n hh : '%d jam',\n d : 'sehari',\n dd : '%d hari',\n M : 'sebulan',\n MM : '%d bulan',\n y : 'setahun',\n yy : '%d tahun'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ms;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ms.js\n ** module id = 193\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ms.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '၁',\n '2': '၂',\n '3': '၃',\n '4': '၄',\n '5': '၅',\n '6': '၆',\n '7': '၇',\n '8': '၈',\n '9': '၉',\n '0': '၀'\n};\nvar numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0'\n};\n\nvar my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn my;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/my.js\n ** module id = 194\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/my.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Norwegian BokmÃ¥l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar nb = moment.defineLocale('nb', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact : true,\n weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s siden',\n s : 'noen sekunder',\n m : 'ett minutt',\n mm : '%d minutter',\n h : 'en time',\n hh : '%d timer',\n d : 'en dag',\n dd : '%d dager',\n M : 'en mÃ¥ned',\n MM : '%d mÃ¥neder',\n y : 'ett Ã¥r',\n yy : '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nb;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/nb.js\n ** module id = 195\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/nb.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '१',\n '2': '२',\n '3': '३',\n '4': '४',\n '5': '५',\n '6': '६',\n '7': '७',\n '8': '८',\n '9': '९',\n '0': '०'\n};\nvar numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n};\n\nvar ne = moment.defineLocale('ne', {\n months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n monthsParseExact : true,\n weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'Aको h:mm बजे',\n LTS : 'Aको h:mm:ss बजे',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, Aको h:mm बजे',\n LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar : {\n sameDay : '[आज] LT',\n nextDay : '[भोलि] LT',\n nextWeek : '[आउँदो] dddd[,] LT',\n lastDay : '[हिजो] LT',\n lastWeek : '[गएको] dddd[,] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sमा',\n past : '%s अगाडि',\n s : 'केही क्षण',\n m : 'एक मिनेट',\n mm : '%d मिनेट',\n h : 'एक घण्टा',\n hh : '%d घण्टा',\n d : 'एक दिन',\n dd : '%d दिन',\n M : 'एक महिना',\n MM : '%d महिना',\n y : 'एक बर्ष',\n yy : '%d बर्ष'\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ne;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ne.js\n ** module id = 196\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ne.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nvar nlBe = moment.defineLocale('nl-be', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nlBe;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/nl-be.js\n ** module id = 197\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/nl-be.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');\nvar monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\nvar monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\nvar monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\nvar nl = moment.defineLocale('nl', {\n months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort : function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'over %s',\n past : '%s geleden',\n s : 'een paar seconden',\n m : 'één minuut',\n mm : '%d minuten',\n h : 'één uur',\n hh : '%d uur',\n d : 'één dag',\n dd : '%d dagen',\n M : 'één maand',\n MM : '%d maanden',\n y : 'één jaar',\n yy : '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal : function (number) {\n return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/nl.js\n ** module id = 198\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/nl.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! author : https://github.com/mechuwind\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar nn = moment.defineLocale('nn', {\n months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays : 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort : 'sun_mÃ¥n_tys_ons_tor_fre_lau'.split('_'),\n weekdaysMin : 'su_mÃ¥_ty_on_to_fr_lø'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY [kl.] H:mm',\n LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar : {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I gÃ¥r klokka] LT',\n lastWeek: '[FøregÃ¥ande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : '%s sidan',\n s : 'nokre sekund',\n m : 'eit minutt',\n mm : '%d minutt',\n h : 'ein time',\n hh : '%d timar',\n d : 'ein dag',\n dd : '%d dagar',\n M : 'ein mÃ¥nad',\n MM : '%d mÃ¥nader',\n y : 'eit Ã¥r',\n yy : '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn nn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/nn.js\n ** module id = 199\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/nn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': 'à©§',\n '2': '੨',\n '3': 'à©©',\n '4': '੪',\n '5': 'à©«',\n '6': '੬',\n '7': 'à©­',\n '8': 'à©®',\n '9': '੯',\n '0': '੦'\n};\nvar numberMap = {\n 'à©§': '1',\n '੨': '2',\n 'à©©': '3',\n '੪': '4',\n 'à©«': '5',\n '੬': '6',\n 'à©­': '7',\n 'à©®': '8',\n '੯': '9',\n '੦': '0'\n};\n\nvar paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.\n months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat : {\n LT : 'A h:mm ਵਜੇ',\n LTS : 'A h:mm:ss ਵਜੇ',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar : {\n sameDay : '[ਅਜ] LT',\n nextDay : '[ਕਲ] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[ਕਲ] LT',\n lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s ਵਿੱਚ',\n past : '%s ਪਿਛਲੇ',\n s : 'ਕੁਝ ਸਕਿੰਟ',\n m : 'ਇਕ ਮਿੰਟ',\n mm : '%d ਮਿੰਟ',\n h : 'ਇੱਕ ਘੰਟਾ',\n hh : '%d ਘੰਟੇ',\n d : 'ਇੱਕ ਦਿਨ',\n dd : '%d ਦਿਨ',\n M : 'ਇੱਕ ਮਹੀਨਾ',\n MM : '%d ਮਹੀਨੇ',\n y : 'ਇੱਕ ਸਾਲ',\n yy : '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn paIn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/pa-in.js\n ** module id = 200\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/pa-in.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar monthsNominative = 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split('_');\nvar monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split('_');\nfunction plural(n) {\n return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n}\nfunction translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n}\n\nvar pl = moment.defineLocale('pl', {\n months : function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (format === '') {\n // Hack: if format empty we know this is used to generate\n // RegExp by moment. Give then back both valid forms of months\n // in RegExp ready format.\n return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n weekdays : 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort : 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin : 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: '[W] dddd [o] LT',\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielÄ™ o] LT';\n case 3:\n return '[W zeszłą Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszłą sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : '%s temu',\n s : 'kilka sekund',\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : '1 dzieÅ„',\n dd : '%d dni',\n M : 'miesiÄ…c',\n MM : translate,\n y : 'rok',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn pl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/pl.js\n ** module id = 201\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/pl.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar ptBr = moment.defineLocale('pt-br', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : '%s atrás',\n s : 'poucos segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº'\n});\n\nreturn ptBr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/pt-br.js\n ** module id = 202\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/pt-br.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar pt = moment.defineLocale('pt', {\n months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),\n weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D [de] MMMM [de] YYYY',\n LLL : 'D [de] MMMM [de] YYYY HH:mm',\n LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return (this.day() === 0 || this.day() === 6) ?\n '[Último] dddd [às] LT' : // Saturday + Sunday\n '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'em %s',\n past : 'há %s',\n s : 'segundos',\n m : 'um minuto',\n mm : '%d minutos',\n h : 'uma hora',\n hh : '%d horas',\n d : 'um dia',\n dd : '%d dias',\n M : 'um mês',\n MM : '%d meses',\n y : 'um ano',\n yy : '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal : '%dº',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn pt;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/pt.js\n ** module id = 203\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/pt.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': 'minute',\n 'hh': 'ore',\n 'dd': 'zile',\n 'MM': 'luni',\n 'yy': 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n}\n\nvar ro = moment.defineLocale('ro', {\n months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'duminică_luni_marÈ›i_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY H:mm',\n LLLL : 'dddd, D MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'peste %s',\n past : '%s în urmă',\n s : 'câteva secunde',\n m : 'un minut',\n mm : relativeTimeWithPlural,\n h : 'o oră',\n hh : relativeTimeWithPlural,\n d : 'o zi',\n dd : relativeTimeWithPlural,\n M : 'o lună',\n MM : relativeTimeWithPlural,\n y : 'un an',\n yy : relativeTimeWithPlural\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ro;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ro.js\n ** module id = 204\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ro.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n 'hh': 'час_часа_часов',\n 'dd': 'день_дня_дней',\n 'MM': 'месяц_месяца_месяцев',\n 'yy': 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nvar monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n// http://new.gramota.ru/spravka/rules/139-prop : § 103\n// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\nvar ru = moment.defineLocale('ru', {\n months : {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n },\n monthsShort : {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n },\n weekdays : {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n },\n weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse : monthsParse,\n longMonthsParse : monthsParse,\n shortMonthsParse : monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соотвествует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY г.',\n LLL : 'D MMMM YYYY г., HH:mm',\n LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar : {\n sameDay: '[Сегодня в] LT',\n nextDay: '[Завтра в] LT',\n lastDay: '[Вчера в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ следующее] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ следующий] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ следующую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[Ð’] dddd [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ прошлое] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ прошлый] dddd [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ прошлую] dddd [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd [в] LT';\n } else {\n return '[Ð’] dddd [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'через %s',\n past : '%s назад',\n s : 'несколько секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'час',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'месяц',\n MM : relativeTimeWithPlural,\n y : 'год',\n yy : relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM : function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ru;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ru.js\n ** module id = 205\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ru.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر'\n];\nvar days = [\n 'آچر',\n 'سومر',\n 'اڱارو',\n 'اربع',\n 'خميس',\n 'جمع',\n 'ڇنڇر'\n];\n\nvar sd = moment.defineLocale('sd', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[اڄ] LT',\n nextDay : '[سڀاڻي] LT',\n nextWeek : 'dddd [اڳين هفتي تي] LT',\n lastDay : '[ڪالهه] LT',\n lastWeek : '[گزريل هفتي] dddd [تي] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s پوء',\n past : '%s اڳ',\n s : 'چند سيڪنڊ',\n m : 'Ù‡Úª منٽ',\n mm : '%d منٽ',\n h : 'Ù‡Úª ڪلاڪ',\n hh : '%d ڪلاڪ',\n d : 'Ù‡Úª ڏينهن',\n dd : '%d ڏينهن',\n M : 'Ù‡Úª مهينو',\n MM : '%d مهينا',\n y : 'Ù‡Úª سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sd;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sd.js\n ** module id = 206\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sd.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar se = moment.defineLocale('se', {\n months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort : 'sotn_vuos_maÅ‹_gask_duor_bear_láv'.split('_'),\n weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'MMMM D. [b.] YYYY',\n LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar : {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s geažes',\n past : 'maÅ‹it %s',\n s : 'moadde sekunddat',\n m : 'okta minuhta',\n mm : '%d minuhtat',\n h : 'okta diimmu',\n hh : '%d diimmut',\n d : 'okta beaivi',\n dd : '%d beaivvit',\n M : 'okta mánnu',\n MM : '%d mánut',\n y : 'okta jahki',\n yy : '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn se;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/se.js\n ** module id = 207\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/se.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n/*jshint -W100*/\nvar si = moment.defineLocale('si', {\n months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n monthsShort : 'ජන_පෙබ_මාර්_à¶…à¶´à·Š_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n weekdaysShort : 'ඉරි_සඳු_à¶…à¶Ÿ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin : 'ඉ_à·ƒ_à¶…_à¶¶_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'a h:mm',\n LTS : 'a h:mm:ss',\n L : 'YYYY/MM/DD',\n LL : 'YYYY MMMM D',\n LLL : 'YYYY MMMM D, a h:mm',\n LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n },\n calendar : {\n sameDay : '[අද] LT[à¶§]',\n nextDay : '[හෙට] LT[à¶§]',\n nextWeek : 'dddd LT[à¶§]',\n lastDay : '[ඊයේ] LT[à¶§]',\n lastWeek : '[පසුගිය] dddd LT[à¶§]',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%sකින්',\n past : '%sà¶šà¶§ පෙර',\n s : 'à¶­à¶­à·Šà¶´à¶» කිහිපය',\n m : 'මිනිත්තුව',\n mm : 'මිනිත්තු %d',\n h : 'පැය',\n hh : 'පැය %d',\n d : 'දිනය',\n dd : 'දින %d',\n M : 'මාසය',\n MM : 'මාස %d',\n y : 'වසර',\n yy : 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal : function (number) {\n return number + ' වැනි';\n },\n meridiemParse : /පෙර වරු|පස් වරු|à¶´à·™.à·€|à¶´.à·€./,\n isPM : function (input) {\n return input === 'à¶´.à·€.' || input === 'පස් වරු';\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'à¶´.à·€.' : 'පස් වරු';\n } else {\n return isLower ? 'à¶´à·™.à·€.' : 'පෙර වරු';\n }\n }\n});\n\nreturn si;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/si.js\n ** module id = 208\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/si.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');\nvar monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\nfunction plural(n) {\n return (n > 1) && (n < 5);\n}\nfunction translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n break;\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n break;\n case 'd': // a day / in a day / a day ago\n return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n break;\n case 'M': // a month / in a month / a month ago\n return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n break;\n case 'y': // a year / in a year / a year ago\n return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n break;\n }\n}\n\nvar sk = moment.defineLocale('sk', {\n months : months,\n monthsShort : monthsShort,\n weekdays : 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'),\n weekdaysShort : 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n weekdaysMin : 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n longDateFormat : {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo Å¡tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pred %s',\n s : translate,\n m : translate,\n mm : translate,\n h : translate,\n hh : translate,\n d : translate,\n dd : translate,\n M : translate,\n MM : translate,\n y : translate,\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sk;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sk.js\n ** module id = 209\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sk.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n}\n\nvar sl = moment.defineLocale('sl', {\n months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM YYYY',\n LLL : 'D. MMMM YYYY H:mm',\n LLLL : 'dddd, D. MMMM YYYY H:mm'\n },\n calendar : {\n sameDay : '[danes ob] LT',\n nextDay : '[jutri ob] LT',\n\n nextWeek : function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay : '[včeraj ob] LT',\n lastWeek : function () {\n switch (this.day()) {\n case 0:\n return '[prejÅ¡njo] [nedeljo] [ob] LT';\n case 3:\n return '[prejÅ¡njo] [sredo] [ob] LT';\n case 6:\n return '[prejÅ¡njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejÅ¡nji] dddd [ob] LT';\n }\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'čez %s',\n past : 'pred %s',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sl.js\n ** module id = 210\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sl.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sq = moment.defineLocale('sq', {\n months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem : function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Sot në] LT',\n nextDay : '[Nesër në] LT',\n nextWeek : 'dddd [në] LT',\n lastDay : '[Dje në] LT',\n lastWeek : 'dddd [e kaluar në] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'në %s',\n past : '%s më parë',\n s : 'disa sekonda',\n m : 'një minutë',\n mm : '%d minuta',\n h : 'një orë',\n hh : '%d orë',\n d : 'një ditë',\n dd : '%d ditë',\n M : 'një muaj',\n MM : '%d muaj',\n y : 'një vit',\n yy : '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sq;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sq.js\n ** module id = 211\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sq.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<[email protected]> : https://github.com/milan-j\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay : '[јуче у] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : 'пре %s',\n s : 'неколико секунди',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'дан',\n dd : translator.translate,\n M : 'месец',\n MM : translator.translate,\n y : 'годину',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn srCyrl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sr-cyrl.js\n ** module id = 212\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sr-cyrl.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<[email protected]> : https://github.com/milan-j\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar translator = {\n words: { //Different grammatical cases\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n};\n\nvar sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact : true,\n longDateFormat: {\n LT: 'H:mm',\n LTS : 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay : '[juče u] LT',\n lastWeek : function () {\n var lastWeekDays = [\n '[proÅ¡le] [nedelje] [u] LT',\n '[proÅ¡log] [ponedeljka] [u] LT',\n '[proÅ¡log] [utorka] [u] LT',\n '[proÅ¡le] [srede] [u] LT',\n '[proÅ¡log] [četvrtka] [u] LT',\n '[proÅ¡log] [petka] [u] LT',\n '[proÅ¡le] [subote] [u] LT'\n ];\n return lastWeekDays[this.day()];\n },\n sameElse : 'L'\n },\n relativeTime : {\n future : 'za %s',\n past : 'pre %s',\n s : 'nekoliko sekundi',\n m : translator.translate,\n mm : translator.translate,\n h : translator.translate,\n hh : translator.translate,\n d : 'dan',\n dd : translator.translate,\n M : 'mesec',\n MM : translator.translate,\n y : 'godinu',\n yy : translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sr.js\n ** module id = 213\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sr.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\nvar ss = moment.defineLocale('ss', {\n months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Namuhla nga] LT',\n nextDay : '[Kusasa nga] LT',\n nextWeek : 'dddd [nga] LT',\n lastDay : '[Itolo nga] LT',\n lastWeek : 'dddd [leliphelile] [nga] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'nga %s',\n past : 'wenteka nga %s',\n s : 'emizuzwana lomcane',\n m : 'umzuzu',\n mm : '%d emizuzu',\n h : 'lihora',\n hh : '%d emahora',\n d : 'lilanga',\n dd : '%d emalanga',\n M : 'inyanga',\n MM : '%d tinyanga',\n y : 'umnyaka',\n yy : '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem : function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : '%d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ss;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ss.js\n ** module id = 214\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ss.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sv = moment.defineLocale('sv', {\n months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays : 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort : 'sön_mÃ¥n_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin : 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYY-MM-DD',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY [kl.] HH:mm',\n LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[IgÃ¥r] LT',\n nextWeek: '[PÃ¥] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'om %s',\n past : 'för %s sedan',\n s : 'nÃ¥gra sekunder',\n m : 'en minut',\n mm : '%d minuter',\n h : 'en timme',\n hh : '%d timmar',\n d : 'en dag',\n dd : '%d dagar',\n M : 'en mÃ¥nad',\n MM : '%d mÃ¥nader',\n y : 'ett Ã¥r',\n yy : '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'e' :\n (b === 1) ? 'a' :\n (b === 2) ? 'a' :\n (b === 3) ? 'e' : 'e';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn sv;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sv.js\n ** module id = 215\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sv.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar sw = moment.defineLocale('sw', {\n months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[leo saa] LT',\n nextDay : '[kesho saa] LT',\n nextWeek : '[wiki ijayo] dddd [saat] LT',\n lastDay : '[jana] LT',\n lastWeek : '[wiki iliyopita] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s baadaye',\n past : 'tokea %s',\n s : 'hivi punde',\n m : 'dakika moja',\n mm : 'dakika %d',\n h : 'saa limoja',\n hh : 'masaa %d',\n d : 'siku moja',\n dd : 'masiku %d',\n M : 'mwezi mmoja',\n MM : 'miezi %d',\n y : 'mwaka mmoja',\n yy : 'miaka %d'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn sw;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/sw.js\n ** module id = 216\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/sw.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar symbolMap = {\n '1': '௧',\n '2': '௨',\n '3': '௩',\n '4': '௪',\n '5': '௫',\n '6': '௬',\n '7': '௭',\n '8': '௮',\n '9': '௯',\n '0': '௦'\n};\nvar numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n};\n\nvar ta = moment.defineLocale('ta', {\n months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, HH:mm',\n LLLL : 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar : {\n sameDay : '[இன்று] LT',\n nextDay : '[நாளை] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[நேற்று] LT',\n lastWeek : '[கடந்த வாரம்] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s இல்',\n past : '%s முன்',\n s : 'ஒரு சில விநாடிகள்',\n m : 'ஒரு நிமிடம்',\n mm : '%d நிமிடங்கள்',\n h : 'ஒரு மணி நேரம்',\n hh : '%d மணி நேரம்',\n d : 'ஒரு நாள்',\n dd : '%d நாட்கள்',\n M : 'ஒரு மாதம்',\n MM : '%d மாதங்கள்',\n y : 'ஒரு வருடம்',\n yy : '%d ஆண்டுகள்'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal : function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem : function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn ta;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ta.js\n ** module id = 217\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ta.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar te = moment.defineLocale('te', {\n months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n monthsParseExact : true,\n weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin : 'à°†_సో_మం_బు_గు_శు_à°¶'.split('_'),\n longDateFormat : {\n LT : 'A h:mm',\n LTS : 'A h:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY, A h:mm',\n LLLL : 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar : {\n sameDay : '[నేడు] LT',\n nextDay : '[రేపు] LT',\n nextWeek : 'dddd, LT',\n lastDay : '[నిన్న] LT',\n lastWeek : '[à°—à°¤] dddd, LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s లో',\n past : '%s క్రితం',\n s : 'కొన్ని క్షణాలు',\n m : 'à°’à°• నిమిషం',\n mm : '%d నిమిషాలు',\n h : 'à°’à°• à°—à°‚à°Ÿ',\n hh : '%d గంటలు',\n d : 'à°’à°• రోజు',\n dd : '%d రోజులు',\n M : 'à°’à°• నెల',\n MM : '%d నెలలు',\n y : 'à°’à°• సంవత్సరం',\n yy : '%d సంవత్సరాలు'\n },\n dayOfMonthOrdinalParse : /\\d{1,2}à°µ/,\n ordinal : '%dà°µ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week : {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn te;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/te.js\n ** module id = 218\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/te.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tet = moment.defineLocale('tet', {\n months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),\n weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),\n weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),\n weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'iha %s',\n past : '%s liuba',\n s : 'minutu balun',\n m : 'minutu ida',\n mm : 'minutus %d',\n h : 'horas ida',\n hh : 'horas %d',\n d : 'loron ida',\n dd : 'loron %d',\n M : 'fulan ida',\n MM : 'fulan %d',\n y : 'tinan ida',\n yy : 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tet;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tet.js\n ** module id = 219\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tet.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar th = moment.defineLocale('th', {\n months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'H:mm',\n LTS : 'H:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY เวลา H:mm',\n LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar : {\n sameDay : '[วันนี้ เวลา] LT',\n nextDay : '[พรุ่งนี้ เวลา] LT',\n nextWeek : 'dddd[หน้า เวลา] LT',\n lastDay : '[เมื่อวานนี้ เวลา] LT',\n lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'อีก %s',\n past : '%sที่แล้ว',\n s : 'ไม่กี่วินาที',\n m : '1 นาที',\n mm : '%d นาที',\n h : '1 ชั่วโมง',\n hh : '%d ชั่วโมง',\n d : '1 วัน',\n dd : '%d วัน',\n M : '1 เดือน',\n MM : '%d เดือน',\n y : '1 ปี',\n yy : '%d ปี'\n }\n});\n\nreturn th;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/th.js\n ** module id = 220\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/th.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tlPh = moment.defineLocale('tl-ph', {\n months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'MM/D/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY HH:mm',\n LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar : {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'sa loob ng %s',\n past : '%s ang nakalipas',\n s : 'ilang segundo',\n m : 'isang minuto',\n mm : '%d minuto',\n h : 'isang oras',\n hh : '%d oras',\n d : 'isang araw',\n dd : '%d araw',\n M : 'isang buwan',\n MM : '%d buwan',\n y : 'isang taon',\n yy : '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tlPh;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tl-ph.js\n ** module id = 221\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tl-ph.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\nfunction translateFuture(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'leS' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'waQ' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'nem' :\n time + ' pIq';\n return time;\n}\n\nfunction translatePast(output) {\n var time = output;\n time = (output.indexOf('jaj') !== -1) ?\n time.slice(0, -3) + 'Hu’' :\n (output.indexOf('jar') !== -1) ?\n time.slice(0, -3) + 'wen' :\n (output.indexOf('DIS') !== -1) ?\n time.slice(0, -3) + 'ben' :\n time + ' ret';\n return time;\n}\n\nfunction translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n}\n\nfunction numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n }\n return (word === '') ? 'pagh' : word;\n}\n\nvar tlh = moment.defineLocale('tlh', {\n months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact : true,\n weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime : {\n future : translateFuture,\n past : translatePast,\n s : 'puS lup',\n m : 'wa’ tup',\n mm : translate,\n h : 'wa’ rep',\n hh : translate,\n d : 'wa’ jaj',\n dd : translate,\n M : 'wa’ jar',\n MM : translate,\n y : 'wa’ DIS',\n yy : translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn tlh;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tlh.js\n ** module id = 222\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tlh.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar suffixes = {\n 1: '\\'inci',\n 5: '\\'inci',\n 8: '\\'inci',\n 70: '\\'inci',\n 80: '\\'inci',\n 2: '\\'nci',\n 7: '\\'nci',\n 20: '\\'nci',\n 50: '\\'nci',\n 3: '\\'üncü',\n 4: '\\'üncü',\n 100: '\\'üncü',\n 6: '\\'ncı',\n 9: '\\'uncu',\n 10: '\\'uncu',\n 30: '\\'uncu',\n 60: '\\'ıncı',\n 90: '\\'ıncı'\n};\n\nvar tr = moment.defineLocale('tr', {\n months : 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort : 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays : 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[bugün saat] LT',\n nextDay : '[yarın saat] LT',\n nextWeek : '[haftaya] dddd [saat] LT',\n lastDay : '[dün] LT',\n lastWeek : '[geçen hafta] dddd [saat] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s sonra',\n past : '%s önce',\n s : 'birkaç saniye',\n m : 'bir dakika',\n mm : '%d dakika',\n h : 'bir saat',\n hh : '%d saat',\n d : 'bir gün',\n dd : '%d gün',\n M : 'bir ay',\n MM : '%d ay',\n y : 'bir yıl',\n yy : '%d yıl'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,\n ordinal : function (number) {\n if (number === 0) { // special case for zero\n return number + '\\'ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tr;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tr.js\n ** module id = 223\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tr.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n// This is currently too difficult (maybe even impossible) to add.\nvar tzl = moment.defineLocale('tzl', {\n months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat : {\n LT : 'HH.mm',\n LTS : 'HH.mm.ss',\n L : 'DD.MM.YYYY',\n LL : 'D. MMMM [dallas] YYYY',\n LLL : 'D. MMMM [dallas] YYYY HH.mm',\n LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM : function (input) {\n return 'd\\'o' === input.toLowerCase();\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'd\\'o' : 'D\\'O';\n } else {\n return isLower ? 'd\\'a' : 'D\\'A';\n }\n },\n calendar : {\n sameDay : '[oxhi à] LT',\n nextDay : '[demà à] LT',\n nextWeek : 'dddd [à] LT',\n lastDay : '[ieiri à] LT',\n lastWeek : '[sür el] dddd [lasteu à] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'osprei %s',\n past : 'ja%s',\n s : processRelativeTime,\n m : processRelativeTime,\n mm : processRelativeTime,\n h : processRelativeTime,\n hh : processRelativeTime,\n d : processRelativeTime,\n dd : processRelativeTime,\n M : processRelativeTime,\n MM : processRelativeTime,\n y : processRelativeTime,\n yy : processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal : '%d.',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nfunction processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n 's': ['viensas secunds', '\\'iensas secunds'],\n 'm': ['\\'n míut', '\\'iens míut'],\n 'mm': [number + ' míuts', '' + number + ' míuts'],\n 'h': ['\\'n þora', '\\'iensa þora'],\n 'hh': [number + ' þoras', '' + number + ' þoras'],\n 'd': ['\\'n ziua', '\\'iensa ziua'],\n 'dd': [number + ' ziuas', '' + number + ' ziuas'],\n 'M': ['\\'n mes', '\\'iens mes'],\n 'MM': [number + ' mesen', '' + number + ' mesen'],\n 'y': ['\\'n ar', '\\'iens ar'],\n 'yy': [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n}\n\nreturn tzl;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tzl.js\n ** module id = 224\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tzl.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tzmLatn = moment.defineLocale('tzm-latn', {\n months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'dadkh s yan %s',\n past : 'yan %s',\n s : 'imik',\n m : 'minuḍ',\n mm : '%d minuḍ',\n h : 'saÉ›a',\n hh : '%d tassaÉ›in',\n d : 'ass',\n dd : '%d ossan',\n M : 'ayowr',\n MM : '%d iyyirn',\n y : 'asgas',\n yy : '%d isgasn'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tzmLatn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tzm-latn.js\n ** module id = 225\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tzm-latn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar tzm = moment.defineLocale('tzm', {\n months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS: 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[ⴰⵙⴷⵅ â´´] LT',\n nextDay: '[ⴰⵙⴽⴰ â´´] LT',\n nextWeek: 'dddd [â´´] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ â´´] LT',\n lastWeek: 'dddd [â´´] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : 'â´·â´°â´·âµ… âµ™ ⵢⴰⵏ %s',\n past : 'ⵢⴰⵏ %s',\n s : 'ⵉⵎⵉⴽ',\n m : 'ⵎⵉⵏⵓⴺ',\n mm : '%d ⵎⵉⵏⵓⴺ',\n h : 'ⵙⴰⵄⴰ',\n hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d : 'ⴰⵙⵙ',\n dd : '%d oⵙⵙⴰⵏ',\n M : 'â´°âµ¢oⵓⵔ',\n MM : '%d ⵉⵢⵢⵉⵔⵏ',\n y : 'ⴰⵙⴳⴰⵙ',\n yy : '%d ⵉⵙⴳⴰⵙⵏ'\n },\n week : {\n dow : 6, // Saturday is the first day of the week.\n doy : 12 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn tzm;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/tzm.js\n ** module id = 226\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/tzm.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nfunction plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n}\nfunction relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n 'dd': 'день_дні_днів',\n 'MM': 'місяць_місяці_місяців',\n 'yy': 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n }\n else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n }\n else {\n return number + ' ' + plural(format[key], +number);\n }\n}\nfunction weekdaysCaseReplace(m, format) {\n var weekdays = {\n 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n };\n\n if (!m) {\n return weekdays['nominative'];\n }\n\n var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n 'accusative' :\n ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n 'genitive' :\n 'nominative');\n return weekdays[nounCase][m.day()];\n}\nfunction processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n}\n\nvar uk = moment.defineLocale('uk', {\n months : {\n 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n },\n monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n weekdays : weekdaysCaseReplace,\n weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD.MM.YYYY',\n LL : 'D MMMM YYYY Ñ€.',\n LLL : 'D MMMM YYYY Ñ€., HH:mm',\n LLLL : 'dddd, D MMMM YYYY Ñ€., HH:mm'\n },\n calendar : {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime : {\n future : 'за %s',\n past : '%s тому',\n s : 'декілька секунд',\n m : relativeTimeWithPlural,\n mm : relativeTimeWithPlural,\n h : 'годину',\n hh : relativeTimeWithPlural,\n d : 'день',\n dd : relativeTimeWithPlural,\n M : 'місяць',\n MM : relativeTimeWithPlural,\n y : 'рік',\n yy : relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn uk;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/uk.js\n ** module id = 227\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/uk.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر'\n];\nvar days = [\n 'اتوار',\n 'پیر',\n 'منگل',\n 'بدھ',\n 'جمعرات',\n 'جمعہ',\n 'ہفتہ'\n];\n\nvar ur = moment.defineLocale('ur', {\n months : months,\n monthsShort : months,\n weekdays : days,\n weekdaysShort : days,\n weekdaysMin : days,\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبح|شام/,\n isPM : function (input) {\n return 'شام' === input;\n },\n meridiem : function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar : {\n sameDay : '[آج بوقت] LT',\n nextDay : '[Ú©Ù„ بوقت] LT',\n nextWeek : 'dddd [بوقت] LT',\n lastDay : '[گذشتہ روز بوقت] LT',\n lastWeek : '[گذشتہ] dddd [بوقت] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : '%s بعد',\n past : '%s قبل',\n s : 'چند سیکنڈ',\n m : 'ایک منٹ',\n mm : '%d منٹ',\n h : 'ایک گھنٹہ',\n hh : '%d گھنٹے',\n d : 'ایک دن',\n dd : '%d دن',\n M : 'ایک ماہ',\n MM : '%d ماہ',\n y : 'ایک سال',\n yy : '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn ur;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/ur.js\n ** module id = 228\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/ur.js?"); },function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar uzLatn = moment.defineLocale('uz-latn', {\n months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Bugun soat] LT [da]',\n nextDay : '[Ertaga] LT [da]',\n nextWeek : 'dddd [kuni soat] LT [da]',\n lastDay : '[Kecha soat] LT [da]',\n lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Yaqin %s ichida',\n past : 'Bir necha %s oldin',\n s : 'soniya',\n m : 'bir daqiqa',\n mm : '%d daqiqa',\n h : 'bir soat',\n hh : '%d soat',\n d : 'bir kun',\n dd : '%d kun',\n M : 'bir oy',\n MM : '%d oy',\n y : 'bir yil',\n yy : '%d yil'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 1st is the first week of the year.\n }\n});\n\nreturn uzLatn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/uz-latn.js\n ** module id = 229\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/uz-latn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar uz = moment.defineLocale('uz', {\n months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'D MMMM YYYY, dddd HH:mm'\n },\n calendar : {\n sameDay : '[Бугун соат] LT [да]',\n nextDay : '[Эртага] LT [да]',\n nextWeek : 'dddd [куни соат] LT [да]',\n lastDay : '[Кеча соат] LT [да]',\n lastWeek : '[Утган] dddd [куни соат] LT [да]',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'Якин %s ичида',\n past : 'Бир неча %s олдин',\n s : 'фурсат',\n m : 'бир дакика',\n mm : '%d дакика',\n h : 'бир соат',\n hh : '%d соат',\n d : 'бир кун',\n dd : '%d кун',\n M : 'бир ой',\n MM : '%d ой',\n y : 'бир йил',\n yy : '%d йил'\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 7 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn uz;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/uz.js\n ** module id = 230\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/uz.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar vi = moment.defineLocale('vi', {\n months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n monthsParseExact : true,\n weekdays : 'chá»§ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact : true,\n meridiemParse: /sa|ch/i,\n isPM : function (input) {\n return /^ch$/i.test(input);\n },\n meridiem : function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM [năm] YYYY',\n LLL : 'D MMMM [năm] YYYY HH:mm',\n LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n l : 'DD/M/YYYY',\n ll : 'D MMM YYYY',\n lll : 'D MMM YYYY HH:mm',\n llll : 'ddd, D MMM YYYY HH:mm'\n },\n calendar : {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tá»›i lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần rồi lúc] LT',\n sameElse: 'L'\n },\n relativeTime : {\n future : '%s tá»›i',\n past : '%s trước',\n s : 'vài giây',\n m : 'má»™t phút',\n mm : '%d phút',\n h : 'má»™t giờ',\n hh : '%d giờ',\n d : 'má»™t ngày',\n dd : '%d ngày',\n M : 'má»™t tháng',\n MM : '%d tháng',\n y : 'má»™t năm',\n yy : '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal : function (number) {\n return number;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn vi;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/vi.js\n ** module id = 231\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/vi.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar xPseudo = moment.defineLocale('x-pseudo', {\n months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact : true,\n weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact : true,\n longDateFormat : {\n LT : 'HH:mm',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[T~ódá~ý át] LT',\n nextDay : '[T~ómó~rró~w át] LT',\n nextWeek : 'dddd [át] LT',\n lastDay : '[Ý~ést~érdá~ý át] LT',\n lastWeek : '[L~ást] dddd [át] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'í~ñ %s',\n past : '%s á~gó',\n s : 'á ~féw ~sécó~ñds',\n m : 'á ~míñ~úté',\n mm : '%d m~íñú~tés',\n h : 'á~ñ hó~úr',\n hh : '%d h~óúrs',\n d : 'á ~dáý',\n dd : '%d d~áýs',\n M : 'á ~móñ~th',\n MM : '%d m~óñt~hs',\n y : 'á ~ýéár',\n yy : '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn xPseudo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/x-pseudo.js\n ** module id = 232\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/x-pseudo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar yo = moment.defineLocale('yo', {\n months : 'Sẹ́rẹ́_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbé_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€gún_Owewe_Ọ̀waÌ€raÌ€_Bélú_Ọ̀pẹ̀̀'.split('_'),\n monthsShort : 'Sẹ́r_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€gú_Owe_Ọ̀waÌ€_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays : 'AÌ€iÌ€kú_Ajé_IÌ€sẹ́gun_Ọjọ́rú_Ọjọ́bọ_ẸtiÌ€_AÌ€bámẹ́ta'.split('_'),\n weekdaysShort : 'AÌ€iÌ€k_Ajé_IÌ€sẹ́_Ọjr_Ọjb_ẸtiÌ€_AÌ€bá'.split('_'),\n weekdaysMin : 'AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[OÌ€niÌ€ ni] LT',\n nextDay : '[Ọ̀la ni] LT',\n nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n lastDay : '[AÌ€na ni] LT',\n lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'ní %s',\n past : '%s kọjá',\n s : 'iÌ€sẹjú aayá die',\n m : 'iÌ€sẹjú kan',\n mm : 'iÌ€sẹjú %d',\n h : 'wákati kan',\n hh : 'wákati %d',\n d : 'ọjọ́ kan',\n dd : 'ọjọ́ %d',\n M : 'osuÌ€ kan',\n MM : 'osuÌ€ %d',\n y : 'ọdún kan',\n yy : 'ọdún %d'\n },\n dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n ordinal : 'ọjọ́ %d',\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn yo;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/yo.js\n ** module id = 233\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/yo.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhCn = moment.defineLocale('zh-cn', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin : 'æ—¥_一_二_三_å››_五_å…­'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYYå¹´MMMDæ—¥',\n LL : 'YYYYå¹´MMMDæ—¥',\n LLL : 'YYYYå¹´MMMDæ—¥Ah点mm分',\n LLLL : 'YYYYå¹´MMMDæ—¥ddddAh点mm分',\n l : 'YYYYå¹´MMMDæ—¥',\n ll : 'YYYYå¹´MMMDæ—¥',\n lll : 'YYYYå¹´MMMDæ—¥ HH:mm',\n llll : 'YYYYå¹´MMMDæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' ||\n meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime : {\n future : '%s内',\n past : '%s前',\n s : '几秒',\n m : '1 分钟',\n mm : '%d 分钟',\n h : '1 小时',\n hh : '%d 小时',\n d : '1 天',\n dd : '%d 天',\n M : '1 个月',\n MM : '%d 个月',\n y : '1 å¹´',\n yy : '%d å¹´'\n },\n week : {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n});\n\nreturn zhCn;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/zh-cn.js\n ** module id = 234\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/zh-cn.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhHk = moment.defineLocale('zh-hk', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : 'æ—¥_一_二_三_å››_五_å…­'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYYå¹´MMMDæ—¥',\n LL : 'YYYYå¹´MMMDæ—¥',\n LLL : 'YYYYå¹´MMMDæ—¥ HH:mm',\n LLLL : 'YYYYå¹´MMMDæ—¥dddd HH:mm',\n l : 'YYYYå¹´MMMDæ—¥',\n ll : 'YYYYå¹´MMMDæ—¥',\n lll : 'YYYYå¹´MMMDæ—¥ HH:mm',\n llll : 'YYYYå¹´MMMDæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + 'æ—¥';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%så…§',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 å¹´',\n yy : '%d å¹´'\n }\n});\n\nreturn zhHk;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/zh-hk.js\n ** module id = 235\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/zh-hk.js?")},function(module,exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(1)) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\nvar zhTw = moment.defineLocale('zh-tw', {\n months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin : 'æ—¥_一_二_三_å››_五_å…­'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'YYYYå¹´MMMDæ—¥',\n LL : 'YYYYå¹´MMMDæ—¥',\n LLL : 'YYYYå¹´MMMDæ—¥ HH:mm',\n LLLL : 'YYYYå¹´MMMDæ—¥dddd HH:mm',\n l : 'YYYYå¹´MMMDæ—¥',\n ll : 'YYYYå¹´MMMDæ—¥',\n lll : 'YYYYå¹´MMMDæ—¥ HH:mm',\n llll : 'YYYYå¹´MMMDæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour : function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem : function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar : {\n sameDay : '[今天]LT',\n nextDay : '[明天]LT',\n nextWeek : '[下]ddddLT',\n lastDay : '[昨天]LT',\n lastWeek : '[上]ddddLT',\n sameElse : 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal : function (number, period) {\n switch (period) {\n case 'd' :\n case 'D' :\n case 'DDD' :\n return number + 'æ—¥';\n case 'M' :\n return number + '月';\n case 'w' :\n case 'W' :\n return number + '週';\n default :\n return number;\n }\n },\n relativeTime : {\n future : '%så…§',\n past : '%s前',\n s : '幾秒',\n m : '1 分鐘',\n mm : '%d 分鐘',\n h : '1 小時',\n hh : '%d 小時',\n d : '1 天',\n dd : '%d 天',\n M : '1 個月',\n MM : '%d 個月',\n y : '1 å¹´',\n yy : '%d å¹´'\n }\n});\n\nreturn zhTw;\n\n})));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale/zh-tw.js\n ** module id = 236\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale/zh-tw.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSProperty\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n boxFlex: true,\n boxFlexGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function(prop) {\n prefixes.forEach(function(prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundImage: true,\n backgroundPosition: true,\n backgroundRepeat: true,\n backgroundColor: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/CSSProperty.js\n ** module id = 237\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/CSSProperty.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CSSPropertyOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar CSSProperty = __webpack_require__(237);\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar camelizeStyleName = __webpack_require__(383);\nvar dangerousStyleValue = __webpack_require__(387);\nvar hyphenateStyleName = __webpack_require__(394);\nvar memoizeStringOnly = __webpack_require__(397);\nvar warning = __webpack_require__(6);\n\nvar processStyleName = memoizeStringOnly(function(styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (false) {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n\n var warnHyphenatedStyleName = function(name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Unsupported style property %s. Did you mean %s?',\n name,\n camelizeStyleName(name)\n ) : null);\n };\n\n var warnBadVendoredStyleName = function(name) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Unsupported vendor-prefixed style property %s. Did you mean %s?',\n name,\n name.charAt(0).toUpperCase() + name.slice(1)\n ) : null);\n };\n\n var warnStyleValueWithSemicolon = function(name, value) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Style property values shouldn\\'t contain a semicolon. ' +\n 'Try \"%s: %s\" instead.',\n name,\n value.replace(badStyleValueWithSemicolonPattern, '')\n ) : null);\n };\n\n /**\n * @param {string} name\n * @param {*} value\n */\n var warnValidStyle = function(name, value) {\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @return {?string}\n */\n createMarkupForStyles: function(styles) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (false) {\n warnValidStyle(styleName, styleValue);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n setValueForStyles: function(node, styles) {\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (false) {\n warnValidStyle(styleName, styles[styleName]);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName]);\n if (styleName === 'float') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/CSSPropertyOperations.js\n ** module id = 238\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/CSSPropertyOperations.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginRegistry\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Injectable ordering of event plugins.\n */\nvar EventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!EventPluginOrder) {\n // Wait until an `EventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var PluginModule = namesToPlugins[pluginName];\n var pluginIndex = EventPluginOrder.indexOf(pluginName);\n ( false ? invariant(\n pluginIndex > -1,\n 'EventPluginRegistry: Cannot inject event plugins that do not exist in ' +\n 'the plugin ordering, `%s`.',\n pluginName\n ) : invariant(pluginIndex > -1));\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n ( false ? invariant(\n PluginModule.extractEvents,\n 'EventPluginRegistry: Event plugins must implement an `extractEvents` ' +\n 'method, but `%s` does not.',\n pluginName\n ) : invariant(PluginModule.extractEvents));\n EventPluginRegistry.plugins[pluginIndex] = PluginModule;\n var publishedEvents = PluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n ( false ? invariant(\n publishEventForPlugin(\n publishedEvents[eventName],\n PluginModule,\n eventName\n ),\n 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',\n eventName,\n pluginName\n ) : invariant(publishEventForPlugin(\n publishedEvents[eventName],\n PluginModule,\n eventName\n )));\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, PluginModule, eventName) {\n ( false ? invariant(\n !EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'event name, `%s`.',\n eventName\n ) : invariant(!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName)));\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(\n phasedRegistrationName,\n PluginModule,\n eventName\n );\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(\n dispatchConfig.registrationName,\n PluginModule,\n eventName\n );\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, PluginModule, eventName) {\n ( false ? invariant(\n !EventPluginRegistry.registrationNameModules[registrationName],\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'registration name, `%s`.',\n registrationName\n ) : invariant(!EventPluginRegistry.registrationNameModules[registrationName]));\n EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] =\n PluginModule.eventTypes[eventName].dependencies;\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function(InjectedEventPluginOrder) {\n ( false ? invariant(\n !EventPluginOrder,\n 'EventPluginRegistry: Cannot inject event plugin ordering more than ' +\n 'once. You are likely trying to load more than one copy of React.'\n ) : invariant(!EventPluginOrder));\n // Clone the ordering so it cannot be dynamically mutated.\n EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var PluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) ||\n namesToPlugins[pluginName] !== PluginModule) {\n ( false ? invariant(\n !namesToPlugins[pluginName],\n 'EventPluginRegistry: Cannot inject two different event plugins ' +\n 'using the same name, `%s`.',\n pluginName\n ) : invariant(!namesToPlugins[pluginName]));\n namesToPlugins[pluginName] = PluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function(event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[\n dispatchConfig.registrationName\n ] || null;\n }\n for (var phase in dispatchConfig.phasedRegistrationNames) {\n if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var PluginModule = EventPluginRegistry.registrationNameModules[\n dispatchConfig.phasedRegistrationNames[phase]\n ];\n if (PluginModule) {\n return PluginModule;\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function() {\n EventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventPluginRegistry.js\n ** module id = 239\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventPluginRegistry.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n\n'use strict';\n\nvar ReactUpdateQueue = __webpack_require__(83);\n\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context) {\n this.props = props;\n this.context = context;\n}\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function(partialState, callback) {\n ( false ? invariant(\n typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null,\n 'setState(...): takes an object of state variables to update or a ' +\n 'function which returns an object of state variables.'\n ) : invariant(typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null));\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n ) : null);\n }\n ReactUpdateQueue.enqueueSetState(this, partialState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function(callback) {\n ReactUpdateQueue.enqueueForceUpdate(this);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (false) {\n var deprecatedAPIs = {\n getDOMNode: [\n 'getDOMNode',\n 'Use React.findDOMNode(component) instead.'\n ],\n isMounted: [\n 'isMounted',\n 'Instead, make sure to clean up subscriptions and pending requests in ' +\n 'componentWillUnmount to prevent memory leaks.'\n ],\n replaceProps: [\n 'replaceProps',\n 'Instead, call React.render again at the top level.'\n ],\n replaceState: [\n 'replaceState',\n 'Refactor your code to use setState instead (see ' +\n 'https://github.com/facebook/react/issues/3236).'\n ],\n setProps: [\n 'setProps',\n 'Instead, call React.render again at the top level.'\n ]\n };\n var defineDeprecationWarning = function(methodName, info) {\n try {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function() {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n '%s(...) is deprecated in plain JavaScript React classes. %s',\n info[0],\n info[1]\n ) : null);\n return undefined;\n }\n });\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactComponent.js\n ** module id = 240\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactComponent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMIDOperations\n * @typechecks static-only\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar CSSPropertyOperations = __webpack_require__(238);\nvar DOMChildrenOperations = __webpack_require__(335);\nvar DOMPropertyOperations = __webpack_require__(42);\nvar ReactMount = __webpack_require__(20);\nvar ReactPerf = __webpack_require__(28);\n\nvar invariant = __webpack_require__(3);\nvar setInnerHTML = __webpack_require__(91);\n\n/**\n * Errors for properties that should not be updated with `updatePropertyById()`.\n *\n * @type {object}\n * @private\n */\nvar INVALID_PROPERTY_ERRORS = {\n dangerouslySetInnerHTML:\n '`dangerouslySetInnerHTML` must be set using `updateInnerHTMLByID()`.',\n style: '`style` must be set using `updateStylesByID()`.'\n};\n\n/**\n * Operations used to process updates to DOM nodes. This is made injectable via\n * `ReactDOMComponent.BackendIDOperations`.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a DOM node with new property values. This should only be used to\n * update DOM properties in `DOMProperty`.\n *\n * @param {string} id ID of the node to update.\n * @param {string} name A valid property name, see `DOMProperty`.\n * @param {*} value New value of the property.\n * @internal\n */\n updatePropertyByID: function(id, name, value) {\n var node = ReactMount.getNode(id);\n ( false ? invariant(\n !INVALID_PROPERTY_ERRORS.hasOwnProperty(name),\n 'updatePropertyByID(...): %s',\n INVALID_PROPERTY_ERRORS[name]\n ) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name)));\n\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertantly setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (value != null) {\n DOMPropertyOperations.setValueForProperty(node, name, value);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, name);\n }\n },\n\n /**\n * Updates a DOM node to remove a property. This should only be used to remove\n * DOM properties in `DOMProperty`.\n *\n * @param {string} id ID of the node to update.\n * @param {string} name A property name to remove, see `DOMProperty`.\n * @internal\n */\n deletePropertyByID: function(id, name, value) {\n var node = ReactMount.getNode(id);\n ( false ? invariant(\n !INVALID_PROPERTY_ERRORS.hasOwnProperty(name),\n 'updatePropertyByID(...): %s',\n INVALID_PROPERTY_ERRORS[name]\n ) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name)));\n DOMPropertyOperations.deleteValueForProperty(node, name, value);\n },\n\n /**\n * Updates a DOM node with new style values. If a value is specified as '',\n * the corresponding style property will be unset.\n *\n * @param {string} id ID of the node to update.\n * @param {object} styles Mapping from styles to values.\n * @internal\n */\n updateStylesByID: function(id, styles) {\n var node = ReactMount.getNode(id);\n CSSPropertyOperations.setValueForStyles(node, styles);\n },\n\n /**\n * Updates a DOM node's innerHTML.\n *\n * @param {string} id ID of the node to update.\n * @param {string} html An HTML string.\n * @internal\n */\n updateInnerHTMLByID: function(id, html) {\n var node = ReactMount.getNode(id);\n setInnerHTML(node, html);\n },\n\n /**\n * Updates a DOM node's text content set by `props.content`.\n *\n * @param {string} id ID of the node to update.\n * @param {string} content Text content.\n * @internal\n */\n updateTextContentByID: function(id, content) {\n var node = ReactMount.getNode(id);\n DOMChildrenOperations.updateTextContent(node, content);\n },\n\n /**\n * Replaces a DOM node that exists in the document with markup.\n *\n * @param {string} id ID of child to be replaced.\n * @param {string} markup Dangerous markup to inject in place of child.\n * @internal\n * @see {Danger.dangerouslyReplaceNodeWithMarkup}\n */\n dangerouslyReplaceNodeWithMarkupByID: function(id, markup) {\n var node = ReactMount.getNode(id);\n DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup(node, markup);\n },\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @param {array<string>} markup List of markup strings.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function(updates, markup) {\n for (var i = 0; i < updates.length; i++) {\n updates[i].parentNode = ReactMount.getNode(updates[i].parentID);\n }\n DOMChildrenOperations.processUpdates(updates, markup);\n }\n};\n\nReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', {\n updatePropertyByID: 'updatePropertyByID',\n deletePropertyByID: 'deletePropertyByID',\n updateStylesByID: 'updateStylesByID',\n updateInnerHTMLByID: 'updateInnerHTMLByID',\n updateTextContentByID: 'updateTextContentByID',\n dangerouslyReplaceNodeWithMarkupByID: 'dangerouslyReplaceNodeWithMarkupByID',\n dangerouslyProcessChildrenUpdates: 'dangerouslyProcessChildrenUpdates'\n});\n\nmodule.exports = ReactDOMIDOperations;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMIDOperations.js\n ** module id = 241\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMIDOperations.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMTextComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar DOMPropertyOperations = __webpack_require__(42);\nvar ReactComponentBrowserEnvironment =\n __webpack_require__(76);\nvar ReactDOMComponent = __webpack_require__(79);\n\nvar assign = __webpack_require__(4);\nvar escapeTextContentForBrowser = __webpack_require__(59);\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings in elements so that they can undergo\n * the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function(props) {\n // This constructor and its argument is currently used by mocks.\n};\n\nassign(ReactDOMTextComponent.prototype, {\n\n /**\n * @param {ReactText} text\n * @internal\n */\n construct: function(text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n\n // Properties\n this._rootNodeID = null;\n this._mountIndex = 0;\n },\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this in a `span` for the reasons stated above, but\n // since this is a situation where React won't take over (static pages),\n // we can simply return the text as it is.\n return escapedText;\n }\n\n return (\n '<span ' + DOMPropertyOperations.createMarkupForID(rootID) + '>' +\n escapedText +\n '</span>'\n );\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function(nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n ReactDOMComponent.BackendIDOperations.updateTextContentByID(\n this._rootNodeID,\n nextStringText\n );\n }\n }\n },\n\n unmountComponent: function() {\n ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMTextComponent.js\n ** module id = 242\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMTextComponent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInputSelection\n */\n\n'use strict';\n\nvar ReactDOMSelection = __webpack_require__(355);\n\nvar containsNode = __webpack_require__(250);\nvar focusNode = __webpack_require__(252);\nvar getActiveElement = __webpack_require__(253);\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function(elem) {\n return elem && (\n ((elem.nodeName === 'INPUT' && elem.type === 'text') ||\n elem.nodeName === 'TEXTAREA' || elem.contentEditable === 'true')\n );\n },\n\n getSelectionInformation: function() {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange:\n ReactInputSelection.hasSelectionCapabilities(focusedElem) ?\n ReactInputSelection.getSelection(focusedElem) :\n null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function(priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem &&\n isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(\n priorFocusedElem,\n priorSelectionRange\n );\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function(input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName === 'INPUT') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || {start: 0, end: 0};\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function(input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (typeof end === 'undefined') {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName === 'INPUT') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactInputSelection.js\n ** module id = 243\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactInputSelection.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMarkupChecksum\n */\n\n'use strict';\n\nvar adler32 = __webpack_require__(381);\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function(markup) {\n var checksum = adler32(markup);\n return markup.replace(\n '>',\n ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\">'\n );\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function(markup, element) {\n var existingChecksum = element.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactMarkupChecksum.js\n ** module id = 244\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactMarkupChecksum.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChildUpdateTypes\n */\n\n'use strict';\n\nvar keyMirror = __webpack_require__(47);\n\n/**\n * When a component's children are updated, a series of update configuration\n * objects are created in order to batch and serialize the required changes.\n *\n * Enumerates all the possible types of update configurations.\n *\n * @internal\n */\nvar ReactMultiChildUpdateTypes = keyMirror({\n INSERT_MARKUP: null,\n MOVE_EXISTING: null,\n REMOVE_NODE: null,\n TEXT_CONTENT: null\n});\n\nmodule.exports = ReactMultiChildUpdateTypes;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactMultiChildUpdateTypes.js\n ** module id = 245\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactMultiChildUpdateTypes.js?")},function(module,exports,__webpack_require__){eval('/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypes\n */\n\n\'use strict\';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactFragment = __webpack_require__(53);\nvar ReactPropTypeLocationNames = __webpack_require__(55);\n\nvar emptyFunction = __webpack_require__(23);\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require(\'ReactPropTypes\');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named "description".\n * description: Props.string,\n *\n * // A required enum prop named "category".\n * category: Props.oneOf([\'News\',\'Photos\']).isRequired,\n *\n * // A prop named "dialog" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named "href".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== \'string\' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * \'Expected a string or an URI for \' + propName + \' in \' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = \'<<anonymous>>\';\n\nvar elementTypeChecker = createElementTypeChecker();\nvar nodeTypeChecker = createNodeChecker();\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker(\'array\'),\n bool: createPrimitiveTypeChecker(\'boolean\'),\n func: createPrimitiveTypeChecker(\'function\'),\n number: createPrimitiveTypeChecker(\'number\'),\n object: createPrimitiveTypeChecker(\'object\'),\n string: createPrimitiveTypeChecker(\'string\'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: elementTypeChecker,\n instanceOf: createInstanceTypeChecker,\n node: nodeTypeChecker,\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location) {\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n return new Error(\n ("Required " + locationName + " `" + propName + "` was not specified in ") +\n ("`" + componentName + "`.")\n );\n }\n return null;\n } else {\n return validate(props, propName, componentName, location);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the \'object\'\n // check, but we can offer a more precise error message here rather than\n // \'of type `object`\'.\n var preciseType = getPreciseType(propValue);\n\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` of type `" + preciseType + "` ") +\n ("supplied to `" + componentName + "`, expected `" + expectedType + "`.")\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` of type ") +\n ("`" + propType + "` supplied to `" + componentName + "`, expected an array.")\n );\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location) {\n if (!ReactElement.isValidElement(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` supplied to ") +\n ("`" + componentName + "`, expected a ReactElement.")\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` supplied to ") +\n ("`" + componentName + "`, expected instance of `" + expectedClassName + "`.")\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (propValue === expectedValues[i]) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` of value `" + propValue + "` ") +\n ("supplied to `" + componentName + "`, expected one of " + valuesString + ".")\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \'object\') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` of type ") +\n ("`" + propType + "` supplied to `" + componentName + "`, expected an object.")\n );\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` supplied to ") +\n ("`" + componentName + "`.")\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` supplied to ") +\n ("`" + componentName + "`, expected a ReactNode.")\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== \'object\') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n ("Invalid " + locationName + " `" + propName + "` of type `" + propType + "` ") +\n ("supplied to `" + componentName + "`, expected `object`.")\n );\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case \'number\':\n case \'string\':\n case \'undefined\':\n return true;\n case \'boolean\':\n return !propValue;\n case \'object\':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n propValue = ReactFragment.extractIfFragment(propValue);\n for (var k in propValue) {\n if (!isNode(propValue[k])) {\n return false;\n }\n }\n return true;\n default:\n return false;\n }\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \'array\';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return \'function\' rather than\n // \'object\' for typeof a RegExp. We\'ll normalize this here so that /bla/\n // passes PropTypes.object.\n return \'object\';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === \'object\') {\n if (propValue instanceof Date) {\n return \'date\';\n } else if (propValue instanceof RegExp) {\n return \'regexp\';\n }\n }\n return propType;\n}\n\nmodule.exports = ReactPropTypes;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPropTypes.js\n ** module id = 246\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactPropTypes.js?'); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPutListenerQueue\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\nvar ReactBrowserEventEmitter = __webpack_require__(35);\n\nvar assign = __webpack_require__(4);\n\nfunction ReactPutListenerQueue() {\n this.listenersToPut = [];\n}\n\nassign(ReactPutListenerQueue.prototype, {\n enqueuePutListener: function(rootNodeID, propKey, propValue) {\n this.listenersToPut.push({\n rootNodeID: rootNodeID,\n propKey: propKey,\n propValue: propValue\n });\n },\n\n putListeners: function() {\n for (var i = 0; i < this.listenersToPut.length; i++) {\n var listenerToPut = this.listenersToPut[i];\n ReactBrowserEventEmitter.putListener(\n listenerToPut.rootNodeID,\n listenerToPut.propKey,\n listenerToPut.propValue\n );\n }\n },\n\n reset: function() {\n this.listenersToPut.length = 0;\n },\n\n destructor: function() {\n this.reset();\n }\n});\n\nPooledClass.addPoolingTo(ReactPutListenerQueue);\n\nmodule.exports = ReactPutListenerQueue;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactPutListenerQueue.js\n ** module id = 247\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactPutListenerQueue.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar ReactRootIndexInjection = {\n /**\n * @param {function} _createReactRootIndex\n */\n injectCreateReactRootIndex: function(_createReactRootIndex) {\n ReactRootIndex.createReactRootIndex = _createReactRootIndex;\n }\n};\n\nvar ReactRootIndex = {\n createReactRootIndex: null,\n injection: ReactRootIndexInjection\n};\n\nmodule.exports = ReactRootIndex;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactRootIndex.js\n ** module id = 248\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactRootIndex.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewportMetrics\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ViewportMetrics.js\n ** module id = 249\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ViewportMetrics.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule containsNode\n * @typechecks\n */\n\nvar isTextNode = __webpack_require__(395);\n\n/*jslint bitwise:true */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n *\n * @param {?DOMNode} outerNode Outer DOM node.\n * @param {?DOMNode} innerNode Inner DOM node.\n * @return {boolean} True if `outerNode` contains or is `innerNode`.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if (outerNode.contains) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/containsNode.js\n ** module id = 250\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/containsNode.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule findDOMNode\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactInstanceMap = __webpack_require__(37);\nvar ReactMount = __webpack_require__(20);\n\nvar invariant = __webpack_require__(3);\nvar isNode = __webpack_require__(257);\nvar warning = __webpack_require__(6);\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (false) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing getDOMNode or findDOMNode inside its render(). ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n ) : null);\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (isNode(componentOrElement)) {\n return componentOrElement;\n }\n if (ReactInstanceMap.has(componentOrElement)) {\n return ReactMount.getNodeFromInstance(componentOrElement);\n }\n ( false ? invariant(\n componentOrElement.render == null ||\n typeof componentOrElement.render !== 'function',\n 'Component (with keys: %s) contains `render` method ' +\n 'but is not mounted in the DOM',\n Object.keys(componentOrElement)\n ) : invariant(componentOrElement.render == null ||\n typeof componentOrElement.render !== 'function'));\n ( false ? invariant(\n false,\n 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)',\n Object.keys(componentOrElement)\n ) : invariant(false));\n}\n\nmodule.exports = findDOMNode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/findDOMNode.js\n ** module id = 251\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/findDOMNode.js?")},function(module,exports){eval('/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule focusNode\n */\n\n"use strict";\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\nfunction focusNode(node) {\n // IE8 can throw "Can\'t move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus." for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch(e) {\n }\n}\n\nmodule.exports = focusNode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/focusNode.js\n ** module id = 252\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/focusNode.js?')},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getActiveElement\n * @typechecks\n */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document body is not yet defined.\n */\nfunction getActiveElement() /*?DOMElement*/ {\n try {\n return document.activeElement || document.body;\n } catch (e) {\n return document.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getActiveElement.js\n ** module id = 253\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getActiveElement.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getIteratorFn\n * @typechecks static-only\n */\n\n'use strict';\n\n/* global Symbol */\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (\n (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL])\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getIteratorFn.js\n ** module id = 254\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getIteratorFn.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getMarkupWrap\n */\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode =\n ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\nvar shouldWrap = {\n // Force wrapping for SVG elements because if they get created inside a <div>,\n // they will be initialized in the wrong namespace (and will not display).\n 'circle': true,\n 'clipPath': true,\n 'defs': true,\n 'ellipse': true,\n 'g': true,\n 'line': true,\n 'linearGradient': true,\n 'path': true,\n 'polygon': true,\n 'polyline': true,\n 'radialGradient': true,\n 'rect': true,\n 'stop': true,\n 'text': true\n};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg>', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap,\n\n 'circle': svgWrap,\n 'clipPath': svgWrap,\n 'defs': svgWrap,\n 'ellipse': svgWrap,\n 'g': svgWrap,\n 'line': svgWrap,\n 'linearGradient': svgWrap,\n 'path': svgWrap,\n 'polygon': svgWrap,\n 'polyline': svgWrap,\n 'radialGradient': svgWrap,\n 'rect': svgWrap,\n 'stop': svgWrap,\n 'text': svgWrap\n};\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n ( false ? invariant(!!dummyNode, 'Markup wrapping node not initialized') : invariant(!!dummyNode));\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\n\nmodule.exports = getMarkupWrap;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getMarkupWrap.js\n ** module id = 255\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getMarkupWrap.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getTextContentAccessor\n */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ?\n 'textContent' :\n 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getTextContentAccessor.js\n ** module id = 256\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getTextContentAccessor.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isNode\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n return !!(object && (\n ((typeof Node === 'function' ? object instanceof Node : typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string'))\n ));\n}\n\nmodule.exports = isNode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/isNode.js\n ** module id = 257\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/isNode.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isTextInputElement\n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n return elem && (\n (elem.nodeName === 'INPUT' && supportedInputTypes[elem.type] || elem.nodeName === 'TEXTAREA')\n );\n}\n\nmodule.exports = isTextInputElement;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/isTextInputElement.js\n ** module id = 258\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/isTextInputElement.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule traverseAllChildren\n */\n\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactFragment = __webpack_require__(53);\nvar ReactInstanceHandles = __webpack_require__(36);\n\nvar getIteratorFn = __webpack_require__(254);\nvar invariant = __webpack_require__(3);\nvar warning = __webpack_require__(6);\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR = ':';\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar userProvidedKeyEscaperLookup = {\n '=': '=0',\n '.': '=1',\n ':': '=2'\n};\n\nvar userProvidedKeyEscapeRegex = /[=.:]/g;\n\nvar didWarnAboutMaps = false;\n\nfunction userProvidedKeyEscaper(match) {\n return userProvidedKeyEscaperLookup[match];\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n if (component && component.key != null) {\n // Explicit key\n return wrapUserProvidedKey(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * Escape a component key so that it is safe to use in a reactid.\n *\n * @param {*} key Component key to be escaped.\n * @return {string} An escaped string.\n */\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(\n userProvidedKeyEscapeRegex,\n userProvidedKeyEscaper\n );\n}\n\n/**\n * Wrap a `key` value explicitly provided by the user to distinguish it from\n * implicitly-generated keys generated by a component's index in its parent.\n *\n * @param {string} key Value of a user-provided `key` attribute\n * @return {string}\n */\nfunction wrapUserProvidedKey(key) {\n return '$' + escapeUserProvidedKey(key);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!number} indexSoFar Number of children encountered until this point.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(\n children,\n nameSoFar,\n indexSoFar,\n callback,\n traverseContext\n) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null ||\n type === 'string' ||\n type === 'number' ||\n ReactElement.isValidElement(children)) {\n callback(\n traverseContext,\n children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar,\n indexSoFar\n );\n return 1;\n }\n\n var child, nextName, nextIndex;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, i)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, ii++)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n didWarnAboutMaps,\n 'Using Maps as children is not yet fully supported. It is an ' +\n 'experimental feature that might be removed. Convert it to a ' +\n 'sequence / iterable of keyed ReactElements instead.'\n ) : null);\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(entry[0]) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n } else if (type === 'object') {\n ( false ? invariant(\n children.nodeType !== 1,\n 'traverseAllChildren(...): Encountered an invalid child; DOM ' +\n 'elements are not valid children of React components.'\n ) : invariant(children.nodeType !== 1));\n var fragment = ReactFragment.extract(children);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n child = fragment[key];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(key) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', 0, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/traverseAllChildren.js\n ** module id = 259\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/traverseAllChildren.js?")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<h6 class="flyout-header">Enter Your Email Address:</h6>\\n\\n<form js-target="save-new-list-form" class="field-container">\\n\t<div class="notification-box">\\n\t\t<div class="notification-box-content" js-target="notification-box">\\n\t\t\t<div class="row collapse">\\n\t\t\t\t<div class="small-2 column text-center">\\n\t\t\t\t\t<span class="icon-stack mts">\\n\t\t\t\t\t\t<i class="icon icon-circle-o icon-stack-2x warning-color"></i>\\n\t\t\t\t\t\t<i class="icon icon-exclamation icon-stack-1x warning-color"></i>\\n\t\t\t\t\t</span>\\n\t\t\t\t</div>\\n\t\t\t\t<div class="small-9 column mtm"> \\n\t\t\t\t\t<div class="message" js-target="notification-box-message">\\n\t\t\t\t\tAccount Not Found.\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\t\\n\t<label for="email-address">Email</label>\\n\t<input name="email-address" type="text" js-target="forgot-password-email">\t\\n\\n\t<button class="expand" js-target="send-message">SEND</button>\\n</form>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/forgot-password/template.html\n ** module id = 260\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/forgot-password/template.html?./web_loaders/template.loader.js')},function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(jQuery) {/*!\n * jQuery outside events - v1.1 - 3/16/2010\n * http://benalman.com/projects/jquery-outside-events-plugin/\n * \n * Copyright (c) 2010 "Cowboy" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery outside events\n//\n// *Version: 1.1, Last updated: 3/16/2010*\n// \n// Project Home - http://benalman.com/projects/jquery-outside-events-plugin/\n// GitHub - http://github.com/cowboy/jquery-outside-events/\n// Source - http://github.com/cowboy/jquery-outside-events/raw/master/jquery.ba-outside-events.js\n// (Minified) - http://github.com/cowboy/jquery-outside-events/raw/master/jquery.ba-outside-events.min.js (0.9kb)\n// \n// About: License\n// \n// Copyright (c) 2010 "Cowboy" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n// \n// About: Examples\n// \n// These working examples, complete with fully commented code, illustrate a few\n// ways in which this plugin can be used.\n// \n// clickoutside - http://benalman.com/code/projects/jquery-outside-events/examples/clickoutside/\n// dblclickoutside - http://benalman.com/code/projects/jquery-outside-events/examples/dblclickoutside/\n// mouseoveroutside - http://benalman.com/code/projects/jquery-outside-events/examples/mouseoveroutside/\n// focusoutside - http://benalman.com/code/projects/jquery-outside-events/examples/focusoutside/\n// \n// About: Support and Testing\n// \n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n// \n// jQuery Versions - 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1.\n// Unit Tests - http://benalman.com/code/projects/jquery-outside-events/unit/\n// \n// About: Release History\n// \n// 1.1 - (3/16/2010) Made "clickoutside" plugin more general, resulting in a\n// whole new plugin with more than a dozen default "outside" events and\n// a method that can be used to add new ones.\n// 1.0 - (2/27/2010) Initial release\n//\n// Topic: Default "outside" events\n// \n// Note that each "outside" event is powered by an "originating" event. Only\n// when the originating event is triggered on an element outside the element\n// to which that outside event is bound will the bound event be triggered.\n// \n// Because each outside event is powered by a separate originating event,\n// stopping propagation of that originating event will prevent its related\n// outside event from triggering.\n// \n// OUTSIDE EVENT - ORIGINATING EVENT\n// clickoutside - click\n// dblclickoutside - dblclick\n// focusoutside - focusin\n// bluroutside - focusout\n// mousemoveoutside - mousemove\n// mousedownoutside - mousedown\n// mouseupoutside - mouseup\n// mouseoveroutside - mouseover\n// mouseoutoutside - mouseout\n// keydownoutside - keydown\n// keypressoutside - keypress\n// keyupoutside - keyup\n// changeoutside - change\n// selectoutside - select\n// submitoutside - submit\n\n(function($,doc,outside){\n \'$:nomunge\'; // Used by YUI compressor.\n \n $.map(\n // All these events will get an "outside" event counterpart by default.\n \'click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup\'.split(\' \'),\n function( event_name ) { jq_addOutsideEvent( event_name ); }\n );\n \n // The focus and blur events are really focusin and focusout when it comes\n // to delegation, so they are a special case.\n jq_addOutsideEvent( \'focusin\', \'focus\' + outside );\n jq_addOutsideEvent( \'focusout\', \'blur\' + outside );\n \n // Method: jQuery.addOutsideEvent\n // \n // Register a new "outside" event to be with this method. Adding an outside\n // event that already exists will probably blow things up, so check the\n // <Default "outside" events> list before trying to add a new one.\n // \n // Usage:\n // \n // > jQuery.addOutsideEvent( event_name [, outside_event_name ] );\n // \n // Arguments:\n // \n // event_name - (String) The name of the originating event that the new\n // "outside" event will be powered by. This event can be a native or\n // custom event, as long as it bubbles up the DOM tree.\n // outside_event_name - (String) An optional name for the new "outside"\n // event. If omitted, the outside event will be named whatever the\n // value of `event_name` is plus the "outside" suffix.\n // \n // Returns:\n // \n // Nothing.\n \n $.addOutsideEvent = jq_addOutsideEvent;\n \n function jq_addOutsideEvent( event_name, outside_event_name ) {\n \n // The "outside" event name.\n outside_event_name = outside_event_name || event_name + outside;\n \n // A jQuery object containing all elements to which the "outside" event is\n // bound.\n var elems = $(),\n \n // The "originating" event, namespaced for easy unbinding.\n event_namespaced = event_name + \'.\' + outside_event_name + \'-special-event\';\n \n // Event: outside events\n // \n // An "outside" event is triggered on an element when its corresponding\n // "originating" event is triggered on an element outside the element in\n // question. See the <Default "outside" events> list for more information.\n // \n // Usage:\n // \n // > jQuery(\'selector\').bind( \'clickoutside\', function(event) {\n // > var clicked_elem = $(event.target);\n // > ...\n // > });\n // \n // > jQuery(\'selector\').bind( \'dblclickoutside\', function(event) {\n // > var double_clicked_elem = $(event.target);\n // > ...\n // > });\n // \n // > jQuery(\'selector\').bind( \'mouseoveroutside\', function(event) {\n // > var moused_over_elem = $(event.target);\n // > ...\n // > });\n // \n // > jQuery(\'selector\').bind( \'focusoutside\', function(event) {\n // > var focused_elem = $(event.target);\n // > ...\n // > });\n // \n // You get the idea, right?\n \n $.event.special[ outside_event_name ] = {\n \n // Called only when the first "outside" event callback is bound per\n // element.\n setup: function(){\n \n // Add this element to the list of elements to which this "outside"\n // event is bound.\n elems = elems.add( this );\n \n // If this is the first element getting the event bound, bind a handler\n // to document to catch all corresponding "originating" events.\n if ( elems.length === 1 ) {\n $(doc).bind( event_namespaced, handle_event );\n }\n },\n \n // Called only when the last "outside" event callback is unbound per\n // element.\n teardown: function(){\n \n // Remove this element from the list of elements to which this\n // "outside" event is bound.\n elems = elems.not( this );\n \n // If this is the last element removed, remove the "originating" event\n // handler on document that powers this "outside" event.\n if ( elems.length === 0 ) {\n $(doc).unbind( event_namespaced );\n }\n },\n \n // Called every time a "outside" event callback is bound to an element.\n add: function( handleObj ) {\n var old_handler = handleObj.handler;\n \n // This function is executed every time the event is triggered. This is\n // used to override the default event.target reference with one that is\n // more useful.\n handleObj.handler = function( event, elem ) {\n \n // Set the event object\'s .target property to the element that the\n // user interacted with, not the element that the "outside" event was\n // was triggered on.\n event.target = elem;\n \n // Execute the actual bound handler.\n old_handler.apply( this, arguments );\n };\n }\n };\n \n // When the "originating" event is triggered..\n function handle_event( event ) {\n \n // Iterate over all elements to which this "outside" event is bound.\n $(elems).each(function(){\n var elem = $(this);\n \n // If this element isn\'t the element on which the event was triggered,\n // and this element doesn\'t contain said element, then said element is\n // considered to be outside, and the "outside" event will be triggered!\n if ( this !== event.target && !elem.has(event.target).length ) {\n \n // Use triggerHandler instead of trigger so that the "outside" event\n // doesn\'t bubble. Pass in the "originating" event\'s .target so that\n // the "outside" event.target can be overridden with something more\n // meaningful.\n elem.triggerHandler( outside_event_name, [ event.target ] );\n }\n });\n };\n \n };\n \n})(jQuery,document,"outside");\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/jquery-outside-events/jquery.ba-outside-events.js\n ** module id = 261\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./bower_components/jquery-outside-events/jquery.ba-outside-events.js?'); },function(module,exports,__webpack_require__){eval('/**\n * A series of functions that can be used throughout the shopping cart.\n */\n\n// Dependencies\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n__webpack_require__(8);\n\n/**\n* function that will update the quantity value when the increase\n* or decrease value has been clicked\n*\n* @param {object} elem - element that triggered the event\n* @param {string} targetInput\n* @param {object} ev\n*\n* @return {object} - the corresponding quantity input box\n*/\nexports.updateQuantityValue = function (elem, targetInput, ev) {\n\tvar updateDir = (0, _jquery2["default"])(elem).data().changeType;\n\tvar quantityEl = (0, _jquery2["default"])(elem).closest("div").siblings(targetInput).find("input");\n\n\tif (ev.type === "click" && (updateDir === "up" || updateDir === "down")) {\n\t\tvar qty = parseInt((0, _jquery2["default"])(quantityEl).val(), 10);\n\t\tif (updateDir === "up") {\n\t\t\tqty++;\n\t\t} else if (updateDir === "down" && qty > 0) {\n\t\t\tqty--;\n\t\t}\n\t\t(0, _jquery2["default"])(quantityEl).val(qty);\n\t}\n\n\treturn quantityEl;\n};\n\n/**\n* function that will update the totals of cart based on the changed\n* cart values\n*\n* @param {object} cartTotalEl\n* @param {object} cartObj\n*\n* @return\n*/\nexports.updateTotals = function (cartTotalEl, cartObj) {\n\t// update the cart totals\n\t(0, _jquery2["default"])(cartTotalEl).find("[js-target=\'cart-subtotal\']").html(parseFloat(cartObj.subTotal).toFixed(2));\n\t(0, _jquery2["default"])(cartTotalEl).find("[js-target=\'cart-tax\']").html(parseFloat(cartObj.tax).toFixed(2));\n\t(0, _jquery2["default"])(cartTotalEl).find("[js-target=\'cart-shipping-cost\']").html(parseFloat(cartObj.shippingCost).toFixed(2));\n\t(0, _jquery2["default"])(cartTotalEl).find("[js-target=\'cart-grand-total\']").html(parseFloat(cartObj.grandTotal).toFixed(2));\n};\n\n/**\n * helper that updates all the line item totals\n * @param {object} cartEl selector\n * @param {object} cartObj Cart\n */\nexports.updateCartLineItems = function (cartEl, cartObj) {\n\t// loop through the items\n\tif (typeof cartObj !== "undefined") {\n\t\t_jquery2["default"].each(cartObj.items, function () {\n\t\t\tvar item = this;\n\n\t\t\tvar cartItem = cartEl.find("cart-item[data-item-id=" + item.itemid + "]");\n\t\t\tif (cartItem !== null) {\n\t\t\t\tvar cartItemPrice = (parseInt(item.quantity) * parseFloat(item.unitPrice)).toFixed(2);\n\t\t\t\tcartItem.data("quantity", item.quantity);\n\t\t\t\tcartItem.find("[js-target=\'item-list-price\']").html(cartItemPrice);\n\t\t\t}\n\t\t});\n\t}\n};\n/**\n* function that will set the item type based on the\n* productId\n*\n* @param {string} productId\n*\n* @return {string} type\n*/\nexports.getProductType = function (productId) {\n\treturn ({\n\t\t"KND": "Ebook",\n\t\t"BUN": "Bundle",\n\t\t"PDF": "Digital",\n\t\t"HTM": "Digital",\n\t\t"ZIP": "Digital",\n\t\t"PPT": "Digital",\n\t\t"XLS": "Digital",\n\t\t"EPB": "Digital"\n\t})[productId.split("-")[1]] || "Ship";\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/shopping-cart-utils.js\n ** module id = 262\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/shopping-cart-utils.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(316), __webpack_require__(116), __webpack_require__(22), __webpack_require__(51)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseDifference, baseFlatten, createCallback, forIn) {\n\n /**\n * Creates a shallow clone of `object` excluding the specified properties.\n * Property names may be specified as individual arguments or as arrays of\n * property names. If a callback is provided it will be executed for each\n * property of `object` omitting the properties the callback returns truey\n * for. The callback is bound to `thisArg` and invoked with three arguments;\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The source object.\n * @param {Function|...string|string[]} [callback] The properties to omit or the\n * function called per iteration.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns an object without the omitted properties.\n * @example\n *\n * _.omit({ 'name': 'fred', 'age': 40 }, 'age');\n * // => { 'name': 'fred' }\n *\n * _.omit({ 'name': 'fred', 'age': 40 }, function(value) {\n * return typeof value == 'number';\n * });\n * // => { 'name': 'fred' }\n */\n function omit(object, callback, thisArg) {\n var result = {};\n if (typeof callback != 'function') {\n var props = [];\n forIn(object, function(value, key) {\n props.push(key);\n });\n props = baseDifference(props, baseFlatten(arguments, true, false, 1));\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n result[key] = object[key];\n }\n } else {\n callback = createCallback(callback, thisArg, 3);\n forIn(object, function(value, key, object) {\n if (!callback(value, key, object)) {\n result[key] = value;\n }\n });\n }\n return result;\n }\n\n return omit;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/omit.js\n ** module id = 263\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/omit.js?")},function(module,exports){eval("module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/buildin/module.js\n ** module id = 264\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///(webpack)/buildin/module.js?")},function(module,exports,__webpack_require__){eval('/**\n * @module components/add-to-cart-confirmation\n * @requires module:jquery\n * @requires module:mixins/component\n * @requires module:services/cart\n */\n\n// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.AddToCartConfirmation = AddToCartConfirmation;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Services\n\nvar _servicesHbrPersonalizationPlacementManager = __webpack_require__(97);\n\nvar _servicesHbrPersonalizationPlacementManager2 = _interopRequireDefault(_servicesHbrPersonalizationPlacementManager);\n\nvar _lodashAmdModernObjectsClone = __webpack_require__(48);\n\nvar _lodashAmdModernObjectsClone2 = _interopRequireDefault(_lodashAmdModernObjectsClone);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\n// Components\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _personalizationPlacementPersonalizationPlacement = __webpack_require__(96);\n\nvar _personalizationPlacementPersonalizationPlacement2 = _interopRequireDefault(_personalizationPlacementPersonalizationPlacement);\n\n// placementComponent.activateAll();\n\n// Templates\n\nvar _templateTemplate = __webpack_require__(473);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar component;\n\nfunction AddToCartConfirmation($el) {\n\tthis.initializeAsComponent($el);\n\n\tcomponent = this;\n}\n\nAddToCartConfirmation.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target=\'add-to-cart-confirmation-close\']": "closeConfirmation",\n\t\t"click [js-target=\'add-to-cart-confirmation-checkout\']": "checkoutCart",\n\t\t"click .transparent-layer": "removeModal"\n\t},\n\n\t/**\n * function that will render the confirmation modal\n *\n * @param {object} cartItem\n *\n */\n\trender: function render(cartItem) {\n\t\tif ((0, _jquery2["default"])("add-to-cart-confirmation").length > 0) {\n\t\t\tcomponent.removeModal();\n\t\t}\n\t\tvar width = (0, _jquery2["default"])(document).width();\n\t\tvar height = (0, _jquery2["default"])(document).height();\n\t\t(0, _jquery2["default"])("<div/>", {\n\t\t\t"class": "transparent-layer",\n\t\t\theight: height,\n\t\t\twidth: width\n\t\t}).appendTo("body");\n\t\t(0, _jquery2["default"])("<add-to-cart-confirmation/>").appendTo("body");\n\n\t\t(0, _jquery2["default"])("add-to-cart-confirmation").append((0, _templateTemplate2["default"])(cartItem));\n\n\t\tvar scrollPosition = (0, _jquery2["default"])("body").scrollTop() || (0, _jquery2["default"])("html").scrollTop();\n\t\tif (scrollPosition === 0) {\n\t\t\t(0, _jquery2["default"])("add-to-cart-confirmation").addClass("show-confirmation");\n\t\t} else {\n\t\t\t(0, _jquery2["default"])("add-to-cart-confirmation").animate({ top: scrollPosition }, 1000);\n\t\t}\n\n\t\tif (cartItem.itemAdded === true) {\n\t\t\t// trigger the personalization placement process\n\t\t\t_servicesHbrPersonalizationPlacementManager2["default"].initialize(startPlacementProcess(cartItem));\n\t\t\t_servicesHbrPersonalizationPlacementManager2["default"].startProcess();\n\n\t\t\t(0, _jquery2["default"])("add-to-cart-confirmation").on("update:placement:confirmation", function (ev, data) {\n\t\t\t\tev.stopImmediatePropagation();\n\n\t\t\t\tcomponent.placementName = data.name;\n\t\t\t\tvar category = data.name.split(".")[1];\n\t\t\t\tvar categoryMap = _servicesHbrPersonalizationPlacementManager2["default"].placementTemplateMap["add-to-cart"] || _servicesHbrPersonalizationPlacementManager2["default"].placementTemplateMap.common;\n\t\t\t\tvar categoryObj = categoryMap[category];\n\t\t\t\tcategory = category.replace(/_/g, "-");\n\t\t\t\tvar placementEl = (0, _jquery2["default"])("personalization-placement[data-placement-id=\'" + category + "\']");\n\t\t\t\tplacementEl.data("placementName", data.name);\n\n\t\t\t\t_personalizationPlacementPersonalizationPlacement2["default"].activate((0, _jquery2["default"])("add-to-cart-confirmation"));\n\t\t\t\t_personalizationPlacementPersonalizationPlacement2["default"].render(placementEl, categoryObj.templateName, data, categoryObj.type);\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n * function that will remove the confirmation modal\n *\n * @param {object} el\n *\n */\n\tremoveModal: function removeModal(el) {\n\t\t(0, _jquery2["default"])("add-to-cart-confirmation").animate({ top: -750 }, 1000).delay(500).remove();\n\n\t\t(0, _jquery2["default"])(".transparent-layer").fadeOut(500).remove();\n\t},\n\n\t/**\n * function that will close the confirmation modal box\n *\n * @param {object} ev - event object\n *\n */\n\tcloseConfirmation: function closeConfirmation(ev) {\n\t\tcomponent.removeModal();\n\t},\n\n\t/**\n * function that will go to checkout page\n *\n * @param {object} ev\n *\n */\n\tcheckoutCart: function checkoutCart(ev) {\n\t\tcomponent.removeModal();\n\t\twindow.location = "/shopping-cart";\n\t}\n};\n\n/**\n* function that will start the process placement\n* process\n*\n* @return {object} placements\n*/\nvar startPlacementProcess = function startPlacementProcess(cartItem) {\n\tvar placements = (0, _lodashAmdModernObjectsClone2["default"])(_servicesHbrPersonalizationPlacementManager2["default"].placementObj, true);\n\n\t(0, _lodashAmdModernObjectsAssign2["default"])(placements, _servicesHbrPersonalizationPlacementManager2["default"].getMetaData());\n\n\t// Override some of the meta data\n\tplacements.cacheName = "add_to_cart_page.added_to_cart";\n\tplacements.category = "add-to-cart";\n\tplacements.itemIds = [];\n\n\tcartItem.items.forEach(function (item) {\n\t\tplacements.itemIds.push(item.productId);\n\t});\n\n\tplacements.numberOfItems = cartItem.items.length;\n\tplacements.handleJSON = _servicesHbrPersonalizationPlacementManager2["default"].triggerConfirmationPlacement;\n\n\tplacements.placements = [];\n\tplacements.placements.push(placements.cacheName);\n\n\treturn placements;\n};\n\n(0, _mixinsComponent2["default"])(AddToCartConfirmation, "add-to-cart-confirmation");\n\nAddToCartConfirmation.render = AddToCartConfirmation.prototype.render;\n\nexports["default"] = AddToCartConfirmation;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/add-to-cart/add-to-cart-confirmation/add-to-cart-confirmation.js\n ** module id = 265\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/add-to-cart/add-to-cart-confirmation/add-to-cart-confirmation.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _store = __webpack_require__(439);\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar mapState = {\n\tRRdispatch: function RRdispatch() {\n\t\t_store2["default"].dispatch({\n\t\t\ttype: "FETCH_RR_FULFILLED", payload: RR.data.JSON.placements\n\t\t});\n\t},\n\tRRgettingState: function RRgettingState() {\n\t\tfunction select(state) {\n\t\t\treturn state.RRreducer.data;\n\t\t}\n\t\treturn select(_store2["default"].getState());\n\t}\n};\nexports.mapState = mapState;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/redux/ReduxState/RR_State.js\n ** module id = 266\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/redux/ReduxState/RR_State.js?')},function(module,exports){eval('"use strict";\n\nexports.__esModule = true;\nexports["default"] = compose;\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/compose.js\n ** module id = 267\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/compose.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports.ActionTypes = undefined;\nexports['default'] = createStore;\n\nvar _isPlainObject = __webpack_require__(272);\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _symbolObservable = __webpack_require__(462);\n\nvar _symbolObservable2 = _interopRequireDefault(_symbolObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = exports.ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!(0, _isPlainObject2['default'])(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[_symbolObservable2['default']] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[_symbolObservable2['default']] = observable, _ref2;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/createStore.js\n ** module id = 268\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/createStore.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined;\n\nvar _createStore = __webpack_require__(268);\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _combineReducers = __webpack_require__(453);\n\nvar _combineReducers2 = _interopRequireDefault(_combineReducers);\n\nvar _bindActionCreators = __webpack_require__(452);\n\nvar _bindActionCreators2 = _interopRequireDefault(_bindActionCreators);\n\nvar _applyMiddleware = __webpack_require__(451);\n\nvar _applyMiddleware2 = _interopRequireDefault(_applyMiddleware);\n\nvar _compose = __webpack_require__(267);\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nvar _warning = __webpack_require__(270);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (false) {\n (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexports.createStore = _createStore2['default'];\nexports.combineReducers = _combineReducers2['default'];\nexports.bindActionCreators = _bindActionCreators2['default'];\nexports.applyMiddleware = _applyMiddleware2['default'];\nexports.compose = _compose2['default'];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/index.js\n ** module id = 269\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/index.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = warning;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/utils/warning.js\n ** module id = 270\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/utils/warning.js?")},function(module,exports,__webpack_require__){eval("var root = __webpack_require__(460);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_Symbol.js\n ** module id = 271\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_Symbol.js?")},function(module,exports,__webpack_require__){eval("var baseGetTag = __webpack_require__(454),\n getPrototype = __webpack_require__(456),\n isObjectLike = __webpack_require__(461);\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/isPlainObject.js\n ** module id = 272\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/isPlainObject.js?")},function(module,exports,__webpack_require__){eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(40)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha256.js\n ** module id = 273\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha256.js?"); },function(module,exports,__webpack_require__){eval("var inherits = __webpack_require__(40)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha512.js\n ** module id = 274\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha512.js?")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(Buffer, global) {/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <[email protected]> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = __webpack_require__(470)\nvar ieee754 = __webpack_require__(471)\nvar isArray = __webpack_require__(472)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(275).Buffer, (function() { return this; }())))\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/index.js\n ** module id = 275\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/buffer/index.js?"); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.videoUrl = videoUrl;\nexports.videoEmbedCode = videoEmbedCode;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsMemoize = __webpack_require__(314);\n\nvar _lodashAmdModernFunctionsMemoize2 = _interopRequireDefault(_lodashAmdModernFunctionsMemoize);\n\nvar accountId = "2071817190001";\nvar policyKey = "BCpkADawqM0_BkIpNQBw-Lbk2C0lOUfgcCL7h0IEpm58jxNabE-P64QU7qsOjNtrPYlco4OmmJfxnyYzdxLQLWXUkfgnAJdn5tFViIaf5fd5nAqtMdLSLO0NeT6i0pBIG4ZtNsdF278WBMJH";\n\nvar apiGet = function apiGet(suffix) {\n\treturn _jquery2["default"].ajax("https://edge.api.brightcove.com/playback/v1/accounts/" + accountId + suffix, { headers: { "Accept": "application/json;pk=" + policyKey } });\n};\n\nvar getPlaylist = (0, _lodashAmdModernFunctionsMemoize2["default"])(function (id) {\n\treturn apiGet("/playlists/" + id);\n});\nexports.getPlaylist = getPlaylist;\nvar getVideo = (0, _lodashAmdModernFunctionsMemoize2["default"])(function (id) {\n\treturn apiGet("/videos/" + id);\n});\n\nexports.getVideo = getVideo;\nvar seoName = function seoName(name) {\n\treturn name.toLowerCase().replace(/[^\\w ]/g, "").replace(/ /g, "-");\n};\n\nfunction videoUrl(video) {\n\tvar url = "/video/" + video.id + "/" + seoName(video.name);\n\tif (window.location.search.match(/(\\?|&)playlist=[a-zA-Z0-9\\-]+/)) {\n\t\turl = url + window.location.search;\n\t}\n\treturn url;\n}\n\nfunction videoEmbedCode(video) {\n\treturn "<div class=\'blog-video-embed\'><iframe width=\'480\' height=\'270\' style=\'overflow:hidden;\' scrolling=\'no\' src=\'" + window.location.origin + "/video/embed/" + video.id + "/" + seoName(video.name) + "\' frameborder=\'0\' allowfullscreen allowtransparency></iframe></div>";\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/video.js\n ** module id = 276\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/video.js?')},,function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = Flyout;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _componentsSignInSignInModal = __webpack_require__(50);\n\nvar _componentsSignInSignInModal2 = _interopRequireDefault(_componentsSignInSignInModal);\n\n__webpack_require__(261);\n\nvar flyoutTypes = {\n\tsave: __webpack_require__(66),\n\torganize: __webpack_require__(292),\n\tshare: __webpack_require__(107),\n\tdiscard: __webpack_require__(106),\n\t"share-list": __webpack_require__(293),\n\t"bulk-discard": __webpack_require__(286),\n\t"bulk-organize": __webpack_require__(287),\n\t"change-password": __webpack_require__(288),\n\t"forgot-password": __webpack_require__(290),\n\tnotification: __webpack_require__(291),\n\tembed: __webpack_require__(289)\n};\n\nvar templates = {\n\tbase: __webpack_require__(413),\n\tsignInPrompt: __webpack_require__(415),\n\tconfirmation: __webpack_require__(414),\n\t"forgot-password": __webpack_require__(260)\n};\n\nvar pointerPositions = {\n\ttopLeft: "pointer-top-left", // default style, class may not exist\n\ttopCenter: "pointer-top-center",\n\ttopRight: "pointer-top-right",\n\tbottomLeft: "pointer-bottom-left",\n\tbottomCenter: "pointer-bottom-center",\n\tbottomRight: "pointer-bottom-right"\n};\n\nvar flyoutDefaults = {\n\tpointerClass: pointerPositions.topLeft,\n\tcontainerTemplate: templates.base,\n\tcontainerContentTarget: "[js-target=\'flyout-content\']",\n\trequiresSignIn: true,\n\tsignInPromptTarget: "[js-target=\'show-sign-in\']",\n\tcontainerClasses: ["flyout", "clearfix"],\n\tcontainerTarget: "flyout-container",\n\tcloseButtonTarget: "hide-flyout",\n\tallowMultiple: false,\n\tconfirmationTimeout: 2000 // show confirmations for two seconds\n};\n\nfunction Flyout($el) {\n\tthis.initializeAsComponent($el);\n}\n\nFlyout.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target$=\'flyout\'],[data-js-target$=\'flyout\']": "show"\n\t},\n\n\tshow: function show(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\n\t\t// Because events are globally bound,\n\t\t// We need to manually set this.$el\n\t\tthis.$el = (0, _jquery2["default"])(ev.currentTarget);\n\n\t\tvar self = this;\n\n\t\t// Extract the type.\n\t\tvar target = this.$el.attr("js-target") || this.$el.data("js-target");\n\n\t\tvar type = target ? target.split("-flyout")[0] : undefined;\n\n\t\t// Generate the selectors used to render the flyout.\n\t\tvar flyout = flyoutTypes[type] || {};\n\n\t\tif (this.$el.attr("data-flyout-replace") && this.$el.attr("data-flyout-replace") === type) {\n\t\t\tthis.replaceFlyoutContent(flyout, templates[type]());\n\t\t\treturn;\n\t\t}\n\n\t\t// Cache offset information.\n\t\tvar offset = this.$el.offset();\n\n\t\t// Add the entire element\'s height to the offset.\n\t\toffset.top += this.$el.height();\n\n\t\t// Find the data necessary for the flyout.\n\t\tvar flyoutData = _jquery2["default"].isFunction(flyout.getData) ? flyout.getData(this.$el) : {};\n\n\t\tvar render = this.renderFlyoutFragment(offset, flyoutData, flyout);\n\n\t\trender.then(function (docFragment) {\n\t\t\t(0, _jquery2["default"])("body").append(docFragment);\n\n\t\t\t// The newly created fragment.\n\t\t\tvar $el = (0, _jquery2["default"])("[js-target=\'flyout-container\']");\n\n\t\t\tvar modulePos = _servicesState2["default"].getModulePosition(self.$el.offset().top, self.$el.offset().left, $el.outerHeight(true), $el.outerWidth(true));\n\t\t\tif (modulePos.adjustPos) {\n\t\t\t\t$el.css("top", modulePos.top || offset.top).css("left", modulePos.left || "").css("right", modulePos.right || "").removeClass(function (index, className) {\n\t\t\t\t\tclassName.replace(/(^|\\s)pointer-\\S+/g, "");\n\t\t\t\t}).addClass(modulePos.className);\n\t\t\t}\n\n\t\t\tvar navItems = $el.find("[js-target=\'share-flyout-nav-item\']");\n\t\t\tvar sharing = $el.find("[js-target=\'flyout-share-content\']");\n\t\t\tif (sharing.length > 0 && navItems.length > 0) {\n\t\t\t\tvar shNetwork = (0, _jquery2["default"])(sharing.children()[0]).attr("js-target").split("-")[1];\n\t\t\t\t_jquery2["default"].each(navItems, function (i, item) {\n\t\t\t\t\t(0, _jquery2["default"])(item).removeClass("active");\n\t\t\t\t});\n\t\t\t\t_jquery2["default"].each(navItems, function (i, item) {\n\t\t\t\t\tif (shNetwork === item.dataset.shareNetwork) {\n\t\t\t\t\t\t(0, _jquery2["default"])(item).addClass("active");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (modulePos.move > 0) {\n\t\t\t\t(0, _jquery2["default"])("body, html").animate({\n\t\t\t\t\tscrollTop: (0, _jquery2["default"])(window).scrollTop() + modulePos.move\n\t\t\t\t}, "500");\n\t\t\t}\n\t\t\t$el.show();\n\t\t\t$el.find("input:first").focus();\n\t\t\tif (_jquery2["default"].isFunction(flyout.bindInteractions)) {\n\t\t\t\tflyout.bindInteractions($el);\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * validateFlyoutType\n * Ensures a flyout type exists and exports all necessary methods\n * @param {String} type\n */\n\tvalidateFlyoutType: function validateFlyoutType(type) {\n\t\tif (!flyoutTypes[type]) {\n\t\t\tthrow new Error("Cannot instantiate flyout of type: " + type);\n\t\t}\n\n\t\tif (!_jquery2["default"].isFunction(flyoutTypes[type].render)) {\n\t\t\tthrow new Error("Flyout type " + type + "does not export a render function");\n\t\t}\n\t},\n\n\t/**\n * replaceFlyoutContent\n * Empty the flyout container currently displayed and fill it with another flyout\'s template contents\n * @param {Object} flyout - flyout object\n * @param {Object} tmplt - template object\n */\n\treplaceFlyoutContent: function replaceFlyoutContent(flyout, tmplt) {\n\t\tvar elt = (0, _jquery2["default"])("[js-target=\'flyout-container\']");\n\n\t\telt.empty();\n\t\t(0, _jquery2["default"])(elt).append(templates.base);\n\t\t(0, _jquery2["default"])(elt).append(tmplt);\n\t\telt.find("input").focus();\n\t\telt.find("[js-target=\'" + flyoutDefaults.closeButtonTarget + "\']").on("click", function (e) {\n\t\t\te.preventDefault();\n\t\t\t(0, _jquery2["default"])(elt).remove();\n\t\t});\n\n\t\tif (_jquery2["default"].isFunction(flyout.bindInteractions)) {\n\t\t\tflyout.bindInteractions(elt);\n\t\t}\n\n\t\t(0, _jquery2["default"])(flyout).on("destroy", function (e, confrm) {\n\t\t\tif (confrm && confrm.message) {\n\t\t\t\telt.empty();\n\t\t\t\t(0, _jquery2["default"])(elt).append(templates.base);\n\t\t\t\t(0, _jquery2["default"])(elt).append(templates.confirmation(confrm));\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t(0, _jquery2["default"])(elt).remove();\n\t\t\t\t}, flyoutDefaults.confirmationTimeout);\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])(elt).remove();\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * renderFlyoutFragment\n * Create a flyout container and fill it using the type\'s render method\n * @param {Object} position - object which provides top and left properties\n * @param {Object} flyoutData - Data object provided to the flyout.\n * @param {object} flyout - The flyout to render.\n * @returns {DocumentFragment}\n */\n\trenderFlyoutFragment: function renderFlyoutFragment(position, flyoutData, flyout) {\n\t\tvar overrideOptions = {};\n\n\t\tif (_jquery2["default"].isFunction(flyout.getOverrideOptions)) {\n\t\t\toverrideOptions = flyout.getOverrideOptions();\n\t\t}\n\n\t\t// options are for adjusting style, positioning, etc\n\t\tvar options = _jquery2["default"].extend({}, flyoutDefaults, overrideOptions);\n\n\t\tvar flyoutContainerTarget = "[js-target=\'" + options.containerTarget + "\']";\n\t\tvar flyoutCloseTarget = "[js-target=\'" + options.closeButtonTarget + "\']";\n\n\t\tif (!options.allowMultiple && (0, _jquery2["default"])(flyoutContainerTarget).length > 0) {\n\t\t\t(0, _jquery2["default"])(flyoutContainerTarget).remove(); // kill existing\n\t\t}\n\n\t\tvar flyoutRenderDeferred = _jquery2["default"].Deferred();\n\t\tvar flyoutDocFragment = document.createDocumentFragment();\n\t\tvar container = document.createElement("div");\n\t\tcontainer.className = options.containerClasses.join(" ");\n\t\t(0, _jquery2["default"])(container).addClass(options.pointerClass);\n\t\tcontainer.setAttribute("js-target", options.containerTarget);\n\n\t\tif (flyoutData) {\n\t\t\tif (flyoutData.title === "Order for your team and save!" || flyoutData.title === "Format Details" || flyoutData.title === "Quantity Pricing Details") {\n\t\t\t\tvar containerOverlay = document.createElement("div");\n\t\t\t\tcontainerOverlay.className = "modal-overlay--idp";\n\t\t\t\tdocument.body.appendChild(containerOverlay);\n\t\t\t\t(0, _jquery2["default"])(container).addClass("flyout-container--new");\n\t\t\t}\n\t\t}\n\n\t\t(0, _jquery2["default"])(container).css(position);\n\t\tcontainer.innerHTML = options.containerTemplate();\n\t\tflyoutDocFragment.appendChild(container);\n\n\t\t(options.requiresSignIn ? _componentsSignInSignInModal2["default"].ensureSignedIn("save") : _jquery2["default"].Deferred().resolve()).then(function () {\n\t\t\tflyout.render(flyoutData).then(function (containerContent) {\n\t\t\t\t(0, _jquery2["default"])(container).append(containerContent);\n\t\t\t\tflyoutRenderDeferred.resolve(flyoutDocFragment);\n\t\t\t});\n\t\t});\n\n\t\tfunction showConfirmation(confirmation) {\n\t\t\tcontainer.innerHTML = options.containerTemplate();\n\t\t\t(0, _jquery2["default"])(container).append(templates.confirmation(confirmation));\n\t\t}\n\n\t\tfunction destroy(e, confirmation) {\n\t\t\tif (confirmation && confirmation.message) {\n\t\t\t\tshowConfirmation(confirmation);\n\t\t\t\tsetTimeout(destroy, options.confirmationTimeout);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t(0, _jquery2["default"])(flyoutContainerTarget).remove();\n\t\t\tif (containerOverlay) {\n\t\t\t\tdocument.body.removeChild(containerOverlay);\n\t\t\t}\n\t\t}\n\n\t\t// Bind to close target, and destroy event\n\t\t(0, _jquery2["default"])(flyout).on("destroy", destroy);\n\t\t(0, _jquery2["default"])(container).one("clickoutside", destroy);\n\t\t(0, _jquery2["default"])(container).find(flyoutCloseTarget).on("click", function (e) {\n\t\t\te.preventDefault();\n\t\t\tdestroy();\n\t\t});\n\n\t\treturn flyoutRenderDeferred.promise();\n\t}\n};\n\n(0, _mixinsComponent2["default"])(Flyout, "body");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/flyout.js\n ** module id = 278\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/flyout.js?')},function(module,exports){eval('/**\n * URL Query String Parameters Manipulation: get, set/add, remove\n *\n * @module: support/urlparams\n * @author: Stepan Sokolov\n */\n\n/**\n * @exports urlParamGet\n *\n * Search querystring for the specified parameter\n * (this is a lower level function;\n * see getUrlParam, getUrlParamValue)\n *\n * @param {string} href - the URL to be searched\n * @param {string} p - the URL parameter name\n * @returns {object} - the result of regex search\n * with \\1 and \\2 corresponding to the parameter\n * name and value\n */\n"use strict";\n\nexports.urlParamGet = function (href, p) {\n this.urlParamRes = (this.urlParamRex = new RegExp("[?&](" + p + "=)([^&#]*)")).exec(href);\n return this.urlParamRes;\n};\n\n/**\n * @exports getUrlParam\n *\n * Search querystring for the specified parameter\n *\n * @param {string} href - the URL to be searched\n * @param {string} p - the URL parameter name\n * @returns {string} - the result is a "name=value" string\n */\nexports.getUrlParam = function (href, p) {\n return (p = this.urlParamGet(href, p)) && p[1] + p[2];\n};\n\n/**\n * @exports getUrlParamValue\n *\n * Search querystring for the specified parameter, return its value\n *\n * @param {string} href - the URL to be searched\n * @param {string} p - the URL parameter name\n * @returns {string} - the parameter value, if found, null otherwise\n */\nexports.getUrlParamValue = function (href, p) {\n return (p = this.urlParamGet(href, p)) && p[2];\n};\n\n/**\n * @exports setUrlParam\n *\n * Search querystring for the specified parameter, set its value\n *\t\tif no such parameter found, add it and assign it the provided value\n *\n * @param {string} href - the URL to be searched\n * @param {string} p - the URL parameter name\n * @param {string} v - the value to assign to the parameter\n * @returns {string} - the result is the newly constructed URL\n */\nexports.setUrlParamValue = function (href, p, v) {\n if (this.urlParamGet(href, p)) {\n var i = this.urlParamRes.index;\n return href.substring(0, i + this.urlParamRes[1].length + 1) + v + href.substring(i + this.urlParamRes[0].length);\n } else {\n return href + (href.indexOf("?") < 0 ? "?" : "&") + p + "=" + v;\n }\n};\n\n/**\n * @exports removeUrlParam\n *\n * Remove the specified parameter from the querystring\n *\n * @param {string} href - the URL to be searched\n * @param {string} p - the URL parameter name\n * @returns {string} - the result is the newly constructed URL\n */\nexports.removeUrlParam = function (href, p) {\n if (!this.urlParamGet(href, p)) {\n return href;\n }\n var i = this.urlParamRes.index,\n l = this.urlParamRes[0].length + i;\n if (href[i] === "?" && href.length > l) {\n i++;\n }\n return href.substring(0, i) + href.substring(l);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/urlparams.js\n ** module id = 279\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/urlparams.js?')},function(module,exports,__webpack_require__){eval('/**\n * @module components/stream/stream-list\n * @requires module:moment\n * @requires module:jquery\n * @requires module:common\n * @requires module:mixins/component\n * @requires module:services/stream\n */\n\n// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = StreamList;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _moment = __webpack_require__(1);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _lodashAmdModernObjectsClone = __webpack_require__(48);\n\nvar _lodashAmdModernObjectsClone2 = _interopRequireDefault(_lodashAmdModernObjectsClone);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\nvar _lodashAmdModernArraysCompact = __webpack_require__(448);\n\nvar _lodashAmdModernArraysCompact2 = _interopRequireDefault(_lodashAmdModernArraysCompact);\n\n// Component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _personalizationPlacementPersonalizationPlacement = __webpack_require__(96);\n\nvar _personalizationPlacementPersonalizationPlacement2 = _interopRequireDefault(_personalizationPlacementPersonalizationPlacement);\n\n// Models\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\n// Services.\n\nvar _servicesStream = __webpack_require__(441);\n\nvar _servicesStream2 = _interopRequireDefault(_servicesStream);\n\nvar _servicesHbrPersonalizationPlacementManager = __webpack_require__(97);\n\nvar _servicesHbrPersonalizationPlacementManager2 = _interopRequireDefault(_servicesHbrPersonalizationPlacementManager);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\n// Utility\n\nvar _supportUrlparams = __webpack_require__(279);\n\nvar _supportUrlparams2 = _interopRequireDefault(_supportUrlparams);\n\n// Templates.\n\nvar _templateTemplatesPage = __webpack_require__(507);\n\nvar _templateTemplatesPage2 = _interopRequireDefault(_templateTemplatesPage);\n\nvar _templateTemplatesSpinner = __webpack_require__(508);\n\nvar _templateTemplatesSpinner2 = _interopRequireDefault(_templateTemplatesSpinner);\n\nvar _templatePersonalizationPlacementTemplatesStreamEntry = __webpack_require__(99);\n\nvar _templatePersonalizationPlacementTemplatesStreamEntry2 = _interopRequireDefault(_templatePersonalizationPlacementTemplatesStreamEntry);\n\nvar _templatePersonalizationPlacementTemplatesLoadMore = __webpack_require__(98);\n\nvar _templatePersonalizationPlacementTemplatesLoadMore2 = _interopRequireDefault(_templatePersonalizationPlacementTemplatesLoadMore);\n\n// Types.\n\nvar _templateTemplatesTypes = __webpack_require__(509);\n\nvar _templateTemplatesTypes2 = _interopRequireDefault(_templateTemplatesTypes);\n\nvar _templateTemplatesVlTypes = __webpack_require__(510);\n\nvar _templateTemplatesVlTypes2 = _interopRequireDefault(_templateTemplatesVlTypes);\n\nvar _templateTemplatesIssue = __webpack_require__(505);\n\nvar _templateTemplatesIssue2 = _interopRequireDefault(_templateTemplatesIssue);\n\nvar _templateTemplatesMaintenance = __webpack_require__(506);\n\nvar _templateTemplatesMaintenance2 = _interopRequireDefault(_templateTemplatesMaintenance);\n\nfunction StreamList($el) {\n\tthis.initializeAsComponent($el);\n\n\tthis.pagesLoaded = parseInt(_supportUrlparams2["default"].getUrlParamValue(window.location.href, "loaded"), 10);\n\tthis.pagesLoaded = isNaN(this.pagesLoaded) ? 0 : this.pagesLoaded;\n\n\tthis.pageNumber = $el.data("page-number") !== undefined ? $el.data("page-number") : this.pagesLoaded ? this.pagesLoaded : 1;\n\n\t// default the page size to 8, same as the number\n\t// of items per page.\n\tthis.pageSize = $el.attr("data-page-size") !== undefined ? 10 : 8;\n\tvar endPoint = this.dataset.streamEndpoint;\n\n\tthis.isPlacement = endPoint ? endPoint.indexOf("placements") >= 0 : false;\n\tvar placementSettings;\n\n\tif (this.isPlacement) {\n\t\tplacementSettings = startPlacementProcess(endPoint);\n\t\tif ((0, _jquery2["default"])(this.$el).closest("stream-content").hasClass("active")) {\n\t\t\t_servicesHbrPersonalizationPlacementManager2["default"].addToQueue(placementSettings);\n\t\t}\n\t}\n\n\tthis.$el.on("request:placement", (function () {\n\t\tprocessPlacement(placementSettings);\n\t\tif (this.pageNumber === 0 && !this.changeInProgress) {\n\t\t\tthis.load();\n\t\t}\n\t}).bind(this));\n\n\tvar component = this;\n\t(0, _jquery2["default"])("body").on("update:placement", function (ev, data) {\n\t\tev.stopImmediatePropagation();\n\n\t\tcomponent.placementName = data.name;\n\t\tvar category = data.name.split(".")[1];\n\t\tvar placementEl = (0, _jquery2["default"])("personalization-placement[data-placement-id=\'" + category + "\']");\n\t\tplacementEl.data("placementName", data.name);\n\t\tvar categoryObj = _servicesHbrPersonalizationPlacementManager2["default"].placementTemplateMap[_servicesHbrPersonalizationPlacementManager2["default"].placementCategory][category];\n\t\tif (data.skus && data.skus.length > component.pageSize) {\n\t\t\tdata.skus = data.skus.slice(0, component.pageSize);\n\t\t\tdata.showLoadMore = true;\n\t\t}\n\n\t\t_personalizationPlacementPersonalizationPlacement2["default"].render(placementEl, categoryObj.templateName, data, categoryObj.type).then(function () {\n\t\t\t//var streamList = placementEl.closest("stream-list");\n\t\t\t//stream.cloneAd(streamList);\n\t\t});\n\t});\n}\n\nStreamList.prototype = {\n\tevents: {\n\t\t"click [js-target=\'load-ten-more-link\']": "loadMore",\n\t\t"change [js-target=\'bulk-action-checkbox\']": "bulkUi",\n\t\t"click [js-target=\'reload-stream-list\']": "reload"\n\t},\n\n\tbulkUi: function bulkUi(ev) {\n\t\tvar $bulkUi = (0, _jquery2["default"])("[js-target=\'bulk-discard-flyout\'], [js-target=\'bulk-organize-flyout\']");\n\t\t$bulkUi.prop("disabled", (0, _jquery2["default"])("[js-target=\'bulk-action-checkbox\']:checked").length === 0);\n\t},\n\n\tloadMore: function loadMore(ev) {\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\n\t\tvar loaderEntry = (0, _jquery2["default"])(ev.currentTarget).closest(".stream-entry");\n\n\t\tif (this.isPlacement) {\n\t\t\tvar placementEl = (0, _jquery2["default"])(ev.currentTarget).closest("personalization-placement");\n\t\t\tvar placementName = this.placementName || (0, _jquery2["default"])(placementEl).data().placementName;\n\t\t\tthis.updatePlacement(_servicesLocalstorageUtil2["default"].getCache(placementName));\n\t\t\tloaderEntry.remove();\n\t\t} else {\n\t\t\t(0, _jquery2["default"])(ev.currentTarget).replaceWith((0, _templateTemplatesSpinner2["default"])());\n\t\t\tthis.load().always(function () {\n\t\t\t\tloaderEntry.remove();\n\t\t\t});\n\t\t}\n\t},\n\n\tchange: function change(endpoint, params) {\n\t\tthis.$el.data("stream-endpoint", endpoint);\n\t\tthis.$el.data("stream-params", params);\n\t\tthis.pageNumber = 0;\n\t\tthis.changeInProgress = true;\n\t\tthis.load();\n\t},\n\n\treload: function reload(ev) {\n\t\tev.preventDefault();\n\t\tthis.pageNumber = 0;\n\t\tthis.load();\n\t},\n\n\tload: function load() {\n\t\tvar endpoint = this.$el.data("stream-endpoint");\n\t\tthis.pagesLoaded++;\n\t\treturn _servicesStream2["default"].loadMore(endpoint, { number: endpoint.match(/search/) || endpoint.match(/webinars/) || endpoint.match(/visual-library/) ? this.pagesLoaded : this.pageNumber, size: this.pageSize }, (0, _lodashAmdModernArraysCompact2["default"])([this.$el.data("pass-query") ? window.location.search.slice(1) : null, this.$el.data("page-context") ? "id=" + this.$el.data("page-context") : null, this.$el.data("stream-params")]).join("&")).always((function (data) {\n\t\t\tvar referral = this.getReferralCode();\n\t\t\tthis.$("> ul")[this.pageNumber === 0 ? "html" : "append"](data.maintenanceStatus ? _templateTemplatesMaintenance2["default"] : _servicesState2["default"].initializeElement((0, _jquery2["default"])((0, _templateTemplatesPage2["default"])({\n\t\t\t\thide: data.page.last || !this.$el.data("allow-unlimited") && this.pageNumber >= 2,\n\t\t\t\tentries: data.entry || [],\n\t\t\t\tcontentType: data.type || (endpoint.match(/following/) ? "topics" : endpoint.match(/user\\/history$/) ? "activity" : endpoint.indexOf("user/saves") !== -1 || endpoint.indexOf("user/list") !== -1 ? this.$el.data("stream-params") === "newFolderCreated" ? "newFolderCreated" : "library" : endpoint.match(/ordered/) ? "ordered" : "content"),\n\t\t\t\trenderEntry: function renderEntry(entry) {\n\t\t\t\t\tentry.endpoint = endpoint;\n\t\t\t\t\tentry.category = entry.category || "";\n\t\t\t\t\treturn (endpoint.match(/magazine/) ? _templateTemplatesIssue2["default"] : endpoint.match(/visual-library/) ? _templateTemplatesVlTypes2["default"] : _templateTemplatesTypes2["default"])({ entry: entry, moment: _moment2["default"], user: _modelsUser2["default"], referral: referral });\n\t\t\t\t},\n\t\t\t\tuser: _modelsUser2["default"]\n\t\t\t}))));\n\t\t\tthis.pageNumber++;\n\t\t\t// if search, replace history\n\t\t\tif (endpoint.match(/search/) || endpoint.match(/webinars/) || endpoint.match(/visual-library/)) {\n\t\t\t\twindow.history.replaceState(null, this.pagesLoaded, _supportUrlparams2["default"].setUrlParamValue(window.location.href, "loaded", this.pagesLoaded));\n\t\t\t}\n\t\t\tthis.changeInProgress = false;\n\t\t\tvar streamListInfo = {};\n\t\t\tstreamListInfo.streamEndpoint = this.$el.data("stream-endpoint");\n\t\t\tstreamListInfo.dataLength = data.entry ? data.entry.length : 0;\n\t\t\tif (this.$el.data("stream-endpoint").match(/following/)) {\n\t\t\t\tstreamListInfo.topicName = this.$el.data("topic-name");\n\t\t\t}\n\t\t\t(0, _jquery2["default"])(document).trigger("stream-list:loaded", streamListInfo);\n\t\t}).bind(this));\n\t},\n\n\t/**\n * function that will return the appropriate referral code for current page\n *\n */\n\tgetReferralCode: function getReferralCode() {\n\t\tvar REFERRAL_CODE = "03069";\n\t\tif (this.$el.data("stream-endpoint").match(/topics/)) {\n\t\t\treturn REFERRAL_CODE;\n\t\t} else if (this.$el.data("stream-endpoint").match(/search\\/more-results/)) {\n\t\t\treturn "02749";\n\t\t} else {\n\t\t\tvar pageContext = this.$el.data("page-context");\n\t\t\tvar pageId, pageVars;\n\t\t\tif (pageContext !== undefined && pageContext !== "") {\n\t\t\t\tpageVars = pageContext.split(".");\n\t\t\t\tpageId = pageVars[pageVars.length - 1];\n\t\t\t\tif (pageId.toUpperCase() === "MOST-POPULAR" || pageId.toUpperCase() === "HOME") {\n\t\t\t\t\treturn REFERRAL_CODE;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn "";\n\t},\n\n\t/**\n * function that will update the placement when load more has been\n * clicked\n *\n * @param {object} data\n * @param {object} page\n * @param {function} template\n *\n */\n\tupdatePlacement: function updatePlacement(data) {\n\t\tvar start = this.pageSize * this.pageNumber;\n\t\tvar end = start + this.pageSize;\n\t\tvar component = this;\n\n\t\tvar thisData = _personalizationPlacementPersonalizationPlacement2["default"].updateResponseObject(data[0]);\n\t\tvar skuList = thisData.skus.slice(start, end);\n\t\tthis.$("personalization-placement > ul").append((0, _templatePersonalizationPlacementTemplatesStreamEntry2["default"])({ skus: skuList }));\n\t\tthis.pageNumber++;\n\n\t\tif (thisData.skus.length > end) {\n\t\t\tcomponent.$("personalization-placement > ul").append((0, _templatePersonalizationPlacementTemplatesLoadMore2["default"])());\n\t\t}\n\t}\n};\n\n/**\n* function that will start the process placement\n* process\n*\n* @param {string} endPoint\n*\n* @return {object} placements\n*/\nvar startPlacementProcess = function startPlacementProcess(endPoint) {\n\tvar placements = (0, _lodashAmdModernObjectsClone2["default"])(_servicesHbrPersonalizationPlacementManager2["default"].placementObj, true);\n\n\t(0, _lodashAmdModernObjectsAssign2["default"])(placements, _servicesHbrPersonalizationPlacementManager2["default"].getMetaData());\n\n\t// setup the correct placement\n\tvar placementSetting = endPoint.split("/")[2];\n\t// Override some of the meta data\n\tplacements.cacheName = placementSetting;\n\n\tplacements.handleJSON = _servicesHbrPersonalizationPlacementManager2["default"].triggerPlacement;\n\n\tplacements.placements = [];\n\tplacements.placements.push(placementSetting);\n\n\treturn placements;\n};\n\n/**\n* function that will get the appropriate placements\n* from the placement service and cache them\n*\n* @param {object} dataSet\n*\n* @return {object}\n*/\nvar processPlacement = function processPlacement(dataSet) {\n\t// placementService.reset();\n\t_servicesHbrPersonalizationPlacementManager2["default"].initialize(dataSet);\n\t_servicesHbrPersonalizationPlacementManager2["default"].startProcess();\n};\n\n(0, _mixinsComponent2["default"])(StreamList, "stream-list");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/stream-section/stream-list/stream-list.js\n ** module id = 280\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/stream-list.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernCollectionsContains = __webpack_require__(41);\n\nvar _lodashAmdModernCollectionsContains2 = _interopRequireDefault(_lodashAmdModernCollectionsContains);\n\nvar _lodashAmdModernFunctionsOnce = __webpack_require__(114);\n\nvar _lodashAmdModernFunctionsOnce2 = _interopRequireDefault(_lodashAmdModernFunctionsOnce);\n\nvar _lodashAmdModernChainingTap = __webpack_require__(113);\n\nvar _lodashAmdModernChainingTap2 = _interopRequireDefault(_lodashAmdModernChainingTap);\n\nvar _supportGeoip2 = __webpack_require__(310);\n\nvar _supportGeoip22 = _interopRequireDefault(_supportGeoip2);\n\nvar EU_CODES = ["EU", "BE", "BG", "CZ", "DK", "DE", "EE", "IE", "EL", "ES", "FR", "IT", "CY", "LV", "LT", "LU", "HU", "MT", "NL", "AT", "PL", "PT", "RO", "SI", "SK", "FI", "SE", "UK", "NO", "CH", "AL", "BA", "HR"];\n\nvar DOM_CODES = ["US", "CA"];\n\nvar US_CODE = "US";\n\nexports.determineIfEU = (0, _lodashAmdModernFunctionsOnce2["default"])(function () {\n\treturn (0, _lodashAmdModernChainingTap2["default"])(_jquery2["default"].Deferred(), function (promise) {\n\t\t_supportGeoip22["default"].country(function (res) {\n\t\t\tpromise.resolve((0, _lodashAmdModernCollectionsContains2["default"])(EU_CODES, res.country.iso_code));\n\t\t});\n\t});\n});\n\nexports.determineIfDomesticUser = (0, _lodashAmdModernFunctionsOnce2["default"])(function () {\n\treturn (0, _lodashAmdModernChainingTap2["default"])(_jquery2["default"].Deferred(), function (promise) {\n\t\t_supportGeoip22["default"].country(function (res) {\n\t\t\tpromise.resolve((0, _lodashAmdModernCollectionsContains2["default"])(DOM_CODES, res.country.iso_code));\n\t\t});\n\t});\n});\n\nvar usDomesticPromise;\nexports.determineIfUSDomesticUser = function () {\n\tif (!usDomesticPromise) {\n\t\tusDomesticPromise = _jquery2["default"].Deferred();\n\t\t_supportGeoip22["default"].country(function (res) {\n\t\t\tusDomesticPromise.resolve(res.country.iso_code === US_CODE);\n\t\t});\n\t}\n\treturn usDomesticPromise;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/geoip.js\n ** module id = 281\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/geoip.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = FollowSubscribe;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _componentsSignInSignIn = __webpack_require__(61);\n\nvar _componentsSignInSignIn2 = _interopRequireDefault(_componentsSignInSignIn);\n\nvar _componentsSignInSignInModal = __webpack_require__(50);\n\nvar _componentsSignInSignInModal2 = _interopRequireDefault(_componentsSignInSignInModal);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar _lodashAmdModernCollectionsContains = __webpack_require__(41);\n\nvar _lodashAmdModernCollectionsContains2 = _interopRequireDefault(_lodashAmdModernCollectionsContains);\n\n__webpack_require__(309);\n\nvar trigger = __webpack_require__(26).trigger;\n\nfunction FollowSubscribe($el) {\n\tthis.initializeAsComponent($el);\n}\n\nFollowSubscribe.prototype = {\n\n\tsuccessHandler: null,\n\tfailureHandler: null,\n\n\tevents: {\n\t\t"click [js-target=\'enable-this\']": "enable",\n\t\t"click [js-target=\'enable-this-by-email\']": "enableByEmail",\n\t\t"click [js-target=\'disable-this\']": "disable",\n\t\t"click [js-target=\'sign-in-this\']": "renderSignInModal"\n\t},\n\n\t/**\n * Makes a request to the interaction service.\n *\n * @private\n * @param {object} evt - The forwarded jQuery event object.\n * @param {string} method - The request method to use.\n */\n\tinteractionRequest: function interactionRequest(evt, method) {\n\t\t// Build the content object from the data attributes.\n\t\tvar component = this;\n\t\tvar contentObject = _jquery2["default"].extend({}, this.$el.context.dataset);\n\n\t\t// Normalize the activity to the type.\n\t\tcontentObject.type = contentObject.activity;\n\t\tdelete contentObject.activity;\n\t\tdelete contentObject.id;\n\n\t\t// Remove the component attachment.\n\t\tdelete contentObject.component;\n\n\t\t// Optimistic success.\n\t\tcomponent.$el.toggleClass("disabled");\n\n\t\t// Transmit this interaction.\n\t\t_servicesHbrInteraction2["default"].request(contentObject.type, method, contentObject).then((function () {\n\t\t\tif (_servicesState2["default"].current.indexOf("guest") !== 0) {\n\t\t\t\t_modelsUser2["default"].fetch();\n\t\t\t\tif (this.$el.data("activity") === "topic") {\n\t\t\t\t\t(0, _jquery2["default"])(document).trigger("topics:change");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.$el.context.successHandler) {\n\t\t\t\tthis.$el.context.successHandler(evt);\n\t\t\t}\n\t\t\tif (method === "post") {\n\t\t\t\t(0, _jquery2["default"])("body").trigger("follow:success", contentObject);\n\t\t\t}\n\t\t}).bind(this)).fail((function () {\n\t\t\tif (this.$el.context.failureHandler) {\n\t\t\t\tthis.$el.context.failureHandler("unknown error", evt);\n\t\t\t}\n\t\t}).bind(this));\n\t},\n\n\tenable: function enable(evt) {\n\t\tevt.stopPropagation();\n\t\tevt.stopImmediatePropagation();\n\t\tevt.preventDefault();\n\n\t\treturn this.ensureAuthenticated(evt, "post");\n\t},\n\n\tenableByEmail: function enableByEmail(evt) {\n\t\tevt.stopPropagation();\n\t\tevt.stopImmediatePropagation();\n\t\tevt.preventDefault();\n\t\treturn this.signUpByEmail(evt, "post");\n\t},\n\n\tdisable: function disable(evt) {\n\t\tevt.stopPropagation();\n\t\tevt.stopImmediatePropagation();\n\t\tevt.preventDefault();\n\n\t\treturn this.ensureAuthenticated(evt, "delete");\n\t},\n\n\t/**\n * Ensure the user is authenticated, otherwise open the flyout - unless we\'re using an email field.\n *\n * @private\n * @param {object} evt - A jQuery event object.\n * @param {string} method - The request method to use.\n */\n\tensureAuthenticated: function ensureAuthenticated(evt, method) {\n\t\t_componentsSignInSignInModal2["default"].ensureSignedIn().then((function () {\n\t\t\tthis.interactionRequest(evt, method);\n\t\t}).bind(this));\n\t},\n\n\tsignUpByEmail: function signUpByEmail(evt, method) {\n\t\tif (this.dataset.email && this.dataset.email.length > 2 && this.dataset.email.indexOf("@") !== -1) {\n\t\t\tthis.$el.context.dataset.email = this.dataset.email;\n\t\t\tthis.interactionRequest(evt, method);\n\t\t\ttrigger("metrics:dcs_email_update_signup", { email: this.dataset.email });\n\t\t} else if (_servicesState2["default"].current.indexOf("guest") !== 0) {\n\t\t\tthis.interactionRequest(evt, method);\n\t\t} else {\n\t\t\tif (this.$el.context.failureHandler) {\n\t\t\t\tthis.$el.context.failureHandler("invalid email", evt);\n\t\t\t}\n\t\t}\n\t},\n\n\trenderSignInModal: function renderSignInModal(ev) {\n\t\tev.preventDefault();\n\t\t_componentsSignInSignInModal2["default"].render();\n\t}\n};\n\n/**\n * Update all existing instances with the server-sent state.\n *\n * @param {array} list - The list of server-sent state items.\n */\nFollowSubscribe.updateAll = function (list) {\n\tvar ulist = (0, _lodashAmdModernCollectionsMap2["default"])(list, function (s) {\n\t\treturn s.toUpperCase();\n\t});\n\t(0, _jquery2["default"])("follow-subscribe").filter(function () {\n\t\treturn (0, _lodashAmdModernCollectionsContains2["default"])(ulist, (0, _jquery2["default"])(this).data("name").toUpperCase());\n\t}).addClass("disabled");\n};\n\nFollowSubscribe.updateFollowing = function (list) {\n\tvar topics = (0, _lodashAmdModernCollectionsMap2["default"])(list, function (s) {\n\t\treturn s.toUpperCase();\n\t});\n\t(0, _jquery2["default"])("follow-subscribe[data-activity=\'topic\']").filter(function () {\n\t\treturn (0, _lodashAmdModernCollectionsContains2["default"])(topics, (0, _jquery2["default"])(this).data("name").toUpperCase());\n\t}).addClass("disabled");\n};\n\nFollowSubscribe.updateSubscriptions = function (list) {\n\tvar newsletters = (0, _lodashAmdModernCollectionsMap2["default"])(list, function (s) {\n\t\treturn s.toUpperCase();\n\t});\n\t(0, _jquery2["default"])("follow-subscribe[data-activity=\'newsletter\']").filter(function () {\n\t\treturn (0, _lodashAmdModernCollectionsContains2["default"])(newsletters, (0, _jquery2["default"])(this).data("name").toUpperCase());\n\t}).addClass("disabled");\n};\n\n(0, _mixinsComponent2["default"])(FollowSubscribe, "follow-subscribe");\n_servicesState2["default"].addInitializer(FollowSubscribe);\n_componentsSignInSignIn2["default"].signInPromise.then(function () {\n\tFollowSubscribe.updateSubscriptions(_modelsUser2["default"].getNewsletters());\n\tFollowSubscribe.updateFollowing(_modelsUser2["default"].getFollowing());\n});\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/follow-subscribe/follow-subscribe.js\n ** module id = 282\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/follow-subscribe/follow-subscribe.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(22), __webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createCallback, forOwn) {\n\n /**\n * Iterates over elements of a collection, returning the first element that\n * the callback returns truey for. The callback is bound to `thisArg` and\n * invoked with three arguments; (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @alias detect, findWhere\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {*} Returns the found element, else `undefined`.\n * @example\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36, 'blocked': false },\n * { 'name': 'fred', 'age': 40, 'blocked': true },\n * { 'name': 'pebbles', 'age': 1, 'blocked': false }\n * ];\n *\n * _.find(characters, function(chr) {\n * return chr.age < 40;\n * });\n * // => { 'name': 'barney', 'age': 36, 'blocked': false }\n *\n * // using \"_.where\" callback shorthand\n * _.find(characters, { 'age': 1 });\n * // => { 'name': 'pebbles', 'age': 1, 'blocked': false }\n *\n * // using \"_.pluck\" callback shorthand\n * _.find(characters, 'blocked');\n * // => { 'name': 'fred', 'age': 40, 'blocked': true }\n */\n function find(collection, callback, thisArg) {\n callback = createCallback(callback, thisArg, 3);\n\n var index = -1,\n length = collection ? collection.length : 0;\n\n if (typeof length == 'number') {\n while (++index < length) {\n var value = collection[index];\n if (callback(value, index, collection)) {\n return value;\n }\n }\n } else {\n var result;\n forOwn(collection, function(value, index, collection) {\n if (callback(value, index, collection)) {\n result = value;\n return false;\n }\n });\n return result;\n }\n }\n\n return find;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/find.js\n ** module id = 283\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/find.js?")},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _servicesSubscription = __webpack_require__(308);\n\nvar _servicesSubscription2 = _interopRequireDefault(_servicesSubscription);\n\n// subscriber model\nvar subscriber = {\n\tfirstName: null,\n\tlastName: null,\n\temail: null,\n\tsource: null,\n\tsubscriberAccountNumber: null,\n\tsubscriptionCode: null,\n\tsubscriptionActive: false,\n\tsubscriptionLinked: false,\n\tissues: [],\n\toptIn: false\n};\n\n// subscriber model exports\nexports.getSubscriberAccountNumber = function () {\n\treturn subscriber.subscriberAccountNumber;\n};\n\nexports.getSubscriberFirstName = function () {\n\treturn subscriber.firstName;\n};\n\nexports.getSubscriberLastName = function () {\n\treturn subscriber.lastName;\n};\n\nexports.getSubscriberEmailAddress = function () {\n\treturn subscriber.email;\n};\n\nexports.getSubscriberEntitlements = function () {\n\treturn subscriber.issues;\n};\n\nexports.isSubscriberActive = function () {\n\treturn subscriber.subscriptionActive;\n};\n\nexports.isSubscriberLinked = function () {\n\treturn subscriber.subscriptionLinked;\n};\n\nexports.getSubscriberSubscriptionCode = function () {\n\treturn subscriber.subscriptionCode;\n};\n\n/**\n * fetch - Look up the Subcriber Information\n * @param {string} emailAddress - Email Address of the subscriber\n * @param {string} accountNumber - Subscriber Account number\n * @returns {promise.<object,Error>} - Promise with the subscriber data.\n */\nexports.fetch = function (emailAddress, accountNumber) {\n\treturn _servicesSubscription2["default"].lookup(emailAddress, accountNumber).then(function (subscriptionInfo) {\n\t\t// save a copy of the subscriber\n\t\tsubscriber = subscriptionInfo;\n\t\treturn subscriber;\n\t});\n};\n\n/**\n * verify - Verifies the Subscriber account. The service here\n * will either create the account for the subscriber using the\n * subscriber model contained here, or it will log the subscriber\n * in if the account already exists.\n * @param {string} password - Subscriber\'s password\n * @returns {promise.<object,Error>} - Promise with the subscriber data.\n */\nexports.verify = function (password, optIn) {\n\tsubscriber.optIn = optIn;\n\treturn _servicesSubscription2["default"].verify(subscriber, password);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/models/subscriber.js\n ** module id = 284\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/models/subscriber.js?')},function(module,exports){eval('/* Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind */\n"use strict";\n\nif (!Function.prototype.bind) {\n\tFunction.prototype.bind = function (oThis) {\n\t\tif (typeof this !== "function") {\n\t\t\t// closest thing possible to the ECMAScript 5\n\t\t\t// internal IsCallable function\n\t\t\tthrow new TypeError("Function.prototype.bind - what is trying to be bound is not callable");\n\t\t}\n\n\t\tvar aArgs = Array.prototype.slice.call(arguments, 1),\n\t\t fToBind = this,\n\t\t FNOP = function FNOP() {},\n\t\t fBound = function fBound() {\n\t\t\treturn fToBind.apply(this instanceof FNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));\n\t\t};\n\n\t\tFNOP.prototype = this.prototype;\n\t\tfBound.prototype = new FNOP();\n\n\t\treturn fBound;\n\t};\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/bind-polyfill/bind-polyfill.js\n ** module id = 285\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/bind-polyfill/bind-polyfill.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _discardDiscard = __webpack_require__(106);\n\nvar _discardDiscard2 = _interopRequireDefault(_discardDiscard);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar $component = (0, _jquery2["default"])(exports);\n\nvar discardItems = null;\n\n/**\n * render\n * @returns {*}\n */\nexports.render = function (flyoutData) {\n\treturn _discardDiscard2["default"].render(flyoutData);\n};\n\n/**\n * getData\n * Gets necessary data from the DOM\n * @returns {Object}\n */\nexports.getData = function () {\n\tdiscardItems = (0, _lodashAmdModernCollectionsMap2["default"])((0, _jquery2["default"])("stream-list").find("[js-target=\'bulk-action-checkbox\']:checked"), function (el) {\n\t\tvar item = {\n\t\t\t$element: (0, _jquery2["default"])(el),\n\t\t\tdata: {\n\t\t\t\tid: (0, _jquery2["default"])(el).attr("id")\n\t\t\t}\n\t\t};\n\t\tif ((0, _jquery2["default"])(el).data("list")) {\n\t\t\titem.data.list = (0, _jquery2["default"])(el).data("list");\n\t\t}\n\t\treturn item;\n\t});\n\treturn discardItems;\n};\n\nvar removeFromSaves = function removeFromSaves(e) {\n\te.preventDefault();\n\te.stopImmediatePropagation();\n\t_jquery2["default"].each(discardItems, function () {\n\t\tvar $streamItem = this.$element.closest(".stream-entry");\n\n\t\tif (this.data.list) {\n\t\t\tvar request = {\n\t\t\t\t"name": this.data.list,\n\t\t\t\tdata: {\n\t\t\t\t\t"id": this.data.id\n\t\t\t\t}\n\t\t\t};\n\t\t\t_servicesHbrInteraction2["default"].request("listItem", "delete", request).then(function () {\n\t\t\t\t// remove the row\n\t\t\t\t_servicesHbrInteraction2["default"].hideStreamLabel($streamItem);\n\t\t\t\t$streamItem.remove();\n\t\t\t});\n\t\t} else {\n\t\t\t_servicesHbrInteraction2["default"].request("saved", "delete", this.data).then(function () {\n\t\t\t\t// remove the row\n\t\t\t\t_servicesHbrInteraction2["default"].hideStreamLabel($streamItem);\n\t\t\t\t$streamItem.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\t$component.trigger("destroy", { message: discardItems.length + (discardItems.length === 1 ? " item" : " items") + " removed from My Library" });\n};\n\nexports.bindInteractions = function () {\n\t(0, _jquery2["default"])("[js-target=\'yes\']").one("click", removeFromSaves);\n\t(0, _jquery2["default"])("[js-target=\'cancel\']").one("click", function () {\n\t\t$component.trigger("destroy");\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/bulk-discard/bulk-discard.js\n ** module id = 286\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/bulk-discard/bulk-discard.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Sharing a lot of features with save.\n\nvar _saveSave = __webpack_require__(66);\n\nvar _saveSave2 = _interopRequireDefault(_saveSave);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar $component = (0, _jquery2["default"])(exports);\n\nvar itemsToAdd = [];\n\nvar options = {\n\tsaveButtonTarget: "[js-target=\'save-submit\']",\n\treadingListCheckboxes: "[js-target=\'save-list-checkbox\']",\n\tlistNameTarget: "[js-target=\'list-form-name\']"\n};\n\n/**\n * Pass through to save flyout\n * @returns {*|Object}\n */\nexports.render = function () {\n\treturn _saveSave2["default"].render();\n};\n\n/**\n * getData\n * Pass through to save flyout\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\titemsToAdd = (0, _lodashAmdModernCollectionsMap2["default"])((0, _jquery2["default"])("stream-list").find("[js-target=\'bulk-action-checkbox\']:checked"), function (el) {\n\t\treturn (0, _jquery2["default"])(el).attr("id");\n\t});\n\treturn itemsToAdd;\n};\n\nvar bulkAdd = function bulkAdd(e) {\n\te.preventDefault();\n\te.stopImmediatePropagation();\n\tvar saveCheckboxes = (0, _jquery2["default"])(options.readingListCheckboxes);\n\tvar addPromises = [];\n\n\t_jquery2["default"].each(itemsToAdd, function () {\n\t\tvar item = this;\n\t\t_jquery2["default"].each(saveCheckboxes, function () {\n\t\t\tif ((0, _jquery2["default"])(this).is(":checked")) {\n\t\t\t\taddPromises.push(_servicesHbrInteraction2["default"].request("listItem", "post", {\n\t\t\t\t\tname: (0, _jquery2["default"])(this).data("list-id"),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tid: item\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t}\n\t\t});\n\t});\n\n\tvar newListName = (0, _jquery2["default"])(options.listNameTarget).val();\n\tif (newListName.length !== 0) {\n\t\t_saveSave2["default"].createList().then(function () {\n\t\t\t_jquery2["default"].each(itemsToAdd, function () {\n\t\t\t\taddPromises.push(_servicesHbrInteraction2["default"].request("listItem", {\n\t\t\t\t\tname: newListName,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tid: this\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t});\n\t\t});\n\t}\n\n\t_jquery2["default"].when.apply(_jquery2["default"], addPromises).then(function () {\n\t\t$component.trigger("destroy", { message: itemsToAdd.length + (itemsToAdd.length === 1 ? " item" : " items") + " added to folders" });\n\t});\n};\n\nexports.bindInteractions = function () {\n\t_saveSave2["default"].bindInteractions();\n\n\t(0, _jquery2["default"])(options.saveButtonTarget).on("click", bulkAdd);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/bulk-organize/bulk-organize.js\n ** module id = 287\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/bulk-organize/bulk-organize.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar _templateTemplate = __webpack_require__(405);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\n/**\n * render\n *\n * @return\n */\nexports.render = function () {\n\tvar saveRenderDeferred = _jquery2["default"].Deferred();\n\tsaveRenderDeferred.resolve((0, _templateTemplate2["default"])());\n\treturn saveRenderDeferred.promise();\n};\n\n/**\n * Binds the events to the flyout component type.\n *\n * @param {Object} $el - A jQuery element of the flyout container.\n */\nexports.bindInteractions = function ($el) {\n\t// Wait for the form to be submitted before acting on it.\n\t$el.on("submit", "form", function (evt) {\n\t\t$el.find("[js-target=\'notification-box\']").hide();\n\t\tevt.preventDefault();\n\t\tevt.stopPropagation();\n\n\t\t// Find the password values.\n\t\tvar currentPassword = $el.find("[name=\'current-password\']").val();\n\t\tvar newPassword = $el.find("[name=\'new-password\']").val();\n\t\tvar confirmPassword = $el.find("[name=\'confirm-password\']").val();\n\n\t\t// Rely on Server for full validation\n\t\tif (!currentPassword || newPassword !== confirmPassword) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Issue the request to the server, close on success or failure.\n\t\t_servicesAuth2["default"].changeUserPassword(currentPassword, newPassword).then(function () {\n\t\t\t(0, _jquery2["default"])(exports).trigger("destroy", {\n\t\t\t\tmessage: "Password successfully changed."\n\t\t\t});\n\t\t}).fail(function (response) {\n\t\t\t// show the error message\n\t\t\tvar errorMessage = "Current Password is invalid";\n\t\t\tvar errors = response.responseJSON ? response.responseJSON.errors : [];\n\t\t\tif (errors && errors.length !== 0) {\n\t\t\t\terrorMessage = errors[0].errorMessage;\n\t\t\t}\n\t\t\t$el.find("[js-target=\'notification-box-message\']").html(errorMessage);\n\t\t\t$el.find("[js-target=\'notification-box\']").show();\n\t\t});\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/change-password/change-password.js\n ** module id = 288\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/change-password/change-password.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _templateTemplate = __webpack_require__(407);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _servicesVideo = __webpack_require__(276);\n\nexports.render = function (data) {\n\treturn Promise.resolve((0, _templateTemplate2["default"])(data));\n};\n\nexports.getData = function (el) {\n\tvar item = el.closest("stream-item");\n\treturn { name: item.data("title"), code: (0, _servicesVideo.videoEmbedCode)({ id: item.data("video-id"), name: item.data("title") }) };\n};\n\nexports.getOverrideOptions = function () {\n\treturn { requiresSignIn: false };\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/embed/embed.js\n ** module id = 289\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/embed/embed.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _templateTemplate = __webpack_require__(260);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar options = {\n\trequiresSignIn: false\n};\n\n/**\n * render\n * @returns {*}\n */\nexports.render = function (data) {\n\tvar forgotPasswordRenderDeferred = _jquery2["default"].Deferred();\n\tforgotPasswordRenderDeferred.resolve((0, _templateTemplate2["default"])(data));\n\treturn forgotPasswordRenderDeferred.promise();\n};\n\n/**\n * getData\n * Gets necessary data from the DOM for rendering share template and\n * hitting share/history end points\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\t/* no data necessary */\n};\n\n/**\n * getOverrideOptions\n * Sign in not required\n * @returns {Object}\n */\nexports.getOverrideOptions = function () {\n\treturn options;\n};\n\nexports.bindInteractions = function ($el) {\n\t/* get the email from the form */\n\t(0, _jquery2["default"])("[js-target=\'send-message\']").on("click", function (e) {\n\t\te.preventDefault();\n\t\tvar email = (0, _jquery2["default"])("[js-target=\'forgot-password-email\']").val();\n\t\t_servicesAuth2["default"].verifyForgotPassword(email).then(function () {\n\t\t\t(0, _jquery2["default"])(exports).trigger("destroy", {\n\t\t\t\tmessage: "Forgot Password Email Sent."\n\t\t\t});\n\t\t}).fail(function () {\n\t\t\t// show the error message\n\t\t\t$el.find("[js-target=\'notification-box\']").show();\n\t\t});\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/forgot-password/forgot-password.js\n ** module id = 290\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/forgot-password/forgot-password.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _templateTemplate = __webpack_require__(408);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar options = {\n requiresSignIn: false\n};\n\n/**\n * render\n * @returns {*}\n */\nexports.render = function (data) {\n var saveRenderDeferred = _jquery2["default"].Deferred();\n saveRenderDeferred.resolve((0, _templateTemplate2["default"])(data));\n return saveRenderDeferred.promise();\n};\n\n/**\n * getData\n * Gets necessary data from the DOM for title and body content\n * @returns {Object}\n */\nexports.getData = function ($element) {\n var selector = $element.attr("data-body-selector");\n var content = (0, _jquery2["default"])(selector).length > 0 ? (0, _jquery2["default"])(selector).html() : "";\n return {\n title: $element.attr("data-title"),\n body: content\n };\n};\n\n/**\n * getOverrideOptions\n * Sign in not required\n * @returns {Object}\n */\nexports.getOverrideOptions = function () {\n return options;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/notification/notification.js\n ** module id = 291\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/notification/notification.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Sharing a lot of features with save.\n\nvar _saveSave = __webpack_require__(66);\n\nvar _saveSave2 = _interopRequireDefault(_saveSave);\n\nvar destroy = function destroy() {\n\t(0, _jquery2["default"])(exports).trigger("destroy", { message: "Folders Updated" });\n};\n\n/**\n * Pass through to save flyout\n * @returns {*|Object}\n */\nexports.render = function () {\n\treturn _saveSave2["default"].render();\n};\n\n/**\n * getData\n * Pass through to save flyout\n * @param {Object} $element\n * @returns {Object}\n */\nexports.getData = function ($element) {\n\treturn _saveSave2["default"].getData($element); // load up save data\n};\n\nexports.bindInteractions = function () {\n\t// Bind the save interactions\n\t_saveSave2["default"].bindInteractions();\n\n\t// We pass off lots of functionality to the save flyout\n\t// But the save flyout destroy event won\'t destroy this flyout\n\t(0, _jquery2["default"])(_saveSave2["default"]).on("destroy", function () {\n\t\tdestroy();\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/organize/organize.js\n ** module id = 292\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/organize/organize.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Sharing a lot of features with share.\n\nvar _shareShare = __webpack_require__(107);\n\nvar _shareShare2 = _interopRequireDefault(_shareShare);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nexports.getData = function ($element) {\n\t// get the list data\n\tvar list = {\n\t\tid: $element.data("listId"),\n\t\tname: $element.data("listName"),\n\t\ttitle: $element.data("listName"),\n\t\tsummary: $element.data("listDescription")\n\t};\n\treturn list;\n};\n\n/**\n * Pass through to share flyout\n * @returns {*|Object}\n */\nexports.render = function (data) {\n\t// request the url for this reading list\n\treturn _servicesHbrInteraction2["default"].request("listUrl", "get", data.name).then(function (response) {\n\t\tdata.url = "https://hbr.org" + response.listurl;\n\t\tdata.activityType = "shared";\n\t\tdata.contentType = "list";\n\t\treturn _shareShare2["default"].render(data);\n\t});\n};\n\nexports.bindInteractions = function () {\n\t// Bind the share interactions\n\t_shareShare2["default"].bindInteractions();\n\n\t// We pass off lots of functionality to the share flyout\n\t// But the share flyout destroy event won\'t destroy this flyout\n\t(0, _jquery2["default"])(_shareShare2["default"]).on("destroy", function (e, data) {\n\t\t(0, _jquery2["default"])(exports).trigger("destroy", data);\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/flyout/share-list/share-list.js\n ** module id = 293\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/share-list/share-list.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = FontEvents;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _fontfaceobserver = __webpack_require__(311);\n\nvar _fontfaceobserver2 = _interopRequireDefault(_fontfaceobserver);\n\n__webpack_require__(8);\n\nfunction FontEvents() {\n\tPromise.all([new _fontfaceobserver2["default"]("National", { weight: 300, style: "normal" }), new _fontfaceobserver2["default"]("National", { weight: 300, style: "italic" }), new _fontfaceobserver2["default"]("National", { weight: 200, style: "italic" }), new _fontfaceobserver2["default"]("National", { weight: 700, style: "normal" }), new _fontfaceobserver2["default"]("National", { weight: 700, style: "italic" }), new _fontfaceobserver2["default"]("National", { weight: 900, style: "normal" }), new _fontfaceobserver2["default"]("National", { weight: 900, style: "italic" }), new _fontfaceobserver2["default"]("Guardian", { weight: 400, style: "normal" }), new _fontfaceobserver2["default"]("Guardian", { weight: 400, style: "italic" }), new _fontfaceobserver2["default"]("Guardian", { weight: 700, style: "normal" }), new _fontfaceobserver2["default"]("Guardian", { weight: 700, style: "italic" }), new _fontfaceobserver2["default"]("Caponi Slab Web", { weight: 500, style: "normal" }), new _fontfaceobserver2["default"]("Caponi Slab Web", { weight: 500, style: "italic" })]).then(function () {\n\t\tdocument.documentElement.className += " fonts-loaded";\n\t\tdocument.cookie = "hbr_f=true";\n\t});\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/font-events/font-events.js\n ** module id = 294\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/font-events/font-events.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = mixinEvents;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n/**\n\t* Create a jQuery collection from this object, allowing us to\n\t* proxy events.\n */\n\nfunction mixinEvents(object) {\n\tvar $object = (0, _jquery2["default"])(object);\n\n\t// Borrow remaining jQuery event functions.\n\tobject.on = _jquery2["default"].proxy($object.on, $object);\n\tobject.once = _jquery2["default"].proxy($object.one, $object);\n\tobject.off = _jquery2["default"].proxy($object.off, $object);\n\tobject.trigger = _jquery2["default"].proxy($object.trigger, $object);\n}\n\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/mixins/events.js\n ** module id = 295\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/mixins/events.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar uri = _common2["default"].API + "components/article/";\n\n/**\n * Return the fully qualified URI for an article\n * @param {object} articleData\n * @return URI to request the article content\n */\nfunction parseURI(articleData) {\n\treturn uri + articleData.year + "/" + articleData.month + "/" + articleData.seo;\n}\n\n// get all filters of a given type\nexports.get = function (articleData) {\n\treturn _jquery2["default"].ajax({\n\t\ttype: "get",\n\t\tcontentType: "text/html",\n\t\turl: parseURI(articleData)\n\t}).promise();\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/article.js\n ** module id = 296\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/article.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nexports.getURI = function () {\n\treturn _common2["default"].API + "user/attributes";\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/attributes.js\n ** module id = 297\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/attributes.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nexports.getURI = function () {\n\treturn "/api/shopping-cart";\n};\n\nexports.get = function () {\n\treturn _request2["default"].ajax("GET", exports.getURI(), "");\n};\n\nexports.post = function (data) {\n\treturn _request2["default"].ajax("POST", exports.getURI(), data);\n};\n\nexports["delete"] = function (data) {\n\treturn _request2["default"].ajax("DELETE", exports.getURI(), data);\n};\n\nexports.checkFreshness = function () {\n\treturn _request2["default"].ajax("HEAD", _common2["default"].API + "commerce/shopping-cart");\n};\n\nexports.shippingEstimate = function (data) {\n\treturn _request2["default"].ajax("POST", "/api/shopping-cart/estimate", data);\n};\n\nexports.shippingPayment = function (data) {\n\treturn _request2["default"].ajax("POST", _common2["default"].API + "commerce/shipping-payment", data);\n};\n\nexports.statesProvinces = function (countryCode) {\n\treturn _request2["default"].ajax("GET", _common2["default"].API + "commerce/state-province/" + countryCode);\n};\n\nexports.productAvailability = function (productId) {\n\treturn _request2["default"].ajax("GET", _common2["default"].API + "product/" + productId + "/availabilities");\n};\n\nexports.submitOrder = function () {\n\treturn _request2["default"].ajax("POST", _common2["default"].API + "commerce/order/submit");\n};\n\nexports.updateShippingMethod = function (shippingMethod) {\n\treturn _request2["default"].ajax("POST", _common2["default"].API + "commerce/order/shipping-method", shippingMethod);\n};\n\nexports.applyPromoCode = function (promoCode) {\n\treturn _request2["default"].ajax("POST", _common2["default"].API + "commerce/order/promo-code", promoCode);\n};\n\nexports.updateBillingShipping = function (addresses) {\n\treturn _request2["default"].ajax("POST", _common2["default"].API + "commerce/address", addresses);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/cart.js\n ** module id = 298\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/cart.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\n/**\n * Augment the URI based on passed method.\n *\n * @returns {string} A string URI.\n */\nexports.getURI = function () {\n return _common2["default"].API + "user/follow";\n};\n\n/**\n * delete\n * Removes saved content from a reading list\n * @param {Object} data\n * @returns {*}\n */\nexports["delete"] = function (data) {\n return _request2["default"].ajax("DELETE", _common2["default"].API + "user/follow", data);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/follow.js\n ** module id = 299\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/follow.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar BASE_URI = _common2["default"].API + "user/list/";\n\nfunction parseURI(listName) {\n return BASE_URI + listName;\n}\n\n/**\n * post\n * Adds saved content to a reading list\n * @param {Object} contentObject\n * @returns {*}\n */\nexports.post = function (contentObject) {\n return _request2["default"].ajax("post", parseURI(contentObject.name), contentObject.data);\n};\n\n/**\n * get\n * Returns an array of all the reading lists a given item is a member of\n * @param {String} id\n * @returns {*}\n */\nexports.get = function (id) {\n // this uses a different endpoint\n return _request2["default"].ajax("get", _common2["default"].API + "user/saves/" + encodeURIComponent(id) + "/lists");\n};\n\n/**\n * delete\n * Removes saved content from a reading list\n * @param {Object} contentObject\n * @returns {*}\n */\nexports["delete"] = function (contentObject) {\n return _request2["default"].ajax("DELETE", parseURI(contentObject.name), contentObject.data);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/list-item.js\n ** module id = 300\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/list-item.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar BASE_URI = _common2["default"].API + "user/list/url/";\n\nfunction parseURI(listName) {\n return BASE_URI + listName;\n}\n\n/**\n * get\n * returns the url for this reading list\n * @param {String} name\n * @returns {*}\n */\nexports.get = function (name) {\n // this uses a different endpoint\n return _request2["default"].ajax("get", parseURI(name));\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/list-url.js\n ** module id = 301\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/list-url.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nexports.getURI = function () {\n return _common2["default"].API + "user/lists";\n};\n\n/**\n * delete\n * Removes saved content from a reading list\n * @param {Object} data\n * @returns {*}\n */\nexports["delete"] = function (data) {\n return _request2["default"].ajax("DELETE", _common2["default"].API + "user/lists", data);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/lists.js\n ** module id = 302\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/lists.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nexports.getURI = function () {\n\treturn _common2["default"].API + "user/migrate";\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/migrate.js\n ** module id = 303\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/migrate.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _history = __webpack_require__(109);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar URI = _common2["default"].API + "user/saves";\n\nexports.trackHistory = _history2["default"].post;\n\nexports.getURI = function () {\n return URI;\n};\n\n/**\n * delete\n * Removes saved content from a reading list\n * @param {Object} data\n * @returns {*}\n */\nexports["delete"] = function (data) {\n return _request2["default"].ajax("DELETE", URI, data);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/saves.js\n ** module id = 304\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/saves.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar BASE_URI = _common2["default"].API + "search";\n\nfunction parseURI(filterData) {\n\treturn BASE_URI + filterData.queryString + "&filters=" + filterData.filters + "&sort=" + filterData.sort + "&order=" + filterData.order;\n}\n\n// get all filters of a given type\nexports.post = function (filterData) {\n\treturn _request2["default"].ajax("post", parseURI(filterData));\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/search-filter.js\n ** module id = 305\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/search-filter.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsBind = __webpack_require__(62);\n\nvar _lodashAmdModernFunctionsBind2 = _interopRequireDefault(_lodashAmdModernFunctionsBind);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _history = __webpack_require__(109);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\nvar _urlLengthUtils = __webpack_require__(111);\n\nvar _urlLengthUtils2 = _interopRequireDefault(_urlLengthUtils);\n\nvar _isMobile = __webpack_require__(512);\n\nvar _isMobile2 = _interopRequireDefault(_isMobile);\n\nvar API_ENDPOINTS = {\n\tGIGYA_SIGNATURE: _common2["default"].API + "integration/gigya-signature",\n\tURL_SHORTENER: _common2["default"].API + "integration/url/shorten",\n\tEMAIL_ENGINE: _common2["default"].API + "user/share"\n};\n\nvar GIGYA_ERROR_CODES = {\n\tFORBIDDEN: 403009\n};\n\nvar providers = {\n\temail: {\n\t\tpost: sendEmail,\n\t\ttruncate: (0, _lodashAmdModernFunctionsBind2["default"])(truncateMessage, undefined, 100000)\n\t},\n\tfacebook: {\n\t\tpost: postBookmark,\n\t\ttruncate: (0, _lodashAmdModernFunctionsBind2["default"])(truncateMessage, undefined, 63182) // 63,206 - 24 (link)\n\t},\n\tgooglePlus: {\n\t\tpost: postBookmark,\n\t\ttruncate: (0, _lodashAmdModernFunctionsBind2["default"])(truncateMessage, undefined, 100000) // G+ claims no limit\n\t},\n\ttwitter: {\n\t\tpost: setStatus,\n\t\ttruncate: (0, _lodashAmdModernFunctionsBind2["default"])(truncateMessage, undefined, 116) // 140 - 24 (link)\n\t},\n\tlinkedin: {\n\t\tpost: postBookmark,\n\t\ttruncate: (0, _lodashAmdModernFunctionsBind2["default"])(truncateMessage, undefined, 676) // 700 - 24 (link)\n\t}\n};\n\nfunction sendEmail(contentObject) {\n\t_request2["default"].ajax("post", API_ENDPOINTS.EMAIL_ENGINE, contentObject);\n}\n\nfunction shortenUrl(url) {\n\treturn _jquery2["default"].ajax({\n\t\ttype: "post",\n\t\tdataType: "json",\n\t\tcontentType: "application/json",\n\t\tdata: JSON.stringify({\n\t\t\turl: url\n\t\t}),\n\t\turl: API_ENDPOINTS.URL_SHORTENER\n\t}).promise();\n}\n\nfunction truncateMessage(limit, msg) {\n\tvar message = msg;\n\tif (msg.length >= limit) {\n\t\tmessage = msg.substr(0, limit - 4); // limit - 1 - 3 (ellipsis)\n\t\tmessage = message.substr(0, message.lastIndexOf(" ")) + "&hellip;";\n\t}\n\treturn message;\n}\n\nfunction retryPost(contentObject, resp) {\n\tif (resp.errorCode === GIGYA_ERROR_CODES.FORBIDDEN) {\n\t\t// the user has an expired session for some reason\n\t\texports.linkSocialProvider(contentObject.provider).then(function () {\n\t\t\texports.post(contentObject);\n\t\t});\n\t}\n}\n\nfunction setStatus(contentObject) {\n\tcontentObject.url = _urlLengthUtils2["default"].setFullPath(contentObject.url);\n\tshortenUrl(contentObject.url).then(function (response) {\n\t\tvar truncateMethod = providers[contentObject.provider].truncate;\n\t\tvar message = truncateMethod(contentObject.description) + " " + response.url;\n\t\tgigya.socialize.setStatus({\n\t\t\tenabledProviders: contentObject.provider,\n\t\t\tshortURLs: "never",\n\t\t\tstatus: message,\n\t\t\tcallback: (0, _lodashAmdModernFunctionsBind2["default"])(retryPost, null, contentObject)\n\t\t});\n\t});\n}\n\nfunction postBookmark(contentObject) {\n\tvar userAction = new gigya.socialize.UserAction();\n\n\tcontentObject.url = _urlLengthUtils2["default"].setFullPath(contentObject.url);\n\tcontentObject.callingFunction = "postBookmark";\n\tuserAction.setTitle(contentObject.title);\n\tuserAction.addActionLink(contentObject.title, contentObject.url);\n\tuserAction.setUserMessage(contentObject.description);\n\tuserAction.setDescription(contentObject.description);\n\tuserAction.setLinkBack(contentObject.url);\n\tgigya.socialize.postBookmark({\n\t\tprovider: contentObject.provider,\n\t\tdescription: contentObject.description,\n\t\tshortURLs: "never",\n\t\tuserAction: userAction,\n\t\tcallback: (0, _lodashAmdModernFunctionsBind2["default"])(retryPost, null, contentObject)\n\t});\n}\n\nexports.trackHistory = function (contentObject) {\n\tdelete contentObject.description; // API doesn\'t take description\n\tif (contentObject.contentType !== "list") {\n\t\t// don\'t audit list sharing\n\t\t_history2["default"].post(contentObject);\n\t}\n};\n\nexports.linkSocialProvider = function (provider) {\n\tvar linkProviderDeferred = _jquery2["default"].Deferred();\n\tvar options = {};\n\toptions.provider = provider;\n\toptions.callback = function (resp) {\n\t\tif (resp.errorCode !== 0) {\n\t\t\tlinkProviderDeferred.reject(resp);\n\t\t\tthrow new Error(resp.errorCode + ": " + resp.errorMessage);\n\t\t} else {\n\t\t\tlinkProviderDeferred.resolve(resp);\n\t\t}\n\t};\n\tif (_isMobile2["default"].tablet || _isMobile2["default"].phone) {\n\t\toptions.authFlow = "redirect";\n\t\toptions.redirectMethod = "post";\n\t\toptions.redirectURL = window.location.href;\n\t}\n\tgigya.socialize.addConnection(options);\n\treturn linkProviderDeferred.promise();\n};\n\nexports.notifyLogin = function (newUser) {\n\tvar dfd = _jquery2["default"].Deferred();\n\tif (newUser === undefined || newUser === null) {\n\t\tnewUser = false;\n\t}\n\t_jquery2["default"].ajax({\n\t\ttype: "get",\n\t\tdataType: "json",\n\t\turl: API_ENDPOINTS.GIGYA_SIGNATURE,\n\t\tsuccess: function success(response) {\n\t\t\tgigya.socialize.notifyLogin({\n\t\t\t\tsiteUID: _modelsUser2["default"].getId(),\n\t\t\t\tUIDTimestamp: response.timestamp,\n\t\t\t\tUIDSig: response.signature,\n\t\t\t\tnewUser: newUser,\n\t\t\t\tuserInfo: {\n\t\t\t\t\tfirstName: _modelsUser2["default"].getFirstName(),\n\t\t\t\t\tlastName: _modelsUser2["default"].getLastName(),\n\t\t\t\t\temail: _modelsUser2["default"].getEmail()\n\t\t\t\t},\n\t\t\t\tcallback: function callback(response) {\n\t\t\t\t\tif (response.errorCode === 0) {\n\t\t\t\t\t\tif (response.user) {\n\t\t\t\t\t\t\t// set the cookie received from Gigya\n\t\t\t\t\t\t\tvar cookieName = response.user.cookieName;\n\t\t\t\t\t\t\tvar cookieValue = response.user.cookieValue;\n\t\t\t\t\t\t\tvar cookiePath = response.user.cookiePath;\n\t\t\t\t\t\t\tvar cookieDomain = response.user.cookieDomain;\n\t\t\t\t\t\t\tdocument.cookie = cookieName + "=" + cookieValue + "; path=" + cookiePath + "; domain=" + cookieDomain;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdfd.resolve(response);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdfd.reject(response);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\n\t/*\n $.get(API_ENDPOINTS.GIGYA_SIGNATURE, function (response) {\n var gigyaSig = response.gigyaSignature;\n \t });\n */\n\n\treturn dfd;\n};\n\nexports.checkSocialLogin = function (provider) {\n\tvar dfd = _jquery2["default"].Deferred();\n\tif (provider === "email") {\n\t\tdfd.resolve(!_modelsUser2["default"].isGuest());\n\t} else {\n\t\tgigya.socialize.getSessionInfo({\n\t\t\tprovider: provider,\n\t\t\tcallback: function callback(response) {\n\t\t\t\t// If the user is logged in the resolve with true, otherwise resolve with false\n\t\t\t\tif (response.errorCode === 0) {\n\t\t\t\t\tdfd.resolve(true);\n\t\t\t\t} else {\n\t\t\t\t\tdfd.resolve(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn dfd.promise();\n};\n\nexports.notifyLogout = function () {\n\tgigya.socialize.logout({ forceProvidersLogout: false });\n};\n\n/**\n * getConnections\n * Retrieve the current list of providers from Gigya\n */\nexports.getConnections = function () {\n\tvar dfd = _jquery2["default"].Deferred();\n\tgigya.socialize.getUserInfo({\n\t\tcallback: function callback(response) {\n\t\t\tif (response.errorCode === 0) {\n\t\t\t\t// get the user off the response\n\t\t\t\tvar socialUser = response.user;\n\n\t\t\t\t// attach the providers to the promise\n\t\t\t\tdfd.resolve(socialUser.providers);\n\t\t\t} else {\n\t\t\t\t// fail with the response\n\t\t\t\tdfd.reject(response);\n\t\t\t}\n\t\t}\n\t});\n\treturn dfd.promise();\n};\n\n/**\n * unlinkSocialProvider\n * @param {string} provider Provider to unlink\n */\nexports.unlinkSocialProvider = function (provider) {\n\tvar dfd = _jquery2["default"].Deferred();\n\tgigya.socialize.removeConnection({\n\t\tprovider: provider,\n\t\tcallback: function callback(response) {\n\t\t\tif (response.errorCode === 0) {\n\t\t\t\tdfd.resolve(true);\n\t\t\t} else {\n\t\t\t\t// unable to add connection\n\t\t\t\tdfd.reject(response);\n\t\t\t}\n\t\t}\n\t});\n\treturn dfd.promise();\n};\n\nexports.post = function (contentObject) {\n\tproviders[contentObject.provider].post(contentObject);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/share.js\n ** module id = 306\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/share.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\nvar _request = __webpack_require__(12);\n\nvar _request2 = _interopRequireDefault(_request);\n\n/**\n * Augment the URI based on passed method.\n *\n * @returns {string} A string URI.\n */\nexports.getURI = function () {\n return _common2["default"].API + "user/subscribe";\n};\n\n/**\n * delete\n * Removes saved content from a reading list\n * @param {Object} data\n * @returns {*}\n */\nexports["delete"] = function (data) {\n return _request2["default"].ajax("DELETE", _common2["default"].API + "user/subscribe", data);\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/subscribe.js\n ** module id = 307\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/hbr/subscribe.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// api endpoints\nvar API_ENPOINTS = {\n\tLOOKUP: "/api/user/subscriber/search",\n\tVERIFY: "/api/user/subscribe"\n};\n\n/**\n * lookup - Look up the subscription\n * @param {string} emailAddress - Email Address of the subscriber\n * @param {string} accountNumber - Subscription Account number\n * @returns {promise.<object,Error>} - Promise with the subscriber data.\n */\nexports.lookup = function (emailAddress, accountNumber) {\n\t// create a local promise\n\tvar promise = _jquery2["default"].Deferred();\n\n\t// lookup the subscription\n\t_jquery2["default"].post(API_ENPOINTS.LOOKUP, {\n\t\temailAddress: emailAddress,\n\t\taccountNumber: accountNumber\n\t}).then(function (data) {\n\t\tif (data.active) {\n\t\t\t// find the first magazine subscription\n\t\t\tif (_jquery2["default"].isArray(data.subscriptions)) {\n\t\t\t\tfor (var i = 0; i < data.subscriptions.length; i++) {\n\t\t\t\t\tif (data.subscriptions[i].active && (data.subscriptions[i].subscriptionSourceCode === "CDS_US" || data.subscriptions[i].subscriptionSourceCode === "CDS_UK")) {\n\t\t\t\t\t\t// the subscriber has the subscription we need, resolve the\n\t\t\t\t\t\t// promise with the subscriber\n\t\t\t\t\t\tvar subscription = data.subscriptions[i];\n\t\t\t\t\t\tsubscription.firstName = data.firstName;\n\t\t\t\t\t\tsubscription.lastName = data.lastName;\n\t\t\t\t\t\tsubscription.email = data.emailAddress;\n\t\t\t\t\t\tsubscription.isNew = data["new"];\n\t\t\t\t\t\tpromise.resolve(subscription);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// user is not active\n\t\t\tpromise.reject(404, {\n\t\t\t\tmessage: "No Active Subscriptions Found"\n\t\t\t});\n\t\t}\n\t}, function (resp) {\n\t\t// fail the promise\n\t\tpromise.reject(resp);\n\t});\n\n\t// return the promise;\n\treturn promise.promise();\n};\n\n/**\n * verify - Verify the subscription\n * @param {object} subscriber - Subscriber Object\n * @param {string} password - Subscriber Password\n * @returns {promise.<object,Error>} - Promise with the subscriber data.\n */\nexports.verify = function (subscriber, password) {\n\tvar subscriber = {\n\t\temailAddress: subscriber.email,\n\t\taccountNumber: subscriber.accountNumber,\n\t\tpassword: password,\n\t\toptIn: subscriber.optIn\n\t};\n\treturn _jquery2["default"].ajax({\n\t\ttype: "post",\n\t\turl: API_ENPOINTS.VERIFY,\n\t\tdata: JSON.stringify(subscriber),\n\t\tcontentType: "application/json",\n\t\tdataType: "json"\n\t}).then(function (resp) {\n\t\treturn resp.user;\n\t});\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/subscription.js\n ** module id = 308\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/services/subscription.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t/**\n * Set followed item information.\n *\n * @param {object} ev - event object.\n * @param {object} followedItemInfo - information about the item followed.\n */\n\tfunction setFollowSubscribeInfo(ev, followedItemInfo) {\n\t\tif (window.digitalData) {\n\t\t\tif (followedItemInfo.type === "newsletter") {\n\t\t\t\t// set event info\n\t\t\t\tvar eventInfo = {};\n\t\t\t\teventInfo.eventName = "Profile Update";\n\t\t\t\teventInfo.eventAction = "Newsletter Subscription";\n\t\t\t\teventInfo.newsletterName = followedItemInfo.name;\n\t\t\t\tvar event = {};\n\t\t\t\tevent.eventInfo = eventInfo;\n\t\t\t\twindow.digitalData.event = [];\n\t\t\t\twindow.digitalData.event.push(event);\n\t\t\t} else if (followedItemInfo.type === "topic") {\n\t\t\t\t// set event info\n\t\t\t\tvar eventInfo = {};\n\t\t\t\teventInfo.eventName = "Profile Update";\n\t\t\t\teventInfo.eventAction = "Follow Topic";\n\t\t\t\tvar event = {};\n\t\t\t\tevent.eventInfo = eventInfo;\n\t\t\t\twindow.digitalData.event = [];\n\t\t\t\twindow.digitalData.event.push(event);\n\n\t\t\t\t// set topic followed\n\t\t\t\tif (window.digitalData.users && window.digitalData.users.length > 0) {\n\t\t\t\t\tvar user = window.digitalData.users[0];\n\t\t\t\t\tif (user.profile) {\n\t\t\t\t\t\tif (!user.profile.feeds) {\n\t\t\t\t\t\t\tuser.profile.feeds = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// check if topic is already avaiable in digital data\n\t\t\t\t\t\tvar topicAlreadyAdded = false;\n\t\t\t\t\t\t_jquery2["default"].each(user.profile.feeds, function (index, feed) {\n\t\t\t\t\t\t\tif (feed.topicName === followedItemInfo.name) {\n\t\t\t\t\t\t\t\ttopicAlreadyAdded = true;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// add topic to digital data if not available already\n\t\t\t\t\t\tif (!topicAlreadyAdded) {\n\t\t\t\t\t\t\tvar newFeed = {};\n\t\t\t\t\t\t\tnewFeed.topicName = followedItemInfo.name;\n\t\t\t\t\t\t\tuser.profile.feeds.push(newFeed);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// set page type and page name\n\t\t\tif (window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\t\tif (location.pathname === "/") {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Home Page";\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageName = document.title;\n\t\t\t\t}\n\t\t\t\tif (location.pathname.indexOf("/topic/") >= 0) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Topic";\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageName = followedItemInfo.name;\n\t\t\t\t}\n\t\t\t\tif (location.pathname.match(new RegExp(/^\\/([0-9]{4})\\/([0-9]{2})\\/([a-zA-Z0-9\\-]+)(\\/)?(\\?)?(.*)/i))) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Article";\n\t\t\t\t}\n\t\t\t\tif (location.pathname.indexOf("/email-newsletters") >= 0) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Landing Page";\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageName = "Newsletter Landing Page";\n\t\t\t\t}\n\t\t\t\tif (location.pathname.indexOf("/most-popular") >= 0) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Landing Page";\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageName = "Article Landing Page - Most Popular";\n\t\t\t\t}\n\t\t\t\tif (location.pathname.indexOf("/the-latest") >= 0) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Landing Page";\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageName = "Article Landing Page - The Latest";\n\t\t\t\t}\n\t\t\t\tif (location.pathname.indexOf("/product/") >= 0 || location.pathname.indexOf("/registration-complete") >= 0) {\n\t\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Landing Page";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// bind event\n\t(0, _jquery2["default"])("body").on("follow:success", setFollowSubscribeInfo);\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/follow-subscribe.js\n ** module id = 309\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/follow-subscribe.js?'); },function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\n\nexports["default"] = (function () {\n "use strict";function Lookup(successCallback, errorCallback, options, type) {\n this.successCallback = successCallback, this.errorCallback = errorCallback, this.geolocation = options && options.hasOwnProperty("geolocation") ? options.geolocation : navigator.geolocation, this.type = type;\n }var exports = {};Lookup.prototype.returnSuccess = function (location) {\n this.successCallback && "function" == typeof this.successCallback && this.successCallback(this.fillInObject(this.objectFromJSON(location)));\n }, Lookup.prototype.returnError = function (error) {\n this.errorCallback && "function" == typeof this.errorCallback && (error || (error = { error: "Unknown error" }), this.errorCallback(error));\n }, Lookup.prototype.objectFromJSON = function (json) {\n return "undefined" != typeof window.JSON && "function" == typeof window.JSON.parse ? window.JSON.parse(json) : eval("(" + json + ")");\n };var fillIns = { country: [["continent", "Object", "names", "Object"], ["country", "Object", "names", "Object"], ["registered_country", "Object", "names", "Object"], ["represented_country", "Object", "names", "Object"], ["traits", "Object"]], city: [["city", "Object", "names", "Object"], ["continent", "Object", "names", "Object"], ["country", "Object", "names", "Object"], ["location", "Object"], ["postal", "Object"], ["registered_country", "Object", "names", "Object"], ["represented_country", "Object", "names", "Object"], ["subdivisions", "Array", 0, "Object", "names", "Object"], ["traits", "Object"]] };return Lookup.prototype.fillInObject = function (obj) {\n for (var fill = "country" === this.type ? fillIns.country : fillIns.city, i = 0; i < fill.length; i++) for (var path = fill[i], o = obj, j = 0; j < path.length; j += 2) {\n var key = path[j];o[key] || (o[key] = "Object" === path[j + 1] ? {} : []), o = o[key];\n }try {\n Object.defineProperty(obj.continent, "continent_code", { enumerable: !1, get: function get() {\n return this.code;\n }, set: function set(value) {\n this.code = value;\n } });\n } catch (e) {\n obj.continent.code && (obj.continent.continent_code = obj.continent.code);\n }if ("country" !== this.type) try {\n Object.defineProperty(obj, "most_specific_subdivision", { enumerable: !1, get: function get() {\n return this.subdivisions[this.subdivisions.length - 1];\n }, set: function set(value) {\n this.subdivisions[this.subdivisions.length - 1] = value;\n } });\n } catch (e) {\n obj.most_specific_subdivision = obj.subdivisions[obj.subdivisions.length - 1];\n }return obj;\n }, Lookup.prototype.getGeoIPResult = function () {\n var param,\n request,\n that = this,\n uri = "//js.maxmind.com/geoip/v2.0/" + this.type + "/me?",\n httpParams = { referrer: location.protocol + "//" + location.hostname };if (!this.alreadyRan) {\n this.alreadyRan = 1, "Microsoft Internet Explorer" === navigator.appName && window.XDomainRequest && -1 === navigator.appVersion.indexOf("MSIE 1") ? (request = new XDomainRequest(), uri = window.location.protocol + uri, request.onprogress = function () {}) : (request = new window.XMLHttpRequest(), uri = "https:" + uri);for (param in httpParams) httpParams.hasOwnProperty(param) && httpParams[param] && (uri += param + "=" + encodeURIComponent(httpParams[param]) + "&");uri = uri.substring(0, uri.length - 1), request.open("GET", uri, !0), request.onload = function () {\n if ("undefined" == typeof request.status || 200 === request.status) that.returnSuccess(request.responseText);else {\n var error,\n contentType = request.hasOwnProperty("contentType") ? request.contentType : request.getResponseHeader("Content-Type");if (/json/.test(contentType) && request.responseText.length) try {\n error = that.objectFromJSON(request.responseText);\n } catch (e) {\n error = { code: "HTTP_ERROR", error: "The server returned a " + request.status + " status with an invalid JSON body." };\n } else error = request.responseText.length ? { code: "HTTP_ERROR", error: "The server returned a " + request.status + " status with the following body: " + request.responseText } : { code: "HTTP_ERROR", error: "The server returned a " + request.status + " status but either the server did not return a body or this browser is a version of Internet Explorer that hides error bodies." };that.returnError(error);\n }\n }, request.ontimeout = function () {\n that.returnError({ code: "HTTP_TIMEOUT", error: "The request to the GeoIP2 web service timed out." });\n }, request.onerror = function () {\n that.returnError({ code: "HTTP_ERROR", error: "There was a network error receiving the response from the GeoIP2 web service." });\n }, request.send(null);\n }\n }, exports.country = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, "country");l.getGeoIPResult();\n }, exports.city = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, "city");l.getGeoIPResult();\n }, exports.cityISPOrg = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, "city_isp_org");l.getGeoIPResult();\n }, exports.omni = function (successCallback, errorCallback, options) {\n var l = new Lookup(successCallback, errorCallback, options, "omni");l.getGeoIPResult();\n }, exports;\n})();\n\n;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/geoip2.js\n ** module id = 310\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/support/geoip2.js?')},function(module,exports,__webpack_require__){eval('/* Font Face Observer v2.0.13 - © Bram Stein. License: BSD-3-Clause */(function(){function l(a,b){document.addEventListener?a.addEventListener("scroll",b,!1):a.attachEvent("scroll",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener("DOMContentLoaded",function c(){document.removeEventListener("DOMContentLoaded",c);a()}):document.attachEvent("onreadystatechange",function k(){if("interactive"==document.readyState||"complete"==document.readyState)document.detachEvent("onreadystatechange",k),a()})};function r(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.h=document.createElement("span");this.f=document.createElement("span");this.g=-1;this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";\nthis.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)}\nfunction t(a,b){a.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:"+b+";"}function y(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function z(a,b){function c(){var a=k;y(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);y(a)};function A(a,b){var c=b||{};this.family=a;this.style=c.style||"normal";this.weight=c.weight||"normal";this.stretch=c.stretch||"normal"}var B=null,C=null,E=null,F=null;function G(){if(null===C)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);C=!!a&&603>parseInt(a[1],10)}else C=!1;return C}function J(){null===F&&(F=!!document.fonts);return F}\nfunction K(){if(null===E){var a=document.createElement("div");try{a.style.font="condensed 100px sans-serif"}catch(b){}E=""!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:"","100px",b].join(" ")}\nA.prototype.load=function(a,b){var c=this,k=a||"BESbswy",q=0,D=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=D?b():document.fonts.load(L(c,\'"\'+c.family+\'"\'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},function(){b()})}e()}),N=new Promise(function(a,c){q=setTimeout(c,D)});Promise.race([N,M]).then(function(){clearTimeout(q);a(c)},function(){b(c)})}else m(function(){function u(){var b;if(b=-1!=\nf&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===B&&(b=/AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent),B=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==v&&g==v&&h==v||f==w&&g==w&&h==w||f==x&&g==x&&h==x)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(q),a(c))}function I(){if((new Date).getTime()-H>=D)d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth,\ng=n.a.offsetWidth,h=p.a.offsetWidth,u();q=setTimeout(I,50)}}var e=new r(k),n=new r(k),p=new r(k),f=-1,g=-1,h=-1,v=-1,w=-1,x=-1,d=document.createElement("div");d.dir="ltr";t(e,L(c,"sans-serif"));t(n,L(c,"serif"));t(p,L(c,"monospace"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);v=e.a.offsetWidth;w=n.a.offsetWidth;x=p.a.offsetWidth;I();z(e,function(a){f=a;u()});t(e,L(c,\'"\'+c.family+\'",sans-serif\'));z(n,function(a){g=a;u()});t(n,L(c,\'"\'+c.family+\'",serif\'));\nz(p,function(a){h=a;u()});t(p,L(c,\'"\'+c.family+\'",monospace\'))})})}; true?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}());\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fontfaceobserver/fontfaceobserver.standalone.js\n ** module id = 311\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/fontfaceobserver/fontfaceobserver.standalone.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(33)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isArray) {\n\n /**\n * Creates an object composed from arrays of `keys` and `values`. Provide\n * either a single two dimensional array, i.e. `[[key1, value1], [key2, value2]]`\n * or two arrays, one of `keys` and one of corresponding `values`.\n *\n * @static\n * @memberOf _\n * @alias object\n * @category Arrays\n * @param {Array} keys The array of keys.\n * @param {Array} [values=[]] The array of values.\n * @returns {Object} Returns an object composed of the given keys and\n * corresponding values.\n * @example\n *\n * _.zipObject(['fred', 'barney'], [30, 40]);\n * // => { 'fred': 30, 'barney': 40 }\n */\n function zipObject(keys, values) {\n var index = -1,\n length = keys ? keys.length : 0,\n result = {};\n\n if (!values && length && !isArray(keys[0])) {\n values = [];\n }\n while (++index < length) {\n var key = keys[index];\n if (values) {\n result[key] = values[index];\n } else if (key) {\n result[key[0]] = key[1];\n }\n }\n return result;\n }\n\n return zipObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/arrays/zipObject.js\n ** module id = 312\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/arrays/zipObject.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(22), __webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createCallback, forOwn) {\n\n /**\n * Checks if the given callback returns truey value for **all** elements of\n * a collection. The callback is bound to `thisArg` and invoked with three\n * arguments; (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @alias all\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {boolean} Returns `true` if all elements passed the callback check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes']);\n * // => false\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36 },\n * { 'name': 'fred', 'age': 40 }\n * ];\n *\n * // using \"_.pluck\" callback shorthand\n * _.every(characters, 'age');\n * // => true\n *\n * // using \"_.where\" callback shorthand\n * _.every(characters, { 'age': 36 });\n * // => false\n */\n function every(collection, callback, thisArg) {\n var result = true;\n callback = createCallback(callback, thisArg, 3);\n\n var index = -1,\n length = collection ? collection.length : 0;\n\n if (typeof length == 'number') {\n while (++index < length) {\n if (!(result = !!callback(collection[index], index, collection))) {\n break;\n }\n }\n } else {\n forOwn(collection, function(value, index, collection) {\n return (result = !!callback(value, index, collection));\n });\n }\n return result;\n }\n\n return every;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/every.js\n ** module id = 313\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/every.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(63), __webpack_require__(69)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isFunction, keyPrefix) {\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Native method shortcuts */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided it will be used to determine the cache key for storing the result\n * based on the arguments provided to the memoized function. By default, the\n * first argument provided to the memoized function is used as the cache key.\n * The `func` is executed with the `this` binding of the memoized function.\n * The result cache is exposed as the `cache` property on the memoized function.\n *\n * @static\n * @memberOf _\n * @category Functions\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] A function used to resolve the cache key.\n * @returns {Function} Returns the new memoizing function.\n * @example\n *\n * var fibonacci = _.memoize(function(n) {\n * return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);\n * });\n *\n * fibonacci(9)\n * // => 34\n *\n * var data = {\n * 'fred': { 'name': 'fred', 'age': 40 },\n * 'pebbles': { 'name': 'pebbles', 'age': 1 }\n * };\n *\n * // modifying the result cache\n * var get = _.memoize(function(name) { return data[name]; }, _.identity);\n * get('pebbles');\n * // => { 'name': 'pebbles', 'age': 1 }\n *\n * get.cache.pebbles.name = 'penelope';\n * get('pebbles');\n * // => { 'name': 'penelope', 'age': 1 }\n */\n function memoize(func, resolver) {\n if (!isFunction(func)) {\n throw new TypeError;\n }\n var memoized = function() {\n var cache = memoized.cache,\n key = resolver ? resolver.apply(this, arguments) : keyPrefix + arguments[0];\n\n return hasOwnProperty.call(cache, key)\n ? cache[key]\n : (cache[key] = func.apply(this, arguments));\n }\n memoized.cache = {};\n return memoized;\n }\n\n return memoize;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/functions/memoize.js\n ** module id = 314\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/functions/memoize.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(32), __webpack_require__(21), __webpack_require__(31), __webpack_require__(68), __webpack_require__(33), __webpack_require__(100), __webpack_require__(70), __webpack_require__(511)], __WEBPACK_AMD_DEFINE_RESULT__ = function(assign, forEach, forOwn, getArray, isArray, isObject, releaseArray, slice) {\n\n /** Used to match regexp flags from their coerced string values */\n var reFlags = /\\w*$/;\n\n /** `Object#toString` result shortcuts */\n var argsClass = '[object Arguments]',\n arrayClass = '[object Array]',\n boolClass = '[object Boolean]',\n dateClass = '[object Date]',\n funcClass = '[object Function]',\n numberClass = '[object Number]',\n objectClass = '[object Object]',\n regexpClass = '[object RegExp]',\n stringClass = '[object String]';\n\n /** Used to identify object classifications that `_.clone` supports */\n var cloneableClasses = {};\n cloneableClasses[funcClass] = false;\n cloneableClasses[argsClass] = cloneableClasses[arrayClass] =\n cloneableClasses[boolClass] = cloneableClasses[dateClass] =\n cloneableClasses[numberClass] = cloneableClasses[objectClass] =\n cloneableClasses[regexpClass] = cloneableClasses[stringClass] = true;\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /** Native method shortcuts */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to lookup a built-in constructor by [[Class]] */\n var ctorByClass = {};\n ctorByClass[arrayClass] = Array;\n ctorByClass[boolClass] = Boolean;\n ctorByClass[dateClass] = Date;\n ctorByClass[funcClass] = Function;\n ctorByClass[objectClass] = Object;\n ctorByClass[numberClass] = Number;\n ctorByClass[regexpClass] = RegExp;\n ctorByClass[stringClass] = String;\n\n /**\n * The base implementation of `_.clone` without argument juggling or support\n * for `thisArg` binding.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep=false] Specify a deep clone.\n * @param {Function} [callback] The function to customize cloning values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates clones with source counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, isDeep, callback, stackA, stackB) {\n if (callback) {\n var result = callback(value);\n if (typeof result != 'undefined') {\n return result;\n }\n }\n // inspect [[Class]]\n var isObj = isObject(value);\n if (isObj) {\n var className = toString.call(value);\n if (!cloneableClasses[className]) {\n return value;\n }\n var ctor = ctorByClass[className];\n switch (className) {\n case boolClass:\n case dateClass:\n return new ctor(+value);\n\n case numberClass:\n case stringClass:\n return new ctor(value);\n\n case regexpClass:\n result = ctor(value.source, reFlags.exec(value));\n result.lastIndex = value.lastIndex;\n return result;\n }\n } else {\n return value;\n }\n var isArr = isArray(value);\n if (isDeep) {\n // check for circular references and return corresponding clone\n var initedStack = !stackA;\n stackA || (stackA = getArray());\n stackB || (stackB = getArray());\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == value) {\n return stackB[length];\n }\n }\n result = isArr ? ctor(value.length) : {};\n }\n else {\n result = isArr ? slice(value) : assign({}, value);\n }\n // add array properties assigned by `RegExp#exec`\n if (isArr) {\n if (hasOwnProperty.call(value, 'index')) {\n result.index = value.index;\n }\n if (hasOwnProperty.call(value, 'input')) {\n result.input = value.input;\n }\n }\n // exit for shallow clone\n if (!isDeep) {\n return result;\n }\n // add the source value to the stack of traversed objects\n // and associate it with its clone\n stackA.push(value);\n stackB.push(result);\n\n // recursively populate clone (susceptible to call stack limits)\n (isArr ? forEach : forOwn)(value, function(objValue, key) {\n result[key] = baseClone(objValue, isDeep, callback, stackA, stackB);\n });\n\n if (initedStack) {\n releaseArray(stackA);\n releaseArray(stackB);\n }\n return result;\n }\n\n return baseClone;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseClone.js\n ** module id = 315\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseClone.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(67), __webpack_require__(318), __webpack_require__(322), __webpack_require__(323), __webpack_require__(71)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseIndexOf, cacheIndexOf, createCache, largeArraySize, releaseObject) {\n\n /**\n * The base implementation of `_.difference` that accepts a single array\n * of values to exclude.\n *\n * @private\n * @param {Array} array The array to process.\n * @param {Array} [values] The array of values to exclude.\n * @returns {Array} Returns a new array of filtered values.\n */\n function baseDifference(array, values) {\n var index = -1,\n indexOf = baseIndexOf,\n length = array ? array.length : 0,\n isLarge = length >= largeArraySize,\n result = [];\n\n if (isLarge) {\n var cache = createCache(values);\n if (cache) {\n indexOf = cacheIndexOf;\n values = cache;\n } else {\n isLarge = false;\n }\n }\n while (++index < length) {\n var value = array[index];\n if (indexOf(values, value) < 0) {\n result.push(value);\n }\n }\n if (isLarge) {\n releaseObject(values);\n }\n return result;\n }\n\n return baseDifference;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseDifference.js\n ** module id = 316\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseDifference.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(51), __webpack_require__(68), __webpack_require__(63), __webpack_require__(102), __webpack_require__(70)], __WEBPACK_AMD_DEFINE_RESULT__ = function(forIn, getArray, isFunction, objectTypes, releaseArray) {\n\n /** `Object#toString` result shortcuts */\n var argsClass = '[object Arguments]',\n arrayClass = '[object Array]',\n boolClass = '[object Boolean]',\n dateClass = '[object Date]',\n numberClass = '[object Number]',\n objectClass = '[object Object]',\n regexpClass = '[object RegExp]',\n stringClass = '[object String]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /** Native method shortcuts */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * The base implementation of `_.isEqual`, without support for `thisArg` binding,\n * that allows partial \"_.where\" style comparisons.\n *\n * @private\n * @param {*} a The value to compare.\n * @param {*} b The other value to compare.\n * @param {Function} [callback] The function to customize comparing values.\n * @param {Function} [isWhere=false] A flag to indicate performing partial comparisons.\n * @param {Array} [stackA=[]] Tracks traversed `a` objects.\n * @param {Array} [stackB=[]] Tracks traversed `b` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(a, b, callback, isWhere, stackA, stackB) {\n // used to indicate that when comparing objects, `a` has at least the properties of `b`\n if (callback) {\n var result = callback(a, b);\n if (typeof result != 'undefined') {\n return !!result;\n }\n }\n // exit early for identical values\n if (a === b) {\n // treat `+0` vs. `-0` as not equal\n return a !== 0 || (1 / a == 1 / b);\n }\n var type = typeof a,\n otherType = typeof b;\n\n // exit early for unlike primitive values\n if (a === a &&\n !(a && objectTypes[type]) &&\n !(b && objectTypes[otherType])) {\n return false;\n }\n // exit early for `null` and `undefined` avoiding ES3's Function#call behavior\n // http://es5.github.io/#x15.3.4.4\n if (a == null || b == null) {\n return a === b;\n }\n // compare [[Class]] names\n var className = toString.call(a),\n otherClass = toString.call(b);\n\n if (className == argsClass) {\n className = objectClass;\n }\n if (otherClass == argsClass) {\n otherClass = objectClass;\n }\n if (className != otherClass) {\n return false;\n }\n switch (className) {\n case boolClass:\n case dateClass:\n // coerce dates and booleans to numbers, dates to milliseconds and booleans\n // to `1` or `0` treating invalid dates coerced to `NaN` as not equal\n return +a == +b;\n\n case numberClass:\n // treat `NaN` vs. `NaN` as equal\n return (a != +a)\n ? b != +b\n // but treat `+0` vs. `-0` as not equal\n : (a == 0 ? (1 / a == 1 / b) : a == +b);\n\n case regexpClass:\n case stringClass:\n // coerce regexes to strings (http://es5.github.io/#x15.10.6.4)\n // treat string primitives and their corresponding object instances as equal\n return a == String(b);\n }\n var isArr = className == arrayClass;\n if (!isArr) {\n // unwrap any `lodash` wrapped values\n var aWrapped = hasOwnProperty.call(a, '__wrapped__'),\n bWrapped = hasOwnProperty.call(b, '__wrapped__');\n\n if (aWrapped || bWrapped) {\n return baseIsEqual(aWrapped ? a.__wrapped__ : a, bWrapped ? b.__wrapped__ : b, callback, isWhere, stackA, stackB);\n }\n // exit for functions and DOM nodes\n if (className != objectClass) {\n return false;\n }\n // in older versions of Opera, `arguments` objects have `Array` constructors\n var ctorA = a.constructor,\n ctorB = b.constructor;\n\n // non `Object` object instances with different constructors are not equal\n if (ctorA != ctorB &&\n !(isFunction(ctorA) && ctorA instanceof ctorA && isFunction(ctorB) && ctorB instanceof ctorB) &&\n ('constructor' in a && 'constructor' in b)\n ) {\n return false;\n }\n }\n // assume cyclic structures are equal\n // the algorithm for detecting cyclic structures is adapted from ES 5.1\n // section 15.12.3, abstract operation `JO` (http://es5.github.io/#x15.12.3)\n var initedStack = !stackA;\n stackA || (stackA = getArray());\n stackB || (stackB = getArray());\n\n var length = stackA.length;\n while (length--) {\n if (stackA[length] == a) {\n return stackB[length] == b;\n }\n }\n var size = 0;\n result = true;\n\n // add `a` and `b` to the stack of traversed objects\n stackA.push(a);\n stackB.push(b);\n\n // recursively compare objects and arrays (susceptible to call stack limits)\n if (isArr) {\n // compare lengths to determine if a deep comparison is necessary\n length = a.length;\n size = b.length;\n result = size == length;\n\n if (result || isWhere) {\n // deep compare the contents, ignoring non-numeric properties\n while (size--) {\n var index = length,\n value = b[size];\n\n if (isWhere) {\n while (index--) {\n if ((result = baseIsEqual(a[index], value, callback, isWhere, stackA, stackB))) {\n break;\n }\n }\n } else if (!(result = baseIsEqual(a[size], value, callback, isWhere, stackA, stackB))) {\n break;\n }\n }\n }\n }\n else {\n // deep compare objects using `forIn`, instead of `forOwn`, to avoid `Object.keys`\n // which, in this case, is more costly\n forIn(b, function(value, key, b) {\n if (hasOwnProperty.call(b, key)) {\n // count the number of properties.\n size++;\n // deep compare each property value.\n return (result = hasOwnProperty.call(a, key) && baseIsEqual(a[key], value, callback, isWhere, stackA, stackB));\n }\n });\n\n if (result && !isWhere) {\n // ensure both objects have the same number of properties\n forIn(a, function(value, key, a) {\n if (hasOwnProperty.call(a, key)) {\n // `size` will be `-1` if `a` has more properties than `b`\n return (result = --size > -1);\n }\n });\n }\n }\n stackA.pop();\n stackB.pop();\n\n if (initedStack) {\n releaseArray(stackA);\n releaseArray(stackB);\n }\n return result;\n }\n\n return baseIsEqual;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/baseIsEqual.js\n ** module id = 317\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/baseIsEqual.js?"); },function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(67), __webpack_require__(69)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseIndexOf, keyPrefix) {\n\n /**\n * An implementation of `_.contains` for cache objects that mimics the return\n * signature of `_.indexOf` by returning `0` if the value is found, else `-1`.\n *\n * @private\n * @param {Object} cache The cache object to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns `0` if `value` is found, else `-1`.\n */\n function cacheIndexOf(cache, value) {\n var type = typeof value;\n cache = cache.cache;\n\n if (type == 'boolean' || value == null) {\n return cache[value] ? 0 : -1;\n }\n if (type != 'number' && type != 'string') {\n type = 'object';\n }\n var key = type == 'number' ? value : keyPrefix + value;\n cache = (cache = cache[type]) && cache[key];\n\n return type == 'object'\n ? (cache && baseIndexOf(cache, value) > -1 ? 0 : -1)\n : (cache ? 0 : -1);\n }\n\n return cacheIndexOf;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/cacheIndexOf.js\n ** module id = 318\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/cacheIndexOf.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(69)], __WEBPACK_AMD_DEFINE_RESULT__ = function(keyPrefix) {\n\n /**\n * Adds a given value to the corresponding cache object.\n *\n * @private\n * @param {*} value The value to add to the cache.\n */\n function cachePush(value) {\n var cache = this.cache,\n type = typeof value;\n\n if (type == 'boolean' || value == null) {\n cache[value] = true;\n } else {\n if (type != 'number' && type != 'string') {\n type = 'object';\n }\n var key = type == 'number' ? value : keyPrefix + value,\n typeCache = cache[type] || (cache[type] = {});\n\n if (type == 'object') {\n (typeCache[key] || (typeCache[key] = [])).push(value);\n } else {\n typeCache[key] = true;\n }\n }\n }\n\n return cachePush;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/cachePush.js\n ** module id = 319\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/cachePush.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Used by `sortBy` to compare transformed `collection` elements, stable sorting\n * them in ascending order.\n *\n * @private\n * @param {Object} a The object to compare to `b`.\n * @param {Object} b The object to compare to `a`.\n * @returns {number} Returns the sort order indicator of `1` or `-1`.\n */\n function compareAscending(a, b) {\n var ac = a.criteria,\n bc = b.criteria,\n index = -1,\n length = ac.length;\n\n while (++index < length) {\n var value = ac[index],\n other = bc[index];\n\n if (value !== other) {\n if (value > other || typeof value == 'undefined') {\n return 1;\n }\n if (value < other || typeof other == 'undefined') {\n return -1;\n }\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to return the same value for\n // `a` and `b`. See https://github.com/jashkenas/underscore/pull/1247\n //\n // This also ensures a stable sort in V8 and other engines.\n // See http://code.google.com/p/v8/issues/detail?id=90\n return a.index - b.index;\n }\n\n return compareAscending;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/compareAscending.js\n ** module id = 320\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/compareAscending.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(22), __webpack_require__(31), __webpack_require__(33)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createCallback, forOwn, isArray) {\n\n /**\n * Creates a function that aggregates a collection, creating an object composed\n * of keys generated from the results of running each element of the collection\n * through a callback. The given `setter` function sets the keys and values\n * of the composed object.\n *\n * @private\n * @param {Function} setter The setter function.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter) {\n return function(collection, callback, thisArg) {\n var result = {};\n callback = createCallback(callback, thisArg, 3);\n\n var index = -1,\n length = collection ? collection.length : 0;\n\n if (typeof length == 'number') {\n while (++index < length) {\n var value = collection[index];\n setter(result, value, callback(value, index, collection), collection);\n }\n } else {\n forOwn(collection, function(value, key, collection) {\n setter(result, value, callback(value, key, collection), collection);\n });\n }\n return result;\n };\n }\n\n return createAggregator;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/createAggregator.js\n ** module id = 321\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/createAggregator.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(319), __webpack_require__(117), __webpack_require__(71)], __WEBPACK_AMD_DEFINE_RESULT__ = function(cachePush, getObject, releaseObject) {\n\n /**\n * Creates a cache object to optimize linear searches of large arrays.\n *\n * @private\n * @param {Array} [array=[]] The array to search.\n * @returns {null|Object} Returns the cache object or `null` if caching should not be used.\n */\n function createCache(array) {\n var index = -1,\n length = array.length,\n first = array[0],\n mid = array[(length / 2) | 0],\n last = array[length - 1];\n\n if (first && typeof first == 'object' &&\n mid && typeof mid == 'object' && last && typeof last == 'object') {\n return false;\n }\n var cache = getObject();\n cache['false'] = cache['null'] = cache['true'] = cache['undefined'] = false;\n\n var result = getObject();\n result.array = array;\n result.cache = cache;\n result.push = cachePush;\n\n while (++index < length) {\n result.push(array[index]);\n }\n return result;\n }\n\n return createCache;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/createCache.js\n ** module id = 322\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/createCache.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** Used as the size when optimizations are enabled for large arrays */\n var largeArraySize = 75;\n\n return largeArraySize;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/largeArraySize.js\n ** module id = 323\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/largeArraySize.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(51), __webpack_require__(63)], __WEBPACK_AMD_DEFINE_RESULT__ = function(forIn, isFunction) {\n\n /** `Object#toString` result shortcuts */\n var objectClass = '[object Object]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /** Native method shortcuts */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /**\n * A fallback implementation of `isPlainObject` which checks if a given value\n * is an object created by the `Object` constructor, assuming objects created\n * by the `Object` constructor have no inherited enumerable properties and that\n * there are no `Object.prototype` extensions.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\n function shimIsPlainObject(value) {\n var ctor,\n result;\n\n // avoid non Object objects, `arguments` objects, and DOM elements\n if (!(value && toString.call(value) == objectClass) ||\n (ctor = value.constructor, isFunction(ctor) && !(ctor instanceof ctor))) {\n return false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n forIn(value, function(value, key) {\n result = key;\n });\n return typeof result == 'undefined' || hasOwnProperty.call(value, result);\n }\n\n return shimIsPlainObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/internals/shimIsPlainObject.js\n ** module id = 324\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/internals/shimIsPlainObject.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /** `Object#toString` result shortcuts */\n var argsClass = '[object Arguments]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /**\n * Checks if `value` is an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if the `value` is an `arguments` object, else `false`.\n * @example\n *\n * (function() { return _.isArguments(arguments); })(1, 2, 3);\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n function isArguments(value) {\n return value && typeof value == 'object' && typeof value.length == 'number' &&\n toString.call(value) == argsClass || false;\n }\n\n return isArguments;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isArguments.js\n ** module id = 325\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isArguments.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(277), __webpack_require__(324)], __WEBPACK_AMD_DEFINE_RESULT__ = function(isNative, shimIsPlainObject) {\n\n /** `Object#toString` result shortcuts */\n var objectClass = '[object Object]';\n\n /** Used for native method references */\n var objectProto = Object.prototype;\n\n /** Used to resolve the internal [[Class]] of values */\n var toString = objectProto.toString;\n\n /** Native method shortcuts */\n var getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf;\n\n /**\n * Checks if `value` is an object created by the `Object` constructor.\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * _.isPlainObject(new Shape);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n */\n var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) {\n if (!(value && toString.call(value) == objectClass)) {\n return false;\n }\n var valueOf = value.valueOf,\n objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto);\n\n return objProto\n ? (value == objProto || getPrototypeOf(value) == objProto)\n : shimIsPlainObject(value);\n };\n\n return isPlainObject;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/isPlainObject.js\n ** module id = 326\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/isPlainObject.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(116), __webpack_require__(22), __webpack_require__(51), __webpack_require__(100)], __WEBPACK_AMD_DEFINE_RESULT__ = function(baseFlatten, createCallback, forIn, isObject) {\n\n /**\n * Creates a shallow clone of `object` composed of the specified properties.\n * Property names may be specified as individual arguments or as arrays of\n * property names. If a callback is provided it will be executed for each\n * property of `object` picking the properties the callback returns truey\n * for. The callback is bound to `thisArg` and invoked with three arguments;\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @category Objects\n * @param {Object} object The source object.\n * @param {Function|...string|string[]} [callback] The function called per\n * iteration or property names to pick, specified as individual property\n * names or arrays of property names.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Object} Returns an object composed of the picked properties.\n * @example\n *\n * _.pick({ 'name': 'fred', '_userid': 'fred1' }, 'name');\n * // => { 'name': 'fred' }\n *\n * _.pick({ 'name': 'fred', '_userid': 'fred1' }, function(value, key) {\n * return key.charAt(0) != '_';\n * });\n * // => { 'name': 'fred' }\n */\n function pick(object, callback, thisArg) {\n var result = {};\n if (typeof callback != 'function') {\n var index = -1,\n props = baseFlatten(arguments, true, false, 1),\n length = isObject(object) ? props.length : 0;\n\n while (++index < length) {\n var key = props[index];\n if (key in object) {\n result[key] = object[key];\n }\n }\n } else {\n callback = createCallback(callback, thisArg, 3);\n forIn(object, function(value, key, object) {\n if (callback(value, key, object)) {\n result[key] = value;\n }\n });\n }\n return result;\n }\n\n return pick;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/objects/pick.js\n ** module id = 327\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/objects/pick.js?")},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Creates a \"_.pluck\" style function, which returns the `key` value of a\n * given object.\n *\n * @static\n * @memberOf _\n * @category Utilities\n * @param {string} key The name of the property to retrieve.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var characters = [\n * { 'name': 'fred', 'age': 40 },\n * { 'name': 'barney', 'age': 36 }\n * ];\n *\n * var getName = _.property('name');\n *\n * _.map(characters, getName);\n * // => ['barney', 'fred']\n *\n * _.sortBy(characters, getName);\n * // => [{ 'name': 'barney', 'age': 36 }, { 'name': 'fred', 'age': 40 }]\n */\n function property(key) {\n return function(object) {\n return object[key];\n };\n }\n\n return property;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/utilities/property.js\n ** module id = 328\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/utilities/property.js?")},function(module,exports,__webpack_require__){eval('var map = {\n\t"./af": 122,\n\t"./af.js": 122,\n\t"./ar": 129,\n\t"./ar-dz": 123,\n\t"./ar-dz.js": 123,\n\t"./ar-kw": 124,\n\t"./ar-kw.js": 124,\n\t"./ar-ly": 125,\n\t"./ar-ly.js": 125,\n\t"./ar-ma": 126,\n\t"./ar-ma.js": 126,\n\t"./ar-sa": 127,\n\t"./ar-sa.js": 127,\n\t"./ar-tn": 128,\n\t"./ar-tn.js": 128,\n\t"./ar.js": 129,\n\t"./az": 130,\n\t"./az.js": 130,\n\t"./be": 131,\n\t"./be.js": 131,\n\t"./bg": 132,\n\t"./bg.js": 132,\n\t"./bn": 133,\n\t"./bn.js": 133,\n\t"./bo": 134,\n\t"./bo.js": 134,\n\t"./br": 135,\n\t"./br.js": 135,\n\t"./bs": 136,\n\t"./bs.js": 136,\n\t"./ca": 137,\n\t"./ca.js": 137,\n\t"./cs": 138,\n\t"./cs.js": 138,\n\t"./cv": 139,\n\t"./cv.js": 139,\n\t"./cy": 140,\n\t"./cy.js": 140,\n\t"./da": 141,\n\t"./da.js": 141,\n\t"./de": 144,\n\t"./de-at": 142,\n\t"./de-at.js": 142,\n\t"./de-ch": 143,\n\t"./de-ch.js": 143,\n\t"./de.js": 144,\n\t"./dv": 145,\n\t"./dv.js": 145,\n\t"./el": 146,\n\t"./el.js": 146,\n\t"./en-au": 147,\n\t"./en-au.js": 147,\n\t"./en-ca": 148,\n\t"./en-ca.js": 148,\n\t"./en-gb": 149,\n\t"./en-gb.js": 149,\n\t"./en-ie": 150,\n\t"./en-ie.js": 150,\n\t"./en-nz": 151,\n\t"./en-nz.js": 151,\n\t"./eo": 152,\n\t"./eo.js": 152,\n\t"./es": 154,\n\t"./es-do": 153,\n\t"./es-do.js": 153,\n\t"./es.js": 154,\n\t"./et": 155,\n\t"./et.js": 155,\n\t"./eu": 156,\n\t"./eu.js": 156,\n\t"./fa": 157,\n\t"./fa.js": 157,\n\t"./fi": 158,\n\t"./fi.js": 158,\n\t"./fo": 159,\n\t"./fo.js": 159,\n\t"./fr": 162,\n\t"./fr-ca": 160,\n\t"./fr-ca.js": 160,\n\t"./fr-ch": 161,\n\t"./fr-ch.js": 161,\n\t"./fr.js": 162,\n\t"./fy": 163,\n\t"./fy.js": 163,\n\t"./gd": 164,\n\t"./gd.js": 164,\n\t"./gl": 165,\n\t"./gl.js": 165,\n\t"./gom-latn": 166,\n\t"./gom-latn.js": 166,\n\t"./he": 167,\n\t"./he.js": 167,\n\t"./hi": 168,\n\t"./hi.js": 168,\n\t"./hr": 169,\n\t"./hr.js": 169,\n\t"./hu": 170,\n\t"./hu.js": 170,\n\t"./hy-am": 171,\n\t"./hy-am.js": 171,\n\t"./id": 172,\n\t"./id.js": 172,\n\t"./is": 173,\n\t"./is.js": 173,\n\t"./it": 174,\n\t"./it.js": 174,\n\t"./ja": 175,\n\t"./ja.js": 175,\n\t"./jv": 176,\n\t"./jv.js": 176,\n\t"./ka": 177,\n\t"./ka.js": 177,\n\t"./kk": 178,\n\t"./kk.js": 178,\n\t"./km": 179,\n\t"./km.js": 179,\n\t"./kn": 180,\n\t"./kn.js": 180,\n\t"./ko": 181,\n\t"./ko.js": 181,\n\t"./ky": 182,\n\t"./ky.js": 182,\n\t"./lb": 183,\n\t"./lb.js": 183,\n\t"./lo": 184,\n\t"./lo.js": 184,\n\t"./lt": 185,\n\t"./lt.js": 185,\n\t"./lv": 186,\n\t"./lv.js": 186,\n\t"./me": 187,\n\t"./me.js": 187,\n\t"./mi": 188,\n\t"./mi.js": 188,\n\t"./mk": 189,\n\t"./mk.js": 189,\n\t"./ml": 190,\n\t"./ml.js": 190,\n\t"./mr": 191,\n\t"./mr.js": 191,\n\t"./ms": 193,\n\t"./ms-my": 192,\n\t"./ms-my.js": 192,\n\t"./ms.js": 193,\n\t"./my": 194,\n\t"./my.js": 194,\n\t"./nb": 195,\n\t"./nb.js": 195,\n\t"./ne": 196,\n\t"./ne.js": 196,\n\t"./nl": 198,\n\t"./nl-be": 197,\n\t"./nl-be.js": 197,\n\t"./nl.js": 198,\n\t"./nn": 199,\n\t"./nn.js": 199,\n\t"./pa-in": 200,\n\t"./pa-in.js": 200,\n\t"./pl": 201,\n\t"./pl.js": 201,\n\t"./pt": 203,\n\t"./pt-br": 202,\n\t"./pt-br.js": 202,\n\t"./pt.js": 203,\n\t"./ro": 204,\n\t"./ro.js": 204,\n\t"./ru": 205,\n\t"./ru.js": 205,\n\t"./sd": 206,\n\t"./sd.js": 206,\n\t"./se": 207,\n\t"./se.js": 207,\n\t"./si": 208,\n\t"./si.js": 208,\n\t"./sk": 209,\n\t"./sk.js": 209,\n\t"./sl": 210,\n\t"./sl.js": 210,\n\t"./sq": 211,\n\t"./sq.js": 211,\n\t"./sr": 213,\n\t"./sr-cyrl": 212,\n\t"./sr-cyrl.js": 212,\n\t"./sr.js": 213,\n\t"./ss": 214,\n\t"./ss.js": 214,\n\t"./sv": 215,\n\t"./sv.js": 215,\n\t"./sw": 216,\n\t"./sw.js": 216,\n\t"./ta": 217,\n\t"./ta.js": 217,\n\t"./te": 218,\n\t"./te.js": 218,\n\t"./tet": 219,\n\t"./tet.js": 219,\n\t"./th": 220,\n\t"./th.js": 220,\n\t"./tl-ph": 221,\n\t"./tl-ph.js": 221,\n\t"./tlh": 222,\n\t"./tlh.js": 222,\n\t"./tr": 223,\n\t"./tr.js": 223,\n\t"./tzl": 224,\n\t"./tzl.js": 224,\n\t"./tzm": 226,\n\t"./tzm-latn": 225,\n\t"./tzm-latn.js": 225,\n\t"./tzm.js": 226,\n\t"./uk": 227,\n\t"./uk.js": 227,\n\t"./ur": 228,\n\t"./ur.js": 228,\n\t"./uz": 230,\n\t"./uz-latn": 229,\n\t"./uz-latn.js": 229,\n\t"./uz.js": 230,\n\t"./vi": 231,\n\t"./vi.js": 231,\n\t"./x-pseudo": 232,\n\t"./x-pseudo.js": 232,\n\t"./yo": 233,\n\t"./yo.js": 233,\n\t"./zh-cn": 234,\n\t"./zh-cn.js": 234,\n\t"./zh-hk": 235,\n\t"./zh-hk.js": 235,\n\t"./zh-tw": 236,\n\t"./zh-tw.js": 236\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\treturn map[req] || (function() { throw new Error("Cannot find module \'" + req + "\'.") }());\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 329;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment/locale ^\\.\\/.*$\n ** module id = 329\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/moment/locale_^\\.\\/.*$?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_RESULT__;/*! picturefill - v3.0.2 - 2016-02-12\n * https://scottjehl.github.io/picturefill/\n * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT\n */\n/*! Gecko-Picture - v1.0\n * https://github.com/scottjehl/picturefill/tree/3.0/src/plugins/gecko-picture\n * Firefox\'s early picture implementation (prior to FF41) is static and does\n * not react to viewport changes. This tiny module fixes this.\n */\n(function(window) {\n\t/*jshint eqnull:true */\n\tvar ua = navigator.userAgent;\n\n\tif ( window.HTMLPictureElement && ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 < 45) ) {\n\t\taddEventListener("resize", (function() {\n\t\t\tvar timer;\n\n\t\t\tvar dummySrc = document.createElement("source");\n\n\t\t\tvar fixRespimg = function(img) {\n\t\t\t\tvar source, sizes;\n\t\t\t\tvar picture = img.parentNode;\n\n\t\t\t\tif (picture.nodeName.toUpperCase() === "PICTURE") {\n\t\t\t\t\tsource = dummySrc.cloneNode();\n\n\t\t\t\t\tpicture.insertBefore(source, picture.firstElementChild);\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tpicture.removeChild(source);\n\t\t\t\t\t});\n\t\t\t\t} else if (!img._pfLastSize || img.offsetWidth > img._pfLastSize) {\n\t\t\t\t\timg._pfLastSize = img.offsetWidth;\n\t\t\t\t\tsizes = img.sizes;\n\t\t\t\t\timg.sizes += ",100vw";\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\timg.sizes = sizes;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar findPictureImgs = function() {\n\t\t\t\tvar i;\n\t\t\t\tvar imgs = document.querySelectorAll("picture > img, img[srcset][sizes]");\n\t\t\t\tfor (i = 0; i < imgs.length; i++) {\n\t\t\t\t\tfixRespimg(imgs[i]);\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar onResize = function() {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\ttimer = setTimeout(findPictureImgs, 99);\n\t\t\t};\n\t\t\tvar mq = window.matchMedia && matchMedia("(orientation: landscape)");\n\t\t\tvar init = function() {\n\t\t\t\tonResize();\n\n\t\t\t\tif (mq && mq.addListener) {\n\t\t\t\t\tmq.addListener(onResize);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tdummySrc.srcset = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";\n\n\t\t\tif (/^[c|i]|d$/.test(document.readyState || "")) {\n\t\t\t\tinit();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener("DOMContentLoaded", init);\n\t\t\t}\n\n\t\t\treturn onResize;\n\t\t})());\n\t}\n})(window);\n\n/*! Picturefill - v3.0.2\n * http://scottjehl.github.io/picturefill\n * Copyright (c) 2015 https://github.com/scottjehl/picturefill/blob/master/Authors.txt;\n * License: MIT\n */\n\n(function( window, document, undefined ) {\n\t// Enable strict mode\n\t"use strict";\n\n\t// HTML shim|v it for old IE (IE9 will still need the HTML video tag workaround)\n\tdocument.createElement( "picture" );\n\n\tvar warn, eminpx, alwaysCheckWDescriptor, evalId;\n\t// local object for method references and testing exposure\n\tvar pf = {};\n\tvar isSupportTestReady = false;\n\tvar noop = function() {};\n\tvar image = document.createElement( "img" );\n\tvar getImgAttr = image.getAttribute;\n\tvar setImgAttr = image.setAttribute;\n\tvar removeImgAttr = image.removeAttribute;\n\tvar docElem = document.documentElement;\n\tvar types = {};\n\tvar cfg = {\n\t\t//resource selection:\n\t\talgorithm: ""\n\t};\n\tvar srcAttr = "data-pfsrc";\n\tvar srcsetAttr = srcAttr + "set";\n\t// ua sniffing is done for undetectable img loading features,\n\t// to do some non crucial perf optimizations\n\tvar ua = navigator.userAgent;\n\tvar supportAbort = (/rident/).test(ua) || ((/ecko/).test(ua) && ua.match(/rv\\:(\\d+)/) && RegExp.$1 > 35 );\n\tvar curSrcProp = "currentSrc";\n\tvar regWDesc = /\\s+\\+?\\d+(e\\d+)?w/;\n\tvar regSize = /(\\([^)]+\\))?\\s*(.+)/;\n\tvar setOptions = window.picturefillCFG;\n\t/**\n\t * Shortcut property for https://w3c.github.io/webappsec/specs/mixedcontent/#restricts-mixed-content ( for easy overriding in tests )\n\t */\n\t// baseStyle also used by getEmValue (i.e.: width: 1em is important)\n\tvar baseStyle = "position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)";\n\tvar fsCss = "font-size:100%!important;";\n\tvar isVwDirty = true;\n\n\tvar cssCache = {};\n\tvar sizeLengthCache = {};\n\tvar DPR = window.devicePixelRatio;\n\tvar units = {\n\t\tpx: 1,\n\t\t"in": 96\n\t};\n\tvar anchor = document.createElement( "a" );\n\t/**\n\t * alreadyRun flag used for setOptions. is it true setOptions will reevaluate\n\t * @type {boolean}\n\t */\n\tvar alreadyRun = false;\n\n\t// Reusable, non-"g" Regexes\n\n\t// (Don\'t use \\s, to avoid matching non-breaking space.)\n\tvar regexLeadingSpaces = /^[ \\t\\n\\r\\u000c]+/,\n\t regexLeadingCommasOrSpaces = /^[, \\t\\n\\r\\u000c]+/,\n\t regexLeadingNotSpaces = /^[^ \\t\\n\\r\\u000c]+/,\n\t regexTrailingCommas = /[,]+$/,\n\t regexNonNegativeInteger = /^\\d+$/,\n\n\t // ( Positive or negative or unsigned integers or decimals, without or without exponents.\n\t // Must include at least one digit.\n\t // According to spec tests any decimal point must be followed by a digit.\n\t // No leading plus sign is allowed.)\n\t // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number\n\t regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;\n\n\tvar on = function(obj, evt, fn, capture) {\n\t\tif ( obj.addEventListener ) {\n\t\t\tobj.addEventListener(evt, fn, capture || false);\n\t\t} else if ( obj.attachEvent ) {\n\t\t\tobj.attachEvent( "on" + evt, fn);\n\t\t}\n\t};\n\n\t/**\n\t * simple memoize function:\n\t */\n\n\tvar memoize = function(fn) {\n\t\tvar cache = {};\n\t\treturn function(input) {\n\t\t\tif ( !(input in cache) ) {\n\t\t\t\tcache[ input ] = fn(input);\n\t\t\t}\n\t\t\treturn cache[ input ];\n\t\t};\n\t};\n\n\t// UTILITY FUNCTIONS\n\n\t// Manual is faster than RegEx\n\t// http://jsperf.com/whitespace-character/5\n\tfunction isSpace(c) {\n\t\treturn (c === "\\u0020" || // space\n\t\t c === "\\u0009" || // horizontal tab\n\t\t c === "\\u000A" || // new line\n\t\t c === "\\u000C" || // form feed\n\t\t c === "\\u000D"); // carriage return\n\t}\n\n\t/**\n\t * gets a mediaquery and returns a boolean or gets a css length and returns a number\n\t * @param css mediaqueries or css length\n\t * @returns {boolean|number}\n\t *\n\t * based on: https://gist.github.com/jonathantneal/db4f77009b155f083738\n\t */\n\tvar evalCSS = (function() {\n\n\t\tvar regLength = /^([\\d\\.]+)(em|vw|px)$/;\n\t\tvar replace = function() {\n\t\t\tvar args = arguments, index = 0, string = args[0];\n\t\t\twhile (++index in args) {\n\t\t\t\tstring = string.replace(args[index], args[++index]);\n\t\t\t}\n\t\t\treturn string;\n\t\t};\n\n\t\tvar buildStr = memoize(function(css) {\n\n\t\t\treturn "return " + replace((css || "").toLowerCase(),\n\t\t\t\t// interpret `and`\n\t\t\t\t/\\band\\b/g, "&&",\n\n\t\t\t\t// interpret `,`\n\t\t\t\t/,/g, "||",\n\n\t\t\t\t// interpret `min-` as >=\n\t\t\t\t/min-([a-z-\\s]+):/g, "e.$1>=",\n\n\t\t\t\t// interpret `max-` as <=\n\t\t\t\t/max-([a-z-\\s]+):/g, "e.$1<=",\n\n\t\t\t\t//calc value\n\t\t\t\t/calc([^)]+)/g, "($1)",\n\n\t\t\t\t// interpret css values\n\t\t\t\t/(\\d+[\\.]*[\\d]*)([a-z]+)/g, "($1 * e.$2)",\n\t\t\t\t//make eval less evil\n\t\t\t\t/^(?!(e.[a-z]|[0-9\\.&=|><\\+\\-\\*\\(\\)\\/])).*/ig, ""\n\t\t\t) + ";";\n\t\t});\n\n\t\treturn function(css, length) {\n\t\t\tvar parsedLength;\n\t\t\tif (!(css in cssCache)) {\n\t\t\t\tcssCache[css] = false;\n\t\t\t\tif (length && (parsedLength = css.match( regLength ))) {\n\t\t\t\t\tcssCache[css] = parsedLength[ 1 ] * units[parsedLength[ 2 ]];\n\t\t\t\t} else {\n\t\t\t\t\t/*jshint evil:true */\n\t\t\t\t\ttry{\n\t\t\t\t\t\tcssCache[css] = new Function("e", buildStr(css))(units);\n\t\t\t\t\t} catch(e) {}\n\t\t\t\t\t/*jshint evil:false */\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn cssCache[css];\n\t\t};\n\t})();\n\n\tvar setResolution = function( candidate, sizesattr ) {\n\t\tif ( candidate.w ) { // h = means height: || descriptor.type === \'h\' do not handle yet...\n\t\t\tcandidate.cWidth = pf.calcListLength( sizesattr || "100vw" );\n\t\t\tcandidate.res = candidate.w / candidate.cWidth ;\n\t\t} else {\n\t\t\tcandidate.res = candidate.d;\n\t\t}\n\t\treturn candidate;\n\t};\n\n\t/**\n\t *\n\t * @param opt\n\t */\n\tvar picturefill = function( opt ) {\n\n\t\tif (!isSupportTestReady) {return;}\n\n\t\tvar elements, i, plen;\n\n\t\tvar options = opt || {};\n\n\t\tif ( options.elements && options.elements.nodeType === 1 ) {\n\t\t\tif ( options.elements.nodeName.toUpperCase() === "IMG" ) {\n\t\t\t\toptions.elements = [ options.elements ];\n\t\t\t} else {\n\t\t\t\toptions.context = options.elements;\n\t\t\t\toptions.elements = null;\n\t\t\t}\n\t\t}\n\n\t\telements = options.elements || pf.qsa( (options.context || document), ( options.reevaluate || options.reselect ) ? pf.sel : pf.selShort );\n\n\t\tif ( (plen = elements.length) ) {\n\n\t\t\tpf.setupRun( options );\n\t\t\talreadyRun = true;\n\n\t\t\t// Loop through all elements\n\t\t\tfor ( i = 0; i < plen; i++ ) {\n\t\t\t\tpf.fillImg(elements[ i ], options);\n\t\t\t}\n\n\t\t\tpf.teardownRun( options );\n\t\t}\n\t};\n\n\t/**\n\t * outputs a warning for the developer\n\t * @param {message}\n\t * @type {Function}\n\t */\n\twarn = ( window.console && console.warn ) ?\n\t\tfunction( message ) {\n\t\t\tconsole.warn( message );\n\t\t} :\n\t\tnoop\n\t;\n\n\tif ( !(curSrcProp in image) ) {\n\t\tcurSrcProp = "src";\n\t}\n\n\t// Add support for standard mime types.\n\ttypes[ "image/jpeg" ] = true;\n\ttypes[ "image/gif" ] = true;\n\ttypes[ "image/png" ] = true;\n\n\tfunction detectTypeSupport( type, typeUri ) {\n\t\t// based on Modernizr\'s lossless img-webp test\n\t\t// note: asynchronous\n\t\tvar image = new window.Image();\n\t\timage.onerror = function() {\n\t\t\ttypes[ type ] = false;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.onload = function() {\n\t\t\ttypes[ type ] = image.width === 1;\n\t\t\tpicturefill();\n\t\t};\n\t\timage.src = typeUri;\n\t\treturn "pending";\n\t}\n\n\t// test svg support\n\ttypes[ "image/svg+xml" ] = document.implementation.hasFeature( "http://www.w3.org/TR/SVG11/feature#Image", "1.1" );\n\n\t/**\n\t * updates the internal vW property with the current viewport width in px\n\t */\n\tfunction updateMetrics() {\n\n\t\tisVwDirty = false;\n\t\tDPR = window.devicePixelRatio;\n\t\tcssCache = {};\n\t\tsizeLengthCache = {};\n\n\t\tpf.DPR = DPR || 1;\n\n\t\tunits.width = Math.max(window.innerWidth || 0, docElem.clientWidth);\n\t\tunits.height = Math.max(window.innerHeight || 0, docElem.clientHeight);\n\n\t\tunits.vw = units.width / 100;\n\t\tunits.vh = units.height / 100;\n\n\t\tevalId = [ units.height, units.width, DPR ].join("-");\n\n\t\tunits.em = pf.getEmValue();\n\t\tunits.rem = units.em;\n\t}\n\n\tfunction chooseLowRes( lowerValue, higherValue, dprValue, isCached ) {\n\t\tvar bonusFactor, tooMuch, bonus, meanDensity;\n\n\t\t//experimental\n\t\tif (cfg.algorithm === "saveData" ){\n\t\t\tif ( lowerValue > 2.7 ) {\n\t\t\t\tmeanDensity = dprValue + 1;\n\t\t\t} else {\n\t\t\t\ttooMuch = higherValue - dprValue;\n\t\t\t\tbonusFactor = Math.pow(lowerValue - 0.6, 1.5);\n\n\t\t\t\tbonus = tooMuch * bonusFactor;\n\n\t\t\t\tif (isCached) {\n\t\t\t\t\tbonus += 0.1 * bonusFactor;\n\t\t\t\t}\n\n\t\t\t\tmeanDensity = lowerValue + bonus;\n\t\t\t}\n\t\t} else {\n\t\t\tmeanDensity = (dprValue > 1) ?\n\t\t\t\tMath.sqrt(lowerValue * higherValue) :\n\t\t\t\tlowerValue;\n\t\t}\n\n\t\treturn meanDensity > dprValue;\n\t}\n\n\tfunction applyBestCandidate( img ) {\n\t\tvar srcSetCandidates;\n\t\tvar matchingSet = pf.getSet( img );\n\t\tvar evaluated = false;\n\t\tif ( matchingSet !== "pending" ) {\n\t\t\tevaluated = evalId;\n\t\t\tif ( matchingSet ) {\n\t\t\t\tsrcSetCandidates = pf.setRes( matchingSet );\n\t\t\t\tpf.applySetCandidate( srcSetCandidates, img );\n\t\t\t}\n\t\t}\n\t\timg[ pf.ns ].evaled = evaluated;\n\t}\n\n\tfunction ascendingSort( a, b ) {\n\t\treturn a.res - b.res;\n\t}\n\n\tfunction setSrcToCur( img, src, set ) {\n\t\tvar candidate;\n\t\tif ( !set && src ) {\n\t\t\tset = img[ pf.ns ].sets;\n\t\t\tset = set && set[set.length - 1];\n\t\t}\n\n\t\tcandidate = getCandidateForSrc(src, set);\n\n\t\tif ( candidate ) {\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\timg[ pf.ns ].curSrc = src;\n\t\t\timg[ pf.ns ].curCan = candidate;\n\n\t\t\tif ( !candidate.res ) {\n\t\t\t\tsetResolution( candidate, candidate.set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getCandidateForSrc( src, set ) {\n\t\tvar i, candidate, candidates;\n\t\tif ( src && set ) {\n\t\t\tcandidates = pf.parseSet( set );\n\t\t\tsrc = pf.makeUrl(src);\n\t\t\tfor ( i = 0; i < candidates.length; i++ ) {\n\t\t\t\tif ( src === pf.makeUrl(candidates[ i ].url) ) {\n\t\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn candidate;\n\t}\n\n\tfunction getAllSourceElements( picture, candidates ) {\n\t\tvar i, len, source, srcset;\n\n\t\t// SPEC mismatch intended for size and perf:\n\t\t// actually only source elements preceding the img should be used\n\t\t// also note: don\'t use qsa here, because IE8 sometimes doesn\'t like source as the key part in a selector\n\t\tvar sources = picture.getElementsByTagName( "source" );\n\n\t\tfor ( i = 0, len = sources.length; i < len; i++ ) {\n\t\t\tsource = sources[ i ];\n\t\t\tsource[ pf.ns ] = true;\n\t\t\tsrcset = source.getAttribute( "srcset" );\n\n\t\t\t// if source does not have a srcset attribute, skip\n\t\t\tif ( srcset ) {\n\t\t\t\tcandidates.push( {\n\t\t\t\t\tsrcset: srcset,\n\t\t\t\t\tmedia: source.getAttribute( "media" ),\n\t\t\t\t\ttype: source.getAttribute( "type" ),\n\t\t\t\t\tsizes: source.getAttribute( "sizes" )\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Srcset Parser\n\t * By Alex Bell | MIT License\n\t *\n\t * @returns Array [{url: _, d: _, w: _, h:_, set:_(????)}, ...]\n\t *\n\t * Based super duper closely on the reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute\n\t */\n\n\t// 1. Let input be the value passed to this algorithm.\n\t// (TO-DO : Explain what "set" argument is here. Maybe choose a more\n\t// descriptive & more searchable name. Since passing the "set" in really has\n\t// nothing to do with parsing proper, I would prefer this assignment eventually\n\t// go in an external fn.)\n\tfunction parseSrcset(input, set) {\n\n\t\tfunction collectCharacters(regEx) {\n\t\t\tvar chars,\n\t\t\t match = regEx.exec(input.substring(pos));\n\t\t\tif (match) {\n\t\t\t\tchars = match[ 0 ];\n\t\t\t\tpos += chars.length;\n\t\t\t\treturn chars;\n\t\t\t}\n\t\t}\n\n\t\tvar inputLength = input.length,\n\t\t url,\n\t\t descriptors,\n\t\t currentDescriptor,\n\t\t state,\n\t\t c,\n\n\t\t // 2. Let position be a pointer into input, initially pointing at the start\n\t\t // of the string.\n\t\t pos = 0,\n\n\t\t // 3. Let candidates be an initially empty source set.\n\t\t candidates = [];\n\n\t\t/**\n\t\t* Adds descriptor properties to a candidate, pushes to the candidates array\n\t\t* @return undefined\n\t\t*/\n\t\t// (Declared outside of the while loop so that it\'s only created once.\n\t\t// (This fn is defined before it is used, in order to pass JSHINT.\n\t\t// Unfortunately this breaks the sequencing of the spec comments. :/ )\n\t\tfunction parseDescriptors() {\n\n\t\t\t// 9. Descriptor parser: Let error be no.\n\t\t\tvar pError = false,\n\n\t\t\t// 10. Let width be absent.\n\t\t\t// 11. Let density be absent.\n\t\t\t// 12. Let future-compat-h be absent. (We\'re implementing it now as h)\n\t\t\t w, d, h, i,\n\t\t\t candidate = {},\n\t\t\t desc, lastChar, value, intVal, floatVal;\n\n\t\t\t// 13. For each descriptor in descriptors, run the appropriate set of steps\n\t\t\t// from the following list:\n\t\t\tfor (i = 0 ; i < descriptors.length; i++) {\n\t\t\t\tdesc = descriptors[ i ];\n\n\t\t\t\tlastChar = desc[ desc.length - 1 ];\n\t\t\t\tvalue = desc.substring(0, desc.length - 1);\n\t\t\t\tintVal = parseInt(value, 10);\n\t\t\t\tfloatVal = parseFloat(value);\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0077 LATIN SMALL LETTER W character\n\t\t\t\tif (regexNonNegativeInteger.test(value) && (lastChar === "w")) {\n\n\t\t\t\t\t// If width and density are not both absent, then let error be yes.\n\t\t\t\t\tif (w || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes.\n\t\t\t\t\t// Otherwise, let width be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {w = intVal;}\n\n\t\t\t\t// If the descriptor consists of a valid floating-point number followed by\n\t\t\t\t// a U+0078 LATIN SMALL LETTER X character\n\t\t\t\t} else if (regexFloatingPoint.test(value) && (lastChar === "x")) {\n\n\t\t\t\t\t// If width, density and future-compat-h are not all absent, then let error\n\t\t\t\t\t// be yes.\n\t\t\t\t\tif (w || d || h) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing floating-point number values to the descriptor.\n\t\t\t\t\t// If the result is less than zero, let error be yes. Otherwise, let density\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (floatVal < 0) {pError = true;} else {d = floatVal;}\n\n\t\t\t\t// If the descriptor consists of a valid non-negative integer followed by\n\t\t\t\t// a U+0068 LATIN SMALL LETTER H character\n\t\t\t\t} else if (regexNonNegativeInteger.test(value) && (lastChar === "h")) {\n\n\t\t\t\t\t// If height and density are not both absent, then let error be yes.\n\t\t\t\t\tif (h || d) {pError = true;}\n\n\t\t\t\t\t// Apply the rules for parsing non-negative integers to the descriptor.\n\t\t\t\t\t// If the result is zero, let error be yes. Otherwise, let future-compat-h\n\t\t\t\t\t// be the result.\n\t\t\t\t\tif (intVal === 0) {pError = true;} else {h = intVal;}\n\n\t\t\t\t// Anything else, Let error be yes.\n\t\t\t\t} else {pError = true;}\n\t\t\t} // (close step 13 for loop)\n\n\t\t\t// 15. If error is still no, then append a new image source to candidates whose\n\t\t\t// URL is url, associated with a width width if not absent and a pixel\n\t\t\t// density density if not absent. Otherwise, there is a parse error.\n\t\t\tif (!pError) {\n\t\t\t\tcandidate.url = url;\n\n\t\t\t\tif (w) { candidate.w = w;}\n\t\t\t\tif (d) { candidate.d = d;}\n\t\t\t\tif (h) { candidate.h = h;}\n\t\t\t\tif (!h && !d && !w) {candidate.d = 1;}\n\t\t\t\tif (candidate.d === 1) {set.has1x = true;}\n\t\t\t\tcandidate.set = set;\n\n\t\t\t\tcandidates.push(candidate);\n\t\t\t}\n\t\t} // (close parseDescriptors fn)\n\n\t\t/**\n\t\t* Tokenizes descriptor properties prior to parsing\n\t\t* Returns undefined.\n\t\t* (Again, this fn is defined before it is used, in order to pass JSHINT.\n\t\t* Unfortunately this breaks the logical sequencing of the spec comments. :/ )\n\t\t*/\n\t\tfunction tokenize() {\n\n\t\t\t// 8.1. Descriptor tokeniser: Skip whitespace\n\t\t\tcollectCharacters(regexLeadingSpaces);\n\n\t\t\t// 8.2. Let current descriptor be the empty string.\n\t\t\tcurrentDescriptor = "";\n\n\t\t\t// 8.3. Let state be in descriptor.\n\t\t\tstate = "in descriptor";\n\n\t\t\twhile (true) {\n\n\t\t\t\t// 8.4. Let c be the character at position.\n\t\t\t\tc = input.charAt(pos);\n\n\t\t\t\t// Do the following depending on the value of state.\n\t\t\t\t// For the purpose of this step, "EOF" is a special character representing\n\t\t\t\t// that position is past the end of input.\n\n\t\t\t\t// In descriptor\n\t\t\t\tif (state === "in descriptor") {\n\t\t\t\t\t// Do the following, depending on the value of c:\n\n\t\t\t\t // Space character\n\t\t\t\t // If current descriptor is not empty, append current descriptor to\n\t\t\t\t // descriptors and let current descriptor be the empty string.\n\t\t\t\t // Set state to after descriptor.\n\t\t\t\t\tif (isSpace(c)) {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t\tcurrentDescriptor = "";\n\t\t\t\t\t\t\tstate = "after descriptor";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// U+002C COMMA (,)\n\t\t\t\t\t// Advance position to the next character in input. If current descriptor\n\t\t\t\t\t// is not empty, append current descriptor to descriptors. Jump to the step\n\t\t\t\t\t// labeled descriptor parser.\n\t\t\t\t\t} else if (c === ",") {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// U+0028 LEFT PARENTHESIS (()\n\t\t\t\t\t// Append c to current descriptor. Set state to in parens.\n\t\t\t\t\t} else if (c === "\\u0028") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = "in parens";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// If current descriptor is not empty, append current descriptor to\n\t\t\t\t\t// descriptors. Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === "") {\n\t\t\t\t\t\tif (currentDescriptor) {\n\t\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\t\t\t\t// (end "in descriptor"\n\n\t\t\t\t// In parens\n\t\t\t\t} else if (state === "in parens") {\n\n\t\t\t\t\t// U+0029 RIGHT PARENTHESIS ())\n\t\t\t\t\t// Append c to current descriptor. Set state to in descriptor.\n\t\t\t\t\tif (c === ")") {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t\tstate = "in descriptor";\n\n\t\t\t\t\t// EOF\n\t\t\t\t\t// Append current descriptor to descriptors. Jump to the step labeled\n\t\t\t\t\t// descriptor parser.\n\t\t\t\t\t} else if (c === "") {\n\t\t\t\t\t\tdescriptors.push(currentDescriptor);\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Append c to current descriptor.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentDescriptor = currentDescriptor + c;\n\t\t\t\t\t}\n\n\t\t\t\t// After descriptor\n\t\t\t\t} else if (state === "after descriptor") {\n\n\t\t\t\t\t// Do the following, depending on the value of c:\n\t\t\t\t\t// Space character: Stay in this state.\n\t\t\t\t\tif (isSpace(c)) {\n\n\t\t\t\t\t// EOF: Jump to the step labeled descriptor parser.\n\t\t\t\t\t} else if (c === "") {\n\t\t\t\t\t\tparseDescriptors();\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t// Anything else\n\t\t\t\t\t// Set state to in descriptor. Set position to the previous character in input.\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = "in descriptor";\n\t\t\t\t\t\tpos -= 1;\n\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Advance position to the next character in input.\n\t\t\t\tpos += 1;\n\n\t\t\t// Repeat this step.\n\t\t\t} // (close while true loop)\n\t\t}\n\n\t\t// 4. Splitting loop: Collect a sequence of characters that are space\n\t\t// characters or U+002C COMMA characters. If any U+002C COMMA characters\n\t\t// were collected, that is a parse error.\n\t\twhile (true) {\n\t\t\tcollectCharacters(regexLeadingCommasOrSpaces);\n\n\t\t\t// 5. If position is past the end of input, return candidates and abort these steps.\n\t\t\tif (pos >= inputLength) {\n\t\t\t\treturn candidates; // (we\'re done, this is the sole return path)\n\t\t\t}\n\n\t\t\t// 6. Collect a sequence of characters that are not space characters,\n\t\t\t// and let that be url.\n\t\t\turl = collectCharacters(regexLeadingNotSpaces);\n\n\t\t\t// 7. Let descriptors be a new empty list.\n\t\t\tdescriptors = [];\n\n\t\t\t// 8. If url ends with a U+002C COMMA character (,), follow these substeps:\n\t\t\t//\t\t(1). Remove all trailing U+002C COMMA characters from url. If this removed\n\t\t\t// more than one character, that is a parse error.\n\t\t\tif (url.slice(-1) === ",") {\n\t\t\t\turl = url.replace(regexTrailingCommas, "");\n\t\t\t\t// (Jump ahead to step 9 to skip tokenization and just push the candidate).\n\t\t\t\tparseDescriptors();\n\n\t\t\t//\tOtherwise, follow these substeps:\n\t\t\t} else {\n\t\t\t\ttokenize();\n\t\t\t} // (close else of step 8)\n\n\t\t// 16. Return to the step labeled splitting loop.\n\t\t} // (Close of big while loop.)\n\t}\n\n\t/*\n\t * Sizes Parser\n\t *\n\t * By Alex Bell | MIT License\n\t *\n\t * Non-strict but accurate and lightweight JS Parser for the string value <img sizes="here">\n\t *\n\t * Reference algorithm at:\n\t * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-sizes-attribute\n\t *\n\t * Most comments are copied in directly from the spec\n\t * (except for comments in parens).\n\t *\n\t * Grammar is:\n\t * <source-size-list> = <source-size># [ , <source-size-value> ]? | <source-size-value>\n\t * <source-size> = <media-condition> <source-size-value>\n\t * <source-size-value> = <length>\n\t * http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-sizes\n\t *\n\t * E.g. "(max-width: 30em) 100vw, (max-width: 50em) 70vw, 100vw"\n\t * or "(min-width: 30em), calc(30vw - 15px)" or just "30vw"\n\t *\n\t * Returns the first valid <css-length> with a media condition that evaluates to true,\n\t * or "100vw" if all valid media conditions evaluate to false.\n\t *\n\t */\n\n\tfunction parseSizes(strValue) {\n\n\t\t// (Percentage CSS lengths are not allowed in this case, to avoid confusion:\n\t\t// https://html.spec.whatwg.org/multipage/embedded-content.html#valid-source-size-list\n\t\t// CSS allows a single optional plus or minus sign:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#numbers\n\t\t// CSS is ASCII case-insensitive:\n\t\t// http://www.w3.org/TR/CSS2/syndata.html#characters )\n\t\t// Spec allows exponential notation for <number> type:\n\t\t// http://dev.w3.org/csswg/css-values/#numbers\n\t\tvar regexCssLengthWithUnits = /^(?:[+-]?[0-9]+|[0-9]*\\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i;\n\n\t\t// (This is a quick and lenient test. Because of optional unlimited-depth internal\n\t\t// grouping parens and strict spacing rules, this could get very complicated.)\n\t\tvar regexCssCalc = /^calc\\((?:[0-9a-z \\.\\+\\-\\*\\/\\(\\)]+)\\)$/i;\n\n\t\tvar i;\n\t\tvar unparsedSizesList;\n\t\tvar unparsedSizesListLength;\n\t\tvar unparsedSize;\n\t\tvar lastComponentValue;\n\t\tvar size;\n\n\t\t// UTILITY FUNCTIONS\n\n\t\t// (Toy CSS parser. The goals here are:\n\t\t// 1) expansive test coverage without the weight of a full CSS parser.\n\t\t// 2) Avoiding regex wherever convenient.\n\t\t// Quick tests: http://jsfiddle.net/gtntL4gr/3/\n\t\t// Returns an array of arrays.)\n\t\tfunction parseComponentValues(str) {\n\t\t\tvar chrctr;\n\t\t\tvar component = "";\n\t\t\tvar componentArray = [];\n\t\t\tvar listArray = [];\n\t\t\tvar parenDepth = 0;\n\t\t\tvar pos = 0;\n\t\t\tvar inComment = false;\n\n\t\t\tfunction pushComponent() {\n\t\t\t\tif (component) {\n\t\t\t\t\tcomponentArray.push(component);\n\t\t\t\t\tcomponent = "";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction pushComponentArray() {\n\t\t\t\tif (componentArray[0]) {\n\t\t\t\t\tlistArray.push(componentArray);\n\t\t\t\t\tcomponentArray = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// (Loop forwards from the beginning of the string.)\n\t\t\twhile (true) {\n\t\t\t\tchrctr = str.charAt(pos);\n\n\t\t\t\tif (chrctr === "") { // ( End of string reached.)\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\treturn listArray;\n\t\t\t\t} else if (inComment) {\n\t\t\t\t\tif ((chrctr === "*") && (str[pos + 1] === "/")) { // (At end of a comment.)\n\t\t\t\t\t\tinComment = false;\n\t\t\t\t\t\tpos += 2;\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpos += 1; // (Skip all characters inside comments.)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (isSpace(chrctr)) {\n\t\t\t\t\t// (If previous character in loop was also a space, or if\n\t\t\t\t\t// at the beginning of the string, do not add space char to\n\t\t\t\t\t// component.)\n\t\t\t\t\tif ( (str.charAt(pos - 1) && isSpace( str.charAt(pos - 1) ) ) || !component ) {\n\t\t\t\t\t\tpos += 1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (parenDepth === 0) {\n\t\t\t\t\t\tpushComponent();\n\t\t\t\t\t\tpos +=1;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// (Replace any space character with a plain space for legibility.)\n\t\t\t\t\t\tchrctr = " ";\n\t\t\t\t\t}\n\t\t\t\t} else if (chrctr === "(") {\n\t\t\t\t\tparenDepth += 1;\n\t\t\t\t} else if (chrctr === ")") {\n\t\t\t\t\tparenDepth -= 1;\n\t\t\t\t} else if (chrctr === ",") {\n\t\t\t\t\tpushComponent();\n\t\t\t\t\tpushComponentArray();\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( (chrctr === "/") && (str.charAt(pos + 1) === "*") ) {\n\t\t\t\t\tinComment = true;\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcomponent = component + chrctr;\n\t\t\t\tpos += 1;\n\t\t\t}\n\t\t}\n\n\t\tfunction isValidNonNegativeSourceSizeValue(s) {\n\t\t\tif (regexCssLengthWithUnits.test(s) && (parseFloat(s) >= 0)) {return true;}\n\t\t\tif (regexCssCalc.test(s)) {return true;}\n\t\t\t// ( http://www.w3.org/TR/CSS2/syndata.html#numbers says:\n\t\t\t// "-0 is equivalent to 0 and is not a negative number." which means that\n\t\t\t// unitless zero and unitless negative zero must be accepted as special cases.)\n\t\t\tif ((s === "0") || (s === "-0") || (s === "+0")) {return true;}\n\t\t\treturn false;\n\t\t}\n\n\t\t// When asked to parse a sizes attribute from an element, parse a\n\t\t// comma-separated list of component values from the value of the element\'s\n\t\t// sizes attribute (or the empty string, if the attribute is absent), and let\n\t\t// unparsed sizes list be the result.\n\t\t// http://dev.w3.org/csswg/css-syntax/#parse-comma-separated-list-of-component-values\n\n\t\tunparsedSizesList = parseComponentValues(strValue);\n\t\tunparsedSizesListLength = unparsedSizesList.length;\n\n\t\t// For each unparsed size in unparsed sizes list:\n\t\tfor (i = 0; i < unparsedSizesListLength; i++) {\n\t\t\tunparsedSize = unparsedSizesList[i];\n\n\t\t\t// 1. Remove all consecutive <whitespace-token>s from the end of unparsed size.\n\t\t\t// ( parseComponentValues() already omits spaces outside of parens. )\n\n\t\t\t// If unparsed size is now empty, that is a parse error; continue to the next\n\t\t\t// iteration of this algorithm.\n\t\t\t// ( parseComponentValues() won\'t push an empty array. )\n\n\t\t\t// 2. If the last component value in unparsed size is a valid non-negative\n\t\t\t// <source-size-value>, let size be its value and remove the component value\n\t\t\t// from unparsed size. Any CSS function other than the calc() function is\n\t\t\t// invalid. Otherwise, there is a parse error; continue to the next iteration\n\t\t\t// of this algorithm.\n\t\t\t// http://dev.w3.org/csswg/css-syntax/#parse-component-value\n\t\t\tlastComponentValue = unparsedSize[unparsedSize.length - 1];\n\n\t\t\tif (isValidNonNegativeSourceSizeValue(lastComponentValue)) {\n\t\t\t\tsize = lastComponentValue;\n\t\t\t\tunparsedSize.pop();\n\t\t\t} else {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 3. Remove all consecutive <whitespace-token>s from the end of unparsed\n\t\t\t// size. If unparsed size is now empty, return size and exit this algorithm.\n\t\t\t// If this was not the last item in unparsed sizes list, that is a parse error.\n\t\t\tif (unparsedSize.length === 0) {\n\t\t\t\treturn size;\n\t\t\t}\n\n\t\t\t// 4. Parse the remaining component values in unparsed size as a\n\t\t\t// <media-condition>. If it does not parse correctly, or it does parse\n\t\t\t// correctly but the <media-condition> evaluates to false, continue to the\n\t\t\t// next iteration of this algorithm.\n\t\t\t// (Parsing all possible compound media conditions in JS is heavy, complicated,\n\t\t\t// and the payoff is unclear. Is there ever an situation where the\n\t\t\t// media condition parses incorrectly but still somehow evaluates to true?\n\t\t\t// Can we just rely on the browser/polyfill to do it?)\n\t\t\tunparsedSize = unparsedSize.join(" ");\n\t\t\tif (!(pf.matchesMedia( unparsedSize ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// 5. Return size and exit this algorithm.\n\t\t\treturn size;\n\t\t}\n\n\t\t// If the above algorithm exhausts unparsed sizes list without returning a\n\t\t// size value, return 100vw.\n\t\treturn "100vw";\n\t}\n\n\t// namespace\n\tpf.ns = ("pf" + new Date().getTime()).substr(0, 9);\n\n\t// srcset support test\n\tpf.supSrcset = "srcset" in image;\n\tpf.supSizes = "sizes" in image;\n\tpf.supPicture = !!window.HTMLPictureElement;\n\n\t// UC browser does claim to support srcset and picture, but not sizes,\n\t// this extended test reveals the browser does support nothing\n\tif (pf.supSrcset && pf.supPicture && !pf.supSizes) {\n\t\t(function(image2) {\n\t\t\timage.srcset = "data:,a";\n\t\t\timage2.src = "data:,a";\n\t\t\tpf.supSrcset = image.complete === image2.complete;\n\t\t\tpf.supPicture = pf.supSrcset && pf.supPicture;\n\t\t})(document.createElement("img"));\n\t}\n\n\t// Safari9 has basic support for sizes, but does\'t expose the `sizes` idl attribute\n\tif (pf.supSrcset && !pf.supSizes) {\n\n\t\t(function() {\n\t\t\tvar width2 = "data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==";\n\t\t\tvar width1 = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";\n\t\t\tvar img = document.createElement("img");\n\t\t\tvar test = function() {\n\t\t\t\tvar width = img.width;\n\n\t\t\t\tif (width === 2) {\n\t\t\t\t\tpf.supSizes = true;\n\t\t\t\t}\n\n\t\t\t\talwaysCheckWDescriptor = pf.supSrcset && !pf.supSizes;\n\n\t\t\t\tisSupportTestReady = true;\n\t\t\t\t// force async\n\t\t\t\tsetTimeout(picturefill);\n\t\t\t};\n\n\t\t\timg.onload = test;\n\t\t\timg.onerror = test;\n\t\t\timg.setAttribute("sizes", "9px");\n\n\t\t\timg.srcset = width1 + " 1w," + width2 + " 9w";\n\t\t\timg.src = width1;\n\t\t})();\n\n\t} else {\n\t\tisSupportTestReady = true;\n\t}\n\n\t// using pf.qsa instead of dom traversing does scale much better,\n\t// especially on sites mixing responsive and non-responsive images\n\tpf.selShort = "picture>img,img[srcset]";\n\tpf.sel = pf.selShort;\n\tpf.cfg = cfg;\n\n\t/**\n\t * Shortcut property for `devicePixelRatio` ( for easy overriding in tests )\n\t */\n\tpf.DPR = (DPR || 1 );\n\tpf.u = units;\n\n\t// container of supported mime types that one might need to qualify before using\n\tpf.types = types;\n\n\tpf.setSize = noop;\n\n\t/**\n\t * Gets a string and returns the absolute URL\n\t * @param src\n\t * @returns {String} absolute URL\n\t */\n\n\tpf.makeUrl = memoize(function(src) {\n\t\tanchor.href = src;\n\t\treturn anchor.href;\n\t});\n\n\t/**\n\t * Gets a DOM element or document and a selctor and returns the found matches\n\t * Can be extended with jQuery/Sizzle for IE7 support\n\t * @param context\n\t * @param sel\n\t * @returns {NodeList|Array}\n\t */\n\tpf.qsa = function(context, sel) {\n\t\treturn ( "querySelector" in context ) ? context.querySelectorAll(sel) : [];\n\t};\n\n\t/**\n\t * Shortcut method for matchMedia ( for easy overriding in tests )\n\t * wether native or pf.mMQ is used will be decided lazy on first call\n\t * @returns {boolean}\n\t */\n\tpf.matchesMedia = function() {\n\t\tif ( window.matchMedia && (matchMedia( "(min-width: 0.1em)" ) || {}).matches ) {\n\t\t\tpf.matchesMedia = function( media ) {\n\t\t\t\treturn !media || ( matchMedia( media ).matches );\n\t\t\t};\n\t\t} else {\n\t\t\tpf.matchesMedia = pf.mMQ;\n\t\t}\n\n\t\treturn pf.matchesMedia.apply( this, arguments );\n\t};\n\n\t/**\n\t * A simplified matchMedia implementation for IE8 and IE9\n\t * handles only min-width/max-width with px or em values\n\t * @param media\n\t * @returns {boolean}\n\t */\n\tpf.mMQ = function( media ) {\n\t\treturn media ? evalCSS(media) : true;\n\t};\n\n\t/**\n\t * Returns the calculated length in css pixel from the given sourceSizeValue\n\t * http://dev.w3.org/csswg/css-values-3/#length-value\n\t * intended Spec mismatches:\n\t * * Does not check for invalid use of CSS functions\n\t * * Does handle a computed length of 0 the same as a negative and therefore invalid value\n\t * @param sourceSizeValue\n\t * @returns {Number}\n\t */\n\tpf.calcLength = function( sourceSizeValue ) {\n\n\t\tvar value = evalCSS(sourceSizeValue, true) || false;\n\t\tif (value < 0) {\n\t\t\tvalue = false;\n\t\t}\n\n\t\treturn value;\n\t};\n\n\t/**\n\t * Takes a type string and checks if its supported\n\t */\n\n\tpf.supportsType = function( type ) {\n\t\treturn ( type ) ? types[ type ] : true;\n\t};\n\n\t/**\n\t * Parses a sourceSize into mediaCondition (media) and sourceSizeValue (length)\n\t * @param sourceSizeStr\n\t * @returns {*}\n\t */\n\tpf.parseSize = memoize(function( sourceSizeStr ) {\n\t\tvar match = ( sourceSizeStr || "" ).match(regSize);\n\t\treturn {\n\t\t\tmedia: match && match[1],\n\t\t\tlength: match && match[2]\n\t\t};\n\t});\n\n\tpf.parseSet = function( set ) {\n\t\tif ( !set.cands ) {\n\t\t\tset.cands = parseSrcset(set.srcset, set);\n\t\t}\n\t\treturn set.cands;\n\t};\n\n\t/**\n\t * returns 1em in css px for html/body default size\n\t * function taken from respondjs\n\t * @returns {*|number}\n\t */\n\tpf.getEmValue = function() {\n\t\tvar body;\n\t\tif ( !eminpx && (body = document.body) ) {\n\t\t\tvar div = document.createElement( "div" ),\n\t\t\t\toriginalHTMLCSS = docElem.style.cssText,\n\t\t\t\toriginalBodyCSS = body.style.cssText;\n\n\t\t\tdiv.style.cssText = baseStyle;\n\n\t\t\t// 1em in a media query is the value of the default font size of the browser\n\t\t\t// reset docElem and body to ensure the correct value is returned\n\t\t\tdocElem.style.cssText = fsCss;\n\t\t\tbody.style.cssText = fsCss;\n\n\t\t\tbody.appendChild( div );\n\t\t\teminpx = div.offsetWidth;\n\t\t\tbody.removeChild( div );\n\n\t\t\t//also update eminpx before returning\n\t\t\teminpx = parseFloat( eminpx, 10 );\n\n\t\t\t// restore the original values\n\t\t\tdocElem.style.cssText = originalHTMLCSS;\n\t\t\tbody.style.cssText = originalBodyCSS;\n\n\t\t}\n\t\treturn eminpx || 16;\n\t};\n\n\t/**\n\t * Takes a string of sizes and returns the width in pixels as a number\n\t */\n\tpf.calcListLength = function( sourceSizeListStr ) {\n\t\t// Split up source size list, ie ( max-width: 30em ) 100%, ( max-width: 50em ) 50%, 33%\n\t\t//\n\t\t// or (min-width:30em) calc(30% - 15px)\n\t\tif ( !(sourceSizeListStr in sizeLengthCache) || cfg.uT ) {\n\t\t\tvar winningLength = pf.calcLength( parseSizes( sourceSizeListStr ) );\n\n\t\t\tsizeLengthCache[ sourceSizeListStr ] = !winningLength ? units.width : winningLength;\n\t\t}\n\n\t\treturn sizeLengthCache[ sourceSizeListStr ];\n\t};\n\n\t/**\n\t * Takes a candidate object with a srcset property in the form of url/\n\t * ex. "images/pic-medium.png 1x, images/pic-medium-2x.png 2x" or\n\t * "images/pic-medium.png 400w, images/pic-medium-2x.png 800w" or\n\t * "images/pic-small.png"\n\t * Get an array of image candidates in the form of\n\t * {url: "/foo/bar.png", resolution: 1}\n\t * where resolution is http://dev.w3.org/csswg/css-values-3/#resolution-value\n\t * If sizes is specified, res is calculated\n\t */\n\tpf.setRes = function( set ) {\n\t\tvar candidates;\n\t\tif ( set ) {\n\n\t\t\tcandidates = pf.parseSet( set );\n\n\t\t\tfor ( var i = 0, len = candidates.length; i < len; i++ ) {\n\t\t\t\tsetResolution( candidates[ i ], set.sizes );\n\t\t\t}\n\t\t}\n\t\treturn candidates;\n\t};\n\n\tpf.setRes.res = setResolution;\n\n\tpf.applySetCandidate = function( candidates, img ) {\n\t\tif ( !candidates.length ) {return;}\n\t\tvar candidate,\n\t\t\ti,\n\t\t\tj,\n\t\t\tlength,\n\t\t\tbestCandidate,\n\t\t\tcurSrc,\n\t\t\tcurCan,\n\t\t\tcandidateSrc,\n\t\t\tabortCurSrc;\n\n\t\tvar imageData = img[ pf.ns ];\n\t\tvar dpr = pf.DPR;\n\n\t\tcurSrc = imageData.curSrc || img[curSrcProp];\n\n\t\tcurCan = imageData.curCan || setSrcToCur(img, curSrc, candidates[0].set);\n\n\t\t// if we have a current source, we might either become lazy or give this source some advantage\n\t\tif ( curCan && curCan.set === candidates[ 0 ].set ) {\n\n\t\t\t// if browser can abort image request and the image has a higher pixel density than needed\n\t\t\t// and this image isn\'t downloaded yet, we skip next part and try to save bandwidth\n\t\t\tabortCurSrc = (supportAbort && !img.complete && curCan.res - 0.1 > dpr);\n\n\t\t\tif ( !abortCurSrc ) {\n\t\t\t\tcurCan.cached = true;\n\n\t\t\t\t// if current candidate is "best", "better" or "okay",\n\t\t\t\t// set it to bestCandidate\n\t\t\t\tif ( curCan.res >= dpr ) {\n\t\t\t\t\tbestCandidate = curCan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( !bestCandidate ) {\n\n\t\t\tcandidates.sort( ascendingSort );\n\n\t\t\tlength = candidates.length;\n\t\t\tbestCandidate = candidates[ length - 1 ];\n\n\t\t\tfor ( i = 0; i < length; i++ ) {\n\t\t\t\tcandidate = candidates[ i ];\n\t\t\t\tif ( candidate.res >= dpr ) {\n\t\t\t\t\tj = i - 1;\n\n\t\t\t\t\t// we have found the perfect candidate,\n\t\t\t\t\t// but let\'s improve this a little bit with some assumptions ;-)\n\t\t\t\t\tif (candidates[ j ] &&\n\t\t\t\t\t\t(abortCurSrc || curSrc !== pf.makeUrl( candidate.url )) &&\n\t\t\t\t\t\tchooseLowRes(candidates[ j ].res, candidate.res, dpr, candidates[ j ].cached)) {\n\n\t\t\t\t\t\tbestCandidate = candidates[ j ];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( bestCandidate ) {\n\n\t\t\tcandidateSrc = pf.makeUrl( bestCandidate.url );\n\n\t\t\timageData.curSrc = candidateSrc;\n\t\t\timageData.curCan = bestCandidate;\n\n\t\t\tif ( candidateSrc !== curSrc ) {\n\t\t\t\tpf.setSrc( img, bestCandidate );\n\t\t\t}\n\t\t\tpf.setSize( img );\n\t\t}\n\t};\n\n\tpf.setSrc = function( img, bestCandidate ) {\n\t\tvar origWidth;\n\t\timg.src = bestCandidate.url;\n\n\t\t// although this is a specific Safari issue, we don\'t want to take too much different code paths\n\t\tif ( bestCandidate.set.type === "image/svg+xml" ) {\n\t\t\torigWidth = img.style.width;\n\t\t\timg.style.width = (img.offsetWidth + 1) + "px";\n\n\t\t\t// next line only should trigger a repaint\n\t\t\t// if... is only done to trick dead code removal\n\t\t\tif ( img.offsetWidth + 1 ) {\n\t\t\t\timg.style.width = origWidth;\n\t\t\t}\n\t\t}\n\t};\n\n\tpf.getSet = function( img ) {\n\t\tvar i, set, supportsType;\n\t\tvar match = false;\n\t\tvar sets = img [ pf.ns ].sets;\n\n\t\tfor ( i = 0; i < sets.length && !match; i++ ) {\n\t\t\tset = sets[i];\n\n\t\t\tif ( !set.srcset || !pf.matchesMedia( set.media ) || !(supportsType = pf.supportsType( set.type )) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( supportsType === "pending" ) {\n\t\t\t\tset = supportsType;\n\t\t\t}\n\n\t\t\tmatch = set;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn match;\n\t};\n\n\tpf.parseSets = function( element, parent, options ) {\n\t\tvar srcsetAttribute, imageSet, isWDescripor, srcsetParsed;\n\n\t\tvar hasPicture = parent && parent.nodeName.toUpperCase() === "PICTURE";\n\t\tvar imageData = element[ pf.ns ];\n\n\t\tif ( imageData.src === undefined || options.src ) {\n\t\t\timageData.src = getImgAttr.call( element, "src" );\n\t\t\tif ( imageData.src ) {\n\t\t\t\tsetImgAttr.call( element, srcAttr, imageData.src );\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcAttr );\n\t\t\t}\n\t\t}\n\n\t\tif ( imageData.srcset === undefined || options.srcset || !pf.supSrcset || element.srcset ) {\n\t\t\tsrcsetAttribute = getImgAttr.call( element, "srcset" );\n\t\t\timageData.srcset = srcsetAttribute;\n\t\t\tsrcsetParsed = true;\n\t\t}\n\n\t\timageData.sets = [];\n\n\t\tif ( hasPicture ) {\n\t\t\timageData.pic = true;\n\t\t\tgetAllSourceElements( parent, imageData.sets );\n\t\t}\n\n\t\tif ( imageData.srcset ) {\n\t\t\timageSet = {\n\t\t\t\tsrcset: imageData.srcset,\n\t\t\t\tsizes: getImgAttr.call( element, "sizes" )\n\t\t\t};\n\n\t\t\timageData.sets.push( imageSet );\n\n\t\t\tisWDescripor = (alwaysCheckWDescriptor || imageData.src) && regWDesc.test(imageData.srcset || "");\n\n\t\t\t// add normal src as candidate, if source has no w descriptor\n\t\t\tif ( !isWDescripor && imageData.src && !getCandidateForSrc(imageData.src, imageSet) && !imageSet.has1x ) {\n\t\t\t\timageSet.srcset += ", " + imageData.src;\n\t\t\t\timageSet.cands.push({\n\t\t\t\t\turl: imageData.src,\n\t\t\t\t\td: 1,\n\t\t\t\t\tset: imageSet\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if ( imageData.src ) {\n\t\t\timageData.sets.push( {\n\t\t\t\tsrcset: imageData.src,\n\t\t\t\tsizes: null\n\t\t\t} );\n\t\t}\n\n\t\timageData.curCan = null;\n\t\timageData.curSrc = undefined;\n\n\t\t// if img has picture or the srcset was removed or has a srcset and does not support srcset at all\n\t\t// or has a w descriptor (and does not support sizes) set support to false to evaluate\n\t\timageData.supported = !( hasPicture || ( imageSet && !pf.supSrcset ) || (isWDescripor && !pf.supSizes) );\n\n\t\tif ( srcsetParsed && pf.supSrcset && !imageData.supported ) {\n\t\t\tif ( srcsetAttribute ) {\n\t\t\t\tsetImgAttr.call( element, srcsetAttr, srcsetAttribute );\n\t\t\t\telement.srcset = "";\n\t\t\t} else {\n\t\t\t\tremoveImgAttr.call( element, srcsetAttr );\n\t\t\t}\n\t\t}\n\n\t\tif (imageData.supported && !imageData.srcset && ((!imageData.src && element.src) || element.src !== pf.makeUrl(imageData.src))) {\n\t\t\tif (imageData.src === null) {\n\t\t\t\telement.removeAttribute("src");\n\t\t\t} else {\n\t\t\t\telement.src = imageData.src;\n\t\t\t}\n\t\t}\n\n\t\timageData.parsed = true;\n\t};\n\n\tpf.fillImg = function(element, options) {\n\t\tvar imageData;\n\t\tvar extreme = options.reselect || options.reevaluate;\n\n\t\t// expando for caching data on the img\n\t\tif ( !element[ pf.ns ] ) {\n\t\t\telement[ pf.ns ] = {};\n\t\t}\n\n\t\timageData = element[ pf.ns ];\n\n\t\t// if the element has already been evaluated, skip it\n\t\t// unless `options.reevaluate` is set to true ( this, for example,\n\t\t// is set to true when running `picturefill` on `resize` ).\n\t\tif ( !extreme && imageData.evaled === evalId ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !imageData.parsed || options.reevaluate ) {\n\t\t\tpf.parseSets( element, element.parentNode, options );\n\t\t}\n\n\t\tif ( !imageData.supported ) {\n\t\t\tapplyBestCandidate( element );\n\t\t} else {\n\t\t\timageData.evaled = evalId;\n\t\t}\n\t};\n\n\tpf.setupRun = function() {\n\t\tif ( !alreadyRun || isVwDirty || (DPR !== window.devicePixelRatio) ) {\n\t\t\tupdateMetrics();\n\t\t}\n\t};\n\n\t// If picture is supported, well, that\'s awesome.\n\tif ( pf.supPicture ) {\n\t\tpicturefill = noop;\n\t\tpf.fillImg = noop;\n\t} else {\n\n\t\t // Set up picture polyfill by polling the document\n\t\t(function() {\n\t\t\tvar isDomReady;\n\t\t\tvar regReady = window.attachEvent ? /d$|^c/ : /d$|^c|^i/;\n\n\t\t\tvar run = function() {\n\t\t\t\tvar readyState = document.readyState || "";\n\n\t\t\t\ttimerId = setTimeout(run, readyState === "loading" ? 200 : 999);\n\t\t\t\tif ( document.body ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t\tisDomReady = isDomReady || regReady.test(readyState);\n\t\t\t\t\tif ( isDomReady ) {\n\t\t\t\t\t\tclearTimeout( timerId );\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar timerId = setTimeout(run, document.body ? 9 : 99);\n\n\t\t\t// Also attach picturefill on resize and readystatechange\n\t\t\t// http://modernjavascript.blogspot.com/2013/08/building-better-debounce.html\n\t\t\tvar debounce = function(func, wait) {\n\t\t\t\tvar timeout, timestamp;\n\t\t\t\tvar later = function() {\n\t\t\t\t\tvar last = (new Date()) - timestamp;\n\n\t\t\t\t\tif (last < wait) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait - last);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeout = null;\n\t\t\t\t\t\tfunc();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function() {\n\t\t\t\t\ttimestamp = new Date();\n\n\t\t\t\t\tif (!timeout) {\n\t\t\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\tvar lastClientWidth = docElem.clientHeight;\n\t\t\tvar onResize = function() {\n\t\t\t\tisVwDirty = Math.max(window.innerWidth || 0, docElem.clientWidth) !== units.width || docElem.clientHeight !== lastClientWidth;\n\t\t\t\tlastClientWidth = docElem.clientHeight;\n\t\t\t\tif ( isVwDirty ) {\n\t\t\t\t\tpf.fillImgs();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ton( window, "resize", debounce(onResize, 99 ) );\n\t\t\ton( document, "readystatechange", run );\n\t\t})();\n\t}\n\n\tpf.picturefill = picturefill;\n\t//use this internally for easy monkey patching/performance testing\n\tpf.fillImgs = picturefill;\n\tpf.teardownRun = noop;\n\n\t/* expose methods for testing */\n\tpicturefill._ = pf;\n\n\twindow.picturefillCFG = {\n\t\tpf: pf,\n\t\tpush: function(args) {\n\t\t\tvar name = args.shift();\n\t\t\tif (typeof pf[name] === "function") {\n\t\t\t\tpf[name].apply(pf, args);\n\t\t\t} else {\n\t\t\t\tcfg[name] = args[0];\n\t\t\t\tif (alreadyRun) {\n\t\t\t\t\tpf.fillImgs( { reselect: true } );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\twhile (setOptions && setOptions.length) {\n\t\twindow.picturefillCFG.push(setOptions.shift());\n\t}\n\n\t/* expose picturefill */\n\twindow.picturefill = picturefill;\n\n\t/* expose picturefill */\n\tif ( typeof module === "object" && typeof module.exports === "object" ) {\n\t\t// CommonJS, just export\n\t\tmodule.exports = picturefill;\n\t} else if ( true ) {\n\t\t// AMD support\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() { return picturefill; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\n\n\t// IE8 evals this sync, so it must be the last thing we do\n\tif ( !pf.supPicture ) {\n\t\ttypes[ "image/webp" ] = detectTypeSupport("image/webp", "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==" );\n\t}\n\n} )( window, document );\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/picturefill/dist/picturefill.js\n ** module id = 330\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/picturefill/dist/picturefill.js?'); },function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(setImmediate) {(function (root) {\n\n // Store setTimeout reference so promise-polyfill will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var setTimeoutFunc = setTimeout;\n\n function noop() {}\n \n // Polyfill for Function.prototype.bind\n function bind(fn, thisArg) {\n return function () {\n fn.apply(thisArg, arguments);\n };\n }\n\n function Promise(fn) {\n if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n this._state = 0;\n this._handled = false;\n this._value = undefined;\n this._deferreds = [];\n\n doResolve(fn, this);\n }\n\n function handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function () {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n }\n\n function resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');\n if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n }\n\n function reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n }\n\n function finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n }\n\n function Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n }\n\n /**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\n function doResolve(fn, self) {\n var done = false;\n try {\n fn(function (value) {\n if (done) return;\n done = true;\n resolve(self, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n });\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n }\n\n Promise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n };\n\n Promise.prototype.then = function (onFulfilled, onRejected) {\n var prom = new (this.constructor)(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n };\n\n Promise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(val, function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n };\n\n Promise.resolve = function (value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n Promise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n };\n\n Promise.race = function (values) {\n return new Promise(function (resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n };\n\n // Use polyfill for setImmediate for performance gains\n Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||\n function (fn) {\n setTimeoutFunc(fn, 0);\n };\n\n Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n };\n\n /**\n * Set the immediate function to execute callbacks\n * @param fn {function} Function to execute\n * @deprecated\n */\n Promise._setImmediateFn = function _setImmediateFn(fn) {\n Promise._immediateFn = fn;\n };\n\n /**\n * Change the function to execute on unhandled rejection\n * @param {function} fn Function to execute on unhandled rejection\n * @deprecated\n */\n Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {\n Promise._unhandledRejectionFn = fn;\n };\n \n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Promise;\n } else if (!root.Promise) {\n root.Promise = Promise;\n }\n\n})(this);\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(93).setImmediate))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/promise-polyfill/promise.js\n ** module id = 331\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/promise-polyfill/promise.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015 Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BeforeInputEventPlugin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPropagators = __webpack_require__(44);\nvar ExecutionEnvironment = __webpack_require__(9);\nvar FallbackCompositionState = __webpack_require__(340);\nvar SyntheticCompositionEvent = __webpack_require__(374);\nvar SyntheticInputEvent = __webpack_require__(377);\n\nvar keyOf = __webpack_require__(24);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'CompositionEvent' in window\n);\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = (\n ExecutionEnvironment.canUseDOM &&\n 'TextEvent' in window &&\n !documentMode &&\n !isPresto()\n);\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = (\n ExecutionEnvironment.canUseDOM &&\n (\n (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11)\n )\n);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return (\n typeof opera === 'object' &&\n typeof opera.version === 'function' &&\n parseInt(opera.version(), 10) <= 12\n );\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: keyOf({onBeforeInput: null}),\n captured: keyOf({onBeforeInputCapture: null})\n },\n dependencies: [\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyPress,\n topLevelTypes.topTextInput,\n topLevelTypes.topPaste\n ]\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionEnd: null}),\n captured: keyOf({onCompositionEndCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionEnd,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionStart: null}),\n captured: keyOf({onCompositionStartCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionStart,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCompositionUpdate: null}),\n captured: keyOf({onCompositionUpdateCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topCompositionUpdate,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyPress,\n topLevelTypes.topKeyUp,\n topLevelTypes.topMouseDown\n ]\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (\n (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey)\n );\n}\n\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionStart:\n return eventTypes.compositionStart;\n case topLevelTypes.topCompositionEnd:\n return eventTypes.compositionEnd;\n case topLevelTypes.topCompositionUpdate:\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return (\n topLevelType === topLevelTypes.topKeyDown &&\n nativeEvent.keyCode === START_KEYCODE\n );\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topKeyUp:\n // Command keys insert or clear IME input.\n return (END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1);\n case topLevelTypes.topKeyDown:\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return (nativeEvent.keyCode !== START_KEYCODE);\n case topLevelTypes.topKeyPress:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topBlur:\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(topLevelTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(\n eventType,\n topLevelTargetID,\n nativeEvent\n );\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case topLevelTypes.topCompositionEnd:\n return getDataFromCustomEvent(nativeEvent);\n case topLevelTypes.topKeyPress:\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case topLevelTypes.topTextInput:\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n if (currentComposition) {\n if (\n topLevelType === topLevelTypes.topCompositionEnd ||\n isFallbackCompositionEnd(topLevelType, nativeEvent)\n ) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case topLevelTypes.topPaste:\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case topLevelTypes.topKeyPress:\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case topLevelTypes.topCompositionEnd:\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(\n eventTypes.beforeInput,\n topLevelTargetID,\n nativeEvent\n );\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n ) {\n return [\n extractCompositionEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n ),\n extractBeforeInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n )\n ];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/BeforeInputEventPlugin.js\n ** module id = 332\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/BeforeInputEventPlugin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ChangeEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPluginHub = __webpack_require__(43);\nvar EventPropagators = __webpack_require__(44);\nvar ExecutionEnvironment = __webpack_require__(9);\nvar ReactUpdates = __webpack_require__(16);\nvar SyntheticEvent = __webpack_require__(29);\n\nvar isEventSupported = __webpack_require__(90);\nvar isTextInputElement = __webpack_require__(258);\nvar keyOf = __webpack_require__(24);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: keyOf({onChange: null}),\n captured: keyOf({onChangeCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topChange,\n topLevelTypes.topClick,\n topLevelTypes.topFocus,\n topLevelTypes.topInput,\n topLevelTypes.topKeyDown,\n topLevelTypes.topKeyUp,\n topLevelTypes.topSelectionChange\n ]\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementID = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n return (\n elem.nodeName === 'SELECT' ||\n (elem.nodeName === 'INPUT' && elem.type === 'file')\n );\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (\n (!('documentMode' in document) || document.documentMode > 8)\n );\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n activeElementID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue();\n}\n\nfunction startWatchingForChangeEventIE8(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementID = null;\n}\n\nfunction getTargetIDForChangeEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topChange) {\n return topLevelTargetID;\n }\n}\nfunction handleEventsForChangeEventIE8(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForChangeEventIE8();\n }\n}\n\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events\n isInputEventSupported = isEventSupported('input') && (\n (!('documentMode' in document) || document.documentMode > 9)\n );\n}\n\n/**\n * (For old IE.) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function() {\n return activeElementValueProp.get.call(this);\n },\n set: function(val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For old IE.) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetID) {\n activeElement = target;\n activeElementID = targetID;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(\n target.constructor.prototype,\n 'value'\n );\n\n Object.defineProperty(activeElement, 'value', newValueProp);\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For old IE.) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementID = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For old IE.) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetIDForInputEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topInput) {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return topLevelTargetID;\n }\n}\n\n// For IE8 and IE9.\nfunction handleEventsForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topFocus) {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(topLevelTarget, topLevelTargetID);\n } else if (topLevelType === topLevelTypes.topBlur) {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetIDForInputEventIE(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topSelectionChange ||\n topLevelType === topLevelTypes.topKeyUp ||\n topLevelType === topLevelTypes.topKeyDown) {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementID;\n }\n }\n}\n\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return (\n elem.nodeName === 'INPUT' &&\n (elem.type === 'checkbox' || elem.type === 'radio')\n );\n}\n\nfunction getTargetIDForClickEvent(\n topLevelType,\n topLevelTarget,\n topLevelTargetID) {\n if (topLevelType === topLevelTypes.topClick) {\n return topLevelTargetID;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n var getTargetIDFunc, handleEventFunc;\n if (shouldUseChangeEvent(topLevelTarget)) {\n if (doesChangeEventBubble) {\n getTargetIDFunc = getTargetIDForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(topLevelTarget)) {\n if (isInputEventSupported) {\n getTargetIDFunc = getTargetIDForInputEvent;\n } else {\n getTargetIDFunc = getTargetIDForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(topLevelTarget)) {\n getTargetIDFunc = getTargetIDForClickEvent;\n }\n\n if (getTargetIDFunc) {\n var targetID = getTargetIDFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n if (targetID) {\n var event = SyntheticEvent.getPooled(\n eventTypes.change,\n targetID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(\n topLevelType,\n topLevelTarget,\n topLevelTargetID\n );\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ChangeEventPlugin.js\n ** module id = 333\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ChangeEventPlugin.js?"); },function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ClientReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar nextReactRootIndex = 0;\n\nvar ClientReactRootIndex = {\n createReactRootIndex: function() {\n return nextReactRootIndex++;\n }\n};\n\nmodule.exports = ClientReactRootIndex;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ClientReactRootIndex.js\n ** module id = 334\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ClientReactRootIndex.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMChildrenOperations\n * @typechecks static-only\n */\n\n'use strict';\n\nvar Danger = __webpack_require__(336);\nvar ReactMultiChildUpdateTypes = __webpack_require__(245);\n\nvar setTextContent = __webpack_require__(400);\nvar invariant = __webpack_require__(3);\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nfunction insertChildAt(parentNode, childNode, index) {\n // By exploiting arrays returning `undefined` for an undefined index, we can\n // rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. However, using `undefined` is not allowed by all\n // browsers so we must replace it with `null`.\n parentNode.insertBefore(\n childNode,\n parentNode.childNodes[index] || null\n );\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,\n\n updateTextContent: setTextContent,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @param {array<string>} markupList List of markup strings.\n * @internal\n */\n processUpdates: function(updates, markupList) {\n var update;\n // Mapping from parent IDs to initial child orderings.\n var initialChildren = null;\n // List of children that will be moved or removed.\n var updatedChildren = null;\n\n for (var i = 0; i < updates.length; i++) {\n update = updates[i];\n if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING ||\n update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {\n var updatedIndex = update.fromIndex;\n var updatedChild = update.parentNode.childNodes[updatedIndex];\n var parentID = update.parentID;\n\n ( false ? invariant(\n updatedChild,\n 'processUpdates(): Unable to find child %s of element. This ' +\n 'probably means the DOM was unexpectedly mutated (e.g., by the ' +\n 'browser), usually due to forgetting a <tbody> when using tables, ' +\n 'nesting tags like <form>, <p>, or <a>, or using non-SVG elements ' +\n 'in an <svg> parent. Try inspecting the child nodes of the element ' +\n 'with React ID `%s`.',\n updatedIndex,\n parentID\n ) : invariant(updatedChild));\n\n initialChildren = initialChildren || {};\n initialChildren[parentID] = initialChildren[parentID] || [];\n initialChildren[parentID][updatedIndex] = updatedChild;\n\n updatedChildren = updatedChildren || [];\n updatedChildren.push(updatedChild);\n }\n }\n\n var renderedMarkup = Danger.dangerouslyRenderMarkup(markupList);\n\n // Remove updated children first so that `toIndex` is consistent.\n if (updatedChildren) {\n for (var j = 0; j < updatedChildren.length; j++) {\n updatedChildren[j].parentNode.removeChild(updatedChildren[j]);\n }\n }\n\n for (var k = 0; k < updates.length; k++) {\n update = updates[k];\n switch (update.type) {\n case ReactMultiChildUpdateTypes.INSERT_MARKUP:\n insertChildAt(\n update.parentNode,\n renderedMarkup[update.markupIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.MOVE_EXISTING:\n insertChildAt(\n update.parentNode,\n initialChildren[update.parentID][update.fromIndex],\n update.toIndex\n );\n break;\n case ReactMultiChildUpdateTypes.TEXT_CONTENT:\n setTextContent(\n update.parentNode,\n update.textContent\n );\n break;\n case ReactMultiChildUpdateTypes.REMOVE_NODE:\n // Already removed by the for-loop above.\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/DOMChildrenOperations.js\n ** module id = 335\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/DOMChildrenOperations.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Danger\n * @typechecks static-only\n */\n\n/*jslint evil: true, sub: true */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar createNodesFromMarkup = __webpack_require__(386);\nvar emptyFunction = __webpack_require__(23);\nvar getMarkupWrap = __webpack_require__(255);\nvar invariant = __webpack_require__(3);\n\nvar OPEN_TAG_NAME_EXP = /^(<[^ \\/>]+)/;\nvar RESULT_INDEX_ATTR = 'data-danger-index';\n\n/**\n * Extracts the `nodeName` from a string of markup.\n *\n * NOTE: Extracting the `nodeName` does not require a regular expression match\n * because we make assumptions about React-generated markup (i.e. there are no\n * spaces surrounding the opening tag and there is at least one attribute).\n *\n * @param {string} markup String of markup.\n * @return {string} Node name of the supplied markup.\n * @see http://jsperf.com/extract-nodename\n */\nfunction getNodeName(markup) {\n return markup.substring(1, markup.indexOf(' '));\n}\n\nvar Danger = {\n\n /**\n * Renders markup into an array of nodes. The markup is expected to render\n * into a list of root nodes. Also, the length of `resultList` and\n * `markupList` should be the same.\n *\n * @param {array<string>} markupList List of markup strings to render.\n * @return {array<DOMElement>} List of rendered nodes.\n * @internal\n */\n dangerouslyRenderMarkup: function(markupList) {\n ( false ? invariant(\n ExecutionEnvironment.canUseDOM,\n 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' +\n 'thread. Make sure `window` and `document` are available globally ' +\n 'before requiring React when unit testing or use ' +\n 'React.renderToString for server rendering.'\n ) : invariant(ExecutionEnvironment.canUseDOM));\n var nodeName;\n var markupByNodeName = {};\n // Group markup by `nodeName` if a wrap is necessary, else by '*'.\n for (var i = 0; i < markupList.length; i++) {\n ( false ? invariant(\n markupList[i],\n 'dangerouslyRenderMarkup(...): Missing markup.'\n ) : invariant(markupList[i]));\n nodeName = getNodeName(markupList[i]);\n nodeName = getMarkupWrap(nodeName) ? nodeName : '*';\n markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];\n markupByNodeName[nodeName][i] = markupList[i];\n }\n var resultList = [];\n var resultListAssignmentCount = 0;\n for (nodeName in markupByNodeName) {\n if (!markupByNodeName.hasOwnProperty(nodeName)) {\n continue;\n }\n var markupListByNodeName = markupByNodeName[nodeName];\n\n // This for-in loop skips the holes of the sparse array. The order of\n // iteration should follow the order of assignment, which happens to match\n // numerical index order, but we don't rely on that.\n var resultIndex;\n for (resultIndex in markupListByNodeName) {\n if (markupListByNodeName.hasOwnProperty(resultIndex)) {\n var markup = markupListByNodeName[resultIndex];\n\n // Push the requested markup with an additional RESULT_INDEX_ATTR\n // attribute. If the markup does not start with a < character, it\n // will be discarded below (with an appropriate console.error).\n markupListByNodeName[resultIndex] = markup.replace(\n OPEN_TAG_NAME_EXP,\n // This index will be parsed back out below.\n '$1 ' + RESULT_INDEX_ATTR + '=\"' + resultIndex + '\" '\n );\n }\n }\n\n // Render each group of markup with similar wrapping `nodeName`.\n var renderNodes = createNodesFromMarkup(\n markupListByNodeName.join(''),\n emptyFunction // Do nothing special with <script> tags.\n );\n\n for (var j = 0; j < renderNodes.length; ++j) {\n var renderNode = renderNodes[j];\n if (renderNode.hasAttribute &&\n renderNode.hasAttribute(RESULT_INDEX_ATTR)) {\n\n resultIndex = +renderNode.getAttribute(RESULT_INDEX_ATTR);\n renderNode.removeAttribute(RESULT_INDEX_ATTR);\n\n ( false ? invariant(\n !resultList.hasOwnProperty(resultIndex),\n 'Danger: Assigning to an already-occupied result index.'\n ) : invariant(!resultList.hasOwnProperty(resultIndex)));\n\n resultList[resultIndex] = renderNode;\n\n // This should match resultList.length and markupList.length when\n // we're done.\n resultListAssignmentCount += 1;\n\n } else if (false) {\n console.error(\n 'Danger: Discarding unexpected node:',\n renderNode\n );\n }\n }\n }\n\n // Although resultList was populated out of order, it should now be a dense\n // array.\n ( false ? invariant(\n resultListAssignmentCount === resultList.length,\n 'Danger: Did not assign to every index of resultList.'\n ) : invariant(resultListAssignmentCount === resultList.length));\n\n ( false ? invariant(\n resultList.length === markupList.length,\n 'Danger: Expected markup to render %s nodes, but rendered %s.',\n markupList.length,\n resultList.length\n ) : invariant(resultList.length === markupList.length));\n\n return resultList;\n },\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function(oldChild, markup) {\n ( false ? invariant(\n ExecutionEnvironment.canUseDOM,\n 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a ' +\n 'worker thread. Make sure `window` and `document` are available ' +\n 'globally before requiring React when unit testing or use ' +\n 'React.renderToString for server rendering.'\n ) : invariant(ExecutionEnvironment.canUseDOM));\n ( false ? invariant(markup, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : invariant(markup));\n ( false ? invariant(\n oldChild.tagName.toLowerCase() !== 'html',\n 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the ' +\n '<html> node. This is because browser quirks make this unreliable ' +\n 'and/or slow. If you want to render to the root you must use ' +\n 'server rendering. See React.renderToString().'\n ) : invariant(oldChild.tagName.toLowerCase() !== 'html'));\n\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n }\n\n};\n\nmodule.exports = Danger;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/Danger.js\n ** module id = 336\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/Danger.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DefaultEventPluginOrder\n */\n\n'use strict';\n\nvar keyOf = __webpack_require__(24);\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\nvar DefaultEventPluginOrder = [\n keyOf({ResponderEventPlugin: null}),\n keyOf({SimpleEventPlugin: null}),\n keyOf({TapEventPlugin: null}),\n keyOf({EnterLeaveEventPlugin: null}),\n keyOf({ChangeEventPlugin: null}),\n keyOf({SelectEventPlugin: null}),\n keyOf({BeforeInputEventPlugin: null}),\n keyOf({AnalyticsEventPlugin: null}),\n keyOf({MobileSafariClickEventPlugin: null})\n];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/DefaultEventPluginOrder.js\n ** module id = 337\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/DefaultEventPluginOrder.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EnterLeaveEventPlugin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPropagators = __webpack_require__(44);\nvar SyntheticMouseEvent = __webpack_require__(56);\n\nvar ReactMount = __webpack_require__(20);\nvar keyOf = __webpack_require__(24);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\nvar getFirstReactDOM = ReactMount.getFirstReactDOM;\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: keyOf({onMouseEnter: null}),\n dependencies: [\n topLevelTypes.topMouseOut,\n topLevelTypes.topMouseOver\n ]\n },\n mouseLeave: {\n registrationName: keyOf({onMouseLeave: null}),\n dependencies: [\n topLevelTypes.topMouseOut,\n topLevelTypes.topMouseOver\n ]\n }\n};\n\nvar extractedEvents = [null, null];\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n if (topLevelType === topLevelTypes.topMouseOver &&\n (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== topLevelTypes.topMouseOut &&\n topLevelType !== topLevelTypes.topMouseOver) {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (topLevelTarget.window === topLevelTarget) {\n // `topLevelTarget` is probably a window object.\n win = topLevelTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = topLevelTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from, to;\n if (topLevelType === topLevelTypes.topMouseOut) {\n from = topLevelTarget;\n to =\n getFirstReactDOM(nativeEvent.relatedTarget || nativeEvent.toElement) ||\n win;\n } else {\n from = win;\n to = topLevelTarget;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromID = from ? ReactMount.getID(from) : '';\n var toID = to ? ReactMount.getID(to) : '';\n\n var leave = SyntheticMouseEvent.getPooled(\n eventTypes.mouseLeave,\n fromID,\n nativeEvent\n );\n leave.type = 'mouseleave';\n leave.target = from;\n leave.relatedTarget = to;\n\n var enter = SyntheticMouseEvent.getPooled(\n eventTypes.mouseEnter,\n toID,\n nativeEvent\n );\n enter.type = 'mouseenter';\n enter.target = to;\n enter.relatedTarget = from;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, fromID, toID);\n\n extractedEvents[0] = leave;\n extractedEvents[1] = enter;\n\n return extractedEvents;\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EnterLeaveEventPlugin.js\n ** module id = 338\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EnterLeaveEventPlugin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule EventListener\n * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(23);\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function(target, eventType, callback) {\n if (!target.addEventListener) {\n if (false) {\n console.error(\n 'Attempted to listen to events during the capture phase on a ' +\n 'browser that does not support the capture phase. Your application ' +\n 'will not receive some events.'\n );\n }\n return {\n remove: emptyFunction\n };\n } else {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n }\n },\n\n registerDefault: function() {}\n};\n\nmodule.exports = EventListener;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/EventListener.js\n ** module id = 339\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/EventListener.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FallbackCompositionState\n * @typechecks static-only\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\n\nvar assign = __webpack_require__(4);\nvar getTextContentAccessor = __webpack_require__(256);\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\nassign(FallbackCompositionState.prototype, {\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function() {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function() {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/FallbackCompositionState.js\n ** module id = 340\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/FallbackCompositionState.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule HTMLDOMPropertyConfig\n */\n\n/*jslint bitwise: true*/\n\n'use strict';\n\nvar DOMProperty = __webpack_require__(34);\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE =\n DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE =\n DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar hasSVG;\nif (ExecutionEnvironment.canUseDOM) {\n var implementation = document.implementation;\n hasSVG = (\n implementation &&\n implementation.hasFeature &&\n implementation.hasFeature(\n 'http://www.w3.org/TR/SVG11/feature#BasicStructure',\n '1.1'\n )\n );\n}\n\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(\n /^(data|aria)-[a-z_][a-z\\d_.\\-]*$/\n ),\n Properties: {\n /**\n * Standard Properties\n */\n accept: null,\n acceptCharset: null,\n accessKey: null,\n action: null,\n allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,\n allowTransparency: MUST_USE_ATTRIBUTE,\n alt: null,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: null,\n // autoFocus is polyfilled/normalized by AutoFocusMixin\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n cellPadding: null,\n cellSpacing: null,\n charSet: MUST_USE_ATTRIBUTE,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n classID: MUST_USE_ATTRIBUTE,\n // To set className on SVG elements, it's necessary to use .setAttribute;\n // this works on HTML elements too in all browsers except IE8. Conveniently,\n // IE8 doesn't support SVG and so we can simply use the attribute in\n // browsers that support SVG and the property in browsers that don't,\n // regardless of whether the element is HTML or SVG.\n className: hasSVG ? MUST_USE_ATTRIBUTE : MUST_USE_PROPERTY,\n cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: null,\n content: null,\n contentEditable: null,\n contextMenu: MUST_USE_ATTRIBUTE,\n controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n coords: null,\n crossOrigin: null,\n data: null, // For `<object />` acts as `src`.\n dateTime: MUST_USE_ATTRIBUTE,\n defer: HAS_BOOLEAN_VALUE,\n dir: null,\n disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: null,\n encType: null,\n form: MUST_USE_ATTRIBUTE,\n formAction: MUST_USE_ATTRIBUTE,\n formEncType: MUST_USE_ATTRIBUTE,\n formMethod: MUST_USE_ATTRIBUTE,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: MUST_USE_ATTRIBUTE,\n frameBorder: MUST_USE_ATTRIBUTE,\n headers: null,\n height: MUST_USE_ATTRIBUTE,\n hidden: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,\n high: null,\n href: null,\n hrefLang: null,\n htmlFor: null,\n httpEquiv: null,\n icon: null,\n id: MUST_USE_PROPERTY,\n label: null,\n lang: null,\n list: MUST_USE_ATTRIBUTE,\n loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n low: null,\n manifest: MUST_USE_ATTRIBUTE,\n marginHeight: null,\n marginWidth: null,\n max: null,\n maxLength: MUST_USE_ATTRIBUTE,\n media: MUST_USE_ATTRIBUTE,\n mediaGroup: null,\n method: null,\n min: null,\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: null,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: null,\n pattern: null,\n placeholder: null,\n poster: null,\n preload: null,\n radioGroup: null,\n readOnly: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n rel: null,\n required: HAS_BOOLEAN_VALUE,\n role: MUST_USE_ATTRIBUTE,\n rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: null,\n sandbox: null,\n scope: null,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: null,\n seamless: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: null,\n size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,\n sizes: MUST_USE_ATTRIBUTE,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: null,\n src: null,\n srcDoc: MUST_USE_PROPERTY,\n srcSet: MUST_USE_ATTRIBUTE,\n start: HAS_NUMERIC_VALUE,\n step: null,\n style: null,\n tabIndex: null,\n target: null,\n title: null,\n type: null,\n useMap: null,\n value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,\n width: MUST_USE_ATTRIBUTE,\n wmode: MUST_USE_ATTRIBUTE,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: null,\n autoCorrect: null,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: MUST_USE_ATTRIBUTE,\n itemScope: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,\n itemType: MUST_USE_ATTRIBUTE,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: MUST_USE_ATTRIBUTE,\n itemRef: MUST_USE_ATTRIBUTE,\n // property is supported for OpenGraph in meta tags.\n property: null,\n // IE-only attribute that controls focus behavior\n unselectable: MUST_USE_ATTRIBUTE\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {\n autoCapitalize: 'autocapitalize',\n autoComplete: 'autocomplete',\n autoCorrect: 'autocorrect',\n autoFocus: 'autofocus',\n autoPlay: 'autoplay',\n // `encoding` is equivalent to `enctype`, IE8 lacks an `enctype` setter.\n // http://www.w3.org/TR/html5/forms.html#dom-fs-encoding\n encType: 'encoding',\n hrefLang: 'hreflang',\n radioGroup: 'radiogroup',\n spellCheck: 'spellcheck',\n srcDoc: 'srcdoc',\n srcSet: 'srcset'\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/HTMLDOMPropertyConfig.js\n ** module id = 341\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/HTMLDOMPropertyConfig.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MobileSafariClickEventPlugin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\n\nvar emptyFunction = __webpack_require__(23);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n/**\n * Mobile Safari does not fire properly bubble click events on non-interactive\n * elements, which means delegated click listeners do not fire. The workaround\n * for this bug involves attaching an empty click listener on the target node.\n *\n * This particular plugin works around the bug by attaching an empty click\n * listener on `touchstart` (which does fire on every element).\n */\nvar MobileSafariClickEventPlugin = {\n\n eventTypes: null,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n if (topLevelType === topLevelTypes.topTouchStart) {\n var target = nativeEvent.target;\n if (target && !target.onclick) {\n target.onclick = emptyFunction;\n }\n }\n }\n\n};\n\nmodule.exports = MobileSafariClickEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/MobileSafariClickEventPlugin.js\n ** module id = 342\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/MobileSafariClickEventPlugin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar EventPluginUtils = __webpack_require__(73);\nvar ReactChildren = __webpack_require__(345);\nvar ReactComponent = __webpack_require__(240);\nvar ReactClass = __webpack_require__(14);\nvar ReactContext = __webpack_require__(78);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactElement = __webpack_require__(5);\nvar ReactElementValidator = __webpack_require__(45);\nvar ReactDOM = __webpack_require__(347);\nvar ReactDOMTextComponent = __webpack_require__(242);\nvar ReactDefaultInjection = __webpack_require__(358);\nvar ReactInstanceHandles = __webpack_require__(36);\nvar ReactMount = __webpack_require__(20);\nvar ReactPerf = __webpack_require__(28);\nvar ReactPropTypes = __webpack_require__(246);\nvar ReactReconciler = __webpack_require__(38);\nvar ReactServerRendering = __webpack_require__(367);\n\nvar assign = __webpack_require__(4);\nvar findDOMNode = __webpack_require__(251);\nvar onlyChild = __webpack_require__(398);\n\nReactDefaultInjection.inject();\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (false) {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar render = ReactPerf.measure('React', 'render', ReactMount.render);\n\nvar React = {\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n only: onlyChild\n },\n Component: ReactComponent,\n DOM: ReactDOM,\n PropTypes: ReactPropTypes,\n initializeTouchEvents: function(shouldUseTouch) {\n EventPluginUtils.useTouchEvents = shouldUseTouch;\n },\n createClass: ReactClass.createClass,\n createElement: createElement,\n cloneElement: cloneElement,\n createFactory: createFactory,\n createMixin: function(mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n constructAndRenderComponent: ReactMount.constructAndRenderComponent,\n constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,\n findDOMNode: findDOMNode,\n render: render,\n renderToString: ReactServerRendering.renderToString,\n renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n isValidElement: ReactElement.isValidElement,\n withContext: ReactContext.withContext,\n\n // Hook for JSX spread, don't use this for anything else.\n __spread: assign\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n CurrentOwner: ReactCurrentOwner,\n InstanceHandles: ReactInstanceHandles,\n Mount: ReactMount,\n Reconciler: ReactReconciler,\n TextComponent: ReactDOMTextComponent\n });\n}\n\nif (false) {\n var ExecutionEnvironment = require(\"./ExecutionEnvironment\");\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // If we're in Chrome, look for the devtools marker and provide a download\n // link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1) {\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n console.debug(\n 'Download the React DevTools for a better development experience: ' +\n 'https://fb.me/react-devtools'\n );\n }\n }\n\n var expectedFeatures = [\n // shims\n Array.isArray,\n Array.prototype.every,\n Array.prototype.forEach,\n Array.prototype.indexOf,\n Array.prototype.map,\n Date.now,\n Function.prototype.bind,\n Object.keys,\n String.prototype.split,\n String.prototype.trim,\n\n // shams\n Object.create,\n Object.freeze\n ];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n console.error(\n 'One or more ES5 shim/shams expected by React are not available: ' +\n 'https://fb.me/react-warning-polyfills'\n );\n break;\n }\n }\n }\n}\n\nReact.version = '0.13.3';\n\nmodule.exports = React;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/React.js\n ** module id = 343\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/React.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildReconciler\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactReconciler = __webpack_require__(38);\n\nvar flattenChildren = __webpack_require__(388);\nvar instantiateReactComponent = __webpack_require__(89);\nvar shouldUpdateReactComponent = __webpack_require__(92);\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function(nestedChildNodes, transaction, context) {\n var children = flattenChildren(nestedChildNodes);\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // The rendered children must be turned into instances as they're\n // mounted.\n var childInstance = instantiateReactComponent(child, null);\n children[name] = childInstance;\n }\n }\n return children;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextNestedChildNodes Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function(\n prevChildren,\n nextNestedChildNodes,\n transaction,\n context) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n var nextChildren = flattenChildren(nextNestedChildNodes);\n if (!nextChildren && !prevChildren) {\n return null;\n }\n var name;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(\n prevChild, nextElement, transaction, context\n );\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n ReactReconciler.unmountComponent(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(\n nextElement,\n null\n );\n nextChildren[name] = nextChildInstance;\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n ReactReconciler.unmountComponent(prevChildren[name]);\n }\n }\n return nextChildren;\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function(renderedChildren) {\n for (var name in renderedChildren) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild);\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactChildReconciler.js\n ** module id = 344\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactChildReconciler.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildren\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\nvar ReactFragment = __webpack_require__(53);\n\nvar traverseAllChildren = __webpack_require__(259);\nvar warning = __webpack_require__(6);\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar threeArgumentPooler = PooledClass.threeArgumentPooler;\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.forEachFunction = forEachFunction;\n this.forEachContext = forEachContext;\n}\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext, child, name, i) {\n var forEachBookKeeping = traverseContext;\n forEachBookKeeping.forEachFunction.call(\n forEachBookKeeping.forEachContext, child, i);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc.\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n\n var traverseContext =\n ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, mapFunction, mapContext) {\n this.mapResult = mapResult;\n this.mapFunction = mapFunction;\n this.mapContext = mapContext;\n}\nPooledClass.addPoolingTo(MapBookKeeping, threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext, child, name, i) {\n var mapBookKeeping = traverseContext;\n var mapResult = mapBookKeeping.mapResult;\n\n var keyUnique = !mapResult.hasOwnProperty(name);\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n keyUnique,\n 'ReactChildren.map(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n ) : null);\n }\n\n if (keyUnique) {\n var mappedChild =\n mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);\n mapResult[name] = mappedChild;\n }\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * TODO: This may likely break any calls to `ReactChildren.map` that were\n * previously relying on the fact that we guarded against null children.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} mapFunction.\n * @param {*} mapContext Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var mapResult = {};\n var traverseContext = MapBookKeeping.getPooled(mapResult, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n return ReactFragment.create(mapResult);\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name, i) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n count: countChildren\n};\n\nmodule.exports = ReactChildren;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactChildren.js\n ** module id = 345\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactChildren.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = __webpack_require__(77);\nvar ReactContext = __webpack_require__(78);\nvar ReactCurrentOwner = __webpack_require__(19);\nvar ReactElement = __webpack_require__(5);\nvar ReactElementValidator = __webpack_require__(45);\nvar ReactInstanceMap = __webpack_require__(37);\nvar ReactLifeCycle = __webpack_require__(81);\nvar ReactNativeComponent = __webpack_require__(54);\nvar ReactPerf = __webpack_require__(28);\nvar ReactPropTypeLocations = __webpack_require__(82);\nvar ReactPropTypeLocationNames = __webpack_require__(55);\nvar ReactReconciler = __webpack_require__(38);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\nvar emptyObject = __webpack_require__(58);\nvar invariant = __webpack_require__(3);\nvar shouldUpdateReactComponent = __webpack_require__(92);\nvar warning = __webpack_require__(6);\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n\n // See ReactUpdateQueue\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedComponent = null;\n\n this._context = null;\n this._mountOrder = 0;\n this._isTopLevel = false;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._rootNodeID = rootID;\n\n var publicProps = this._processProps(this._currentElement.props);\n var publicContext = this._processContext(this._currentElement._context);\n\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n\n // Initialize the public class\n var inst = new Component(publicProps, publicContext);\n\n if (false) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n (\"production\" !== process.env.NODE_ENV ? warning(\n inst.render != null,\n '%s(...): No `render` method found on the returned component ' +\n 'instance: you may have forgotten to define `render` in your ' +\n 'component or you may have accidentally tried to render an element ' +\n 'whose type is a function that isn\\'t a React component.',\n Component.displayName || Component.name || 'Component'\n ) : null);\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (false) {\n this._warnIfContextsDiffer(this._currentElement._context, context);\n }\n\n if (false) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n (\"production\" !== process.env.NODE_ENV ? warning(\n !inst.getInitialState ||\n inst.getInitialState.isReactClassApproved,\n 'getInitialState was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Did you mean to define a state property instead?',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== process.env.NODE_ENV ? warning(\n !inst.getDefaultProps ||\n inst.getDefaultProps.isReactClassApproved,\n 'getDefaultProps was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Use a static property to define defaultProps instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== process.env.NODE_ENV ? warning(\n !inst.propTypes,\n 'propTypes was defined as an instance property on %s. Use a static ' +\n 'property to define propTypes instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== process.env.NODE_ENV ? warning(\n !inst.contextTypes,\n 'contextTypes was defined as an instance property on %s. Use a ' +\n 'static property to define contextTypes instead.',\n this.getName() || 'a component'\n ) : null);\n (\"production\" !== process.env.NODE_ENV ? warning(\n typeof inst.componentShouldUpdate !== 'function',\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n (this.getName() || 'A component')\n ) : null);\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n ( false ? invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.state: must be set to an object or null',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(typeof initialState === 'object' && !Array.isArray(initialState)));\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var childContext;\n var renderedElement;\n\n var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;\n ReactLifeCycle.currentlyMountingInstance = this;\n try {\n if (inst.componentWillMount) {\n inst.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n childContext = this._getValidatedChildContext(context);\n renderedElement = this._renderValidatedComponent(childContext);\n } finally {\n ReactLifeCycle.currentlyMountingInstance = previouslyMounting;\n }\n\n this._renderedComponent = this._instantiateReactComponent(\n renderedElement,\n this._currentElement.type // The wrapping type\n );\n\n var markup = ReactReconciler.mountComponent(\n this._renderedComponent,\n rootID,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n var previouslyUnmounting = ReactLifeCycle.currentlyUnmountingInstance;\n ReactLifeCycle.currentlyUnmountingInstance = this;\n try {\n inst.componentWillUnmount();\n } finally {\n ReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;\n }\n }\n\n ReactReconciler.unmountComponent(this._renderedComponent);\n this._renderedComponent = null;\n\n // Reset pending fields\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Schedule a partial update to the props. Only used for internal testing.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @internal\n */\n _setPropsInternal: function(partialProps, callback) {\n // This is a deoptimized path. We optimize for always having an element.\n // This creates an extra internal element.\n var element = this._pendingElement || this._currentElement;\n this._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n assign({}, element.props, partialProps)\n );\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function(context) {\n var maskedContext = null;\n // This really should be getting the component class for the element,\n // but we know that we're not going to need it for built-ins.\n if (typeof this._currentElement.type === 'string') {\n return emptyObject;\n }\n var contextTypes = this._currentElement.type.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = this._maskContext(context);\n if (false) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.contextTypes) {\n this._checkPropTypes(\n Component.contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _getValidatedChildContext: function(currentContext) {\n var inst = this._instance;\n var childContext = inst.getChildContext && inst.getChildContext();\n if (childContext) {\n ( false ? invariant(\n typeof inst.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(typeof inst.constructor.childContextTypes === 'object'));\n if (false) {\n this._checkPropTypes(\n inst.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n ( false ? invariant(\n name in inst.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n this.getName() || 'ReactCompositeComponent',\n name\n ) : invariant(name in inst.constructor.childContextTypes));\n }\n return childContext;\n }\n return null;\n },\n\n _mergeChildContext: function(currentContext, childContext) {\n if (childContext) {\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (false) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.propTypes) {\n this._checkPropTypes(\n Component.propTypes,\n newProps,\n ReactPropTypeLocations.prop\n );\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n ( false ? invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually ' +\n 'from React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n ) : invariant(typeof propTypes[propName] === 'function'));\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // React.render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n ( false ? warning(\n false,\n 'Failed Composite propType: %s%s',\n error.message,\n addendum\n ) : null);\n } else {\n ( false ? warning(\n false,\n 'Failed Context Types: %s%s',\n error.message,\n addendum\n ) : null);\n }\n }\n }\n }\n },\n\n receiveComponent: function(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(\n transaction,\n prevElement,\n nextElement,\n prevContext,\n nextContext\n );\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(\n this,\n this._pendingElement || this._currentElement,\n transaction,\n this._context\n );\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n if (false) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n this._currentElement\n );\n }\n\n this.updateComponent(\n transaction,\n this._currentElement,\n this._currentElement,\n this._context,\n this._context\n );\n }\n },\n\n /**\n * Compare two contexts, warning if they are different\n * TODO: Remove this check when owner-context is removed\n */\n _warnIfContextsDiffer: function(ownerBasedContext, parentBasedContext) {\n ownerBasedContext = this._maskContext(ownerBasedContext);\n parentBasedContext = this._maskContext(parentBasedContext);\n var parentKeys = Object.keys(parentBasedContext).sort();\n var displayName = this.getName() || 'ReactCompositeComponent';\n for (var i = 0; i < parentKeys.length; i++) {\n var key = parentKeys[i];\n ( false ? warning(\n ownerBasedContext[key] === parentBasedContext[key],\n 'owner-based and parent-based contexts differ ' +\n '(values: `%s` vs `%s`) for key (%s) while mounting %s ' +\n '(see: http://fb.me/react-context-by-parent)',\n ownerBasedContext[key],\n parentBasedContext[key],\n key,\n displayName\n ) : null);\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function(\n transaction,\n prevParentElement,\n nextParentElement,\n prevUnmaskedContext,\n nextUnmaskedContext\n ) {\n var inst = this._instance;\n\n var nextContext = inst.context;\n var nextProps = inst.props;\n\n // Distinguish between a props update versus a simple state update\n if (prevParentElement !== nextParentElement) {\n nextContext = this._processContext(nextParentElement._context);\n nextProps = this._processProps(nextParentElement.props);\n\n if (false) {\n if (nextUnmaskedContext != null) {\n this._warnIfContextsDiffer(\n nextParentElement._context,\n nextUnmaskedContext\n );\n }\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n if (inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !inst.shouldComponentUpdate ||\n inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n typeof shouldUpdate !== 'undefined',\n '%s.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.',\n this.getName() || 'ReactCompositeComponent'\n ) : null);\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextParentElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n nextUnmaskedContext\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(\n nextState,\n typeof partial === 'function' ?\n partial.call(inst, nextState, props, context) :\n partial\n );\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n unmaskedContext\n ) {\n var inst = this._instance;\n\n var prevProps = inst.props;\n var prevState = inst.state;\n var prevContext = inst.context;\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (inst.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),\n inst\n );\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var childContext = this._getValidatedChildContext();\n var nextRenderedElement = this._renderValidatedComponent(childContext);\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(\n prevComponentInstance,\n nextRenderedElement,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n ReactReconciler.unmountComponent(prevComponentInstance);\n\n this._renderedComponent = this._instantiateReactComponent(\n nextRenderedElement,\n this._currentElement.type\n );\n var nextMarkup = ReactReconciler.mountComponent(\n this._renderedComponent,\n thisID,\n transaction,\n this._mergeChildContext(context, childContext)\n );\n this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);\n }\n },\n\n /**\n * @protected\n */\n _replaceNodeWithMarkupByID: function(prevComponentID, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n if (false) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof renderedComponent === 'undefined' &&\n inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function(childContext) {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._mergeChildContext(\n this._currentElement._context,\n childContext\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent =\n this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n ( false ? invariant(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.getName() || 'ReactCompositeComponent'\n ) : invariant(// TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent)));\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function(ref, component) {\n var inst = this.getPublicInstance();\n var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs;\n refs[ref] = component.getPublicInstance();\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return (\n type.displayName || (constructor && constructor.displayName) ||\n type.name || (constructor && constructor.name) ||\n null\n );\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by React.render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function() {\n return this._instance;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nReactPerf.measureMethods(\n ReactCompositeComponentMixin,\n 'ReactCompositeComponent',\n {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n }\n);\n\nvar ReactCompositeComponent = {\n\n Mixin: ReactCompositeComponentMixin\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactCompositeComponent.js\n ** module id = 346\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactCompositeComponent.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOM\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactElementValidator = __webpack_require__(45);\n\nvar mapObject = __webpack_require__(396);\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @param {string} tag Tag name (e.g. `div`).\n * @private\n */\nfunction createDOMFactory(tag) {\n if (false) {\n return ReactElementValidator.createFactory(tag);\n }\n return ReactElement.createFactory(tag);\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOM = mapObject({\n a: 'a',\n abbr: 'abbr',\n address: 'address',\n area: 'area',\n article: 'article',\n aside: 'aside',\n audio: 'audio',\n b: 'b',\n base: 'base',\n bdi: 'bdi',\n bdo: 'bdo',\n big: 'big',\n blockquote: 'blockquote',\n body: 'body',\n br: 'br',\n button: 'button',\n canvas: 'canvas',\n caption: 'caption',\n cite: 'cite',\n code: 'code',\n col: 'col',\n colgroup: 'colgroup',\n data: 'data',\n datalist: 'datalist',\n dd: 'dd',\n del: 'del',\n details: 'details',\n dfn: 'dfn',\n dialog: 'dialog',\n div: 'div',\n dl: 'dl',\n dt: 'dt',\n em: 'em',\n embed: 'embed',\n fieldset: 'fieldset',\n figcaption: 'figcaption',\n figure: 'figure',\n footer: 'footer',\n form: 'form',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n head: 'head',\n header: 'header',\n hr: 'hr',\n html: 'html',\n i: 'i',\n iframe: 'iframe',\n img: 'img',\n input: 'input',\n ins: 'ins',\n kbd: 'kbd',\n keygen: 'keygen',\n label: 'label',\n legend: 'legend',\n li: 'li',\n link: 'link',\n main: 'main',\n map: 'map',\n mark: 'mark',\n menu: 'menu',\n menuitem: 'menuitem',\n meta: 'meta',\n meter: 'meter',\n nav: 'nav',\n noscript: 'noscript',\n object: 'object',\n ol: 'ol',\n optgroup: 'optgroup',\n option: 'option',\n output: 'output',\n p: 'p',\n param: 'param',\n picture: 'picture',\n pre: 'pre',\n progress: 'progress',\n q: 'q',\n rp: 'rp',\n rt: 'rt',\n ruby: 'ruby',\n s: 's',\n samp: 'samp',\n script: 'script',\n section: 'section',\n select: 'select',\n small: 'small',\n source: 'source',\n span: 'span',\n strong: 'strong',\n style: 'style',\n sub: 'sub',\n summary: 'summary',\n sup: 'sup',\n table: 'table',\n tbody: 'tbody',\n td: 'td',\n textarea: 'textarea',\n tfoot: 'tfoot',\n th: 'th',\n thead: 'thead',\n time: 'time',\n title: 'title',\n tr: 'tr',\n track: 'track',\n u: 'u',\n ul: 'ul',\n 'var': 'var',\n video: 'video',\n wbr: 'wbr',\n\n // SVG\n circle: 'circle',\n clipPath: 'clipPath',\n defs: 'defs',\n ellipse: 'ellipse',\n g: 'g',\n line: 'line',\n linearGradient: 'linearGradient',\n mask: 'mask',\n path: 'path',\n pattern: 'pattern',\n polygon: 'polygon',\n polyline: 'polyline',\n radialGradient: 'radialGradient',\n rect: 'rect',\n stop: 'stop',\n svg: 'svg',\n text: 'text',\n tspan: 'tspan'\n\n}, createDOMFactory);\n\nmodule.exports = ReactDOM;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOM.js\n ** module id = 347\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOM.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMButton\n */\n\n'use strict';\n\nvar AutoFocusMixin = __webpack_require__(52);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar keyMirror = __webpack_require__(47);\n\nvar button = ReactElement.createFactory('button');\n\nvar mouseListenerNames = keyMirror({\n onClick: true,\n onDoubleClick: true,\n onMouseDown: true,\n onMouseMove: true,\n onMouseUp: true,\n onClickCapture: true,\n onDoubleClickCapture: true,\n onMouseDownCapture: true,\n onMouseMoveCapture: true,\n onMouseUpCapture: true\n});\n\n/**\n * Implements a <button> native component that does not receive mouse events\n * when `disabled` is set.\n */\nvar ReactDOMButton = ReactClass.createClass({\n displayName: 'ReactDOMButton',\n tagName: 'BUTTON',\n\n mixins: [AutoFocusMixin, ReactBrowserComponentMixin],\n\n render: function() {\n var props = {};\n\n // Copy the props; except the mouse listeners if we're disabled\n for (var key in this.props) {\n if (this.props.hasOwnProperty(key) &&\n (!this.props.disabled || !mouseListenerNames[key])) {\n props[key] = this.props[key];\n }\n }\n\n return button(props, this.props.children);\n }\n\n});\n\nmodule.exports = ReactDOMButton;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMButton.js\n ** module id = 348\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMButton.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMForm\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar LocalEventTrapMixin = __webpack_require__(75);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar form = ReactElement.createFactory('form');\n\n/**\n * Since onSubmit doesn't bubble OR capture on the top level in IE8, we need\n * to capture it on the <form> element itself. There are lots of hacks we could\n * do to accomplish this, but the most reliable is to make <form> a\n * composite component and use `componentDidMount` to attach the event handlers.\n */\nvar ReactDOMForm = ReactClass.createClass({\n displayName: 'ReactDOMForm',\n tagName: 'FORM',\n\n mixins: [ReactBrowserComponentMixin, LocalEventTrapMixin],\n\n render: function() {\n // TODO: Instead of using `ReactDOM` directly, we should use JSX. However,\n // `jshint` fails to parse JSX so in order for linting to work in the open\n // source repo, we need to just use `ReactDOM.form`.\n return form(this.props);\n },\n\n componentDidMount: function() {\n this.trapBubbledEvent(EventConstants.topLevelTypes.topReset, 'reset');\n this.trapBubbledEvent(EventConstants.topLevelTypes.topSubmit, 'submit');\n }\n});\n\nmodule.exports = ReactDOMForm;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMForm.js\n ** module id = 349\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMForm.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMIframe\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar LocalEventTrapMixin = __webpack_require__(75);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar iframe = ReactElement.createFactory('iframe');\n\n/**\n * Since onLoad doesn't bubble OR capture on the top level in IE8, we need to\n * capture it on the <iframe> element itself. There are lots of hacks we could\n * do to accomplish this, but the most reliable is to make <iframe> a composite\n * component and use `componentDidMount` to attach the event handlers.\n */\nvar ReactDOMIframe = ReactClass.createClass({\n displayName: 'ReactDOMIframe',\n tagName: 'IFRAME',\n\n mixins: [ReactBrowserComponentMixin, LocalEventTrapMixin],\n\n render: function() {\n return iframe(this.props);\n },\n\n componentDidMount: function() {\n this.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load');\n }\n});\n\nmodule.exports = ReactDOMIframe;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMIframe.js\n ** module id = 350\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMIframe.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMImg\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar LocalEventTrapMixin = __webpack_require__(75);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar img = ReactElement.createFactory('img');\n\n/**\n * Since onLoad doesn't bubble OR capture on the top level in IE8, we need to\n * capture it on the <img> element itself. There are lots of hacks we could do\n * to accomplish this, but the most reliable is to make <img> a composite\n * component and use `componentDidMount` to attach the event handlers.\n */\nvar ReactDOMImg = ReactClass.createClass({\n displayName: 'ReactDOMImg',\n tagName: 'IMG',\n\n mixins: [ReactBrowserComponentMixin, LocalEventTrapMixin],\n\n render: function() {\n return img(this.props);\n },\n\n componentDidMount: function() {\n this.trapBubbledEvent(EventConstants.topLevelTypes.topLoad, 'load');\n this.trapBubbledEvent(EventConstants.topLevelTypes.topError, 'error');\n }\n});\n\nmodule.exports = ReactDOMImg;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMImg.js\n ** module id = 351\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMImg.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMInput\n */\n\n'use strict';\n\nvar AutoFocusMixin = __webpack_require__(52);\nvar DOMPropertyOperations = __webpack_require__(42);\nvar LinkedValueUtils = __webpack_require__(74);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\nvar ReactMount = __webpack_require__(20);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\n\nvar input = ReactElement.createFactory('input');\n\nvar instancesByReactID = {};\n\nfunction forceUpdateIfMounted() {\n /*jshint validthis:true */\n if (this.isMounted()) {\n this.forceUpdate();\n }\n}\n\n/**\n * Implements an <input> native component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = ReactClass.createClass({\n displayName: 'ReactDOMInput',\n tagName: 'INPUT',\n\n mixins: [AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin],\n\n getInitialState: function() {\n var defaultValue = this.props.defaultValue;\n return {\n initialChecked: this.props.defaultChecked || false,\n initialValue: defaultValue != null ? defaultValue : null\n };\n },\n\n render: function() {\n // Clone `this.props` so we don't mutate the input.\n var props = assign({}, this.props);\n\n props.defaultChecked = null;\n props.defaultValue = null;\n\n var value = LinkedValueUtils.getValue(this);\n props.value = value != null ? value : this.state.initialValue;\n\n var checked = LinkedValueUtils.getChecked(this);\n props.checked = checked != null ? checked : this.state.initialChecked;\n\n props.onChange = this._handleChange;\n\n return input(props, this.props.children);\n },\n\n componentDidMount: function() {\n var id = ReactMount.getID(this.getDOMNode());\n instancesByReactID[id] = this;\n },\n\n componentWillUnmount: function() {\n var rootNode = this.getDOMNode();\n var id = ReactMount.getID(rootNode);\n delete instancesByReactID[id];\n },\n\n componentDidUpdate: function(prevProps, prevState, prevContext) {\n var rootNode = this.getDOMNode();\n if (this.props.checked != null) {\n DOMPropertyOperations.setValueForProperty(\n rootNode,\n 'checked',\n this.props.checked || false\n );\n }\n\n var value = LinkedValueUtils.getValue(this);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n DOMPropertyOperations.setValueForProperty(rootNode, 'value', '' + value);\n }\n },\n\n _handleChange: function(event) {\n var returnValue;\n var onChange = LinkedValueUtils.getOnChange(this);\n if (onChange) {\n returnValue = onChange.call(this, event);\n }\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = this.props.name;\n if (this.props.type === 'radio' && name != null) {\n var rootNode = this.getDOMNode();\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll(\n 'input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0, groupLen = group.length; i < groupLen; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode ||\n otherNode.form !== rootNode.form) {\n continue;\n }\n var otherID = ReactMount.getID(otherNode);\n ( false ? invariant(\n otherID,\n 'ReactDOMInput: Mixing React and non-React radio inputs with the ' +\n 'same `name` is not supported.'\n ) : invariant(otherID));\n var otherInstance = instancesByReactID[otherID];\n ( false ? invariant(\n otherInstance,\n 'ReactDOMInput: Unknown radio button ID %s.',\n otherID\n ) : invariant(otherInstance));\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n }\n\n});\n\nmodule.exports = ReactDOMInput;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMInput.js\n ** module id = 352\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMInput.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMOption\n */\n\n'use strict';\n\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar warning = __webpack_require__(6);\n\nvar option = ReactElement.createFactory('option');\n\n/**\n * Implements an <option> native component that warns when `selected` is set.\n */\nvar ReactDOMOption = ReactClass.createClass({\n displayName: 'ReactDOMOption',\n tagName: 'OPTION',\n\n mixins: [ReactBrowserComponentMixin],\n\n componentWillMount: function() {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n this.props.selected == null,\n 'Use the `defaultValue` or `value` props on <select> instead of ' +\n 'setting `selected` on <option>.'\n ) : null);\n }\n },\n\n render: function() {\n return option(this.props, this.props.children);\n }\n\n});\n\nmodule.exports = ReactDOMOption;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMOption.js\n ** module id = 353\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMOption.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMSelect\n */\n\n'use strict';\n\nvar AutoFocusMixin = __webpack_require__(52);\nvar LinkedValueUtils = __webpack_require__(74);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\n\nvar select = ReactElement.createFactory('select');\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n /*jshint validthis:true */\n if (this._pendingUpdate) {\n this._pendingUpdate = false;\n var value = LinkedValueUtils.getValue(this);\n if (value != null && this.isMounted()) {\n updateOptions(this, value);\n }\n }\n}\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction selectValueType(props, propName, componentName) {\n if (props[propName] == null) {\n return null;\n }\n if (props.multiple) {\n if (!Array.isArray(props[propName])) {\n return new Error(\n (\"The `\" + propName + \"` prop supplied to <select> must be an array if \") +\n (\"`multiple` is true.\")\n );\n }\n } else {\n if (Array.isArray(props[propName])) {\n return new Error(\n (\"The `\" + propName + \"` prop supplied to <select> must be a scalar \") +\n (\"value if `multiple` is false.\")\n );\n }\n }\n}\n\n/**\n * @param {ReactComponent} component Instance of ReactDOMSelect\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(component, propValue) {\n var selectedValue, i, l;\n var options = component.getDOMNode().options;\n\n if (component.props.multiple) {\n selectedValue = {};\n for (i = 0, l = propValue.length; i < l; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0, l = options.length; i < l; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0, l = options.length; i < l; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> native component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = ReactClass.createClass({\n displayName: 'ReactDOMSelect',\n tagName: 'SELECT',\n\n mixins: [AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin],\n\n propTypes: {\n defaultValue: selectValueType,\n value: selectValueType\n },\n\n render: function() {\n // Clone `this.props` so we don't mutate the input.\n var props = assign({}, this.props);\n\n props.onChange = this._handleChange;\n props.value = null;\n\n return select(props, this.props.children);\n },\n\n componentWillMount: function() {\n this._pendingUpdate = false;\n },\n\n componentDidMount: function() {\n var value = LinkedValueUtils.getValue(this);\n if (value != null) {\n updateOptions(this, value);\n } else if (this.props.defaultValue != null) {\n updateOptions(this, this.props.defaultValue);\n }\n },\n\n componentDidUpdate: function(prevProps) {\n var value = LinkedValueUtils.getValue(this);\n if (value != null) {\n this._pendingUpdate = false;\n updateOptions(this, value);\n } else if (!prevProps.multiple !== !this.props.multiple) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (this.props.defaultValue != null) {\n updateOptions(this, this.props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(this, this.props.multiple ? [] : '');\n }\n }\n },\n\n _handleChange: function(event) {\n var returnValue;\n var onChange = LinkedValueUtils.getOnChange(this);\n if (onChange) {\n returnValue = onChange.call(this, event);\n }\n\n this._pendingUpdate = true;\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n }\n\n});\n\nmodule.exports = ReactDOMSelect;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMSelect.js\n ** module id = 354\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMSelect.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMSelection\n */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar getNodeForCharacterOffset = __webpack_require__(390);\nvar getTextContentAccessor = __webpack_require__(256);\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(\n selection.anchorNode,\n selection.anchorOffset,\n selection.focusNode,\n selection.focusOffset\n );\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(\n tempRange.startContainer,\n tempRange.startOffset,\n tempRange.endContainer,\n tempRange.endOffset\n );\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (typeof offsets.end === 'undefined') {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = typeof offsets.end === 'undefined' ?\n start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = (\n ExecutionEnvironment.canUseDOM &&\n 'selection' in document &&\n !('getSelection' in window)\n);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMSelection.js\n ** module id = 355\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMSelection.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDOMTextarea\n */\n\n'use strict';\n\nvar AutoFocusMixin = __webpack_require__(52);\nvar DOMPropertyOperations = __webpack_require__(42);\nvar LinkedValueUtils = __webpack_require__(74);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\nvar invariant = __webpack_require__(3);\n\nvar warning = __webpack_require__(6);\n\nvar textarea = ReactElement.createFactory('textarea');\n\nfunction forceUpdateIfMounted() {\n /*jshint validthis:true */\n if (this.isMounted()) {\n this.forceUpdate();\n }\n}\n\n/**\n * Implements a <textarea> native component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = ReactClass.createClass({\n displayName: 'ReactDOMTextarea',\n tagName: 'TEXTAREA',\n\n mixins: [AutoFocusMixin, LinkedValueUtils.Mixin, ReactBrowserComponentMixin],\n\n getInitialState: function() {\n var defaultValue = this.props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = this.props.children;\n if (children != null) {\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n false,\n 'Use the `defaultValue` or `value` props instead of setting ' +\n 'children on <textarea>.'\n ) : null);\n }\n ( false ? invariant(\n defaultValue == null,\n 'If you supply `defaultValue` on a <textarea>, do not pass children.'\n ) : invariant(defaultValue == null));\n if (Array.isArray(children)) {\n ( false ? invariant(\n children.length <= 1,\n '<textarea> can only have at most one child.'\n ) : invariant(children.length <= 1));\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n var value = LinkedValueUtils.getValue(this);\n return {\n // We save the initial value so that `ReactDOMComponent` doesn't update\n // `textContent` (unnecessary since we update value).\n // The initial value can be a boolean or object so that's why it's\n // forced to be a string.\n initialValue: '' + (value != null ? value : defaultValue)\n };\n },\n\n render: function() {\n // Clone `this.props` so we don't mutate the input.\n var props = assign({}, this.props);\n\n ( false ? invariant(\n props.dangerouslySetInnerHTML == null,\n '`dangerouslySetInnerHTML` does not make sense on <textarea>.'\n ) : invariant(props.dangerouslySetInnerHTML == null));\n\n props.defaultValue = null;\n props.value = null;\n props.onChange = this._handleChange;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated.\n return textarea(props, this.state.initialValue);\n },\n\n componentDidUpdate: function(prevProps, prevState, prevContext) {\n var value = LinkedValueUtils.getValue(this);\n if (value != null) {\n var rootNode = this.getDOMNode();\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n DOMPropertyOperations.setValueForProperty(rootNode, 'value', '' + value);\n }\n },\n\n _handleChange: function(event) {\n var returnValue;\n var onChange = LinkedValueUtils.getOnChange(this);\n if (onChange) {\n returnValue = onChange.call(this, event);\n }\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n }\n\n});\n\nmodule.exports = ReactDOMTextarea;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDOMTextarea.js\n ** module id = 356\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDOMTextarea.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultBatchingStrategy\n */\n\n'use strict';\n\nvar ReactUpdates = __webpack_require__(16);\nvar Transaction = __webpack_require__(57);\n\nvar assign = __webpack_require__(4);\nvar emptyFunction = __webpack_require__(23);\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\nassign(\n ReactDefaultBatchingStrategyTransaction.prototype,\n Transaction.Mixin,\n {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n }\n }\n);\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function(callback, a, b, c, d) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n callback(a, b, c, d);\n } else {\n transaction.perform(callback, null, a, b, c, d);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDefaultBatchingStrategy.js\n ** module id = 357\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDefaultBatchingStrategy.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultInjection\n */\n\n'use strict';\n\nvar BeforeInputEventPlugin = __webpack_require__(332);\nvar ChangeEventPlugin = __webpack_require__(333);\nvar ClientReactRootIndex = __webpack_require__(334);\nvar DefaultEventPluginOrder = __webpack_require__(337);\nvar EnterLeaveEventPlugin = __webpack_require__(338);\nvar ExecutionEnvironment = __webpack_require__(9);\nvar HTMLDOMPropertyConfig = __webpack_require__(341);\nvar MobileSafariClickEventPlugin = __webpack_require__(342);\nvar ReactBrowserComponentMixin = __webpack_require__(18);\nvar ReactClass = __webpack_require__(14);\nvar ReactComponentBrowserEnvironment =\n __webpack_require__(76);\nvar ReactDefaultBatchingStrategy = __webpack_require__(357);\nvar ReactDOMComponent = __webpack_require__(79);\nvar ReactDOMButton = __webpack_require__(348);\nvar ReactDOMForm = __webpack_require__(349);\nvar ReactDOMImg = __webpack_require__(351);\nvar ReactDOMIDOperations = __webpack_require__(241);\nvar ReactDOMIframe = __webpack_require__(350);\nvar ReactDOMInput = __webpack_require__(352);\nvar ReactDOMOption = __webpack_require__(353);\nvar ReactDOMSelect = __webpack_require__(354);\nvar ReactDOMTextarea = __webpack_require__(356);\nvar ReactDOMTextComponent = __webpack_require__(242);\nvar ReactElement = __webpack_require__(5);\nvar ReactEventListener = __webpack_require__(361);\nvar ReactInjection = __webpack_require__(362);\nvar ReactInstanceHandles = __webpack_require__(36);\nvar ReactMount = __webpack_require__(20);\nvar ReactReconcileTransaction = __webpack_require__(365);\nvar SelectEventPlugin = __webpack_require__(370);\nvar ServerReactRootIndex = __webpack_require__(371);\nvar SimpleEventPlugin = __webpack_require__(372);\nvar SVGDOMPropertyConfig = __webpack_require__(369);\n\nvar createFullPageComponent = __webpack_require__(385);\n\nfunction autoGenerateWrapperClass(type) {\n return ReactClass.createClass({\n tagName: type.toUpperCase(),\n render: function() {\n return new ReactElement(\n type,\n null,\n null,\n null,\n null,\n this.props\n );\n }\n });\n}\n\nfunction inject() {\n ReactInjection.EventEmitter.injectReactEventListener(\n ReactEventListener\n );\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginHub.injectInstanceHandle(ReactInstanceHandles);\n ReactInjection.EventPluginHub.injectMount(ReactMount);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n MobileSafariClickEventPlugin: MobileSafariClickEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.NativeComponent.injectGenericComponentClass(\n ReactDOMComponent\n );\n\n ReactInjection.NativeComponent.injectTextComponentClass(\n ReactDOMTextComponent\n );\n\n ReactInjection.NativeComponent.injectAutoWrapper(\n autoGenerateWrapperClass\n );\n\n // This needs to happen before createFullPageComponent() otherwise the mixin\n // won't be included.\n ReactInjection.Class.injectMixin(ReactBrowserComponentMixin);\n\n ReactInjection.NativeComponent.injectComponentClasses({\n 'button': ReactDOMButton,\n 'form': ReactDOMForm,\n 'iframe': ReactDOMIframe,\n 'img': ReactDOMImg,\n 'input': ReactDOMInput,\n 'option': ReactDOMOption,\n 'select': ReactDOMSelect,\n 'textarea': ReactDOMTextarea,\n\n 'html': createFullPageComponent('html'),\n 'head': createFullPageComponent('head'),\n 'body': createFullPageComponent('body')\n });\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponent('noscript');\n\n ReactInjection.Updates.injectReconcileTransaction(\n ReactReconcileTransaction\n );\n ReactInjection.Updates.injectBatchingStrategy(\n ReactDefaultBatchingStrategy\n );\n\n ReactInjection.RootIndex.injectCreateReactRootIndex(\n ExecutionEnvironment.canUseDOM ?\n ClientReactRootIndex.createReactRootIndex :\n ServerReactRootIndex.createReactRootIndex\n );\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n ReactInjection.DOMComponent.injectIDOperations(ReactDOMIDOperations);\n\n if (false) {\n var url = (ExecutionEnvironment.canUseDOM && window.location.href) || '';\n if ((/[?&]react_perf\\b/).test(url)) {\n var ReactDefaultPerf = require(\"./ReactDefaultPerf\");\n ReactDefaultPerf.start();\n }\n }\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactDefaultInjection.js\n ** module id = 358\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactDefaultInjection.js?")},function(module,exports){eval('/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactErrorUtils\n * @typechecks\n */\n\n"use strict";\n\nvar ReactErrorUtils = {\n /**\n * Creates a guarded version of a function. This is supposed to make debugging\n * of event handlers easier. To aid debugging with the browser\'s debugger,\n * this currently simply returns the original function.\n *\n * @param {function} func Function to be executed\n * @param {string} name The name of the guard\n * @return {function}\n */\n guard: function(func, name) {\n return func;\n }\n};\n\nmodule.exports = ReactErrorUtils;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactErrorUtils.js\n ** module id = 359\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactErrorUtils.js?')},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventEmitterMixin\n */\n\n'use strict';\n\nvar EventPluginHub = __webpack_require__(43);\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue();\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native environment event.\n */\n handleTopLevel: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events = EventPluginHub.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactEventEmitterMixin.js\n ** module id = 360\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactEventEmitterMixin.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventListener\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventListener = __webpack_require__(339);\nvar ExecutionEnvironment = __webpack_require__(9);\nvar PooledClass = __webpack_require__(17);\nvar ReactInstanceHandles = __webpack_require__(36);\nvar ReactMount = __webpack_require__(20);\nvar ReactUpdates = __webpack_require__(16);\n\nvar assign = __webpack_require__(4);\nvar getEventTarget = __webpack_require__(88);\nvar getUnboundedScrollPosition = __webpack_require__(392);\n\n/**\n * Finds the parent React component of `node`.\n *\n * @param {*} node\n * @return {?DOMEventTarget} Parent container, or `null` if the specified node\n * is not nested.\n */\nfunction findParent(node) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n var nodeID = ReactMount.getID(node);\n var rootID = ReactInstanceHandles.getReactRootIDFromNodeID(nodeID);\n var container = ReactMount.findReactContainerForID(rootID);\n var parent = ReactMount.getFirstReactDOM(container);\n return parent;\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\nassign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function() {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(\n TopLevelCallbackBookKeeping,\n PooledClass.twoArgumentPooler\n);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var topLevelTarget = ReactMount.getFirstReactDOM(\n getEventTarget(bookKeeping.nativeEvent)\n ) || window;\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = topLevelTarget;\n while (ancestor) {\n bookKeeping.ancestors.push(ancestor);\n ancestor = findParent(ancestor);\n }\n\n for (var i = 0, l = bookKeeping.ancestors.length; i < l; i++) {\n topLevelTarget = bookKeeping.ancestors[i];\n var topLevelTargetID = ReactMount.getID(topLevelTarget) || '';\n ReactEventListener._handleTopLevel(\n bookKeeping.topLevelType,\n topLevelTarget,\n topLevelTargetID,\n bookKeeping.nativeEvent\n );\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function(handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function(enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function() {\n return ReactEventListener._enabled;\n },\n\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} handle Element on which to attach listener.\n * @return {object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {\n var element = handle;\n if (!element) {\n return null;\n }\n return EventListener.listen(\n element,\n handlerBaseName,\n ReactEventListener.dispatchEvent.bind(null, topLevelType)\n );\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} handle Element on which to attach listener.\n * @return {object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {\n var element = handle;\n if (!element) {\n return null;\n }\n return EventListener.capture(\n element,\n handlerBaseName,\n ReactEventListener.dispatchEvent.bind(null, topLevelType)\n );\n },\n\n monitorScrollValue: function(refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function(topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(\n topLevelType,\n nativeEvent\n );\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactEventListener.js\n ** module id = 361\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactEventListener.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInjection\n */\n\n'use strict';\n\nvar DOMProperty = __webpack_require__(34);\nvar EventPluginHub = __webpack_require__(43);\nvar ReactComponentEnvironment = __webpack_require__(77);\nvar ReactClass = __webpack_require__(14);\nvar ReactEmptyComponent = __webpack_require__(80);\nvar ReactBrowserEventEmitter = __webpack_require__(35);\nvar ReactNativeComponent = __webpack_require__(54);\nvar ReactDOMComponent = __webpack_require__(79);\nvar ReactPerf = __webpack_require__(28);\nvar ReactRootIndex = __webpack_require__(248);\nvar ReactUpdates = __webpack_require__(16);\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n Class: ReactClass.injection,\n DOMComponent: ReactDOMComponent.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n NativeComponent: ReactNativeComponent.injection,\n Perf: ReactPerf.injection,\n RootIndex: ReactRootIndex.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactInjection.js\n ** module id = 362\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactInjection.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChild\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = __webpack_require__(77);\nvar ReactMultiChildUpdateTypes = __webpack_require__(245);\n\nvar ReactReconciler = __webpack_require__(38);\nvar ReactChildReconciler = __webpack_require__(344);\n\n/**\n * Updating children of a component may trigger recursive updates. The depth is\n * used to batch recursive updates to render markup more efficiently.\n *\n * @type {number}\n * @private\n */\nvar updateDepth = 0;\n\n/**\n * Queue of update configuration objects.\n *\n * Each object has a `type` property that is in `ReactMultiChildUpdateTypes`.\n *\n * @type {array<object>}\n * @private\n */\nvar updateQueue = [];\n\n/**\n * Queue of markup to be rendered.\n *\n * @type {array<string>}\n * @private\n */\nvar markupQueue = [];\n\n/**\n * Enqueues markup to be rendered and inserted at a supplied index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction enqueueMarkup(parentID, markup, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.INSERT_MARKUP,\n markupIndex: markupQueue.push(markup) - 1,\n textContent: null,\n fromIndex: null,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues moving an existing element to another index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction enqueueMove(parentID, fromIndex, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.MOVE_EXISTING,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues removing an element at an index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction enqueueRemove(parentID, fromIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.REMOVE_NODE,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: null\n });\n}\n\n/**\n * Enqueues setting the text content.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction enqueueTextContent(parentID, textContent) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.TEXT_CONTENT,\n markupIndex: null,\n textContent: textContent,\n fromIndex: null,\n toIndex: null\n });\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue() {\n if (updateQueue.length) {\n ReactComponentEnvironment.processChildrenUpdates(\n updateQueue,\n markupQueue\n );\n clearQueue();\n }\n}\n\n/**\n * Clears any enqueued updates.\n *\n * @private\n */\nfunction clearQueue() {\n updateQueue.length = 0;\n markupQueue.length = 0;\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function(nestedChildren, transaction, context) {\n var children = ReactChildReconciler.instantiateChildren(\n nestedChildren, transaction, context\n );\n this._renderedChildren = children;\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n mountImages.push(mountImage);\n index++;\n }\n }\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function(nextContent) {\n updateDepth++;\n var errorThrown = true;\n try {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren);\n // TODO: The setTextContent operation should be enough\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n // Set new text content.\n this.setTextContent(nextContent);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n }\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function(nextNestedChildren, transaction, context) {\n updateDepth++;\n var errorThrown = true;\n try {\n this._updateChildren(nextNestedChildren, transaction, context);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n\n }\n },\n\n /**\n * Improve performance by isolating this hot code path from the try/catch\n * block in `updateChildren`.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function(nextNestedChildren, transaction, context) {\n var prevChildren = this._renderedChildren;\n var nextChildren = ReactChildReconciler.updateChildren(\n prevChildren, nextNestedChildren, transaction, context\n );\n this._renderedChildren = nextChildren;\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var lastIndex = 0;\n var nextIndex = 0;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n this.moveChild(prevChild, nextIndex, lastIndex);\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n this._unmountChildByName(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n this._mountChildByNameAtIndex(\n nextChild, name, nextIndex, transaction, context\n );\n }\n nextIndex++;\n }\n // Remove children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @internal\n */\n unmountChildren: function() {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function(child, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n enqueueMove(this._rootNodeID, child._mountIndex, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function(child, mountImage) {\n enqueueMarkup(this._rootNodeID, mountImage, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function(child) {\n enqueueRemove(this._rootNodeID, child._mountIndex);\n },\n\n /**\n * Sets this text content string.\n *\n * @param {string} textContent Text content to set.\n * @protected\n */\n setTextContent: function(textContent) {\n enqueueTextContent(this._rootNodeID, textContent);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildByNameAtIndex: function(\n child,\n name,\n index,\n transaction,\n context) {\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n this.createChild(child, mountImage);\n },\n\n /**\n * Unmounts a rendered child by name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @param {string} name Name of the child in `this._renderedChildren`.\n * @private\n */\n _unmountChildByName: function(child, name) {\n this.removeChild(child);\n child._mountIndex = null;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactMultiChild.js\n ** module id = 363\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactMultiChild.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactOwner\n */\n\n'use strict';\n\nvar invariant = __webpack_require__(3);\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n\n /**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\n isValidOwner: function(object) {\n return !!(\n (object &&\n typeof object.attachRef === 'function' && typeof object.detachRef === 'function')\n );\n },\n\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function(component, ref, owner) {\n ( false ? invariant(\n ReactOwner.isValidOwner(owner),\n 'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to add a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n ) : invariant(ReactOwner.isValidOwner(owner)));\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function(component, ref, owner) {\n ( false ? invariant(\n ReactOwner.isValidOwner(owner),\n 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to remove a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n ) : invariant(ReactOwner.isValidOwner(owner)));\n // Check that `component` is still the current ref because we do not want to\n // detach the ref if another component stole it.\n if (owner.getPublicInstance().refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactOwner.js\n ** module id = 364\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactOwner.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconcileTransaction\n * @typechecks static-only\n */\n\n'use strict';\n\nvar CallbackQueue = __webpack_require__(72);\nvar PooledClass = __webpack_require__(17);\nvar ReactBrowserEventEmitter = __webpack_require__(35);\nvar ReactInputSelection = __webpack_require__(243);\nvar ReactPutListenerQueue = __webpack_require__(247);\nvar Transaction = __webpack_require__(57);\n\nvar assign = __webpack_require__(4);\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function() {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occured. `close`\n * restores the previous value.\n */\n close: function(previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function() {\n this.reactMountReady.notifyAll();\n }\n};\n\nvar PUT_LISTENER_QUEUEING = {\n initialize: function() {\n this.putListenerQueue.reset();\n },\n\n close: function() {\n this.putListenerQueue.putListeners();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [\n PUT_LISTENER_QUEUEING,\n SELECTION_RESTORATION,\n EVENT_SUPPRESSION,\n ON_DOM_READY_QUEUEING\n];\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction() {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.putListenerQueue = ReactPutListenerQueue.getPooled();\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap proceedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function() {\n return this.reactMountReady;\n },\n\n getPutListenerQueue: function() {\n return this.putListenerQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be resused.\n */\n destructor: function() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n\n ReactPutListenerQueue.release(this.putListenerQueue);\n this.putListenerQueue = null;\n }\n};\n\n\nassign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactReconcileTransaction.js\n ** module id = 365\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactReconcileTransaction.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRef\n */\n\n'use strict';\n\nvar ReactOwner = __webpack_require__(364);\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function(prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n return (\n nextElement._owner !== prevElement._owner ||\n nextElement.ref !== prevElement.ref\n );\n};\n\nReactRef.detachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactRef.js\n ** module id = 366\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactRef.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule ReactServerRendering\n */\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\nvar ReactInstanceHandles = __webpack_require__(36);\nvar ReactMarkupChecksum = __webpack_require__(244);\nvar ReactServerRenderingTransaction =\n __webpack_require__(368);\n\nvar emptyObject = __webpack_require__(58);\nvar instantiateReactComponent = __webpack_require__(89);\nvar invariant = __webpack_require__(3);\n\n/**\n * @param {ReactElement} element\n * @return {string} the HTML markup\n */\nfunction renderToString(element) {\n ( false ? invariant(\n ReactElement.isValidElement(element),\n 'renderToString(): You must pass a valid ReactElement.'\n ) : invariant(ReactElement.isValidElement(element)));\n\n var transaction;\n try {\n var id = ReactInstanceHandles.createReactRootID();\n transaction = ReactServerRenderingTransaction.getPooled(false);\n\n return transaction.perform(function() {\n var componentInstance = instantiateReactComponent(element, null);\n var markup =\n componentInstance.mountComponent(id, transaction, emptyObject);\n return ReactMarkupChecksum.addChecksumToMarkup(markup);\n }, null);\n } finally {\n ReactServerRenderingTransaction.release(transaction);\n }\n}\n\n/**\n * @param {ReactElement} element\n * @return {string} the HTML markup, without the extra React ID and checksum\n * (for generating static pages)\n */\nfunction renderToStaticMarkup(element) {\n ( false ? invariant(\n ReactElement.isValidElement(element),\n 'renderToStaticMarkup(): You must pass a valid ReactElement.'\n ) : invariant(ReactElement.isValidElement(element)));\n\n var transaction;\n try {\n var id = ReactInstanceHandles.createReactRootID();\n transaction = ReactServerRenderingTransaction.getPooled(true);\n\n return transaction.perform(function() {\n var componentInstance = instantiateReactComponent(element, null);\n return componentInstance.mountComponent(id, transaction, emptyObject);\n }, null);\n } finally {\n ReactServerRenderingTransaction.release(transaction);\n }\n}\n\nmodule.exports = {\n renderToString: renderToString,\n renderToStaticMarkup: renderToStaticMarkup\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactServerRendering.js\n ** module id = 367\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactServerRendering.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactServerRenderingTransaction\n * @typechecks\n */\n\n'use strict';\n\nvar PooledClass = __webpack_require__(17);\nvar CallbackQueue = __webpack_require__(72);\nvar ReactPutListenerQueue = __webpack_require__(247);\nvar Transaction = __webpack_require__(57);\n\nvar assign = __webpack_require__(4);\nvar emptyFunction = __webpack_require__(23);\n\n/**\n * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks\n * during the performing of the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function() {\n this.reactMountReady.reset();\n },\n\n close: emptyFunction\n};\n\nvar PUT_LISTENER_QUEUEING = {\n initialize: function() {\n this.putListenerQueue.reset();\n },\n\n close: emptyFunction\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [\n PUT_LISTENER_QUEUEING,\n ON_DOM_READY_QUEUEING\n];\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.putListenerQueue = ReactPutListenerQueue.getPooled();\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap proceedures.\n */\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function() {\n return this.reactMountReady;\n },\n\n getPutListenerQueue: function() {\n return this.putListenerQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be resused.\n */\n destructor: function() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n\n ReactPutListenerQueue.release(this.putListenerQueue);\n this.putListenerQueue = null;\n }\n};\n\n\nassign(\n ReactServerRenderingTransaction.prototype,\n Transaction.Mixin,\n Mixin\n);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ReactServerRenderingTransaction.js\n ** module id = 368\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ReactServerRenderingTransaction.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SVGDOMPropertyConfig\n */\n\n/*jslint bitwise: true*/\n\n'use strict';\n\nvar DOMProperty = __webpack_require__(34);\n\nvar MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;\n\nvar SVGDOMPropertyConfig = {\n Properties: {\n clipPath: MUST_USE_ATTRIBUTE,\n cx: MUST_USE_ATTRIBUTE,\n cy: MUST_USE_ATTRIBUTE,\n d: MUST_USE_ATTRIBUTE,\n dx: MUST_USE_ATTRIBUTE,\n dy: MUST_USE_ATTRIBUTE,\n fill: MUST_USE_ATTRIBUTE,\n fillOpacity: MUST_USE_ATTRIBUTE,\n fontFamily: MUST_USE_ATTRIBUTE,\n fontSize: MUST_USE_ATTRIBUTE,\n fx: MUST_USE_ATTRIBUTE,\n fy: MUST_USE_ATTRIBUTE,\n gradientTransform: MUST_USE_ATTRIBUTE,\n gradientUnits: MUST_USE_ATTRIBUTE,\n markerEnd: MUST_USE_ATTRIBUTE,\n markerMid: MUST_USE_ATTRIBUTE,\n markerStart: MUST_USE_ATTRIBUTE,\n offset: MUST_USE_ATTRIBUTE,\n opacity: MUST_USE_ATTRIBUTE,\n patternContentUnits: MUST_USE_ATTRIBUTE,\n patternUnits: MUST_USE_ATTRIBUTE,\n points: MUST_USE_ATTRIBUTE,\n preserveAspectRatio: MUST_USE_ATTRIBUTE,\n r: MUST_USE_ATTRIBUTE,\n rx: MUST_USE_ATTRIBUTE,\n ry: MUST_USE_ATTRIBUTE,\n spreadMethod: MUST_USE_ATTRIBUTE,\n stopColor: MUST_USE_ATTRIBUTE,\n stopOpacity: MUST_USE_ATTRIBUTE,\n stroke: MUST_USE_ATTRIBUTE,\n strokeDasharray: MUST_USE_ATTRIBUTE,\n strokeLinecap: MUST_USE_ATTRIBUTE,\n strokeOpacity: MUST_USE_ATTRIBUTE,\n strokeWidth: MUST_USE_ATTRIBUTE,\n textAnchor: MUST_USE_ATTRIBUTE,\n transform: MUST_USE_ATTRIBUTE,\n version: MUST_USE_ATTRIBUTE,\n viewBox: MUST_USE_ATTRIBUTE,\n x1: MUST_USE_ATTRIBUTE,\n x2: MUST_USE_ATTRIBUTE,\n x: MUST_USE_ATTRIBUTE,\n y1: MUST_USE_ATTRIBUTE,\n y2: MUST_USE_ATTRIBUTE,\n y: MUST_USE_ATTRIBUTE\n },\n DOMAttributeNames: {\n clipPath: 'clip-path',\n fillOpacity: 'fill-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n patternContentUnits: 'patternContentUnits',\n patternUnits: 'patternUnits',\n preserveAspectRatio: 'preserveAspectRatio',\n spreadMethod: 'spreadMethod',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strokeDasharray: 'stroke-dasharray',\n strokeLinecap: 'stroke-linecap',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n textAnchor: 'text-anchor',\n viewBox: 'viewBox'\n }\n};\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SVGDOMPropertyConfig.js\n ** module id = 369\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SVGDOMPropertyConfig.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SelectEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPropagators = __webpack_require__(44);\nvar ReactInputSelection = __webpack_require__(243);\nvar SyntheticEvent = __webpack_require__(29);\n\nvar getActiveElement = __webpack_require__(253);\nvar isTextInputElement = __webpack_require__(258);\nvar keyOf = __webpack_require__(24);\nvar shallowEqual = __webpack_require__(401);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: keyOf({onSelect: null}),\n captured: keyOf({onSelectCapture: null})\n },\n dependencies: [\n topLevelTypes.topBlur,\n topLevelTypes.topContextMenu,\n topLevelTypes.topFocus,\n topLevelTypes.topKeyDown,\n topLevelTypes.topMouseDown,\n topLevelTypes.topMouseUp,\n topLevelTypes.topSelectionChange\n ]\n }\n};\n\nvar activeElement = null;\nvar activeElementID = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @param {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node &&\n ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown ||\n activeElement == null ||\n activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(\n eventTypes.select,\n activeElementID,\n nativeEvent\n );\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case topLevelTypes.topFocus:\n if (isTextInputElement(topLevelTarget) ||\n topLevelTarget.contentEditable === 'true') {\n activeElement = topLevelTarget;\n activeElementID = topLevelTargetID;\n lastSelection = null;\n }\n break;\n case topLevelTypes.topBlur:\n activeElement = null;\n activeElementID = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case topLevelTypes.topMouseDown:\n mouseDown = true;\n break;\n case topLevelTypes.topContextMenu:\n case topLevelTypes.topMouseUp:\n mouseDown = false;\n return constructSelectEvent(nativeEvent);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't).\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n case topLevelTypes.topSelectionChange:\n case topLevelTypes.topKeyDown:\n case topLevelTypes.topKeyUp:\n return constructSelectEvent(nativeEvent);\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SelectEventPlugin.js\n ** module id = 370\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SelectEventPlugin.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ServerReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Size of the reactRoot ID space. We generate random numbers for React root\n * IDs and if there's a collision the events and DOM update system will\n * get confused. In the future we need a way to generate GUIDs but for\n * now this will work on a smaller scale.\n */\nvar GLOBAL_MOUNT_POINT_MAX = Math.pow(2, 53);\n\nvar ServerReactRootIndex = {\n createReactRootIndex: function() {\n return Math.ceil(Math.random() * GLOBAL_MOUNT_POINT_MAX);\n }\n};\n\nmodule.exports = ServerReactRootIndex;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/ServerReactRootIndex.js\n ** module id = 371\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/ServerReactRootIndex.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SimpleEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = __webpack_require__(13);\nvar EventPluginUtils = __webpack_require__(73);\nvar EventPropagators = __webpack_require__(44);\nvar SyntheticClipboardEvent = __webpack_require__(373);\nvar SyntheticEvent = __webpack_require__(29);\nvar SyntheticFocusEvent = __webpack_require__(376);\nvar SyntheticKeyboardEvent = __webpack_require__(378);\nvar SyntheticMouseEvent = __webpack_require__(56);\nvar SyntheticDragEvent = __webpack_require__(375);\nvar SyntheticTouchEvent = __webpack_require__(379);\nvar SyntheticUIEvent = __webpack_require__(46);\nvar SyntheticWheelEvent = __webpack_require__(380);\n\nvar getEventCharCode = __webpack_require__(86);\n\nvar invariant = __webpack_require__(3);\nvar keyOf = __webpack_require__(24);\nvar warning = __webpack_require__(6);\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nvar eventTypes = {\n blur: {\n phasedRegistrationNames: {\n bubbled: keyOf({onBlur: true}),\n captured: keyOf({onBlurCapture: true})\n }\n },\n click: {\n phasedRegistrationNames: {\n bubbled: keyOf({onClick: true}),\n captured: keyOf({onClickCapture: true})\n }\n },\n contextMenu: {\n phasedRegistrationNames: {\n bubbled: keyOf({onContextMenu: true}),\n captured: keyOf({onContextMenuCapture: true})\n }\n },\n copy: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCopy: true}),\n captured: keyOf({onCopyCapture: true})\n }\n },\n cut: {\n phasedRegistrationNames: {\n bubbled: keyOf({onCut: true}),\n captured: keyOf({onCutCapture: true})\n }\n },\n doubleClick: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDoubleClick: true}),\n captured: keyOf({onDoubleClickCapture: true})\n }\n },\n drag: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDrag: true}),\n captured: keyOf({onDragCapture: true})\n }\n },\n dragEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragEnd: true}),\n captured: keyOf({onDragEndCapture: true})\n }\n },\n dragEnter: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragEnter: true}),\n captured: keyOf({onDragEnterCapture: true})\n }\n },\n dragExit: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragExit: true}),\n captured: keyOf({onDragExitCapture: true})\n }\n },\n dragLeave: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragLeave: true}),\n captured: keyOf({onDragLeaveCapture: true})\n }\n },\n dragOver: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragOver: true}),\n captured: keyOf({onDragOverCapture: true})\n }\n },\n dragStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDragStart: true}),\n captured: keyOf({onDragStartCapture: true})\n }\n },\n drop: {\n phasedRegistrationNames: {\n bubbled: keyOf({onDrop: true}),\n captured: keyOf({onDropCapture: true})\n }\n },\n focus: {\n phasedRegistrationNames: {\n bubbled: keyOf({onFocus: true}),\n captured: keyOf({onFocusCapture: true})\n }\n },\n input: {\n phasedRegistrationNames: {\n bubbled: keyOf({onInput: true}),\n captured: keyOf({onInputCapture: true})\n }\n },\n keyDown: {\n phasedRegistrationNames: {\n bubbled: keyOf({onKeyDown: true}),\n captured: keyOf({onKeyDownCapture: true})\n }\n },\n keyPress: {\n phasedRegistrationNames: {\n bubbled: keyOf({onKeyPress: true}),\n captured: keyOf({onKeyPressCapture: true})\n }\n },\n keyUp: {\n phasedRegistrationNames: {\n bubbled: keyOf({onKeyUp: true}),\n captured: keyOf({onKeyUpCapture: true})\n }\n },\n load: {\n phasedRegistrationNames: {\n bubbled: keyOf({onLoad: true}),\n captured: keyOf({onLoadCapture: true})\n }\n },\n error: {\n phasedRegistrationNames: {\n bubbled: keyOf({onError: true}),\n captured: keyOf({onErrorCapture: true})\n }\n },\n // Note: We do not allow listening to mouseOver events. Instead, use the\n // onMouseEnter/onMouseLeave created by `EnterLeaveEventPlugin`.\n mouseDown: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMouseDown: true}),\n captured: keyOf({onMouseDownCapture: true})\n }\n },\n mouseMove: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMouseMove: true}),\n captured: keyOf({onMouseMoveCapture: true})\n }\n },\n mouseOut: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMouseOut: true}),\n captured: keyOf({onMouseOutCapture: true})\n }\n },\n mouseOver: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMouseOver: true}),\n captured: keyOf({onMouseOverCapture: true})\n }\n },\n mouseUp: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMouseUp: true}),\n captured: keyOf({onMouseUpCapture: true})\n }\n },\n paste: {\n phasedRegistrationNames: {\n bubbled: keyOf({onPaste: true}),\n captured: keyOf({onPasteCapture: true})\n }\n },\n reset: {\n phasedRegistrationNames: {\n bubbled: keyOf({onReset: true}),\n captured: keyOf({onResetCapture: true})\n }\n },\n scroll: {\n phasedRegistrationNames: {\n bubbled: keyOf({onScroll: true}),\n captured: keyOf({onScrollCapture: true})\n }\n },\n submit: {\n phasedRegistrationNames: {\n bubbled: keyOf({onSubmit: true}),\n captured: keyOf({onSubmitCapture: true})\n }\n },\n touchCancel: {\n phasedRegistrationNames: {\n bubbled: keyOf({onTouchCancel: true}),\n captured: keyOf({onTouchCancelCapture: true})\n }\n },\n touchEnd: {\n phasedRegistrationNames: {\n bubbled: keyOf({onTouchEnd: true}),\n captured: keyOf({onTouchEndCapture: true})\n }\n },\n touchMove: {\n phasedRegistrationNames: {\n bubbled: keyOf({onTouchMove: true}),\n captured: keyOf({onTouchMoveCapture: true})\n }\n },\n touchStart: {\n phasedRegistrationNames: {\n bubbled: keyOf({onTouchStart: true}),\n captured: keyOf({onTouchStartCapture: true})\n }\n },\n wheel: {\n phasedRegistrationNames: {\n bubbled: keyOf({onWheel: true}),\n captured: keyOf({onWheelCapture: true})\n }\n }\n};\n\nvar topLevelEventsToDispatchConfig = {\n topBlur: eventTypes.blur,\n topClick: eventTypes.click,\n topContextMenu: eventTypes.contextMenu,\n topCopy: eventTypes.copy,\n topCut: eventTypes.cut,\n topDoubleClick: eventTypes.doubleClick,\n topDrag: eventTypes.drag,\n topDragEnd: eventTypes.dragEnd,\n topDragEnter: eventTypes.dragEnter,\n topDragExit: eventTypes.dragExit,\n topDragLeave: eventTypes.dragLeave,\n topDragOver: eventTypes.dragOver,\n topDragStart: eventTypes.dragStart,\n topDrop: eventTypes.drop,\n topError: eventTypes.error,\n topFocus: eventTypes.focus,\n topInput: eventTypes.input,\n topKeyDown: eventTypes.keyDown,\n topKeyPress: eventTypes.keyPress,\n topKeyUp: eventTypes.keyUp,\n topLoad: eventTypes.load,\n topMouseDown: eventTypes.mouseDown,\n topMouseMove: eventTypes.mouseMove,\n topMouseOut: eventTypes.mouseOut,\n topMouseOver: eventTypes.mouseOver,\n topMouseUp: eventTypes.mouseUp,\n topPaste: eventTypes.paste,\n topReset: eventTypes.reset,\n topScroll: eventTypes.scroll,\n topSubmit: eventTypes.submit,\n topTouchCancel: eventTypes.touchCancel,\n topTouchEnd: eventTypes.touchEnd,\n topTouchMove: eventTypes.touchMove,\n topTouchStart: eventTypes.touchStart,\n topWheel: eventTypes.wheel\n};\n\nfor (var type in topLevelEventsToDispatchConfig) {\n topLevelEventsToDispatchConfig[type].dependencies = [type];\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * Same as the default implementation, except cancels the event when return\n * value is false. This behavior will be disabled in a future release.\n *\n * @param {object} Event to be dispatched.\n * @param {function} Application-level callback.\n * @param {string} domID DOM ID to pass to the callback.\n */\n executeDispatch: function(event, listener, domID) {\n var returnValue = EventPluginUtils.executeDispatch(event, listener, domID);\n\n ( false ? warning(\n typeof returnValue !== 'boolean',\n 'Returning `false` from an event handler is deprecated and will be ' +\n 'ignored in a future release. Instead, manually call ' +\n 'e.stopPropagation() or e.preventDefault(), as appropriate.'\n ) : null);\n\n if (returnValue === false) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case topLevelTypes.topInput:\n case topLevelTypes.topLoad:\n case topLevelTypes.topError:\n case topLevelTypes.topReset:\n case topLevelTypes.topSubmit:\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case topLevelTypes.topKeyPress:\n // FireFox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case topLevelTypes.topKeyDown:\n case topLevelTypes.topKeyUp:\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case topLevelTypes.topBlur:\n case topLevelTypes.topFocus:\n EventConstructor = SyntheticFocusEvent;\n break;\n case topLevelTypes.topClick:\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case topLevelTypes.topContextMenu:\n case topLevelTypes.topDoubleClick:\n case topLevelTypes.topMouseDown:\n case topLevelTypes.topMouseMove:\n case topLevelTypes.topMouseOut:\n case topLevelTypes.topMouseOver:\n case topLevelTypes.topMouseUp:\n EventConstructor = SyntheticMouseEvent;\n break;\n case topLevelTypes.topDrag:\n case topLevelTypes.topDragEnd:\n case topLevelTypes.topDragEnter:\n case topLevelTypes.topDragExit:\n case topLevelTypes.topDragLeave:\n case topLevelTypes.topDragOver:\n case topLevelTypes.topDragStart:\n case topLevelTypes.topDrop:\n EventConstructor = SyntheticDragEvent;\n break;\n case topLevelTypes.topTouchCancel:\n case topLevelTypes.topTouchEnd:\n case topLevelTypes.topTouchMove:\n case topLevelTypes.topTouchStart:\n EventConstructor = SyntheticTouchEvent;\n break;\n case topLevelTypes.topScroll:\n EventConstructor = SyntheticUIEvent;\n break;\n case topLevelTypes.topWheel:\n EventConstructor = SyntheticWheelEvent;\n break;\n case topLevelTypes.topCopy:\n case topLevelTypes.topCut:\n case topLevelTypes.topPaste:\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n ( false ? invariant(\n EventConstructor,\n 'SimpleEventPlugin: Unhandled event type, `%s`.',\n topLevelType\n ) : invariant(EventConstructor));\n var event = EventConstructor.getPooled(\n dispatchConfig,\n topLevelTargetID,\n nativeEvent\n );\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SimpleEventPlugin.js\n ** module id = 372\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SimpleEventPlugin.js?"); },function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticClipboardEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticEvent = __webpack_require__(29);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function(event) {\n return (\n 'clipboardData' in event ?\n event.clipboardData :\n window.clipboardData\n );\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticClipboardEvent.js\n ** module id = 373\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticClipboardEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticCompositionEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticEvent = __webpack_require__(29);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(\n dispatchConfig,\n dispatchMarker,\n nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(\n SyntheticCompositionEvent,\n CompositionEventInterface\n);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticCompositionEvent.js\n ** module id = 374\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticCompositionEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticDragEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = __webpack_require__(56);\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticDragEvent.js\n ** module id = 375\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticDragEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticFocusEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticUIEvent = __webpack_require__(46);\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticFocusEvent.js\n ** module id = 376\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticFocusEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticInputEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticEvent = __webpack_require__(29);\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(\n dispatchConfig,\n dispatchMarker,\n nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(\n SyntheticInputEvent,\n InputEventInterface\n);\n\nmodule.exports = SyntheticInputEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticInputEvent.js\n ** module id = 377\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticInputEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticKeyboardEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticUIEvent = __webpack_require__(46);\n\nvar getEventCharCode = __webpack_require__(86);\nvar getEventKey = __webpack_require__(389);\nvar getEventModifierState = __webpack_require__(87);\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function(event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function(event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function(event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticKeyboardEvent.js\n ** module id = 378\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticKeyboardEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticTouchEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticUIEvent = __webpack_require__(46);\n\nvar getEventModifierState = __webpack_require__(87);\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticTouchEvent.js\n ** module id = 379\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticTouchEvent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticWheelEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = __webpack_require__(56);\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function(event) {\n return (\n 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0\n );\n },\n deltaY: function(event) {\n return (\n 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0\n );\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/SyntheticWheelEvent.js\n ** module id = 380\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/SyntheticWheelEvent.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule adler32\n */\n\n/* jslint bitwise:true */\n\n'use strict';\n\nvar MOD = 65521;\n\n// This is a clean-room implementation of adler32 designed for detecting\n// if markup is not what we expect it to be. It does not need to be\n// cryptographically strong, only reasonably good at detecting if markup\n// generated on the server is different than that on the client.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n for (var i = 0; i < data.length; i++) {\n a = (a + data.charCodeAt(i)) % MOD;\n b = (b + a) % MOD;\n }\n return a | (b << 16);\n}\n\nmodule.exports = adler32;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/adler32.js\n ** module id = 381\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/adler32.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule camelize\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function(_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/camelize.js\n ** module id = 382\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/camelize.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule camelizeStyleName\n * @typechecks\n */\n\n\"use strict\";\n\nvar camelize = __webpack_require__(382);\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/camelizeStyleName.js\n ** module id = 383\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/camelizeStyleName.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createArrayFromMixed\n * @typechecks\n */\n\nvar toArray = __webpack_require__(402);\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj &&\n // arrays are objects, NodeLists are functions in Safari\n (typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n ('length' in obj) &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n (typeof obj.nodeType != 'number') &&\n (\n // a real array\n (// HTMLCollection/NodeList\n (Array.isArray(obj) ||\n // arguments\n ('callee' in obj) || 'item' in obj))\n )\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/createArrayFromMixed.js\n ** module id = 384\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/createArrayFromMixed.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createFullPageComponent\n * @typechecks\n */\n\n'use strict';\n\n// Defeat circular references by requiring this directly.\nvar ReactClass = __webpack_require__(14);\nvar ReactElement = __webpack_require__(5);\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Create a component that will throw an exception when unmounted.\n *\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n *\n * @param {string} tag The tag to wrap\n * @return {function} convenience constructor of new component\n */\nfunction createFullPageComponent(tag) {\n var elementFactory = ReactElement.createFactory(tag);\n\n var FullPageComponent = ReactClass.createClass({\n tagName: tag.toUpperCase(),\n displayName: 'ReactFullPageComponent' + tag,\n\n componentWillUnmount: function() {\n ( false ? invariant(\n false,\n '%s tried to unmount. Because of cross-browser quirks it is ' +\n 'impossible to unmount some top-level components (eg <html>, <head>, ' +\n 'and <body>) reliably and efficiently. To fix this, have a single ' +\n 'top-level component that never unmounts render these elements.',\n this.constructor.displayName\n ) : invariant(false));\n },\n\n render: function() {\n return elementFactory(this.props);\n }\n });\n\n return FullPageComponent;\n}\n\nmodule.exports = createFullPageComponent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/createFullPageComponent.js\n ** module id = 385\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/createFullPageComponent.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createNodesFromMarkup\n * @typechecks\n */\n\n/*jslint evil: true, sub: true */\n\nvar ExecutionEnvironment = __webpack_require__(9);\n\nvar createArrayFromMixed = __webpack_require__(384);\nvar getMarkupWrap = __webpack_require__(255);\nvar invariant = __webpack_require__(3);\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode =\n ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n ( false ? invariant(!!dummyNode, 'createNodesFromMarkup dummy not initialized') : invariant(!!dummyNode));\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n ( false ? invariant(\n handleScript,\n 'createNodesFromMarkup(...): Unexpected <script> element rendered.'\n ) : invariant(handleScript));\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = createArrayFromMixed(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/createNodesFromMarkup.js\n ** module id = 386\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/createNodesFromMarkup.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule dangerousStyleValue\n * @typechecks static-only\n */\n\n'use strict';\n\nvar CSSProperty = __webpack_require__(237);\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 ||\n isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/dangerousStyleValue.js\n ** module id = 387\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/dangerousStyleValue.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenChildren\n */\n\n'use strict';\n\nvar traverseAllChildren = __webpack_require__(259);\nvar warning = __webpack_require__(6);\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name) {\n // We found a component instance.\n var result = traverseContext;\n var keyUnique = !result.hasOwnProperty(name);\n if (false) {\n (\"production\" !== process.env.NODE_ENV ? warning(\n keyUnique,\n 'flattenChildren(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n ) : null);\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children) {\n if (children == null) {\n return children;\n }\n var result = {};\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/flattenChildren.js\n ** module id = 388\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/flattenChildren.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventKey\n * @typechecks static-only\n */\n\n'use strict';\n\nvar getEventCharCode = __webpack_require__(86);\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getEventKey.js\n ** module id = 389\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getEventKey.js?"); },function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getNodeForCharacterOffset\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getNodeForCharacterOffset.js\n ** module id = 390\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getNodeForCharacterOffset.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getReactRootElementInContainer\n */\n\n'use strict';\n\nvar DOC_NODE_TYPE = 9;\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nmodule.exports = getReactRootElementInContainer;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getReactRootElementInContainer.js\n ** module id = 391\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getReactRootElementInContainer.js?")},function(module,exports){eval('/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getUnboundedScrollPosition\n * @typechecks\n */\n\n"use strict";\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable === window) {\n return {\n x: window.pageXOffset || document.documentElement.scrollLeft,\n y: window.pageYOffset || document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/getUnboundedScrollPosition.js\n ** module id = 392\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/getUnboundedScrollPosition.js?')},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule hyphenate\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/hyphenate.js\n ** module id = 393\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/hyphenate.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule hyphenateStyleName\n * @typechecks\n */\n\n\"use strict\";\n\nvar hyphenate = __webpack_require__(393);\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/hyphenateStyleName.js\n ** module id = 394\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/hyphenateStyleName.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isTextNode\n * @typechecks\n */\n\nvar isNode = __webpack_require__(257);\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/isTextNode.js\n ** module id = 395\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/isTextNode.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule mapObject\n */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n var result = {};\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n return result;\n}\n\nmodule.exports = mapObject;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/mapObject.js\n ** module id = 396\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/mapObject.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule memoizeStringOnly\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n *\n * @param {function} callback\n * @return {function}\n */\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function(string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/memoizeStringOnly.js\n ** module id = 397\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/memoizeStringOnly.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule onlyChild\n */\n'use strict';\n\nvar ReactElement = __webpack_require__(5);\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection. The current implementation of this\n * function assumes that a single child gets passed without a wrapper, but the\n * purpose of this helper function is to abstract away the particular structure\n * of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactComponent} The first and only `ReactComponent` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n ( false ? invariant(\n ReactElement.isValidElement(children),\n 'onlyChild must be passed a children with exactly one child.'\n ) : invariant(ReactElement.isValidElement(children)));\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/onlyChild.js\n ** module id = 398\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/onlyChild.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule quoteAttributeValueForBrowser\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = __webpack_require__(59);\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/quoteAttributeValueForBrowser.js\n ** module id = 399\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/quoteAttributeValueForBrowser.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setTextContent\n */\n\n'use strict';\n\nvar ExecutionEnvironment = __webpack_require__(9);\nvar escapeTextContentForBrowser = __webpack_require__(59);\nvar setInnerHTML = __webpack_require__(91);\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function(node, text) {\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function(node, text) {\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/setTextContent.js\n ** module id = 400\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/setTextContent.js?")},function(module,exports){eval("/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n */\n\n'use strict';\n\n/**\n * Performs equality by iterating through keys on an object and returning\n * false when any key has values which are not strictly equal between\n * objA and objB. Returns true when the values of all keys are strictly equal.\n *\n * @return {boolean}\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var key;\n // Test for A's keys different from B.\n for (key in objA) {\n if (objA.hasOwnProperty(key) &&\n (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n return false;\n }\n }\n // Test for B's keys missing from A.\n for (key in objB) {\n if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/shallowEqual.js\n ** module id = 401\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/shallowEqual.js?")},function(module,exports,__webpack_require__){eval("/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule toArray\n * @typechecks\n */\n\nvar invariant = __webpack_require__(3);\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browse builtin objects can report typeof 'function' (e.g. NodeList in\n // old versions of Safari).\n ( false ? invariant(\n !Array.isArray(obj) &&\n (typeof obj === 'object' || typeof obj === 'function'),\n 'toArray: Array-like object expected'\n ) : invariant(!Array.isArray(obj) &&\n (typeof obj === 'object' || typeof obj === 'function')));\n\n ( false ? invariant(\n typeof length === 'number',\n 'toArray: Object needs a length property'\n ) : invariant(typeof length === 'number'));\n\n ( false ? invariant(\n length === 0 ||\n (length - 1) in obj,\n 'toArray: Object should have keys for indices'\n ) : invariant(length === 0 ||\n (length - 1) in obj));\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\nmodule.exports = toArray;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/react/lib/toArray.js\n ** module id = 402\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/react/lib/toArray.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!function(root, factory) {\n true ? // AMD. Register as an anonymous module unless amdModuleId is set\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n return root.svg4everybody = factory();\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : "object" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory() : root.svg4everybody = factory();\n}(this, function() {\n /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */\n function embed(parent, svg, target) {\n // if the target exists\n if (target) {\n // create a document fragment to hold the contents of the target\n var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");\n // conditionally set the viewBox on the svg\n viewBox && svg.setAttribute("viewBox", viewBox);\n // copy the contents of the clone into the fragment\n for (// clone the target\n var clone = target.cloneNode(!0); clone.childNodes.length; ) {\n fragment.appendChild(clone.firstChild);\n }\n // append the fragment into the svg\n parent.appendChild(fragment);\n }\n }\n function loadreadystatechange(xhr) {\n // listen to changes in the request\n xhr.onreadystatechange = function() {\n // if the request is ready\n if (4 === xhr.readyState) {\n // get the cached html document\n var cachedDocument = xhr._cachedDocument;\n // ensure the cached html document based on the xhr response\n cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""), \n cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item\n xhr._embeds.splice(0).map(function(item) {\n // get the cached target\n var target = xhr._cachedTarget[item.id];\n // ensure the cached target\n target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)), \n // embed the target into the svg\n embed(item.parent, item.svg, target);\n });\n }\n }, // test the ready state change immediately\n xhr.onreadystatechange();\n }\n function svg4everybody(rawopts) {\n function oninterval() {\n // while the index exists in the live <use> collection\n for (// get the cached <use> index\n var index = 0; index < uses.length; ) {\n // get the current <use>\n var use = uses[index], parent = use.parentNode, svg = getSVGAncestor(parent), src = use.getAttribute("xlink:href") || use.getAttribute("href");\n if (!src && opts.attributeName && (src = use.getAttribute(opts.attributeName)), \n svg && src) {\n if (polyfill) {\n if (!opts.validate || opts.validate(src, svg, use)) {\n // remove the <use> element\n parent.removeChild(use);\n // parse the src and get the url and id\n var srcSplit = src.split("#"), url = srcSplit.shift(), id = srcSplit.join("#");\n // if the link is external\n if (url.length) {\n // get the cached xhr request\n var xhr = requests[url];\n // ensure the xhr request exists\n xhr || (xhr = requests[url] = new XMLHttpRequest(), xhr.open("GET", url), xhr.send(), \n xhr._embeds = []), // add the svg and id as an item to the xhr embeds list\n xhr._embeds.push({\n parent: parent,\n svg: svg,\n id: id\n }), // prepare the xhr ready state change event\n loadreadystatechange(xhr);\n } else {\n // embed the local id into the svg\n embed(parent, svg, document.getElementById(id));\n }\n } else {\n // increase the index when the previous value was not "valid"\n ++index, ++numberOfSvgUseElementsToBypass;\n }\n }\n } else {\n // increase the index when the previous value was not "valid"\n ++index;\n }\n }\n // continue the interval\n (!uses.length || uses.length - numberOfSvgUseElementsToBypass > 0) && requestAnimationFrame(oninterval, 67);\n }\n var polyfill, opts = Object(rawopts), newerIEUA = /\\bTrident\\/[567]\\b|\\bMSIE (?:9|10)\\.0\\b/, webkitUA = /\\bAppleWebKit\\/(\\d+)\\b/, olderEdgeUA = /\\bEdge\\/12\\.(\\d+)\\b/, edgeUA = /\\bEdge\\/.(\\d+)\\b/, inIframe = window.top !== window.self;\n polyfill = "polyfill" in opts ? opts.polyfill : newerIEUA.test(navigator.userAgent) || (navigator.userAgent.match(olderEdgeUA) || [])[1] < 10547 || (navigator.userAgent.match(webkitUA) || [])[1] < 537 || edgeUA.test(navigator.userAgent) && inIframe;\n // create xhr requests object\n var requests = {}, requestAnimationFrame = window.requestAnimationFrame || setTimeout, uses = document.getElementsByTagName("use"), numberOfSvgUseElementsToBypass = 0;\n // conditionally start the interval if the polyfill is active\n polyfill && oninterval();\n }\n function getSVGAncestor(node) {\n for (var svg = node; "svg" !== svg.nodeName.toLowerCase() && (svg = svg.parentNode); ) {}\n return svg;\n }\n return svg4everybody;\n});\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/svg4everybody/dist/svg4everybody.js\n ** module id = 403\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./~/svg4everybody/dist/svg4everybody.js?')},function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/process/browser.js\n ** module id = 404\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/process/browser.js?")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<h6 class="flyout-header">Change password:</h6>\\n\\n<form js-target="save-new-list-form" class="field-container">\\n\t<div class="notification-box">\\n\t\t<div class="notification-box-content" js-target="notification-box">\\n\t\t\t<div class="row collapse">\\n\t\t\t\t<div class="small-2 column text-center">\\n\t\t\t\t\t<span class="icon-stack mts">\\n\t\t\t\t\t\t<i class="icon icon-circle-o icon-stack-2x warning-color"></i>\\n\t\t\t\t\t\t<i class="icon icon-exclamation icon-stack-1x warning-color"></i>\\n\t\t\t\t\t</span>\\n\t\t\t\t</div>\\n\t\t\t\t<div class="small-9 column mtm"> \\n\t\t\t\t\t<div class="message" js-target="notification-box-message">\\n\t\t\t\t\tCurrent Password is invalid\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n\\n\t<label for="current-password">Current password</label>\\n\t<input name="current-password" type="password">\\n\\n\t<label for="new-password">New password</label>\\n\t<input name="new-password" type="password">\\n\\n\t<label for="confirm-password">Confirm new password</label>\\n\t<input name="confirm-password" type="password">\\n\\n\t<button class="expand" js-target="save-user">SAVE CHANGES</button>\\n</form>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/change-password/template.html\n ** module id = 405\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/change-password/template.html?./web_loaders/template.loader.js'); },function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<h6 class=\"flyout-header\">Are you sure you want to discard ' +\n((__t = ( discardWhat )) == null ? '' : __t) +\n' from your library?</h6>\\n\\n<button js-target=\"yes\">YES, I&apos;M SURE</button>\\n<button js-target=\"cancel\" class=\"button--alt\">CANCEL</button>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/discard/template.html\n ** module id = 406\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/discard/template.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<h6 class="flyout-header">Embed <strong>"\' +\n((__t = (name)) == null ? \'\' : __t) +\n\'"</strong></h6>\\n<label for="video-embed-code">Code</label>\\n<textarea id="video-embed-code" readonly="readonly" style="height: 100px" onclick="this.select()">\' +\n((__t = (code)) == null ? \'\' : __t) +\n\'</textarea>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/embed/template.html\n ** module id = 407\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/embed/template.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<h6 class=\"flyout-header\">' +\n((__t = (title)) == null ? '' : __t) +\n'</h6>\\n<div>' +\n((__t = ( body )) == null ? '' : __t) +\n'</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/notification/template.html\n ** module id = 408\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/notification/template.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n__p += \'<h6 class="flyout-header">Save to:</h6>\\n\\n<ul class="flyout-list">\\n\t<li>\\n\t\t<div class="right hbr-checkbox">\\n\t\t\t<input type="checkbox" checked="checked" disabled="disabled" value="1" id="save001" name="" />\\n\t\t\t<label for="save001"></label>\\n\t\t</div>\\n\t\t<label for="save001">My Library</label>\\n\t</li>\\n\t\';\n readingLists.forEach(function(list) { ;\n__p += \'\\n\t\t\';\n if (!list.readOnly) { ;\n__p += \'\\n\t<li>\\n\t\t<div class="right hbr-checkbox">\\n\t\t\t<input type="checkbox" value="2" id="save-\' +\n((__t = (list.id)) == null ? \'\' : __t) +\n\'" name="" js-target="save-list-checkbox" data-list-name="\' +\n((__t = (list.name)) == null ? \'\' : __t) +\n\'" data-list-id="\' +\n((__t = (list.id)) == null ? \'\' : __t) +\n\'"/>\\n\t\t\t<label for="save-\' +\n((__t = (list.id)) == null ? \'\' : __t) +\n\'"></label>\\n\t\t</div>\\n\t\t<label for="save-\' +\n((__t = (list.id)) == null ? \'\' : __t) +\n\'">\' +\n((__t = ( list.name )) == null ? \'\' : __t) +\n\'</label>\\n\t</li>\\n\t\t\';\n } ;\n__p += \'\\n\t\';\n }); ;\n__p += \'\\n\t<li>\\n\t\t<a href="#" js-target="save-new-list">Create New Folder <i class="icon icon-plus-square-o"></i></a>\\n\t\t<div class="right hbr-checkbox is-hidden" js-target="save-new-list-form">\\n\t\t\t<input type="checkbox" disabled="disabled" checked="checked" value="3" name="" id="new-list"/>\\n\t\t\t<label for="new-list"></label>\\n\t\t</div>\\n\t\t<div js-target="save-new-list-form" class="field-container is-hidden">\\n\t\t\t<label for="list-form-name">Folder Title</label>\\n\t\t\t<input id="list-form-name" type="text" js-target="list-form-name">\\n\t\t\t<span class="list-error">Only English characters, numbers and spaces are allowed in folder names</span>\\n\\n\t\t\t<label for="list-form-description">Folder Description</label>\\n\t\t\t<textarea id="list-form-description" rows="3" cols="24" js-target="list-form-description"></textarea>\\n\t\t</div>\\n\t</li>\\n</ul>\\n\\n<button class="expand" js-target="save-submit">SAVE</button>\\n<label class="error is-hidden" js-target="save-new-list-form-error">There was an error while processing your request, please try again later.</label>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/save/template.html\n ** module id = 409\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/save/template.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<h6 class="flyout-share-title flyout-header">&quot;\' +\n((__t = ( shareTitle )) == null ? \'\' : __t) +\n\'&quot;</h6>\\n<div class="field-container">\\n\t<label for="direct-url">URL</label>\\n\t<input js-target="share-url" id="direct-url" type="text" value="\' +\n((__t = ( setFullPath(shareUrl) )) == null ? \'\' : __t) +\n\'" readonly="readonly" onclick="select()">\\n</div>\\n<hr>\\n<!-- TAB NAV -->\\n<ul class="flyout-share-chooser font-size-small" js-target="share-flyout-nav">\\n\t<li class="active" js-target="share-flyout-nav-item" data-share-network="facebook"><a href="#">Facebook</a></li>\\n\t<li js-target="share-flyout-nav-item" data-share-network="twitter"><a href="#">Twitter</a></li>\\n\t<li js-target="share-flyout-nav-item" data-share-network="linkedin"><a href="#">Linkedin</a></li>\\n\t<li js-target="share-flyout-nav-item" data-share-network="googlePlus"><a href="#">Google+</a></li>\\n</ul>\\n<div js-target="flyout-share-content">\\n\t\' +\n((__t = ( subTemplate )) == null ? \'\' : __t) +\n\'\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/share/templates/base.html\n ** module id = 410\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/share/templates/base.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n__p += \'<div class="field-container" js-target="share-email">\\n\';\n if (!shareNetworkLoggedIn) { ;\n__p += \'\\n\t<div class="row collapse">\\n\t\t<div class="small-2 columns">\\n\t\t\t<label for="from-address" class="mbs inline">FROM</label>\\n\t\t</div>\\n\t\t<div class="small-10 columns">\\n\t\t\t<input type="text" name="from-address" class="mbs" placeholder="Email" js-target="share-from" required="required">\\n\t\t</div>\\n\t</div>\\n\';\n } ;\n__p += \'\\n\t<div class="row collapse">\\n\t\t<div class="small-2 columns">\\n\t\t\t<label for="to-address" class="mbs inline">TO</label>\\n\t\t</div>\\n\t\t<div class="small-10 columns">\\n\t\t\t<input type="text" name="to-address" class="mbs" placeholder="Separate addresses with commas" js-target="share-to" required="required">\\n\t\t</div>\\n\t</div>\\n\\n\t<label for="custom-message">CUSTOM MESSAGE</label>\\n\t<textarea name="custom-message" rows="4" cols="24" placeholder="Enter your message here" js-target="share-message"></textarea>\\n</div>\\n\\n\\n<button class="expand mbn" js-target="share-post">SEND</button>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/share/templates/email.html\n ** module id = 411\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/share/templates/email.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n if (!shareNetworkLoggedIn) { ;\n__p += '\\n\\n<div class=\"' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'-container\" js-target=\"share-' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'\">\\n\t<div class=\"cushion text-center\">\\n\t\t<i class=\"icon icon-' +\n((__t = ( shareNetworkIcon )) == null ? '' : __t) +\n'-square icon-2x lighter-gray\"></i>\\n\t</div>\\n</div>\\n\\n<button class=\"expand\" js-target=\"share-connect\">Connect with ' +\n((__t = ( shareNetworkDisplayName )) == null ? '' : __t) +\n'</button>\\n\\n';\n }else { ;\n__p += '\\n\\n';\n if (shareNetwork === \"twitter\") { ;\n__p += '\\n<div class=\"' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'-container\" js-target=\"share-' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'\">\\n\t<div class=\"row \">\\n\t\t<div class=\"small-2 column\">\\n\t\t\t<img src=\"' +\n((__t = ( shareNetworkAvatarPath )) == null ? '' : __t) +\n'\" alt=\"\">\\n\t\t\t<div class=\"mtm\">\\n\t\t\t\t<i class=\"icon icon-' +\n((__t = ( shareNetworkIcon )) == null ? '' : __t) +\n'-square lighter-gray\"></i>\\n\t\t\t</div>\\n\\n\t\t</div>\\n\t\t<div class=\"small-10 column\">\\n\t\t\t<textarea id=\"custom-message\" js-target=\"share-message\" rows=\"4\" cols=\"24\" placeholder=\"Enter comment here...\"></textarea>\\n\t\t</div>\\n\t</div>\\n</div>\\n';\n } else { ;\n__p += '\\n<div class=\"' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'-container\" js-target=\"share-' +\n((__t = ( shareNetwork )) == null ? '' : __t) +\n'\">\\n\t<div class=\"cushion text-center\">\\n\t\t<i class=\"icon icon-' +\n((__t = ( shareNetworkIcon )) == null ? '' : __t) +\n'-square icon-2x lighter-gray\"></i>\\n\t</div>\\n</div>\\n';\n } ;\n__p += '\\n\\n<button class=\"expand mbn\" js-target=\"share-post\">Share on ' +\n((__t = ( shareNetworkDisplayName )) == null ? '' : __t) +\n'</button>\\n\\n';\n } ;\n__p += '\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/share/templates/social.html\n ** module id = 412\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/share/templates/social.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="flyout-close">\\n\t<a href="#" js-target="hide-flyout"><i class="icon icon-times hbrgray"></i></a>\\n</div>\\n<div js-target="flyout-content">\\n\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/templates/base.html\n ** module id = 413\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/templates/base.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n if (typeof message === \"string\") { ;\n__p += '\\n<h4 class=\"section-label mtl\">' +\n((__t = (message)) == null ? '' : __t) +\n'</h4>\\n';\n } ;\n__p += '\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/templates/confirmation.html\n ** module id = 414\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/templates/confirmation.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="message mvm">\\n\tTo access this feature, please <a href="#signin" class="cta" js-target="show-sign-in">SIGN IN</a> or <a href="/register" class="cta">REGISTER</a>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/flyout/templates/sign-in-prompt.html\n ** module id = 415\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27\n **/\n//# sourceURL=webpack:///./js/components/flyout/templates/sign-in-prompt.html?./web_loaders/template.loader.js')},function(module,exports,__webpack_require__){eval('\n// Depedencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = AddToCart;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Services\n\nvar _servicesCart = __webpack_require__(105);\n\nvar _servicesCart2 = _interopRequireDefault(_servicesCart);\n\nvar _servicesShoppingCartUtils = __webpack_require__(262);\n\nvar _servicesShoppingCartUtils2 = _interopRequireDefault(_servicesShoppingCartUtils);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\n// The component mixin.\n\nvar _modalBoxModalBox = __webpack_require__(103);\n\nvar _modalBoxModalBox2 = _interopRequireDefault(_modalBoxModalBox);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _addToCartConfirmationAddToCartConfirmation = __webpack_require__(265);\n\nvar _addToCartConfirmationAddToCartConfirmation2 = _interopRequireDefault(_addToCartConfirmationAddToCartConfirmation);\n\nfunction AddToCart($el) {\n\tthis.initializeAsComponent($el);\n}\n\nAddToCart.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target=\'add\']": "add",\n\t\t"click [js-target=\'add-bt-multiple\']": "addBTMultiple",\n\t\t"click [js-target=\'speed-pay\']": "speedPay"\n\t},\n\n\tevents: {\n\t\t"click [js-target=\'item-quantity-value\']": "updateQuantityValue",\n\t\t"keyup [js-target=\'item-quantity\']": "updateQuantity",\n\t\t"click [js-target=\'permission-quantity-value\']": "updateQuantityValue",\n\t\t"click [js-target=\'checkbox-better-together\']": "updateBTGroupPrice"\n\t},\n\n\t/**\n * function that will add an item to the cart\n *\n * @param {object} ev - event object\n *\n * @return {object} cart\n */\n\tadd: function add(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\t\t_modalBoxModalBox2["default"].activate((0, _jquery2["default"])("body")).render();\n\t\taddToCart((0, _jquery2["default"])(ev.currentTarget).closest("add-to-cart")).then(function (response) {\n\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t_addToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: response.addToCartItems, itemAdded: true });\n\t\t\t(0, _jquery2["default"])("body").trigger("update:cart", response.cart);\n\t\t\t(0, _jquery2["default"])("body").trigger("add-to-cart:success", [response.cart, response.addToCartItems]);\n\t\t}, function (error) {\n\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t_addToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: error.addToCartItems, itemAdded: false });\n\t\t});\n\t},\n\n\taddBTMultiple: function addBTMultiple(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\t\t// get product items belonging to similar group\n\t\tvar addToCartItems = (0, _jquery2["default"])("add-to-cart[data-group-name=\'better-together\']");\n\t\tvar selectedAddToCartItems = [];\n\n\t\tif (addToCartItems) {\n\t\t\taddToCartItems.each(function (i, addToCartItem) {\n\t\t\t\tif ((0, _jquery2["default"])(addToCartItem).find("[js-target=\'checkbox-better-together\']").is(":checked")) {\n\t\t\t\t\tselectedAddToCartItems.push(addToCartItem);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (selectedAddToCartItems.length > 0) {\n\t\t\t_modalBoxModalBox2["default"].activate((0, _jquery2["default"])("body")).render();\n\t\t\taddToCart(selectedAddToCartItems).then(function (response) {\n\t\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t\t_addToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: response.addToCartItems, itemAdded: true });\n\t\t\t\t(0, _jquery2["default"])("body").trigger("update:cart", response.cart);\n\t\t\t\t(0, _jquery2["default"])("body").trigger("add-to-cart:success", [response.cart, response.addToCartItems]);\n\t\t\t}, function (error) {\n\t\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t\t_addToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: error.addToCartItems, itemAdded: false });\n\t\t\t});\n\t\t}\n\t},\n\n\tupdateBTGroupPrice: function updateBTGroupPrice(ev) {\n\t\t(0, _jquery2["default"])("[js-target=\'price-better-together\']").html(this.getBTTotalPrice());\n\t},\n\n\tgetBTTotalPrice: function getBTTotalPrice() {\n\t\tvar totalPrice = 0;\n\t\tvar btCheckElems = (0, _jquery2["default"])("[js-target=\'checkbox-better-together\']");\n\t\tif (btCheckElems) {\n\t\t\tbtCheckElems.each(function (i, el) {\n\t\t\t\tif ((0, _jquery2["default"])(el).is(":checked")) {\n\t\t\t\t\tvar itemPrice = parseFloat((0, _jquery2["default"])(el).closest("add-to-cart").data("product-price"));\n\t\t\t\t\ttotalPrice += itemPrice;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn totalPrice.toFixed(2);\n\t},\n\n\t/**\n * function that will run the addition to the cart through the spped pay\n * process\n *\n * @param {object} ev\n *\n */\n\tspeedPay: function speedPay(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\t\taddToCart((0, _jquery2["default"])(ev.currentTarget).closest("add-to-cart")).then(function (response) {\n\t\t\t(0, _jquery2["default"])(ev.currentTarget).closest("form").submit();\n\t\t});\n\t},\n\n\t/**\n * function that will update the quantity value when the increase\n * or decrease value is clicked\n *\n * @param {object} ev\n *\n */\n\tupdateQuantityValue: function updateQuantityValue(ev) {\n\t\tev.preventDefault();\n\t\tvar selectedData = (0, _jquery2["default"])(this.$el).data();\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\tvar thisData = (0, _jquery2["default"])(thisEl).data();\n\t\tvar isPermission = thisData.className ? thisData.className.indexOf("permission") >= 0 : false;\n\t\tvar updateDir = thisData.changeType;\n\t\tvar itemQuantityVal = parseInt((0, _jquery2["default"])(this.$el).find("[js-target=\'item-quantity\']").val(), 10);\n\t\tif (!isPermission && _servicesShoppingCartUtils2["default"].getProductType(selectedData.productId) === "Digital" && updateDir === "up" && itemQuantityVal > 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inputClassName = "." + (0, _jquery2["default"])(thisEl).data().className;\n\t\t_servicesShoppingCartUtils2["default"].updateQuantityValue(thisEl, inputClassName, ev);\n\t},\n\n\t/**\n * function that will evaluate whether the quantity\n * can be increased to higher than 1 when a product of\n * of type Digital has been selected\n *\n * @param {object} ev\n *\n */\n\tupdateQuantity: function updateQuantity(ev) {\n\t\t//ev.preventDefault();\n\t\t//var selectedData = $(this.$el).data();\n\t\t//var thisEl = $(ev.currentTarget);\n\t\t//var itemQuantityVal = parseInt($(thisEl).val(), 10);\n\t}\n};\n\n/**\n* function that will retrieve all the necessary product information to submit\n* for adding to cart\n*\n* @param {object} productEl\n* @param {object} itemObj\n*\n* @return {object} item\n*/\n\n/*var getProductDetails = function(addToCartEl) {\n\tvar itemData = $(addToCartEl);\n\titemObj.productId = $(addToCartEl).attr("data-product-id")\n\titemObj.productPrice = $(addToCartEl).attr("data-product-price")";\n\titemObj.productUrl = $(addToCartEl).attr("data-product-url")";\n\titemObj.productContentType = $(addToCartEl).attr("data-product-content-type")";\n\titemObj.type = $(addToCartEl).attr("data-type");\n\tif (!itemData.type) {\n\t\titemObj.type = utils.getProductType(itemObj.productId);\n\t}\n\titemObj.format = $(addToCartEl).attr("data-format")";\n\treturn itemObj;\n};*/\n\n/**\n* function that will process all the necessary steps and\n* prepare the item to be added to the cart\n*\n* @param {object} cartEl - add-to-cart element\n*\n* @return {promise.object} promise returned for adding to cart\n*/\nvar addToCart = function addToCart(cartElements) {\n\tvar dfd = new _jquery2["default"].Deferred();\n\tvar items = [];\n\tvar cartEls = [];\n\tif (_jquery2["default"].isArray(cartElements)) {\n\t\tcartEls = cartElements;\n\t} else {\n\t\tcartEls.push(cartElements);\n\t}\n\n\tcartEls.forEach(function (cartEl) {\n\t\tvar item = (0, _jquery2["default"])(cartEl).data();\n\t\tvar referral = item.productUrl && item.productUrl.match(/\\?.*referral=(\\d+)/);\n\t\titem.quantity = 1;\n\t\tif (referral && referral.length > 1) {\n\t\t\titem.referral = referral[1];\n\t\t}\n\t\tif (!item.type && item.productId) {\n\t\t\titem.type = _servicesShoppingCartUtils2["default"].getProductType(item.productId);\n\t\t}\n\t\t// only add the items if the quantity is greater than 0\n\t\tif (item.quantity > 0) {\n\t\t\titems.push(item);\n\t\t}\n\t});\n\n\tif (items.length > 0) {\n\t\t_servicesCart2["default"].addToCart(items).then(function (response) {\n\t\t\tresponse.addToCartItems = items;\n\t\t\tdfd.resolve(response);\n\t\t}, function (response) {\n\t\t\tresponse.addToCartItems = items;\n\t\t\tdfd.reject(response);\n\t\t});\n\t}\n\treturn dfd;\n};\n\n(0, _mixinsComponent2["default"])(AddToCart, "add-to-cart");\n_servicesState2["default"].addInitializer(AddToCart);\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/add-to-cart/add-to-cart.js\n ** module id = 416\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/add-to-cart/add-to-cart.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = FindIssue;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _supportIssues = __webpack_require__(420);\n\nvar _supportIssues2 = _interopRequireDefault(_supportIssues);\n\n// Templates\n\nvar _templateTemplatesMonth = __webpack_require__(474);\n\nvar _templateTemplatesMonth2 = _interopRequireDefault(_templateTemplatesMonth);\n\nvar _templateTemplatesYear = __webpack_require__(475);\n\nvar _templateTemplatesYear2 = _interopRequireDefault(_templateTemplatesYear);\n\n// The component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction FindIssue($el) {\n\tthis.initializeAsComponent($el);\n\tthis.load();\n\tthis.update();\n}\n\n// Declare all instance methods for the component here. This must\n// come before the `mixinComponent` call.\nFindIssue.prototype = {\n\tload: function load() {\n\t\tvar component = this;\n\t\tvar allIssues = _supportIssues2["default"].getIssues();\n\t\tcomponent.issues = allIssues;\n\t\tcomponent.$("button").removeAttr("disabled");\n\t},\n\tupdate: function update(yearIndex) {\n\t\tvar months = this.issues.year[0].issue;\n\t\tif (typeof yearIndex !== "number") {\n\t\t\tthis.$(".year-select").html((0, _templateTemplatesYear2["default"])({ years: this.issues.year }));\n\t\t\tthis.$(".month-select").html((0, _templateTemplatesMonth2["default"])({ months: months, selected: months.length - 1 }));\n\t\t} else {\n\t\t\tthis.$(".month-select").html((0, _templateTemplatesMonth2["default"])({ months: this.issues.year[yearIndex].issue }));\n\t\t}\n\t},\n\tupdateForYear: function updateForYear(event) {\n\t\tthis.update(this.$(".year-select").prop("selectedIndex"));\n\t},\n\tgoToIssue: function goToIssue(event) {\n\t\tevent.preventDefault();\n\t\tlocation.href = this.$(".month-select").val();\n\t},\n\tevents: {\n\t\t"change .year-select": "updateForYear",\n\t\t"submit form": "goToIssue"\n\t}\n};\n\n// Here you register the Component to be decorated.\n(0, _mixinsComponent2["default"])(FindIssue, "find-issue");\n\n// Export the constructor so that it may be initialized elsewhere.\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/find-issue/find-issue.js\n ** module id = 417\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/find-issue/find-issue.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _react = __webpack_require__(60);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\nvar _lodashAmdModernCollectionsMap = __webpack_require__(27);\n\nvar _lodashAmdModernCollectionsMap2 = _interopRequireDefault(_lodashAmdModernCollectionsMap);\n\nvar _lodashAmdModernCollectionsIndexBy = __webpack_require__(94);\n\nvar _lodashAmdModernCollectionsIndexBy2 = _interopRequireDefault(_lodashAmdModernCollectionsIndexBy);\n\nvar _lodashAmdModernObjectsOmit = __webpack_require__(263);\n\nvar _lodashAmdModernObjectsOmit2 = _interopRequireDefault(_lodashAmdModernObjectsOmit);\n\nvar _lodashAmdModernObjectsValues = __webpack_require__(121);\n\nvar _lodashAmdModernObjectsValues2 = _interopRequireDefault(_lodashAmdModernObjectsValues);\n\nvar _lodashAmdModernCollectionsSortBy = __webpack_require__(95);\n\nvar _lodashAmdModernCollectionsSortBy2 = _interopRequireDefault(_lodashAmdModernCollectionsSortBy);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar dom = _react2["default"].DOM;\n\nvar TopicMenu = _react2["default"].createClass({\n\tdisplayName: "TopicMenu",\n\n\tgetInitialState: function getInitialState() {\n\t\treturn { topics: {}, open: false, active: "all", deleting: false, topicsLoaded: true };\n\t},\n\n\tloadTopics: function loadTopics() {\n\t\t_servicesHbrInteraction2["default"].request("topic", "GET").then((function (data) {\n\t\t\tfor (var i in data) {\n\t\t\t\tdata[i].name = data[i].name.toLowerCase().replace(/\\b\\w/g, function (l) {\n\t\t\t\t\treturn l.toUpperCase();\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar newTopics = (0, _lodashAmdModernCollectionsIndexBy2["default"])(data, "dimension");\n\t\t\tthis.setState({ topics: newTopics, active: newTopics[this.state.active] ? this.state.active : "all" });\n\t\t}).bind(this));\n\t},\n\n\tcomponentDidMount: function componentDidMount() {\n\t\tthis.loadTopics();\n\t},\n\n\tcomponentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n\t\tif (this.state.active !== prevState.active) {\n\t\t\t(0, _jquery2["default"])(_react2["default"].findDOMNode(this)).trigger("topic-menu:change", this.state.active === "all" ? { dimension: "all" } : this.state.topics[this.state.active]);\n\t\t}\n\t},\n\n\tonOpen: function onOpen(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ open: !this.state.open });\n\t},\n\n\tonActivate: function onActivate(topic, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: topic.dimension, open: false, deleting: false });\n\t},\n\n\tonDelete: function onDelete(topic, ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ active: topic.dimension, deleting: true });\n\t},\n\n\tonDeleteYes: function onDeleteYes(topic, ev) {\n\t\tev.preventDefault();\n\t\t_servicesHbrInteraction2["default"].request("topic", "delete", { name: topic.name }).then((function () {\n\t\t\tthis.setState({ active: "all", deleting: false, topics: (0, _lodashAmdModernObjectsOmit2["default"])(this.state.topics, topic.dimension) });\n\t\t}).bind(this));\n\t},\n\n\tonDeleteNo: function onDeleteNo(ev) {\n\t\tev.preventDefault();\n\t\tthis.setState({ deleting: false });\n\t},\n\n\trender: function render() {\n\t\treturn dom.div({ className: "folder-list" + (this.state.open ? " open" : "") }, dom.a({ href: "#", className: "folder-list--opener flex-row justify-between pvm prm pll link--white", onClick: this.onOpen }, this.state.active === "all" ? "Everything" : this.state.topics[this.state.active].name, dom.span({ className: "icon icon-caret-right font-size-xlarge" })), dom.div({ className: "folder-list--folders" }, (0, _lodashAmdModernCollectionsMap2["default"])([{ dimension: "all", name: "Everything" }].concat((0, _lodashAmdModernCollectionsSortBy2["default"])((0, _lodashAmdModernObjectsValues2["default"])(this.state.topics), "name")), (function (topic) {\n\t\t\tvar active = this.state.active === topic.dimension;\n\t\t\tvar deleting = active && this.state.deleting;\n\t\t\treturn dom.div({ className: "folder-list--folder prm" + (active ? " active" : "") + (deleting ? " editing" : "") }, deleting ? dom.div({ className: "ptm pbl" }, dom.div({ className: "mbm" }, "Stop following \\"" + topic.name + "\\"?"), dom.div({ className: "row" }, dom.div({ className: "small-6 columns" }, dom.button({ className: "button--black expand", onClick: this.onDeleteYes.bind(this, topic) }, "YES")), dom.div({ className: "small-6 columns" }, dom.button({ className: "button--alt-black expand", onClick: this.onDeleteNo }, "NO")))) : dom.div({ className: "flex-row" }, dom.a({ href: "#", className: "folder-list--folder-link flex-1 pvm", onClick: this.onActivate.bind(this, topic) }, topic.name), topic.dimension !== "all" ? dom.a({ href: "#", className: "folder-list--edit-link icon icon-circle-x font-size-xsmall pvm mts", onClick: this.onDelete.bind(this, topic) }) : ""));\n\t\t}).bind(this)), dom.div({ className: "folder-list--folder pvm prm" }, dom.a({ href: "/topics", className: "mbn button--black expand" }, "FIND MORE"))));\n\t}\n});\n\nvar all;\n\nTopicMenu.activateAll = function () {\n\tall = (0, _lodashAmdModernCollectionsMap2["default"])(document.getElementsByTagName("topic-menu"), function (el) {\n\t\treturn _react2["default"].render(_react2["default"].createElement(TopicMenu, null), el);\n\t});\n};\n\nTopicMenu.updateOnToggleTab = function () {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(all, function (component) {\n\t\tvar topicsFollowed = Object.keys(component.state.topics);\n\t\t// check if any topic is followed and no content has been loaded yet\n\t\tif (topicsFollowed.length > 0 && component.state.topicsLoaded === false) {\n\t\t\t(0, _jquery2["default"])(_react2["default"].findDOMNode(component)).trigger("topic-menu:change", { dimension: "all" });\n\t\t\tcomponent.setState({ topicsLoaded: true });\n\t\t}\n\t});\n};\n\n(0, _jquery2["default"])(document).on("topics:change", function () {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(all, function (component) {\n\t\tcomponent.loadTopics();\n\t});\n});\n\n(0, _jquery2["default"])(document).on("stream-list:loaded", function (ev, response) {\n\tif (response.streamEndpoint.match(/following/)) {\n\t\t(0, _lodashAmdModernCollectionsForEach2["default"])(all, function (component) {\n\t\t\tcomponent.setState({ topicsLoaded: response.dataLength > 0 });\n\t\t});\n\t}\n});\n\nexports["default"] = TopicMenu;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/topic-menu/topic-menu.js\n ** module id = 418\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/topic-menu/topic-menu.js?'); },function(module,exports,__webpack_require__){eval('/**\n * bridge to relate article.js and header.js\n * isArticle,displayingSearch,titleScrolledOff,DomElement @params\n **/\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar headerTitle = {\n\tisArticle: false,\n\tdisplayingSearch: false,\n\ttitleScrolledOff: false,\n\tDomElement: "null",\n\tshowOrHide: function showOrHide() {\n\t\tif (headerTitle.displayingSearch === false) {\n\t\t\tif (headerTitle.titleScrolledOff === true) {\n\t\t\t\t(0, _jquery2["default"])(headerTitle.DomElement).addClass("on");\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])(headerTitle.DomElement).removeClass("on");\n\t\t\t}\n\t\t\t(0, _jquery2["default"])("[data-type=\'search-input\']").closest("form").removeClass("width-66pct");\n\t\t} else {\n\t\t\t(0, _jquery2["default"])(headerTitle.DomElement).removeClass("on");\n\t\t\t(0, _jquery2["default"])("[data-type=\'search-input\']").closest("form").addClass("width-66pct");\n\t\t}\n\t}\n};\n\nexports["default"] = headerTitle;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/header-title-utils.js\n ** module id = 419\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/header-title-utils.js?')},function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nvar issuesJSON = {\n\t"year": [{\n\t\t"yearId": "2017",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January–February",\n\t\t\t"issueURL": "/archive-toc/BR1701"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/BR1702"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/BR1703"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1704"\n\t\t}, {\n\t\t\t"issueMonth": "September–October",\n\t\t\t"issueURL": "/archive-toc/BR1705"\n\t\t}]\n\t}, {\n\t\t"yearId": "2016",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1601"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1603"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1604"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1605"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1606"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1607"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1609"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1610"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1611"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1612"\n\t\t}]\n\t}, {\n\t\t"yearId": "2015",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1501"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1503"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1504"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1505"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1506"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1507"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1509"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1510"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1511"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1512"\n\t\t}]\n\t}, {\n\t\t"yearId": "2014",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1401"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1403"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1404"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1405"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1406"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1407"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1409"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1410"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1411"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1412"\n\t\t}]\n\t}, {\n\t\t"yearId": "2013",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1301"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1303"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1304"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1305"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1306"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1307"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1309"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1310"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1311"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1312"\n\t\t}]\n\t}, {\n\t\t"yearId": "2012",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1201"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1203"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1204"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1205"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1206"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1207"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1209"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1210"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1211"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1212"\n\t\t}]\n\t}, {\n\t\t"yearId": "2011",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1101"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1103"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1104"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1105"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1106"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1107"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1109"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1110"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1111"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1112"\n\t\t}]\n\t}, {\n\t\t"yearId": "2010",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR1001"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR1003"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR1004"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR1005"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR1006"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR1007"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR1009"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR1010"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR1011"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR1012"\n\t\t}]\n\t}, {\n\t\t"yearId": "2009",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0901"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0902"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0903"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0904"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0905"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0906"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0907"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0907"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0909"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0910"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0911"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0912"\n\t\t}]\n\t}, {\n\t\t"yearId": "2008",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0801"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0802"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0803"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0804"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0805"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0806"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0807"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0807"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0809"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0810"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0811"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0812"\n\t\t}]\n\t}, {\n\t\t"yearId": "2007",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0701"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0702"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0703"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0704"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0705"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0706"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0707"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0707"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0709"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0710"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0711"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0712"\n\t\t}]\n\t}, {\n\t\t"yearId": "2006",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0601"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0602"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0603"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0604"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0605"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0606"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0607"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0607"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0609"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0610"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0611"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0612"\n\t\t}]\n\t}, {\n\t\t"yearId": "2005",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0501"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0502"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0503"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0504"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0505"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0506"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0507"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0507"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0509"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0510"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0511"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0512"\n\t\t}]\n\t}, {\n\t\t"yearId": "2004",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0401"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0402"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0403"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0404"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0405"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0406"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0407"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0407"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0409"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0410"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0411"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0412"\n\t\t}]\n\t}, {\n\t\t"yearId": "2003",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0301"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0302"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0303"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0304"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0305"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0306"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0307"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0308"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0309"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0310"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0311"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0312"\n\t\t}]\n\t}, {\n\t\t"yearId": "2002",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0201"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0202"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0203"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0204"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0205"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0206"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0207"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0208"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0209"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0210"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0211"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0212"\n\t\t}]\n\t}, {\n\t\t"yearId": "2001",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January",\n\t\t\t"issueURL": "/archive-toc/BR0101"\n\t\t}, {\n\t\t\t"issueMonth": "February",\n\t\t\t"issueURL": "/archive-toc/BR0102"\n\t\t}, {\n\t\t\t"issueMonth": "March",\n\t\t\t"issueURL": "/archive-toc/BR0103"\n\t\t}, {\n\t\t\t"issueMonth": "April",\n\t\t\t"issueURL": "/archive-toc/BR0104"\n\t\t}, {\n\t\t\t"issueMonth": "May",\n\t\t\t"issueURL": "/archive-toc/BR0105"\n\t\t}, {\n\t\t\t"issueMonth": "June",\n\t\t\t"issueURL": "/archive-toc/BR0106"\n\t\t}, {\n\t\t\t"issueMonth": "July",\n\t\t\t"issueURL": "/archive-toc/BR0107"\n\t\t}, {\n\t\t\t"issueMonth": "August",\n\t\t\t"issueURL": "/archive-toc/BR0107"\n\t\t}, {\n\t\t\t"issueMonth": "September",\n\t\t\t"issueURL": "/archive-toc/BR0109"\n\t\t}, {\n\t\t\t"issueMonth": "October",\n\t\t\t"issueURL": "/archive-toc/BR0110"\n\t\t}, {\n\t\t\t"issueMonth": "November",\n\t\t\t"issueURL": "/archive-toc/BR0111"\n\t\t}, {\n\t\t\t"issueMonth": "December",\n\t\t\t"issueURL": "/archive-toc/BR0112"\n\t\t}]\n\t}, {\n\t\t"yearId": "2000",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/BR001"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/BR002"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/BR003"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/BR004"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/BR005"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/BR006"\n\t\t}]\n\t}, {\n\t\t"yearId": "1999",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3991"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3992"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3993"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3994"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3995"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3996"\n\t\t}]\n\t}, {\n\t\t"yearId": "1998",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3981"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3982"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3983"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3984"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3985"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3986"\n\t\t}]\n\t}, {\n\t\t"yearId": "1997",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3971"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3972"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3973"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3974"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3975"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3976"\n\t\t}]\n\t}, {\n\t\t"yearId": "1996",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3961"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3962"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3963"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3964"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3965"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3966"\n\t\t}]\n\t}, {\n\t\t"yearId": "1995",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3951"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3952"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3953"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3954"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3955"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3956"\n\t\t}]\n\t}, {\n\t\t"yearId": "1994",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3941"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3942"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3943"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3944"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3945"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3946"\n\t\t}]\n\t}, {\n\t\t"yearId": "1993",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3931"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3932"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3933"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3934"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3935"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3936"\n\t\t}]\n\t}, {\n\t\t"yearId": "1992",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3921"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3922"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3923"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3924"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3925"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3926"\n\t\t}]\n\t}, {\n\t\t"yearId": "1991",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3911"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3912"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3913"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3914"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3915"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3916"\n\t\t}]\n\t}, {\n\t\t"yearId": "1990",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3901"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3902"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3903"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3904"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3905"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3906"\n\t\t}]\n\t}, {\n\t\t"yearId": "1989",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3891"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3892"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3893"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3894"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3895"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3896"\n\t\t}]\n\t}, {\n\t\t"yearId": "1988",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3881"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3882"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3883"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3884"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3885"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3886"\n\t\t}]\n\t}, {\n\t\t"yearId": "1987",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3871"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3872"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3873"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3874"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3875"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3876"\n\t\t}]\n\t}, {\n\t\t"yearId": "1986",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3861"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3862"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3863"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3864"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3865"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3866"\n\t\t}]\n\t}, {\n\t\t"yearId": "1985",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3851"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3852"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3853"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3854"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3855"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3856"\n\t\t}]\n\t}, {\n\t\t"yearId": "1984",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3841"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3842"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3843"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3844"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3845"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3846"\n\t\t}]\n\t}, {\n\t\t"yearId": "1983",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3831"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3832"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3833"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3834"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3835"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3836"\n\t\t}]\n\t}, {\n\t\t"yearId": "1982",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3821"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3822"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3823"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3824"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3825"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3826"\n\t\t}]\n\t}, {\n\t\t"yearId": "1981",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3811"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3812"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3813"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3814"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3815"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3816"\n\t\t}]\n\t}, {\n\t\t"yearId": "1980",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3801"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3802"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3803"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3804"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3805"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3806"\n\t\t}]\n\t}, {\n\t\t"yearId": "1979",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3791"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3792"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3793"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3794"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3795"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3796"\n\t\t}]\n\t}, {\n\t\t"yearId": "1978",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3781"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3782"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3783"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3784"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3785"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3786"\n\t\t}]\n\t}, {\n\t\t"yearId": "1977",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3771"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3772"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3773"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3774"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3775"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3776"\n\t\t}]\n\t}, {\n\t\t"yearId": "1976",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3761"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3762"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3763"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3764"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3765"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3766"\n\t\t}]\n\t}, {\n\t\t"yearId": "1975",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3751"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3752"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3753"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3754"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3755"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3756"\n\t\t}]\n\t}, {\n\t\t"yearId": "1974",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3741"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3742"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3743"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3744"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3745"\n\t\t}]\n\t}, {\n\t\t"yearId": "1973",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3731"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3732"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3733"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3734"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3735"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3736"\n\t\t}]\n\t}, {\n\t\t"yearId": "1972",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3721"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3722"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3724"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3725"\n\t\t}]\n\t}, {\n\t\t"yearId": "1971",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3711"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3712"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3714"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3715"\n\t\t}]\n\t}, {\n\t\t"yearId": "1970",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3701"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3703"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3704"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3705"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3706"\n\t\t}]\n\t}, {\n\t\t"yearId": "1969",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3691"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3692"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3693"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3694"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3696"\n\t\t}]\n\t}, {\n\t\t"yearId": "1968",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3681"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3682"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3684"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3685"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3686"\n\t\t}]\n\t}, {\n\t\t"yearId": "1967",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3671"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3672"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3673"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3676"\n\t\t}]\n\t}, {\n\t\t"yearId": "1966",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3661"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3662"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3664"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3665"\n\t\t}]\n\t}, {\n\t\t"yearId": "1965",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3651"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3653"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3654"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3655"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3656"\n\t\t}]\n\t}, {\n\t\t"yearId": "1964",\n\t\t"issue": [{\n\t\t\t"issueMonth": "January-February",\n\t\t\t"issueURL": "/archive-toc/3641"\n\t\t}, {\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3642"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3643"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3644"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3645"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3646"\n\t\t}]\n\t}, {\n\t\t"yearId": "1963",\n\t\t"issue": [{\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3633"\n\t\t}, {\n\t\t\t"issueMonth": "July-August",\n\t\t\t"issueURL": "/archive-toc/3634"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3635"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3636"\n\t\t}]\n\t}, {\n\t\t"yearId": "1962",\n\t\t"issue": [{\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3622"\n\t\t}, {\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3623"\n\t\t}]\n\t}, {\n\t\t"yearId": "1961",\n\t\t"issue": [{\n\t\t\t"issueMonth": "March-April",\n\t\t\t"issueURL": "/archive-toc/3612"\n\t\t}, {\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3615"\n\t\t}]\n\t}, {\n\t\t"yearId": "1960",\n\t\t"issue": [{\n\t\t\t"issueMonth": "May-June",\n\t\t\t"issueURL": "/archive-toc/3603"\n\t\t}, {\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3606"\n\t\t}]\n\t}, {\n\t\t"yearId": "1958",\n\t\t"issue": [{\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3586"\n\t\t}]\n\t}, {\n\t\t"yearId": "1957",\n\t\t"issue": [{\n\t\t\t"issueMonth": "September-October",\n\t\t\t"issueURL": "/archive-toc/3575"\n\t\t}]\n\t}, {\n\t\t"yearId": "1956",\n\t\t"issue": [{\n\t\t\t"issueMonth": "November-December",\n\t\t\t"issueURL": "/archive-toc/3566"\n\t\t}]\n\t}]\n};\n\nvar getIssues = function getIssues() {\n\treturn issuesJSON;\n};\n\nexports["default"] = {\n\tgetIssues: getIssues\n};\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/issues.js\n ** module id = 420\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/issues.js?'); },function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(jQuery) {;(function( win, $ ) {\n\n\tfunction featureTest( property, value, noPrefixes ) {\n\t\t// Thanks Modernizr! https://github.com/phistuck/Modernizr/commit/3fb7217f5f8274e2f11fe6cfeda7cfaf9948a1f5\n\t\tvar prop = property + ':',\n\t\t\tel = document.createElement( 'test' ),\n\t\t\tmStyle = el.style;\n\n\t\tif( !noPrefixes ) {\n\t\t\tmStyle.cssText = prop + [ '-webkit-', '-moz-', '-ms-', '-o-', '' ].join( value + ';' + prop ) + value + ';';\n\t\t} else {\n\t\t\tmStyle.cssText = prop + value;\n\t\t}\n\t\treturn mStyle[ property ].indexOf( value ) !== -1;\n\t}\n\n\tfunction getPx( unit ) {\n\t\treturn parseInt( unit, 10 ) || 0;\n\t}\n\n\tvar uniqueIdCounter = 0;\n\n\tvar S = {\n\t\tclasses: {\n\t\t\tplugin: 'fixedsticky',\n\t\t\tactive: 'fixedsticky-on',\n\t\t\tinactive: 'fixedsticky-off',\n\t\t\tclone: 'fixedsticky-dummy',\n\t\t\tdelegate: 'fixedsticky-delegate',\n\t\t\twithoutFixedFixed: 'fixedsticky-withoutfixedfixed'\n\t\t},\n\t\tkeys: {\n\t\t\toffset: 'fixedStickyOffset',\n\t\t\tposition: 'fixedStickyPosition',\n\t\t\tid: 'fixedStickyId'\n\t\t},\n\t\ttests: {\n\t\t\tsticky: featureTest( 'position', 'sticky' ),\n\t\t\tfixed: featureTest( 'position', 'fixed', true )\n\t\t},\n\t\t// Thanks jQuery!\n\t\tgetScrollTop: function() {\n\t\t\tvar prop = 'pageYOffset',\n\t\t\t\tmethod = 'scrollTop';\n\t\t\treturn win ? (prop in win) ? win[ prop ] :\n\t\t\t\twin.document.documentElement[ method ] :\n\t\t\t\twin.document.body[ method ];\n\t\t},\n\t\tbypass: function() {\n\t\t\t// Check native sticky, check fixed and if fixed-fixed is also included on the page and is supported\n\t\t\treturn ( S.tests.sticky && !S.optOut ) ||\n\t\t\t\t!S.tests.fixed ||\n\t\t\t\twin.FixedFixed && !$( win.document.documentElement ).hasClass( 'fixed-supported' );\n\t\t},\n\t\tupdate: function( el ) {\n\t\t\tif( !el.offsetWidth ) { return; }\n\n\t\t\tvar $el = $( el ),\n\t\t\t\theight = $el.outerHeight(),\n\t\t\t\tinitialOffset = $el.data( S.keys.offset ),\n\t\t\t\tscroll = S.getScrollTop(),\n\t\t\t\tisAlreadyOn = $el.is( '.' + S.classes.active ),\n\t\t\t\ttoggle = function( turnOn ) {\n\t\t\t\t\t$el[ turnOn ? 'addClass' : 'removeClass' ]( S.classes.active )\n\t\t\t\t\t\t[ !turnOn ? 'addClass' : 'removeClass' ]( S.classes.inactive );\n\t\t\t\t},\n\t\t\t\tviewportHeight = $( window ).height(),\n\t\t\t\tposition = $el.data( S.keys.position ),\n\t\t\t\tskipSettingToFixed,\n\t\t\t\telTop,\n\t\t\t\telBottom,\n\t\t\t\t$parent = $el.is( '.' + S.classes.delegate ) ? $el.parent().parent() : $el.parent(),\n\t\t\t\tparentOffset = $parent.offset().top,\n\t\t\t\tparentHeight = $parent.outerHeight();\n\n\t\t\tif( initialOffset === undefined ) {\n\t\t\t\tinitialOffset = $el.offset().top;\n\t\t\t\t$el.data( S.keys.offset, initialOffset );\n\t\t\t\t$el.after( $( '<div>' ).addClass( S.classes.clone ).height( height ) );\n\t\t\t}\n\n\t\t\tif( !position ) {\n\t\t\t\t// Some browsers require fixed/absolute to report accurate top/left values.\n\t\t\t\tskipSettingToFixed = $el.css( 'top' ) !== 'auto' || $el.css( 'bottom' ) !== 'auto';\n\n\t\t\t\tif( !skipSettingToFixed ) {\n\t\t\t\t\t$el.css( 'position', 'fixed' );\n\t\t\t\t}\n\n\t\t\t\tposition = {\n\t\t\t\t\ttop: $el.css( 'top' ) !== 'auto',\n\t\t\t\t\tbottom: $el.css( 'bottom' ) !== 'auto'\n\t\t\t\t};\n\n\t\t\t\tif( !skipSettingToFixed ) {\n\t\t\t\t\t$el.css( 'position', '' );\n\t\t\t\t}\n\n\t\t\t\t$el.data( S.keys.position, position );\n\t\t\t}\n\n\t\t\tfunction isFixedToTop() {\n\t\t\t\tvar offsetTop = scroll + elTop;\n\n\t\t\t\t// Initial Offset Top\n\t\t\t\treturn initialOffset < offsetTop &&\n\t\t\t\t\t// Container Bottom\n\t\t\t\t\toffsetTop + height <= parentOffset + parentHeight;\n\t\t\t}\n\n\t\t\tfunction isFixedToBottom() {\n\t\t\t\t// Initial Offset Top + Height\n\t\t\t\treturn initialOffset + ( height || 0 ) > scroll + viewportHeight - elBottom &&\n\t\t\t\t\t// Container Top\n\t\t\t\t\tscroll + viewportHeight - elBottom >= parentOffset + ( height || 0 );\n\t\t\t}\n\n\t\t\telTop = getPx( $el.css( 'top' ) );\n\t\t\telBottom = elTop == 0 && getPx( $el.css( 'height' ) ) == 0 ? 0 : getPx( $el.css( 'bottom' ) );\n\n\t\t\tif( position.top && isFixedToTop() || position.bottom && isFixedToBottom() ) {\n\t\t\t\tif( !isAlreadyOn ) {\n\t\t\t\t\ttoggle( true );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif( isAlreadyOn ) {\n\t\t\t\t\ttoggle( false );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdestroy: function( el ) {\n\t\t\tvar $el = $( el );\n\t\t\tif (S.bypass()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn $el.each(function() {\n\t\t\t\tvar $this = $( this );\n\t\t\t\tvar id = $this.data( S.keys.id );\n\t\t\t\t$( win ).unbind( '.fixedsticky' + id );\n\n\t\t\t\t$this\n\t\t\t\t\t.removeData( [ S.keys.offset, S.keys.position, S.keys.id ] )\n\t\t\t\t\t.removeClass( S.classes.active )\n\t\t\t\t\t.removeClass( S.classes.inactive )\n\t\t\t\t\t.next( '.' + S.classes.clone ).remove();\n\t\t\t});\n\t\t},\n\t\tinit: function( el ) {\n\t\t\tvar $el = $( el );\n\n\t\t\tif( S.bypass() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn $el.each(function() {\n\t\t\t\tvar _this = this;\n\t\t\t\tvar id = uniqueIdCounter++;\n\t\t\t\t$( this ).data( S.keys.id, id );\n\n\t\t\t\t$( win ).bind( 'scroll.fixedsticky' + id, function() {\n\t\t\t\t\tS.update( _this );\n\t\t\t\t}).trigger( 'scroll.fixedsticky' + id );\n\n\t\t\t\t$( win ).bind( 'resize.fixedsticky' + id , function() {\n\t\t\t\t\tif( $el.is( '.' + S.classes.active ) ) {\n\t\t\t\t\t\tS.update( _this );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t};\n\n\twin.FixedSticky = S;\n\n\t// Plugin\n\t$.fn.fixedsticky = function( method ) {\n\t\tif ( typeof S[ method ] === 'function') {\n\t\t\treturn S[ method ].call( S, this);\n\t\t} else if ( typeof method === 'object' || ! method ) {\n\t\t\treturn S.init.call( S, this );\n\t\t} else {\n\t\t\tthrow new Error( 'Method `' + method + '` does not exist on jQuery.fixedsticky' );\n\t\t}\n\t};\n\n\t// Add fallback when fixed-fixed is not available.\n\tif( !win.FixedFixed ) {\n\t\t$( win.document.documentElement ).addClass( S.classes.withoutFixedFixed );\n\t}\n\n})( window, jQuery );\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/filament-sticky/fixedsticky.js\n ** module id = 421\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./bower_components/filament-sticky/fixedsticky.js?")},function(module,exports,__webpack_require__){eval('\n// Dependencies\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\n__webpack_require__(1);\n\n__webpack_require__(450);\n\n// Services\n\nvar _servicesHbrPersonalizationPlacementManager = __webpack_require__(97);\n\nvar _servicesHbrPersonalizationPlacementManager2 = _interopRequireDefault(_servicesHbrPersonalizationPlacementManager);\n\n__webpack_require__(440);\n\n//Update the user state\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _componentsFollowSubscribeFollowSubscribe = __webpack_require__(282);\n\nvar _componentsFollowSubscribeFollowSubscribe2 = _interopRequireDefault(_componentsFollowSubscribeFollowSubscribe);\n\n// Polyfill Function.prototype.bind` for the sake of PhantomJS tasks and old WebKit browsers.\n\n__webpack_require__(285);\n\n// Include commonly found components that will be shared amongst all pages.\n\nvar _globalNavGlobalNav = __webpack_require__(424);\n\nvar _globalNavGlobalNav2 = _interopRequireDefault(_globalNavGlobalNav);\n\nvar _headerHeader = __webpack_require__(425);\n\nvar _headerHeader2 = _interopRequireDefault(_headerHeader);\n\nvar _persistentBannerPersistentBanner = __webpack_require__(427);\n\nvar _persistentBannerPersistentBanner2 = _interopRequireDefault(_persistentBannerPersistentBanner);\n\nvar _componentsStreamSectionStreamSection = __webpack_require__(433);\n\nvar _componentsStreamSectionStreamSection2 = _interopRequireDefault(_componentsStreamSectionStreamSection);\n\nvar _componentsFlyoutFlyout = __webpack_require__(278);\n\nvar _componentsFlyoutFlyout2 = _interopRequireDefault(_componentsFlyoutFlyout);\n\nvar _componentsFindIssueFindIssue = __webpack_require__(417);\n\nvar _componentsFindIssueFindIssue2 = _interopRequireDefault(_componentsFindIssueFindIssue);\n\nvar _componentsAddToCartAddToCart = __webpack_require__(416);\n\nvar _componentsAddToCartAddToCart2 = _interopRequireDefault(_componentsAddToCartAddToCart);\n\nvar _componentsShowMoreShowMore = __webpack_require__(431);\n\nvar _componentsShowMoreShowMore2 = _interopRequireDefault(_componentsShowMoreShowMore);\n\nvar _componentsPersonalizationPlacementPersonalizationPlacement = __webpack_require__(96);\n\nvar _componentsPersonalizationPlacementPersonalizationPlacement2 = _interopRequireDefault(_componentsPersonalizationPlacementPersonalizationPlacement);\n\nvar _componentsFooterMenuFooterMenu = __webpack_require__(423);\n\nvar _componentsFooterMenuFooterMenu2 = _interopRequireDefault(_componentsFooterMenuFooterMenu);\n\nvar _componentsProductMenuProductMenu = __webpack_require__(430);\n\nvar _componentsProductMenuProductMenu2 = _interopRequireDefault(_componentsProductMenuProductMenu);\n\nvar _componentsProductAvailabilitiesProductAvailabilities = __webpack_require__(428);\n\nvar _componentsProductAvailabilitiesProductAvailabilities2 = _interopRequireDefault(_componentsProductAvailabilitiesProductAvailabilities);\n\nvar _componentsProductCarouselProductCarousel = __webpack_require__(429);\n\nvar _componentsProductCarouselProductCarousel2 = _interopRequireDefault(_componentsProductCarouselProductCarousel);\n\n__webpack_require__(421);\n\nvar _componentsFontEventsFontEvents = __webpack_require__(294);\n\nvar _componentsFontEventsFontEvents2 = _interopRequireDefault(_componentsFontEventsFontEvents);\n\n// Only listen for font load if the `fonts-loaded` class isn’t already set:\nvar _componentsHelpBoxHelpBox = __webpack_require__(426);\n\nvar _componentsHelpBoxHelpBox2 = _interopRequireDefault(_componentsHelpBoxHelpBox);\n\n__webpack_require__(442);\n\n__webpack_require__(443);\n\n__webpack_require__(446);\n\n__webpack_require__(444);\n\n__webpack_require__(445);\n\nvar ua = window.navigator.userAgent;\n\n_componentsFollowSubscribeFollowSubscribe2["default"].activateAll();\nif (_servicesState2["default"].current.indexOf("guest") !== 0) {\n\t_modelsUser2["default"].fetch().then(function () {\n\t\t_componentsFollowSubscribeFollowSubscribe2["default"].updateSubscriptions(_modelsUser2["default"].getNewsletters());\n\t\t_componentsFollowSubscribeFollowSubscribe2["default"].updateFollowing(_modelsUser2["default"].getFollowing());\n\t});\n}\nif (!window.Promise) {\n\twindow.Promise = __webpack_require__(331);\n}\n__webpack_require__(403)();\n_globalNavGlobalNav2["default"].activateAll();\n\n_headerHeader2["default"].activateAll();\n\n_persistentBannerPersistentBanner2["default"].activateAll();\n\n_componentsStreamSectionStreamSection2["default"].activateAll();\n\n_componentsFlyoutFlyout2["default"].activateAll();\n\n_componentsFindIssueFindIssue2["default"].activateAll();\n\n_componentsAddToCartAddToCart2["default"].activateAll();\n\n_componentsShowMoreShowMore2["default"].activateAll();\n\n_componentsPersonalizationPlacementPersonalizationPlacement2["default"].activateAll();\n\n_componentsFooterMenuFooterMenu2["default"].activateAll();\n\n_componentsProductMenuProductMenu2["default"].activateAll();\n\n_componentsProductAvailabilitiesProductAvailabilities2["default"].activateAll();\n\n_componentsProductCarouselProductCarousel2["default"].activateAll();\n\nwindow.R3_COMMON = _servicesHbrPersonalizationPlacementManager2["default"].R3_COMMON;\n\n// initialize the service and setup the correct objects\n_servicesHbrPersonalizationPlacementManager2["default"].initialize();\n// start the personalization process\n_servicesHbrPersonalizationPlacementManager2["default"].startProcess();\n// hanlde the returned values from the service\n_servicesHbrPersonalizationPlacementManager2["default"].placementPromise.then(function (response) {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(_servicesHbrPersonalizationPlacementManager2["default"].getMetaData().placements, function (placementRequest) {\n\n\t\tvar found;\n\t\tfor (var i = 0; i < response.length; i++) {\n\t\t\tif (response[i].name === placementRequest) {\n\t\t\t\tfound = response[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// get the template name\n\t\tvar respName = placementRequest.split(".")[1];\n\t\t// get the elem that we will attach to\n\t\tvar thisEl = (0, _jquery2["default"])("personalization-placement[data-placement-id=\'" + respName + "\']");\n\n\t\tif (found) {\n\t\t\tvar templateObj = _servicesHbrPersonalizationPlacementManager2["default"].placementTemplateMap[_servicesHbrPersonalizationPlacementManager2["default"].placementCategory][respName];\n\t\t\t// if the template object is not in a specific list, then it should be\n\t\t\t// in the common section\n\t\t\tif (!templateObj) {\n\t\t\t\ttemplateObj = _servicesHbrPersonalizationPlacementManager2["default"].placementTemplateMap.common[respName];\n\t\t\t}\n\n\t\t\t// Call render\n\t\t\t_componentsPersonalizationPlacementPersonalizationPlacement2["default"].render(thisEl, templateObj.templateName, found, templateObj.type).then(function () {\n\t\t\t\t(0, _jquery2["default"])(thisEl).trigger("loaded");\n\t\t\t});\n\t\t} else {\n\t\t\tthisEl.addClass("do-not-show");\n\t\t}\n\t});\n\n\t_servicesHbrPersonalizationPlacementManager2["default"].processPlacementQueue();\n});\n\nFixedSticky.tests.sticky = false;\n(0, _jquery2["default"])(".fixedsticky").fixedsticky();\n\n//Load responsive images polyfill\n__webpack_require__(330);\n\nwindow.__gigyaConf = {\n\tenabledProviders: "facebook,twitter,linkedin,googleplus"\n};\n\n// Temp fix for iOS8 until we hear from filament group regarding fixfix.js\n// pull request.\n// look for Safari in iOS8\nif (ua.match(/iPhone OS 8/) && ua.indexOf("AppleWebKit") > -1) {\n\tif (window.removeEventListener) {\n\t\twindow.removeEventListener("scroll", window.FixedFixed, false);\n\t} else {\n\t\twindow.detachEvent("onscroll", window.FixedFixed);\n\t}\n}\n\nif (window.document.documentElement.className.indexOf("fonts-loaded") === -1) {\n\t(0, _componentsFontEventsFontEvents2["default"])();\n}\n\nif (ua.toLowerCase().match(/safari/) && ua.toLowerCase().match(/version\\/6/)) {\n\t(0, _jquery2["default"])(".safari-6-message").show();\n}\n\nif (window.location.search.match(/printMe/)) {\n\twindow.print();\n}\n\nif (!_servicesState2["default"].isMobile()) {\n\t_componentsHelpBoxHelpBox2["default"].show();\n}\n\nvar topbar,\n body,\n initialPos,\n topbarFixed = false;\n\n(0, _jquery2["default"])(window).on("scroll", function (e) {\n\tif (!topbar) {\n\t\tif (ua.toLowerCase().match(/chrome|safari/)) {\n\t\t\tbody = document.getElementsByTagName("body")[0];\n\t\t} else {\n\t\t\tbody = document.documentElement;\n\t\t}\n\n\t\ttopbar = body.getElementsByClassName("sticky-top-header")[0];\n\t}\n\n\tif (topbarFixed) {\n\t\tif (body.scrollTop < initialPos) {\n\t\t\ttopbar.style.top = initialPos + "px";\n\t\t\ttopbar.style.position = "initial";\n\t\t\ttopbarFixed = false;\n\t\t}\n\t} else {\n\t\tif (body.scrollTop >= topbar.offsetTop) {\n\t\t\tinitialPos = topbar.offsetTop;\n\t\t\ttopbar.style.position = "fixed";\n\t\t\ttopbar.style.top = "0px";\n\t\t\ttopbarFixed = true;\n\t\t}\n\t}\n});\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/common.js\n ** module id = 422\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/common.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = FooterMenu;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction FooterMenu($el) {\n\tthis.initializeAsComponent($el);\n}\n\nFooterMenu.prototype = {\n\tevents: {\n\t\t"click [js-target=\'footer-item\']": "showFooterList"\n\t},\n\n\tshowFooterList: function showFooterList(ev) {\n\t\tthis.$("[js-target=\'footer-item\']").not(ev.currentTarget).removeClass("show-list");\n\t\tthis.$(ev.currentTarget).toggleClass("show-list");\n\t}\n};\n\n(0, _mixinsComponent2["default"])(FooterMenu, "footer-menu");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/footer-menu/footer-menu.js\n ** module id = 423\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/footer-menu/footer-menu.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = GlobalNav;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsThrottle = __webpack_require__(65);\n\nvar _lodashAmdModernFunctionsThrottle2 = _interopRequireDefault(_lodashAmdModernFunctionsThrottle);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _signInSignInModal = __webpack_require__(50);\n\nvar _signInSignInModal2 = _interopRequireDefault(_signInSignInModal);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nfunction GlobalNav($el) {\n\tthis.initializeAsComponent($el);\n\n\t(0, _jquery2["default"])("[js-target=\'menu-toggle\']").on("click", (function (evt) {\n\t\tevt.preventDefault();\n\t\tthis.setActive(!this.$el.hasClass("active"));\n\t}).bind(this));\n\n\tthis.$el.on("clickoutside", (function (ev) {\n\t\tif (!(0, _jquery2["default"])(ev.target).parents().addBack().is("[js-target=\'menu-toggle\']")) {\n\t\t\tthis.setActive(false);\n\t\t}\n\t}).bind(this));\n\n\t(0, _jquery2["default"])(window).on("scroll resize", (0, _lodashAmdModernFunctionsThrottle2["default"])(this.recalcContained.bind(this), 50));\n\tthis.recalcContained();\n}\n\nGlobalNav.prototype = {\n\tevents: {\n\t\t"click a[data-sign-in]": "requireSignIn"\n\t},\n\n\trequireSignIn: function requireSignIn(ev) {\n\t\tev.preventDefault();\n\t\t_signInSignInModal2["default"].ensureSignedIn().then(function () {\n\t\t\twindow.location = (0, _jquery2["default"])(ev.target).attr("href");\n\t\t});\n\t},\n\n\tsetActive: function setActive(active) {\n\t\tthis.$el.toggleClass("active", active);\n\t\t(0, _jquery2["default"])(".top-header").find("[js-target=\'menu-toggle\']").toggleClass("toggled", active);\n\t},\n\n\tsetContained: function setContained(contained) {\n\t\tvar target = (0, _jquery2["default"])(contained ? "[data-params*=\'region=global-nav\']" : "header");\n\t\tif (!this.$el.parent().is(target)) {\n\t\t\ttarget.append(this.$el);\n\t\t}\n\t\tthis.$el.toggleClass("is-contained", contained);\n\t},\n\n\trecalcContained: function recalcContained() {\n\t\tvar contain = _servicesState2["default"].homeHeroVisible() && !_servicesState2["default"].isMobile();\n\t\tvar contained = this.$el.hasClass("is-contained");\n\t\tif (contain && !contained && this.$el.hasClass("active")) {\n\t\t\tthis.setActive(false);\n\t\t\tsetTimeout(this.setContained.bind(this, true), 150);\n\t\t} else {\n\t\t\tthis.setContained(contain);\n\t\t}\n\t}\n};\n\n(0, _mixinsComponent2["default"])(GlobalNav, "nav");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/global-nav/global-nav.js\n ** module id = 424\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/global-nav/global-nav.js?')},function(module,exports,__webpack_require__){eval('// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = Header;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernFunctionsThrottle = __webpack_require__(65);\n\nvar _lodashAmdModernFunctionsThrottle2 = _interopRequireDefault(_lodashAmdModernFunctionsThrottle);\n\n//import _debounce from "lodash-amd/modern/functions/debounce";\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _templateTemplatesCartContents = __webpack_require__(476);\n\nvar _templateTemplatesCartContents2 = _interopRequireDefault(_templateTemplatesCartContents);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\nvar _componentsSignInSignInModal = __webpack_require__(50);\n\nvar _componentsSignInSignInModal2 = _interopRequireDefault(_componentsSignInSignInModal);\n\nvar _signInSignIn = __webpack_require__(61);\n\nvar _signInSignIn2 = _interopRequireDefault(_signInSignIn);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\n__webpack_require__(261);\n\nvar _servicesHeaderTitleUtils = __webpack_require__(419);\n\nvar _servicesHeaderTitleUtils2 = _interopRequireDefault(_servicesHeaderTitleUtils);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\nfunction Header($el) {\n\tthis.initializeAsComponent($el);\n\n\t_signInSignIn2["default"].signInPromise.then((function (u) {\n\t\tthis.$("[js-target=\'user-menu-name\']").text(_modelsUser2["default"].getFullName());\n\t\tthis.$("[js-target=\'header-first-name\']").text(_modelsUser2["default"].getFirstName());\n\t\t_servicesHbrInteraction2["default"].request("cart", "get").done(function (data, status, response) {\n\t\t\tif (typeof data.cart !== "undefined") {\n\t\t\t\t_servicesLocalstorageUtil2["default"].setCache("cart", data.cart);\n\t\t\t\t(0, _jquery2["default"])("body").trigger("update:cart", data.cart);\n\t\t\t}\n\t\t});\n\t\tif (typeof _modelsUser2["default"].getFollowingUnread() !== "undefined" && _modelsUser2["default"].getFollowingUnread() > 0) {\n\t\t\tthis.$("[js-target=\'global-topic-feeds-anchor\']").attr("data-newfollowing-badge", _modelsUser2["default"].getFollowingUnread());\n\t\t\tthis.$("[js-target=\'newfollowing-user-badge\']").attr("data-newfollowing-user-badge", _modelsUser2["default"].getFollowingUnread());\n\t\t}\n\t}).bind(this));\n\n\tvar threshold = 20;\n\tvar lastPosition = window.pageYOffset;\n\n\twindow.onscroll = (0, _lodashAmdModernFunctionsThrottle2["default"])(function () {\n\t\tvar isNavOpen = (0, _jquery2["default"])("nav.global-nav").hasClass("is-open");\n\t\tvar yOffset = window.pageYOffset;\n\t\tvar isVisible = _servicesState2["default"].isMobile() && isNavOpen ? true : yOffset < lastPosition;\n\n\t\tlastPosition = yOffset;\n\n\t\tif (lastPosition < threshold && !(_servicesState2["default"].isMobile() && isNavOpen)) {\n\t\t\tisVisible = false;\n\t\t}\n\n\t\t(0, _jquery2["default"])("body").toggleClass("reversed", isVisible);\n\t}, 125);\n\n\tvar recLimit = 6,\n\t topicsLimit = 3,\n\t searchInput = (0, _jquery2["default"])("[data-type=\'search-input\']"),\n\t autoSuggest = (0, _jquery2["default"])("[data-purpose=\'search-auto-suggest\']"),\n\t autoSuggestRes = autoSuggest.find("ul"),\n\t autoSuggest1stRec = autoSuggestRes.children().filter(":first"),\n\t autoSuggestLastRec = autoSuggestRes.children().filter(":nth-child(" + recLimit + ")"),\n\t autoSuggest1stTopic = autoSuggestRes.children().filter(":nth-child(" + (recLimit + 2) + ")"),\n\t autoSuggestTopicHeader = autoSuggestRes.children().filter(":nth-child(" + (recLimit + 1) + ")"),\n\t shadowContainer = (0, _jquery2["default"])("[data-container=\'dimensions\']"),\n\t shadow1stRec = shadowContainer.children().filter(":first"),\n\t shadowLastRec = shadowContainer.children().filter(":nth-child(" + recLimit + ")"),\n\t shadowTopicHeader = shadowContainer.children().filter(":nth-child(" + (recLimit + 1) + ")"),\n\t shadow1stTopic = shadowContainer.children().filter(":nth-child(" + (recLimit + 2) + ")"),\n\t autoSuggestEndPoint = _common2["default"].API + "search/auto-suggest?term=",\n\t cancelSearch = false;\n\n\tsearchInput.on("click", function (ev) {\n\t\tcancelSearch = false;\n\t\tsearchInput.closest("form").addClass("width-66pct");\n\t\tif (_servicesHeaderTitleUtils2["default"].isArticle === true) {\n\t\t\t_servicesHeaderTitleUtils2["default"].displayingSearch = true;\n\t\t\t_servicesHeaderTitleUtils2["default"].showOrHide();\n\t\t}\n\t});\n\tsearchInput.on("clickoutside", function (ev) {\n\t\tcancelSearch = true;\n\t\tif ((0, _jquery2["default"])(ev.target).closest("[data-purpose=\'search-auto-suggest\']").length === 0) {\n\t\t\tautoSuggest.addClass("hide");\n\t\t\t(0, _jquery2["default"])(".transparent-layer").fadeOut(500).remove();\n\t\t\tsearchInput.closest("form").removeClass("width-66pct");\n\t\t\tif (_servicesHeaderTitleUtils2["default"].isArticle === true) {\n\t\t\t\t_servicesHeaderTitleUtils2["default"].displayingSearch = false;\n\t\t\t\t_servicesHeaderTitleUtils2["default"].showOrHide();\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction adjustLink(link) {\n\t\treturn link.charAt(0) === "?" ? "/search" + link : link;\n\t}\n\n\tfunction hiliString(match) {\n\t\treturn "<span class=\\"font-heavy\\">" + match + "</span>";\n\t}\n\n\tfunction hiliContentType(ctype) {\n\t\treturn ctype ? "<span class=\\"font-size-xsmall info-color pls spacing-wide\\">" + ctype.toUpperCase() + "</span>" : "";\n\t}\n\n\tfunction displayResList(search, list, limit, elt, selt) {\n\t\tvar i = 0,\n\t\t lim = list ? list.length < limit ? list.length : limit : 0;\n\n\t\tfor (; i < limit; i++, elt = elt.next(), selt = selt.next()) {\n\t\t\tif (i < lim) {\n\t\t\t\tvar html = "<a href=\\"" + adjustLink(list[i].link) + "\\">" + list[i].title.replace(new RegExp(search, "gi"), hiliString) + hiliContentType(list[i].contentType) + "</a>";\n\t\t\t\telt.html(html);\n\t\t\t\tselt.html(html);\n\t\t\t\tselt.removeClass("hide");\n\t\t\t\telt.removeClass("hide");\n\t\t\t} else {\n\t\t\t\telt.html("");\n\t\t\t\tselt.html("");\n\t\t\t\tselt.addClass("hide");\n\t\t\t\telt.addClass("hide");\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction displayTopicHeader(topics) {\n\t\tif (topics && topics.length > 0) {\n\t\t\tautoSuggestTopicHeader.removeClass("hide");\n\t\t\tshadowTopicHeader.removeClass("hide");\n\t\t\tautoSuggestLastRec.addClass("has-border-bottom");\n\t\t\tshadowLastRec.addClass("has-border-bottom");\n\t\t} else {\n\t\t\tautoSuggestTopicHeader.addClass("hide");\n\t\t\tshadowTopicHeader.addClass("hide");\n\t\t\tautoSuggestLastRec.removeClass("has-border-bottom");\n\t\t\tshadowLastRec.removeClass("has-border-bottom");\n\t\t}\n\n\t\treturn topics;\n\t}\n\n\tfunction syncAutoSuggestWidth() {\n\t\tshadowContainer.width(autoSuggestRes.width());\n\t}\n\n\tfunction showAutoSuggestPanel() {\n\t\tif (!cancelSearch) {\n\t\t\tif ((0, _jquery2["default"])(".transparent-layer").length === 0) {\n\t\t\t\tvar height = (0, _jquery2["default"])(document).height();\n\t\t\t\t(0, _jquery2["default"])("<div/>", {\n\t\t\t\t\t"class": "transparent-layer",\n\t\t\t\t\theight: height,\n\t\t\t\t\twidth: "100%"\n\t\t\t\t}).appendTo("body");\n\t\t\t\t(0, _jquery2["default"])(".transparent-layer").css("zIndex", 5000);\n\t\t\t}\n\n\t\t\tautoSuggest.removeClass("hide");\n\t\t\tsyncAutoSuggestWidth();\n\n\t\t\tif (window.onresize !== syncAutoSuggestWidth) {\n\t\t\t\twindow.onresize = syncAutoSuggestWidth;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hideAutoSuggestPanel() {\n\t\t(0, _jquery2["default"])(".transparent-layer").remove();\n\t\tautoSuggest.addClass("hide");\n\t}\n\n\tvar throttledSearch = (0, _lodashAmdModernFunctionsThrottle2["default"])(function () {\n\t\tvar search = searchInput.val();\n\t\tif (search.length > 2) {\n\t\t\t_jquery2["default"].getJSON(autoSuggestEndPoint + encodeURI(search = search.trim().split(/\\s+/).join(" "))).then(function (data) {\n\t\t\t\tif (data && (data.records && data.records.length > 0 || data.subjects && data.subjects.length > 0)) {\n\t\t\t\t\tdisplayResList(search, data.records, recLimit, autoSuggest1stRec, shadow1stRec);\n\t\t\t\t\tdisplayResList(search, displayTopicHeader(data.subjects), topicsLimit, autoSuggest1stTopic, shadow1stTopic);\n\t\t\t\t\tshowAutoSuggestPanel();\n\t\t\t\t} else {\n\t\t\t\t\thideAutoSuggestPanel();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\thideAutoSuggestPanel();\n\t\t}\n\t}, 350, { leading: true, trailing: false });\n\n\tsearchInput.on("keyup", function (ev) {\n\t\tif (ev.which !== 13) {\n\t\t\tthrottledSearch();\n\t\t}\n\t});\n\n\t(0, _lodashAmdModernCollectionsForEach2["default"])(["cart", "search", "user"], (function (menu) {\n\t\tthis.$("[js-target=\'global-header-menu\'][data-menu=\'" + menu + "\']").on("clickoutside", (function (ev) {\n\t\t\tif (!(0, _jquery2["default"])(ev.target).parents().addBack().is("[js-target=\'global-header-menu-toggle\'][data-menu=\'" + menu + "\']")) {\n\t\t\t\tthis.setMenuActive(menu, false);\n\t\t\t}\n\t\t}).bind(this));\n\t}).bind(this));\n}\n\nHeader.prototype = {\n\trenderSignInModal: function renderSignInModal(ev) {\n\t\tev.preventDefault();\n\t\t_componentsSignInSignInModal2["default"].render();\n\t},\n\n\trenderRegisterModal: function renderRegisterModal(ev) {\n\t\tev.preventDefault();\n\t\t_componentsSignInSignInModal2["default"].render("register");\n\t},\n\n\ttoggleMenu: function toggleMenu(ev) {\n\t\tev.preventDefault();\n\t\tvar menu = (0, _jquery2["default"])(ev.currentTarget).data("menu");\n\t\tvar active = !this.$("[js-target=\'global-header-menu\'][data-menu=\'" + menu + "\']").hasClass("active");\n\t\tthis.setMenuActive(menu, active);\n\t\t// trigger event to update digital data if mini cart icon is clicked and cart menu is open\n\t\tif (menu === "cart" && active) {\n\t\t\t(0, _jquery2["default"])("body").trigger("mini-cart-interaction", _servicesLocalstorageUtil2["default"].getCache("cart"));\n\t\t}\n\t},\n\n\tupdateCart: function updateCart(ev, cartObj) {\n\t\tcartObj.subTotal = parseFloat(cartObj.subTotal).toFixed(2);\n\t\tthis.$("[js-target=\'global-header-cart-contents\']").html((0, _templateTemplatesCartContents2["default"])(cartObj));\n\t\tvar icon = this.$("[js-target=\'header-bar\'] [js-target=\'global-header-menu-toggle\'][data-menu=\'cart\']");\n\t\tvar numItems = cartObj.items ? cartObj.items.length : 0;\n\t\tif (numItems > 0) {\n\t\t\ticon.attr("data-cart-badge", numItems);\n\t\t} else {\n\t\t\ticon.removeAttr("data-cart-badge");\n\t\t}\n\t},\n\n\tsetMenuActive: function setMenuActive(menu, active) {\n\t\tvar mnu = this.$("[js-target=\'global-header-menu\'][data-menu=\'" + menu + "\']").toggleClass("active", active);\n\t\tvar btn = this.$(".global-header-button[js-target=\'global-header-menu-toggle\'][data-menu=\'" + menu + "\']").toggleClass("active", active);\n\t\tmnu.find("[js-target=\'global-header-menu-caret\']").css({ left: btn.offset().left - mnu.offset().left + 9 });\n\t\tif (active) {\n\t\t\tmnu.one("transitionend", function () {\n\t\t\t\tmnu.find("input").focus();\n\t\t\t});\n\t\t}\n\t},\n\n\tevents: {\n\t\t"click [js-target=\'sign-in-register\']": "renderSignInModal",\n\t\t"click [js-target=\'sign-in-register--register\']": "renderRegisterModal",\n\t\t"click [js-target=\'global-header-menu-toggle\']": "toggleMenu"\n\t},\n\n\tglobalEvents: {\n\t\t"update:cart": "updateCart"\n\t}\n};\n\n(0, _mixinsComponent2["default"])(Header, "header");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/header/header.js\n ** module id = 425\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/header/header.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = HelpBox;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _lodashAmdModernFunctionsThrottle = __webpack_require__(65);\n\nvar _lodashAmdModernFunctionsThrottle2 = _interopRequireDefault(_lodashAmdModernFunctionsThrottle);\n\nvar _templateTemplate = __webpack_require__(477);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _servicesHbrHelpBoxes = __webpack_require__(436);\n\nvar _servicesHbrHelpBoxes2 = _interopRequireDefault(_servicesHbrHelpBoxes);\n\nvar trigger = __webpack_require__(26).trigger;\nvar merge = __webpack_require__(26).merge;\n\nfunction offset(el) {\n\tif (!el) {\n\t\treturn { top: 0, left: 0, fixed: true };\n\t} else if (el.tagName === "BODY") {\n\t\treturn { top: 0, left: 0, fixed: false };\n\t} else {\n\t\tvar o = offset(el.offsetParent);\n\t\treturn { top: el.offsetTop + o.top, left: el.offsetLeft + o.left, fixed: o.fixed };\n\t}\n}\n\nvar boxes = {\n\t"sign-in-benefits": {\n\t\ttarget: "[data-help-box-target=\'sign-in-benefits\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "left",\n\t\theadline: "Want more out of HBR.org?",\n\t\tbody: "<a href=\'/register\'>Sign in to get more free content</a> each month and build your own personal library on HBR.org."\n\t},\n\t"article-saves": {\n\t\ttarget: "[data-help-box-target=\'article-saves\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "right",\n\t\theadline: "Pressed for time?",\n\t\tbody: "Tap this folder icon to save this article to your personal library."\n\t},\n\t"firmographics": {\n\t\ttarget: "[data-stream-name=\'settings\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "left",\n\t\theadline: "Want To See More Relevant Articles?",\n\t\tbody: "Tell us a little more about yourself in Account Settings to see articles more relevant to your industry and role."\n\t},\n\t"my-library": {\n\t\ttarget: "[data-help-box-target=\'my-library\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "left",\n\t\theadline: "Welcome to HBR!",\n\t\tbody: "Tap this icon at any time to visit your personal library and account information."\n\t},\n\t"insider-newsletter": {\n\t\ttarget: "[data-help-box-target=\'insider-enl\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "right",\n\t\theadline: "",\n\t\tbody: "Get the most out of your subscription by signing up for The Insider - a weekly subscriber-only newsletter dedicated to giving you the inside scoop on all that HBR has to offer."\n\t},\n\t"subscriber-search": {\n\t\ttarget: "[data-help-box-target=\'search-type-subscription\']",\n\t\tvertical: "bottom",\n\t\thorizontal: "right",\n\t\theadline: "Subscriber Search!",\n\t\tbody: "Turn on \\"Subscriber Search\\" here to see only content that\'s free with your subscription."\n\t}\n};\n\nfunction HelpBox($el, $target, box) {\n\tthis.initializeAsComponent($el);\n\tthis.$target = $target;\n\tthis.box = box;\n\tthis.periodicPosition = (0, _lodashAmdModernFunctionsThrottle2["default"])(this.position.bind(this), 50);\n\tthis.closeBox = this.close.bind(this);\n\tthis.position();\n\t$target.on("click", this.closeBox);\n\t(0, _jquery2["default"])(window).on("scroll resize", this.periodicPosition);\n}\n\nHelpBox.prototype = {\n\tevents: {\n\t\t"click [js-target=\'close-help-box\']": "closeButton"\n\t},\n\n\tcloseButton: function closeButton(ev) {\n\t\tev.preventDefault();\n\t\tthis.close();\n\t},\n\n\tclose: function close() {\n\t\tthis.$el.remove();\n\t\t(0, _jquery2["default"])(window).off("scroll resize", this.periodicPosition);\n\t\tthis.$target.off("click", this.closeBox);\n\t\ttrigger("metrics:helpbox_closed", { helpbox: this.box.id });\n\t},\n\n\tposition: function position() {\n\t\tvar tpos = offset(this.$target[0]);\n\t\tvar twidth = this.$target.outerWidth();\n\t\tvar theight = this.$target.outerHeight();\n\t\tvar bwidth = this.$el.outerWidth();\n\t\tvar bheight = this.$el.outerHeight();\n\t\tvar left = tpos.left + ({ left: twidth - bwidth, center: (twidth - bwidth) / 2, right: 0 })[this.box.horizontal];\n\t\tthis.$el.css({ position: tpos.fixed ? "fixed" : "absolute", left: left, top: tpos.top + (this.box.vertical === "bottom" ? theight + 14 : -bheight - 14) });\n\t\tthis.$("[js-target=\'help-box-caret\']").css({ left: tpos.left - left + twidth / 2 - 14 });\n\t}\n};\n\n(0, _mixinsComponent2["default"])(HelpBox, "help-box");\n\nHelpBox.render = function (id) {\n\tvar box = merge(boxes[id], { id: id });\n\tvar $target = (0, _jquery2["default"])(box.target).first();\n\tif ($target.is(":visible")) {\n\t\ttrigger("metrics:helpbox_shown", { helpbox: id });\n\t\treturn new HelpBox((0, _jquery2["default"])((0, _templateTemplate2["default"])({ box: box })).appendTo("body"), $target, box);\n\t}\n};\n\nHelpBox.show = function () {\n\t_servicesHbrHelpBoxes2["default"].evaluate().then(function (id) {\n\t\tif (id) {\n\t\t\tHelpBox.render(id);\n\t\t}\n\t});\n};\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/help-box/help-box.js\n ** module id = 426\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/help-box/help-box.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = PersistentBanner;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nfunction PersistentBanner($el) {\n\tthis.initializeAsComponent($el);\n\n\t// Re-render once login has completed.\n\t_modelsUser2["default"].authPromise.then((function () {\n\t\tthis.$("[js-target=\'quota-remaining\']").text(_modelsUser2["default"].getQuotaRemaining());\n\t\tthis.$("[js-target=\'quota-limit\']").text(_modelsUser2["default"].getQuotaLimit());\n\t}).bind(this));\n}\n\n(0, _mixinsComponent2["default"])(PersistentBanner, ".persistent-banner");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/persistent-banner/persistent-banner.js\n ** module id = 427\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/persistent-banner/persistent-banner.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ProductAvailabilities;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernObjectsClone = __webpack_require__(48);\n\nvar _lodashAmdModernObjectsClone2 = _interopRequireDefault(_lodashAmdModernObjectsClone);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _servicesShoppingCartUtils = __webpack_require__(262);\n\nvar _servicesShoppingCartUtils2 = _interopRequireDefault(_servicesShoppingCartUtils);\n\nvar _modalBoxModalBox = __webpack_require__(103);\n\nvar _modalBoxModalBox2 = _interopRequireDefault(_modalBoxModalBox);\n\nvar _servicesCart = __webpack_require__(105);\n\nvar _servicesCart2 = _interopRequireDefault(_servicesCart);\n\nvar _addToCartAddToCartConfirmationAddToCartConfirmation = __webpack_require__(265);\n\nvar _addToCartAddToCartConfirmationAddToCartConfirmation2 = _interopRequireDefault(_addToCartAddToCartConfirmationAddToCartConfirmation);\n\nfunction ProductAvailabilities($el) {\n\tthis.initializeAsComponent($el);\n\tthis.addToCartAvailability = $el.data();\n}\n\nProductAvailabilities.prototype = {\n\tevents: {\n\t\t"click [js-target=\'availability-format\']>span": "changeFormat",\n\t\t"click [js-target=\'availability-language\']>span": "changeLanguage",\n\t\t"click [js-target=\'copyright-checkbox\']": "permissionCheckBox",\n\t\t"click [js-target=\'add-product\']": "addProduct",\n\t\t"change [js-target=\'opt-format\']": "changeOptionFormat",\n\t\t"change [js-target=\'opt-language\']": "changeOptionLanguage"\n\t},\n\taddToCartAvailability: null,\n\t/** When click to the format make it bold/strong if it is gray color,\n Also display related languages and make firs option bold/strong\n */\n\tchangeFormat: function changeFormat(ev) {\n\t\t/* formats */\n\t\tvar targetComponent = this.$(ev.currentTarget);\n\t\tvar activeAvailability = null;\n\t\tif (!targetComponent.hasClass("font-heavy")) {\n\t\t\ttargetComponent.parent().children().removeClass("font-heavy");\n\t\t\ttargetComponent.parent().children().addClass("font-light");\n\t\t\ttargetComponent.addClass("font-heavy");\n\t\t\ttargetComponent.removeClass("font-light");\n\t\t\tthis.markSelectedFormat(targetComponent);\n\t\t\t/* availabilities */\n\t\t\tvar $parsedJSONArray = getAllAvailabilities();\n\t\t\tvar $selectedFormatAvailabilities = $parsedJSONArray[targetComponent.text()];\n\t\t\t/* reset the languages, rerender them */\n\t\t\t(0, _jquery2["default"])("product-availabilities").find("[js-target=\'availability-language\']").html("");\n\t\t\t_jquery2["default"].each($selectedFormatAvailabilities, function (i, availability) {\n\t\t\t\t(0, _jquery2["default"])("<span/>", {\n\t\t\t\t\t"class": i === 0 ? "idp-option font-heavy mrm darker-gray" : "idp-option font-light mrm darker-gray",\n\t\t\t\t\ttext: availability.language\n\t\t\t\t}).appendTo("[js-target=\'availability-language\']");\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tactiveAvailability = availability;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* update global object */\n\t\t\tthis.updateGlobalActiveObject(activeAvailability);\n\t\t\tthis.toggleShippable(activeAvailability);\n\t\t\tthis.toggleDigital(activeAvailability);\n\t\t\t/* reflect the availabilty values to other part on the page */\n\t\t\t(0, _jquery2["default"])("product-availabilities").find(".price--large").text(parseFloat(activeAvailability.listPrice).toFixed(2));\n\t\t\t(0, _jquery2["default"])("product-menu").find("[js-target=\'idp-product-id\']").text(activeAvailability.availabilityId);\n\t\t\tupdateBTaddToCartElement(activeAvailability);\n\t\t\tupdateSaveShareStreamElement(activeAvailability);\n\t\t}\n\t},\n\n\tchangeOptionFormat: function changeOptionFormat(ev) {\n\t\tvar activeAvailability = null;\n\t\tvar targetComponent = this.$(ev.currentTarget);\n\t\tvar $parsedJSONArray = getAllAvailabilities();\n\t\tthis.$el.find("[js-target=\'opt-language\']").html("");\n\n\t\tvar $selectedFormatAvailabilities = $parsedJSONArray[targetComponent.val()];\n\t\t_jquery2["default"].each($selectedFormatAvailabilities, function (i, availability) {\n\t\t\t(0, _jquery2["default"])("<option/>", {\n\t\t\t\ttext: availability.language,\n\t\t\t\tvalue: availability.language\n\t\t\t}).appendTo("[js-target=\'opt-language\']");\n\t\t\tif (i === 0) {\n\t\t\t\tactiveAvailability = availability;\n\t\t\t}\n\t\t});\n\t\t/* update global object */\n\t\tthis.updateGlobalActiveObject(activeAvailability);\n\t\tthis.toggleShippable(activeAvailability);\n\t\tthis.toggleDigital(activeAvailability);\n\t\t/* reflect the availabilty values to other part on the page */\n\t\t(0, _jquery2["default"])("product-availabilities").find(".price--large").text(parseFloat(activeAvailability.listPrice).toFixed(2));\n\t\t(0, _jquery2["default"])("product-menu").find("[js-target=\'idp-product-id\']").text(activeAvailability.availabilityId);\n\t\tupdateBTaddToCartElement(activeAvailability);\n\t\tupdateSaveShareStreamElement(activeAvailability);\n\t},\n\n\tupdateGlobalActiveObject: function updateGlobalActiveObject(activeAvailability) {\n\t\tvar url = this.addToCartAvailability.productUrl.split("/");\n\t\tthis.addToCartAvailability.productUrl = "/product/" + url[2] + "/" + activeAvailability.availabilityId;\n\t\tthis.addToCartAvailability.productId = activeAvailability.availabilityId;\n\t\tthis.addToCartAvailability.format = activeAvailability.format;\n\t\tthis.addToCartAvailability.productPrice = activeAvailability.listPrice;\n\t\tthis.addToCartAvailability.type = _servicesShoppingCartUtils2["default"].getProductType(activeAvailability.availabilityId);\n\t},\n\t/** permission checkbox **/\n\tpermissionCheckBox: function permissionCheckBox(ev) {\n\t\tvar $targetComponent = this.$(ev.currentTarget);\n\t\tvar $checked = $targetComponent.is(":checked");\n\t\tvar $permission = this.$el.find("[js-target=\'permission\']");\n\t\tthis.$el.find("[js-target=\'permission-quantity\']").val(0);\n\n\t\tif ($checked) {\n\t\t\t$permission.removeClass("is-hidden");\n\t\t} else {\n\t\t\t$permission.addClass("is-hidden");\n\t\t}\n\t},\n\n\t/**\n When click to the language change it the bold\n */\n\tchangeLanguage: function changeLanguage(ev) {\n\t\tvar targetComponent = this.$(ev.currentTarget);\n\t\ttargetComponent.parent().children().removeClass("font-heavy");\n\t\ttargetComponent.parent().children().addClass("font-light");\n\t\ttargetComponent.addClass("font-heavy");\n\t\ttargetComponent.removeClass("font-light");\n\n\t\t/* selected format */\n\t\tvar $selectedFormat = (0, _jquery2["default"])("product-availabilities").find("[data-format-selected=\'true\']");\n\t\tvar $selectedLanguage = targetComponent.text();\n\t\t/* availabilties */\n\t\tvar $parsedJSONArray = getAllAvailabilities();\n\t\t/* selected format availabilities */\n\t\tvar $selectedFormatAvailabilities = $parsedJSONArray[$selectedFormat.text()];\n\t\tvar activeAvailability = null;\n\t\t/* loop find matching availability */\n\t\t_jquery2["default"].each($selectedFormatAvailabilities, function (i, availability) {\n\t\t\tif ($selectedLanguage === availability.language) {\n\t\t\t\tactiveAvailability = availability;\n\t\t\t}\n\t\t});\n\t\t/* reflect the availabilty values to other part on the page */\n\t\tthis.updateGlobalActiveObject(activeAvailability);\n\t\t(0, _jquery2["default"])("product-availabilities").find(".price--large").text(parseFloat(activeAvailability.listPrice).toFixed(2));\n\t\t(0, _jquery2["default"])("product-menu").find("[js-target=\'idp-product-id\']").text(activeAvailability.availabilityId);\n\t\tupdateBTaddToCartElement(activeAvailability);\n\t\tupdateSaveShareStreamElement(activeAvailability);\n\t},\n\tchangeOptionLanguage: function changeOptionLanguage(ev) {\n\t\tvar targetComponent = this.$(ev.currentTarget);\n\t\t/* selected format */\n\t\tvar $selectedFormat = this.$el.find("[js-target=\'opt-format\']").val();\n\t\tvar $selectedLanguage = targetComponent.val();\n\t\t/* availabilties */\n\t\tvar $parsedJSONArray = getAllAvailabilities();\n\t\t/* selected format availabilities */\n\t\tvar $selectedFormatAvailabilities = $parsedJSONArray[$selectedFormat];\n\t\tvar activeAvailability = null;\n\t\t/* loop find matching availability */\n\t\t_jquery2["default"].each($selectedFormatAvailabilities, function (i, availability) {\n\t\t\tif ($selectedLanguage === availability.language) {\n\t\t\t\tactiveAvailability = availability;\n\t\t\t}\n\t\t});\n\t\t/* reflect the availabilty values to other part on the page */\n\t\tthis.updateGlobalActiveObject(activeAvailability);\n\t\tthis.$el.find(".price--large").text(parseFloat(activeAvailability.listPrice).toFixed(2));\n\t\t(0, _jquery2["default"])("product-menu").find("[js-target=\'idp-product-id\']").text(activeAvailability.availabilityId);\n\t\tupdateBTaddToCartElement(activeAvailability);\n\t\tupdateSaveShareStreamElement(activeAvailability);\n\t},\n\taddProduct: function addProduct(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\t\t_modalBoxModalBox2["default"].activate((0, _jquery2["default"])("body")).render();\n\t\tthis.addProductToCart(this.addToCartAvailability).then(function (response) {\n\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t_addToCartAddToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: response.addToCartItems, itemAdded: true });\n\t\t\t(0, _jquery2["default"])("body").trigger("update:cart", response.cart);\n\t\t\t(0, _jquery2["default"])("body").trigger("add-to-cart:success", [response.cart, response.addToCartItems]);\n\t\t}, function (error) {\n\t\t\t_modalBoxModalBox2["default"].close();\n\t\t\t_addToCartAddToCartConfirmationAddToCartConfirmation2["default"].activate((0, _jquery2["default"])("body")).render({ items: error.addToCartItems, itemAdded: false });\n\t\t});\n\t},\n\n\t/* DIGITAL */\n\ttoggleDigital: function toggleDigital(availability) {\n\t\t/*reset checkbox */\n\t\tthis.$el.find("[js-target=\'copyright-checkbox\']").attr("checked", false);\n\t\tvar $digital = this.$el.find("[js-target=\'digital\']");\n\t\tvar $permission = this.$el.find("[js-target=\'permission\']");\n\t\tvar $copyPermissionQty = this.$el.find("[js-target=\'permission-quantity\']");\n\n\t\tif (availability.lineType.toUpperCase() !== "SHIP" && availability.lineType.toUpperCase() !== "EBOOK" && availability.lineType.toUpperCase() !== "BUNDLE" && availability.permissionsAvailable) {\n\t\t\t/* display */\n\t\t\t$copyPermissionQty.val(0);\n\t\t\t$digital.removeClass("do-not-show");\n\t\t} else {\n\t\t\t/* hide */\n\t\t\t$permission.addClass("is-hidden");\n\t\t\t$digital.addClass("do-not-show");\n\t\t\t$copyPermissionQty.val(0);\n\t\t}\n\t},\n\n\t/* SHIPPABLE */\n\ttoggleShippable: function toggleShippable(availability) {\n\t\tvar $shippable = this.$el.find("[js-target=\'shippable\']");\n\t\tvar $inputQty = this.$el.find("[js-target=\'shippable\'] [js-target=\'item-quantity\']");\n\t\tvar $volPricing = this.$el.find("[js-target=\'volume-pricing\']");\n\t\tvar $downloadable = (0, _jquery2["default"])("product-menu").find("[js-target=\'idp-product-downloadable\']");\n\t\tif (availability.lineType.toUpperCase() === "SHIP" || availability.lineType.toUpperCase() === "EBOOK" || availability.lineType.toUpperCase() === "BUNDLE") {\n\t\t\t/* display */\n\t\t\t$shippable.removeClass("is-hidden");\n\t\t\t$inputQty.removeClass("is-hidden");\n\t\t\tif (availability.isVolumePricingAvailable) {\n\t\t\t\t$volPricing.removeClass("is-hidden");\n\t\t\t}\n\t\t} else {\n\t\t\t/* hide */\n\t\t\t$inputQty.val(1);\n\t\t\t$shippable.addClass("is-hidden");\n\t\t\t$inputQty.addClass("is-hidden");\n\t\t\t$volPricing.addClass("is-hidden");\n\t\t}\n\t\tif (availability.lineType.toUpperCase() === "SHIP" || availability.lineType.toUpperCase() === "BUNDLE") {\n\t\t\t$downloadable.addClass("is-hidden");\n\t\t} else {\n\t\t\t$downloadable.removeClass("is-hidden");\n\t\t}\n\t},\n\t/**\n * function that will process all the necessary steps and\n * prepare the item to be added to the cart\n *\n * @param {object} cartEl - add-to-cart element\n *\n * @return {promise.object} promise returned for adding to cart\n */\n\taddProductToCart: function addProductToCart(cartAvailability) {\n\t\tvar dfd = new _jquery2["default"].Deferred();\n\t\tvar items = [];\n\t\tvar permQuantity = 0;\n\t\tvar itemQuantity = 0;\n\t\t/* assign all data properties to item object */\n\t\tvar item = cartAvailability;\n\t\t/* referral */\n\t\tvar referral = item.productUrl && item.productUrl.match(/\\?.*referral=(\\d+)/);\n\t\tif (referral && referral.length > 1) {\n\t\t\titem.referral = referral[1];\n\t\t}\n\t\t/* digital, ship,ebook */\n\t\tif (!item.type && item.productId) {\n\t\t\titem.type = _servicesShoppingCartUtils2["default"].getProductType(item.productId);\n\t\t}\n\t\tif (item.type.toUpperCase() !== "SHIP" && item.type.toUpperCase() !== "EBOOK" && item.type.toUpperCase() !== "BUNDLE") {\n\t\t\tvar $permissionQuantityEl = this.$el.find("[js-target=\'permission-quantity\']");\n\t\t\tif ($permissionQuantityEl.length > 0 && $permissionQuantityEl.is(":visible") && $permissionQuantityEl.val() > 0) {\n\t\t\t\titemQuantity = 1;\n\t\t\t\tpermQuantity = parseInt($permissionQuantityEl.val(), 10);\n\t\t\t\tvar permItem = (0, _lodashAmdModernObjectsClone2["default"])(item, true);\n\t\t\t\tpermItem = (0, _lodashAmdModernObjectsAssign2["default"])(permItem, { type: "Perm", quantity: permQuantity });\n\t\t\t\titems.push(permItem);\n\t\t\t} else if (!$permissionQuantityEl.is(":visible")) {\n\t\t\t\titemQuantity = 1;\n\t\t\t}\n\t\t} else {\n\t\t\tvar $itemQuantityEl = this.$el.find("[js-target=\'item-quantity\']");\n\t\t\tif ($itemQuantityEl.length > 0 && $itemQuantityEl.is(":visible") && $itemQuantityEl.val() > 0) {\n\t\t\t\titemQuantity = parseInt($itemQuantityEl.val(), 10);\n\t\t\t}\n\t\t}\n\n\t\t/* add item */\n\t\tif (itemQuantity > 0) {\n\t\t\titem.quantity = itemQuantity;\n\t\t\titems.push(item);\n\t\t}\n\n\t\tif (items.length > 0) {\n\t\t\t_servicesCart2["default"].addToCart(items).then(function (response) {\n\t\t\t\tresponse.addToCartItems = items;\n\t\t\t\tdfd.resolve(response);\n\t\t\t}, function (response) {\n\t\t\t\tresponse.addToCartItems = items;\n\t\t\t\tdfd.reject(response);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.log("Error:Unable to identify item count or permission count.");\n\t\t}\n\t\treturn dfd;\n\t},\n\n\tmarkSelectedFormat: function markSelectedFormat(targetComponent) {\n\t\t/* marke all as false(reset) */\n\t\tvar $formats = (0, _jquery2["default"])("product-availabilities").find("[js-target=\'availability-format\']>span");\n\t\t_jquery2["default"].each($formats, function (i, mSpan) {\n\t\t\t(0, _jquery2["default"])(mSpan).attr("data-format-selected", "false");\n\t\t});\n\t\t/* mark target as selected */\n\t\ttargetComponent.attr("data-format-selected", "true");\n\t}\n};\n\n/** All AVAIL. **/\nvar getAllAvailabilities = function getAllAvailabilities() {\n\tvar $relatedLanguages = (0, _jquery2["default"])("product-availabilities").find("[js-target=\'format-language\']");\n\tvar $data = $relatedLanguages.attr("data-availabilities");\n\tvar $parsedJSON = JSON.parse($data);\n\treturn $parsedJSON;\n};\n\nvar updateBTaddToCartElement = function updateBTaddToCartElement(selectedAvailability) {\n\t/* update better together cart component */\n\tvar BTaddToCartItems = (0, _jquery2["default"])("body").find("add-to-cart[data-group-name=\'better-together\']");\n\tvar BTfirstAddToCart = (0, _jquery2["default"])(BTaddToCartItems[0]);\n\tvar url = BTfirstAddToCart.data("productUrl").split("/");\n\tBTfirstAddToCart.attr("data-product-price", selectedAvailability.listPrice);\n\tBTfirstAddToCart.attr("data-product-id", selectedAvailability.availabilityId);\n\tBTfirstAddToCart.attr("data-product-url", "/product/" + url[2] + "/" + selectedAvailability.availabilityId);\n\tBTfirstAddToCart.attr("data-type", _servicesShoppingCartUtils2["default"].getProductType(selectedAvailability.availabilityId));\n\tBTfirstAddToCart.attr("data-format", selectedAvailability.format);\n\tBTfirstAddToCart.attr("data-product-availability-status", selectedAvailability.status);\n\t/* update BT first content format */\n\tvar btFormatElement = (0, _jquery2["default"])("body").find("[js-target=\'bt-content-format\']");\n\t(0, _jquery2["default"])(btFormatElement[0]).html(selectedAvailability.format);\n\tupdateBTGroupPrice();\n};\n\nvar updateBTGroupPrice = function updateBTGroupPrice() {\n\tvar totalPrice = 0;\n\tvar btCheckElems = (0, _jquery2["default"])("[js-target=\'checkbox-better-together\']");\n\tif (btCheckElems) {\n\t\tbtCheckElems.each(function (i, element) {\n\t\t\tif ((0, _jquery2["default"])(element).is(":checked")) {\n\t\t\t\tvar itemPrice = parseFloat((0, _jquery2["default"])(element).closest("add-to-cart").data("product-price"));\n\t\t\t\ttotalPrice += itemPrice;\n\t\t\t}\n\t\t});\n\t}\n\t(0, _jquery2["default"])("[js-target=\'price-better-together\']").html(totalPrice.toFixed(2));\n};\n\nvar updateSaveShareStreamElement = function updateSaveShareStreamElement(selectedAvailability) {\n\tvar StreamItems = (0, _jquery2["default"])("[js-target=\'save-share\']");\n\tvar url = (0, _jquery2["default"])(StreamItems[0]).data("url").split("/");\n\t_jquery2["default"].each(StreamItems, function (i, StreamItem) {\n\t\t(0, _jquery2["default"])(StreamItem).attr("data-id", selectedAvailability.availabilityId);\n\t\t(0, _jquery2["default"])(StreamItem).attr("data-url", "/product/" + url[2] + "/" + selectedAvailability.availabilityId);\n\t});\n};\n\n(0, _mixinsComponent2["default"])(ProductAvailabilities, "product-availabilities");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/product-availabilities/product-availabilities.js\n ** module id = 428\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/product-availabilities/product-availabilities.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ProductCarousel;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\n__webpack_require__(104);\n\n// The component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n/**\n * Represents a slick slide carousel component.\n *\n * @public\n * @param {Object} $el - A jQuery object representing the component.\n */\n\nfunction ProductCarousel($el) {\n\tthis.initializeAsComponent($el);\n\n\t$el.slick({\n\t\tarrows: false,\n\t\tautoplay: false,\n\t\tdots: true,\n\t\tinfinite: true,\n\t\tspeed: 300,\n\t\tslidesToShow: 1,\n\t\tslidesToScroll: 1\n\t});\n}\n\n// Here you register the Component to be decorated.\n(0, _mixinsComponent2["default"])(ProductCarousel, "product-carousel");\n\n// Export the constructor so that it may be initialized elsewhere.\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/product-carousel/product-carousel.js\n ** module id = 429\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/product-carousel/product-carousel.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ProductMenu;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction ProductMenu($el) {\n\tthis.initializeAsComponent($el);\n}\n\nProductMenu.prototype = {\n\tevents: {\n\t\t"click [js-target=\'product-menu-item__header\']": "showProductItem"\n\t},\n\n\tshowProductItem: function showProductItem(ev) {\n\t\tif (this.$(ev.currentTarget).parent().children("div.product-menu-item__content").height() > 0) {\n\t\t\tthis.$(ev.currentTarget).parent().removeClass("expand-for-large");\n\t\t\tthis.$(ev.currentTarget).parent().addClass("product-menu-item--show");\n\t\t\tthis.$(ev.currentTarget).parent().toggleClass("product-menu-item--hide");\n\t\t} else {\n\t\t\tthis.$(ev.currentTarget).parent().removeClass("product-menu-item--hide");\n\t\t\tthis.$(ev.currentTarget).parent().addClass("product-menu-item--show");\n\t\t}\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ProductMenu, "product-menu");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/product-menu/product-menu.js\n ** module id = 430\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/product-menu/product-menu.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ShowMore;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction ShowMore($el) {\n\tthis.initializeAsComponent($el);\n}\n\nShowMore.prototype = {\n\tevents: {\n\t\t"click [js-target=\'show\']": "showMore"\n\t},\n\tshowMore: function showMore(ev) {\n\t\tev.preventDefault();\n\t\tthis.$("[js-target=\'more\']").removeClass("hide-small");\n\t\t(0, _jquery2["default"])(ev.target).remove();\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ShowMore, "show-more");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/show-more/show-more.js\n ** module id = 431\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/show-more/show-more.js?')},function(module,exports,__webpack_require__){eval('/**\n * @module components/stream-section/stream-content/stream-content\n * @requires module:mixins/component\n * @requires module:components/stream-section/stream-list/stream-list\n */\n\n// Component mixin.\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = StreamContent;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// Stream list component.\n\nvar _streamListStreamList = __webpack_require__(280);\n\nvar _streamListStreamList2 = _interopRequireDefault(_streamListStreamList);\n\n/**\n * Represents a StreamContent component.\n *\n * @constructor\n * @public\n */\n\nfunction StreamContent($el) {\n\tthis.initializeAsComponent($el);\n\tvar $streamList = this.$streamList = _streamListStreamList2["default"].activateAll($el);\n\n\tfunction updateFolderInfo(data) {\n\t\t$el.find("[js-target=\'folder-description\']").html(data.id === "all" ? "" : "<strong>" + data.name + "</strong> " + data.description);\n\t}\n\n\t$el.on("change:stream", function (ev, data) {\n\t\tvar streamParam = "";\n\t\tif (data.streamParam) {\n\t\t\tstreamParam = data.streamParam;\n\t\t}\n\t\t$streamList.data("component").change(data.streamEndpoint, streamParam);\n\t\tupdateFolderInfo(data);\n\t});\n\t$el.on("tab-bar:change", function (ev, data) {\n\t\t$streamList.data("component").change((0, _jquery2["default"])(ev.target).data("stream-endpoint"));\n\t});\n\t$el.on("topic-menu:change", function (ev, data) {\n\t\t$streamList.data("topic-name", data.name ? data.name : "Everything");\n\t\t$streamList.data("component").change("components/myhbr/following", data.dimension === "all" ? null : "filter=" + data.dimension);\n\t});\n}\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(StreamContent, "stream-content");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/stream-section/stream-content/stream-content.js\n ** module id = 432\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-content/stream-content.js?')},function(module,exports,__webpack_require__){eval('/**\n * @module components/stream-section/stream-section\n * @requires module:jquery\n * @requires module:mixins/component\n * @requires module:services/stream\n */\n\n// Component mixin.\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = StreamSection;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// Internal related components.\n\nvar _tabBarTabBar = __webpack_require__(434);\n\nvar _tabBarTabBar2 = _interopRequireDefault(_tabBarTabBar);\n\nvar _streamContentStreamContent = __webpack_require__(432);\n\nvar _streamContentStreamContent2 = _interopRequireDefault(_streamContentStreamContent);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n/**\n * Represents a StreamSection component.\n *\n * @constructor\n * @public\n */\n\nfunction StreamSection($el) {\n\tthis.initializeAsComponent($el);\n\n\t_tabBarTabBar2["default"].activateAll($el);\n\tthis.$streamContent = _streamContentStreamContent2["default"].activateAll($el);\n}\n\nStreamSection.prototype = {\n\tevents: {\n\t\t"tab-bar:change [js-stream-section=\'chooser\']": "toggleStream"\n\t},\n\n\ttoggleStream: function toggleStream(ev) {\n\t\tvar target = this.$("stream-content[data-stream-name=\'" + (0, _jquery2["default"])(ev.target).data("stream-name") + "\']");\n\t\tthis.$streamContent.not(target).removeClass("active");\n\t\ttarget.addClass("active").find("stream-list").trigger("request:placement");\n\t}\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(StreamSection, "stream-section");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/stream-section/stream-section.js\n ** module id = 433\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-section.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = TabBar;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _lodashAmdModernFunctionsThrottle = __webpack_require__(65);\n\nvar _lodashAmdModernFunctionsThrottle2 = _interopRequireDefault(_lodashAmdModernFunctionsThrottle);\n\nvar _folderListFolderList = __webpack_require__(108);\n\nvar _folderListFolderList2 = _interopRequireDefault(_folderListFolderList);\n\nvar _topicMenuTopicMenu = __webpack_require__(418);\n\nvar _topicMenuTopicMenu2 = _interopRequireDefault(_topicMenuTopicMenu);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nfunction TabBar($el) {\n\tthis.initializeAsComponent($el);\n}\n\nTabBar.prototype = {\n\tevents: {\n\t\t"click [js-target=\'tab\']": "selectTab",\n\t\t"click [js-target=\'tab-opener\']": "openTabs"\n\t},\n\n\tselectTab: function selectTab(ev) {\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\n\t\tvar tabname = (0, _jquery2["default"])(ev.currentTarget).attr("data-stream-name"),\n\t\t tabs = (0, _jquery2["default"])("[js-target=\'tabs\']");\n\t\tif (tabs.attr("state-path")) {\n\t\t\tif (tabs.attr("state-pop")) {\n\t\t\t\ttabs.attr("state-pop", "");\n\t\t\t} else {\n\t\t\t\tif (tabname) {\n\t\t\t\t\twindow.history.pushState({ name: tabname }, tabname, tabs.attr("state-path") + tabname);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (tabname === tabs.attr("folderlist-tab-name")) {\n\t\t\t_folderListFolderList2["default"].updateOnToggleTab();\n\t\t} else if (tabname === "topics") {\n\t\t\t_topicMenuTopicMenu2["default"].updateOnToggleTab();\n\t\t}\n\n\t\tthis.$("[js-target=\'tab\']").not(ev.currentTarget).removeClass("active");\n\t\tthis.$(ev.currentTarget).addClass("active");\n\t\tthis.$("[js-target=\'tab-opener-text\']").html((0, _jquery2["default"])(ev.currentTarget).text());\n\t\tthis.$el.removeClass("open");\n\t\t(0, _jquery2["default"])(ev.currentTarget).trigger("tab-bar:change");\n\t},\n\n\topenTabs: function openTabs(ev) {\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\n\t\tthis.$el.toggleClass("open");\n\t}\n};\n\n(0, _jquery2["default"])(window).on("scroll", (0, _lodashAmdModernFunctionsThrottle2["default"])(function () {\n\t(0, _jquery2["default"])("tab-bar").removeClass("open");\n}, 500));\n\n(0, _mixinsComponent2["default"])(TabBar, "tab-bar");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/tab-bar/tab-bar.js\n ** module id = 434\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/tab-bar/tab-bar.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar _reduxReduxStateRR_State = __webpack_require__(266);\n\nvar Handler = (function () {\n\tfunction Handler() {\n\t\t_classCallCheck(this, Handler);\n\t}\n\n\t_createClass(Handler, [{\n\t\tkey: "checking",\n\t\tvalue: function checking(data) {\n\t\t\tthis.data = data;\n\t\t\tthis.message = "Please refer to https://developer.richrelevance.com/Integration/Debugging_and_Validation/0030_Checking_Page_Parameters";\n\t\t\ttry {\n\t\t\t\tif (typeof this.data === "undefined") throw "HBR Redux Warning: Data is Undefinded\\n" + this.message + " for more info";\n\t\t\t\tif (typeof this.data === null) throw "HBR Redux Warning: Data is Null\\n" + this.message + " for more info";\n\t\t\t\tif (this.data.length === 0) throw "HBR Redux Warning: Data is Empty\\n" + this.message + "for more info";\n\t\t\t\t_reduxReduxStateRR_State.mapState.RRdispatch(this.data);\n\t\t\t\treturn true;\n\t\t\t} catch (err) {\n\t\t\t\treturn console.warn(err);\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn Handler;\n})();\n\nexports["default"] = Handler;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/HandlingData/Handler.js\n ** module id = 435\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/HandlingData/Handler.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _localstorageUtil = __webpack_require__(25);\n\nvar _localstorageUtil2 = _interopRequireDefault(_localstorageUtil);\n\nvar _state = __webpack_require__(11);\n\nvar _state2 = _interopRequireDefault(_state);\n\nvar _lodashAmdModernCollectionsContains = __webpack_require__(41);\n\nvar _lodashAmdModernCollectionsContains2 = _interopRequireDefault(_lodashAmdModernCollectionsContains);\n\nvar articlePathExpression = new RegExp("^\\/[0-9]{4}\\/[0-9]{2}\\/[a-zA-Z0-9\\-]+(.*)$");\n\nexports.evaluate = function () {\n\tvar promise = _jquery2["default"].Deferred();\n\n\t/* get the current page */\n\tvar page = window.location.pathname;\n\tvar messages = _localstorageUtil2["default"].getCache("help-messages") || { seen: [] };\n\n\t/* determine which rules apply */\n\tif (articlePathExpression.test(page)) {\n\t\t/* if not first-time visitor, get the user details before continuing */\n\t\tif (_state2["default"].current.indexOf("guest") !== 0) {\n\t\t\t_modelsUser2["default"].fetch().then(function (data) {\n\t\t\t\tvar createdDate = new Date(data.createdDate);\n\t\t\t\tvar now = new Date();\n\t\t\t\tif (createdDate.getDay() === now.getDay() && createdDate.getYear() === now.getYear() && createdDate.getMonth() === now.getMonth()) {\n\t\t\t\t\t/* use was created today, my library applies */\n\t\t\t\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "my-library")) {\n\t\t\t\t\t\tresolve("my-library", promise);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "article-saves")) {\n\t\t\t\t\t\tresolve("article-saves", promise);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else if (page === "/") {\n\t\t/* if not first-time visitor, get the user details before continuing */\n\t\tif (_state2["default"].current.indexOf("guest") !== 0) {\n\t\t\t_modelsUser2["default"].fetch().then(function (data) {\n\t\t\t\tvar createdDate = new Date(data.createdDate);\n\t\t\t\tvar now = new Date();\n\t\t\t\tif (createdDate.getDay() === now.getDay() && createdDate.getYear() === now.getYear() && createdDate.getMonth() === now.getMonth()) {\n\t\t\t\t\t/* use was created today, my library applies */\n\t\t\t\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "my-library")) {\n\t\t\t\t\t\tresolve("my-library", promise);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else if (page === "/my-library" && (0, _jquery2["default"])("meta[name=shopper-attributes]").attr("content").indexOf("job-title") < 0) {\n\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "firmographics")) {\n\t\t\tresolve("firmographics", promise);\n\t\t}\n\t} else if (page === "/order/thank-you" && _state2["default"].current.indexOf("guest") !== 0) {\n\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "my-library")) {\n\t\t\tresolve("my-library", promise);\n\t\t}\n\t} else if (page === "/search" && _state2["default"].current.indexOf("subscriber") === 0) {\n\t\tif (!(0, _lodashAmdModernCollectionsContains2["default"])(messages.seen, "subscriber-search")) {\n\t\t\tresolve("subscriber-search", promise);\n\t\t}\n\t}\n\treturn promise;\n};\n\n/**\n * function that resolves the promise with the help message\n * provided\n *\n * @param {string} message - help message\n * @param {object} promise - promise to resolve with the help message\n */\nvar resolve = function resolve(message, promise) {\n\t/* retrive the list of help messages already seen from local storage */\n\tvar messages = _localstorageUtil2["default"].getCache("help-messages") || { seen: [] };\n\tif (message !== null) {\n\t\tmessages.seen.push(message);\n\t\t_localstorageUtil2["default"].setCache("help-messages", messages);\n\t\tpromise.resolve(message);\n\t} else {\n\t\tpromise.resolve();\n\t}\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/help-boxes.js\n ** module id = 436\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/hbr/help-boxes.js?')},function(module,exports){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) {\n\tfor (var i = 1; i < arguments.length; i++) {\n\t\tvar source = arguments[i];for (var key in source) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t}\n\t\t}\n\t}return target;\n};\n\nexports["default"] = reducer;\nfunction reducer() {\n\tvar state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n\t\tdata: [],\n\t\tfetching: false,\n\t\tfetched: false,\n\t\terror: null\n\t};\n\tvar action = arguments[1];\n\n\tswitch (action.type) {\n\t\tcase "FETCH_RR_REJECTED":\n\t\t\treturn _extends({}, state, { error: action.payload });\n\t\tcase "FETCH_RR_FULFILLED":\n\t\t\treturn _extends({}, state, { data: action.payload });\n\t}\n\n\treturn state;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/redux/reducers/RR_Reducer.js\n ** module id = 437\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/redux/reducers/RR_Reducer.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _redux = __webpack_require__(269);\n\nvar _RR_Reducer = __webpack_require__(437);\n\nvar _RR_Reducer2 = _interopRequireDefault(_RR_Reducer);\n\nexports["default"] = (0, _redux.combineReducers)({\n\tRRreducer: _RR_Reducer2["default"]\n});\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/redux/reducers/index.js\n ** module id = 438\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/redux/reducers/index.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _redux = __webpack_require__(269);\n\nvar _reducersIndex = __webpack_require__(438);\n\nvar _reducersIndex2 = _interopRequireDefault(_reducersIndex);\n\nvar store = (0, _redux.createStore)(_reducersIndex2["default"], window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n\nexports["default"] = store;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/redux/store.js\n ** module id = 439\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/redux/store.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar hbrSmoothScroll = function hbrSmoothScroll() {\n\tif (location.pathname.replace(/^\\//, "") === this.pathname.replace(/^\\//, "") && location.hostname === this.hostname) {\n\t\t//Try-catch block to handle exception from jquery if there are any invalid characters in hash.\n\t\ttry {\n\t\t\tvar target = (0, _jquery2["default"])(this.hash);\n\t\t\ttarget = target.length ? target : (0, _jquery2["default"])("[name=" + this.hash.slice(1) + "]");\n\t\t\tif (target.length) {\n\t\t\t\t(0, _jquery2["default"])("html,body").animate({\n\t\t\t\t\tscrollTop: target.offset().top\n\t\t\t\t}, 1000);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t//This will be reached if hash contains invalid characters.\n\t\t}\n\t}\n};\n\n(0, _jquery2["default"])("a[href*=#]:not([href=#])").on("click", hbrSmoothScroll);\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/smooth-scrolling.js\n ** module id = 440\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/smooth-scrolling.js?')},function(module,exports,__webpack_require__){eval('/**\n * @module services/stream\n * @requires module:jquery\n * @requires module:common\n * @requires module:mixins/events\n */\n\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _common = __webpack_require__(8);\n\nvar _common2 = _interopRequireDefault(_common);\n\n/**\n * loadMore\n *\n * @param {string} endpoint - The url of stream feed to load.\n * @param {Object} page - Page number and result size to load from.\n * @param {string} query - optional query string param(s)\n * @return {object} A promise that when the stream completes.\n */\nexports.loadMore = function (endpoint, page, query) {\n return _jquery2["default"].getJSON(_common2["default"].API + endpoint + "/" + page.number + "/" + page.size + "?format=json" + (query ? "&" + query : ""));\n};\n\n/**\n * cloneAd\n * Copies the existing ad from a li and papaste it into newly created li\n *\n * @param {Object} streamList - Stremalist with original ad, as well as copy target\n */\nexports.cloneAd = function (streamList) {\n if (streamList.data() && streamList.data().adsEnabled) {\n var originalAd = streamList.find("li[js-target=\'stream-ad-container\']");\n var adHtml = originalAd[0].innerHTML;\n var adTarget = streamList.find("li[js-target=\'stream-ad-more\']");\n adTarget.html(adHtml);\n adTarget.removeClass("is-hidden");\n }\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/stream.js\n ** module id = 441\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/services/stream.js?')},function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(jQuery) {"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t(0, _jquery2["default"])("body").on("add-to-cart:success", setAddToCartInfo);\n\t(0, _jquery2["default"])("body").on("remove-from-cart:success", setRemoveFromCartInfo);\n\t(0, _jquery2["default"])("body").on("remove-from-cart:success", setShoppingCartInfo);\n\t(0, _jquery2["default"])("body").on("update:digital-data-cart", setShoppingCartInfo);\n\t(0, _jquery2["default"])("body").on("mini-cart-interaction", setMiniCartInfo);\n\t(0, _jquery2["default"])("body").on("update:digital-data-cart-totals", updateCartTotals);\n\n\t/**\n * Set digital data for each item added to cart.\n *\n * @param {object} ev - Event object.\n * @param {object} cartObject - Cart object received from server.\n * @param {object} itemsAdded - Element data of product added to cart.\n */\n\tfunction setAddToCartInfo(ev, cartObject, itemsAdded) {\n\t\tif (window.digitalData && cartObject && itemsAdded) {\n\t\t\tsetCartPageInfo(cartObject);\n\n\t\t\t// empty existing items\n\t\t\twindow.digitalData.cart.addItem = [];\n\n\t\t\t// add new cart items\n\t\t\t_jquery2["default"].each(itemsAdded, function (index, itemAdded) {\n\t\t\t\tsetCartDetails(cartObject, itemAdded);\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n * Set digital data page information related to cart operation.\n *\n * @param {object} cartObject - Cart object received from server.\n */\n\n\tfunction setCartPageInfo(cartObject) {\n\t\t// set page name and type\n\t\tif (window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\twindow.digitalData.page.pageInfo.pageName = "Add to Cart Modal";\n\t\t\twindow.digitalData.page.pageInfo.pageType = "Modal";\n\t\t}\n\n\t\t// set event info\n\t\tvar eventInfo = {};\n\t\teventInfo.eventName = "Cart Interaction";\n\t\teventInfo.eventAction = "Add to Cart";\n\t\tvar event = {};\n\t\tevent.eventInfo = eventInfo;\n\t\twindow.digitalData.event = [];\n\t\twindow.digitalData.event.push(event);\n\n\t\t// create cart\n\t\tif (!window.digitalData.cart) {\n\t\t\twindow.digitalData.cart = {};\n\t\t}\n\t\twindow.digitalData.cart.cartID = cartObject.id;\n\t}\n\n\t/**\n * Set cart information to digital data.\n *\n * @param {object} cartObject - Cart object received from server.\n * @param {object} itemAdded - Element data of product added to cart.\n */\n\tfunction setCartDetails(cartObject, itemAdded) {\n\t\t// get lineitem for the product added\n\t\tvar lineItemInfo;\n\t\t_jquery2["default"].each(cartObject.items, function (index, lineItem) {\n\t\t\tif (lineItem.productId.toLowerCase() === itemAdded.productId.toLowerCase() && lineItem.lineType) {\n\t\t\t\tif (lineItem.lineType.toLowerCase() === itemAdded.type.toLowerCase()) {\n\t\t\t\t\tlineItemInfo = lineItem;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (lineItemInfo) {\n\t\t\t// create product info\n\t\t\tvar productInfo = getProductInfo(lineItemInfo);\n\n\t\t\t// get addition source attribute\n\t\t\tvar additionSource = getAdditionSource(itemAdded);\n\n\t\t\t// create new cart item to be added in digital data\n\t\t\tvar newCartItem = createNewCartItem(additionSource, productInfo, lineItemInfo);\n\n\t\t\t// add the new cart item to digital data\n\t\t\twindow.digitalData.cart.addItem.push(newCartItem);\n\t\t}\n\t}\n\n\t/**\n * Create new cart item containing required attributes for digital data.\n *\n * @param {object} additionSource - Contains value of where the customer is adding the product to cart from.\n * @param {object} productInfo - Contains required attributes for digital data.\n * @param {object} lineItemInfo - Product information received from server.\n */\n\tfunction createNewCartItem(additionSource, productInfo, lineItemInfo) {\n\t\tvar attributes = {};\n\t\tattributes.additionSource = additionSource;\n\t\tvar newCartItem = {};\n\t\tnewCartItem.productInfo = productInfo;\n\t\tnewCartItem.attributes = attributes;\n\t\tnewCartItem.quantity = {};\n\t\tnewCartItem.quantity.productQuantity = lineItemInfo.quantity;\n\t\tnewCartItem.price = {};\n\t\tnewCartItem.price.basePrice = lineItemInfo.unitPrice;\n\t\tif (lineItemInfo.product) {\n\t\t\tnewCartItem.category = {};\n\t\t\tnewCartItem.category.primaryCategory = lineItemInfo.product.marketingCategory;\n\t\t\tnewCartItem.category.subCategory = lineItemInfo.product.primaryCategory;\n\t\t}\n\t\treturn newCartItem;\n\t}\n\n\t/**\n * Create product information to be added to digital data.\n *\n * @param {object} lineItemInfo - Information of the product added to cart.\n */\n\tfunction getProductInfo(shoppingCartItem) {\n\t\tvar productInfo = {};\n\t\tif (shoppingCartItem.product) {\n\t\t\tif (shoppingCartItem.product.availabilities && shoppingCartItem.product.availabilities[0]) {\n\t\t\t\tproductInfo.productID = shoppingCartItem.product.availabilities[0].productId;\n\t\t\t}\n\t\t\tproductInfo.productKind = getLineType(shoppingCartItem.lineType);\n\t\t\tproductInfo.type = shoppingCartItem.product.contentType;\n\t\t\tproductInfo.language = shoppingCartItem.product.language;\n\t\t}\n\t\tproductInfo.productSKU = shoppingCartItem.productId;\n\t\tproductInfo.productName = shoppingCartItem.title;\n\t\tproductInfo.format = shoppingCartItem.format;\n\t\treturn productInfo;\n\t}\n\n\t/**\n * Finds out where the customer is adding the product to cart from.\n *\n * @param {object} itemAdded - Element data of product added to cart.\n */\n\tfunction getAdditionSource(itemAdded) {\n\t\tvar addToCartElement = itemAdded.component.$el;\n\n\t\t// check for overlay cross sells\n\t\tvar overlayConfirmation = (0, _jquery2["default"])(addToCartElement).closest("add-to-cart-confirmation");\n\t\tif (overlayConfirmation.length > 0) {\n\t\t\treturn "Add to Cart Overlay Cross Sells";\n\t\t}\n\n\t\t// check for my library\n\t\tif (location.pathname.indexOf("/my-library") >= 0) {\n\t\t\treturn "My Library";\n\t\t}\n\n\t\t// check for store category page\n\t\tif (/store\\/([a-zA-Z]+)/.test(location.pathname)) {\n\t\t\treturn "Category Page";\n\t\t}\n\n\t\t// check for store page\n\t\tvar personalizationPlacement;\n\t\tif (location.pathname.indexOf("/store") >= 0) {\n\t\t\t// check for personalization placement top carousel\n\t\t\tpersonalizationPlacement = (0, _jquery2["default"])(addToCartElement).closest("personalization-placement");\n\t\t\tif (personalizationPlacement.length > 0) {\n\t\t\t\tif (personalizationPlacement.data("placement-id") && personalizationPlacement.data("placement-id").indexOf("top_carousel") >= 0) {\n\t\t\t\t\treturn "Top Carousel";\n\t\t\t\t}\n\t\t\t}\n\t\t\t// check for store page stream lists\n\t\t\tvar streamListComponent = (0, _jquery2["default"])(addToCartElement).closest("stream-list");\n\t\t\tif (streamListComponent.length > 0) {\n\t\t\t\tvar endpoint = streamListComponent.attr("data-stream-endpoint");\n\t\t\t\tif (endpoint) {\n\t\t\t\t\tif (endpoint.indexOf("home_page.store_classics") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Classics";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store_must_read") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Must Read";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store_for_you") >= 0) {\n\t\t\t\t\t\treturn "Top Products - For You";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Top This Month";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check for product detail page\n\t\tif (location.pathname.indexOf("/product/") >= 0) {\n\t\t\t// check for personalization placement product cross sells\n\t\t\tpersonalizationPlacement = (0, _jquery2["default"])(addToCartElement).closest("personalization-placement");\n\t\t\tif (personalizationPlacement.length > 0) {\n\t\t\t\tif (personalizationPlacement.data("placement-id") && personalizationPlacement.data("placement-id") === "rr1") {\n\t\t\t\t\treturn "Product Cross Sells";\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn "Product Detail Page";\n\t\t}\n\n\t\treturn "Landing Page";\n\t}\n\n\t/**\n * Set digital data for each item removed from cart.\n * @param {object} ev - Event object.\n * @param {object} itemRemoved - Element data of product removed from cart.\n */\n\tfunction setRemoveFromCartInfo(ev, cartData) {\n\t\tif (window.digitalData) {\n\t\t\t// set event info\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Cart Interaction";\n\t\t\teventInfo.eventAction = "Remove from Cart";\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\n\t\t\t// set cart id\n\t\t\tif (!window.digitalData.cart) {\n\t\t\t\twindow.digitalData.cart = {};\n\t\t\t}\n\t\t\tvar itemRemoved = cartData.itemRemoved;\n\t\t\twindow.digitalData.cart.cartID = itemRemoved.cartId;\n\n\t\t\t// create product info\n\t\t\tvar productInfo = {};\n\t\t\tproductInfo.productId = itemRemoved.productCoreId;\n\t\t\tproductInfo.productKind = itemRemoved.type;\n\t\t\tproductInfo.format = itemRemoved.productFormat;\n\t\t\tproductInfo.language = itemRemoved.productLanguage;\n\t\t\tproductInfo.productSKU = itemRemoved.productId;\n\t\t\tproductInfo.productName = itemRemoved.productName;\n\t\t\tproductInfo.type = itemRemoved.productContentType;\n\n\t\t\t// create cart item information for the removed item\n\t\t\tvar removedCartItem = {};\n\t\t\tremovedCartItem.productInfo = productInfo;\n\t\t\tremovedCartItem.quantity = {};\n\t\t\tremovedCartItem.quantity.productQuantity = itemRemoved.quantity;\n\t\t\tremovedCartItem.price = {};\n\t\t\tremovedCartItem.price.basePrice = itemRemoved.unitPrice;\n\t\t\tremovedCartItem.category = {};\n\t\t\tremovedCartItem.category.primaryCategory = itemRemoved.productMarketingCategory;\n\t\t\tremovedCartItem.category.subCategory = itemRemoved.productPrimaryCategory;\n\n\t\t\t// add the removed cart item to digital data\n\t\t\tif (!window.digitalData.cart.removeItem) {\n\t\t\t\twindow.digitalData.cart.removeItem = [];\n\t\t\t}\n\t\t\twindow.digitalData.cart.removeItem[0] = removedCartItem;\n\t\t}\n\t}\n\n\t/**\n * Set shopping cart digital data.\n * @param {object} ev - Event object.\n * @param {object} shoppingCartData - Shopping cart data.\n */\n\tfunction setShoppingCartInfo(ev, shoppingCartData) {\n\t\tif (window.digitalData && window.digitalData.cart && shoppingCartData && shoppingCartData.cart) {\n\t\t\tvar shoppingCart = shoppingCartData.cart;\n\t\t\tvar digitalDataCartObj = window.digitalData.cart;\n\t\t\tif (!digitalDataCartObj.item) {\n\t\t\t\tdigitalDataCartObj.item = [];\n\t\t\t}\n\t\t\t// update cart items\n\t\t\tif (shoppingCart.items && shoppingCart.items.length > 0) {\n\t\t\t\t// check if new item is added\n\t\t\t\taddNewItems(digitalDataCartObj, shoppingCart);\n\n\t\t\t\t// update existing items\n\t\t\t\tupdateExistingItems(digitalDataCartObj, shoppingCart);\n\n\t\t\t\t// remove the null items from cart\n\t\t\t\tdigitalDataCartObj.item = jQuery.grep(digitalDataCartObj.item, function (value) {\n\t\t\t\t\treturn value != null;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// remove all items from digital data\n\t\t\t\tdigitalDataCartObj.item = [];\n\t\t\t}\n\n\t\t\t// set cart total\n\t\t\tupdateCartTotals(ev, shoppingCart);\n\n\t\t\t// set discount and cart promo\n\t\t\tvar discount = calculateDiscount(shoppingCart);\n\t\t\tdigitalDataCartObj.price.orderLevelPromoTotal = parseFloat(discount).toFixed(2);\n\t\t\tdigitalDataCartObj.price.discountTotal = parseFloat(discount).toFixed(2);\n\t\t\tdigitalDataCartObj.price.orderLevelPromoCode = shoppingCart.promo;\n\n\t\t\t// set shipping method\n\t\t\tif (shoppingCart.shippingMethod) {\n\t\t\t\tdigitalDataCartObj.attributes = {};\n\t\t\t\tdigitalDataCartObj.attributes.shippingMethod = shoppingCart.shippingMethod;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n * Calculate total discount applied to cart.\n * @param {object} shoppingCart - Shopping cart data.\n */\n\tfunction calculateDiscount(shoppingCart) {\n\t\tvar discount = 0;\n\t\t_jquery2["default"].each(shoppingCart.items, function (shoppingCartItemIndex, shoppingCartItem) {\n\t\t\tif (shoppingCartItem.listPrice && shoppingCartItem.unitPrice && shoppingCartItem.quantity) {\n\t\t\t\t// calculate discount\n\t\t\t\tdiscount += (shoppingCartItem.listPrice - shoppingCartItem.unitPrice) * shoppingCartItem.quantity;\n\t\t\t}\n\t\t});\n\t\treturn discount;\n\t}\n\n\t/**\n * Update existing cart items in digital data.\n * @param {object} digitalDataCartObj - Digital data cart object data.\n * @param {object} shoppingCart - Shopping cart data.\n */\n\tfunction updateExistingItems(digitalDataCartObj, shoppingCart) {\n\t\tif (digitalDataCartObj.item && digitalDataCartObj.item.length > 0) {\n\t\t\t_jquery2["default"].each(digitalDataCartObj.item, function (cartItemIndex, digitalDataCartItem) {\n\t\t\t\tvar itemFound = false;\n\t\t\t\tvar updatedItemInfo;\n\t\t\t\t_jquery2["default"].each(shoppingCart.items, function (shoppingCartItemIndex, shoppingCartItem) {\n\t\t\t\t\tif (digitalDataCartItem.productInfo.productSKU.toLowerCase() === shoppingCartItem.productId.toLowerCase()) {\n\t\t\t\t\t\tvar lineType = shoppingCartItem.lineType;\n\t\t\t\t\t\tif (!lineType) {\n\t\t\t\t\t\t\tlineType = shoppingCartItem.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (digitalDataCartItem.productInfo.productKind.toLowerCase() === getLineType(lineType).toLowerCase()) {\n\t\t\t\t\t\t\tupdatedItemInfo = shoppingCartItem;\n\t\t\t\t\t\t\titemFound = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (itemFound) {\n\t\t\t\t\t// set item quantity\n\t\t\t\t\tdigitalDataCartItem.quantity = {};\n\t\t\t\t\tdigitalDataCartItem.quantity.productQuantity = updatedItemInfo.quantity;\n\t\t\t\t\t// set item price\n\t\t\t\t\tif (updatedItemInfo.unitPrice) {\n\t\t\t\t\t\tdigitalDataCartItem.price.basePrice = parseFloat(updatedItemInfo.unitPrice).toFixed(2);\n\t\t\t\t\t\tif (updatedItemInfo.quantity) {\n\t\t\t\t\t\t\tdigitalDataCartItem.price.totalPrice = (updatedItemInfo.unitPrice * updatedItemInfo.quantity).toFixed(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// set item as null for removal\n\t\t\t\t\tdigitalDataCartObj.item[cartItemIndex] = null;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n * Check if any new cart item needs to be added into digital data.\n * @param {object} digitalDataCartObj - Digital data cart object data.\n * @param {object} shoppingCart - Shopping cart data.\n */\n\tfunction addNewItems(digitalDataCartObj, shoppingCart) {\n\t\t_jquery2["default"].each(shoppingCart.items, function (shoppingCartItemIndex, shoppingCartItem) {\n\t\t\tvar newItem = true;\n\t\t\tif (digitalDataCartObj.item && digitalDataCartObj.item.length > 0) {\n\t\t\t\t_jquery2["default"].each(digitalDataCartObj.item, function (cartItemIndex, digitalDataCartItem) {\n\t\t\t\t\tif (digitalDataCartItem.productInfo.productSKU.toLowerCase() === shoppingCartItem.productId.toLowerCase()) {\n\t\t\t\t\t\tvar lineType = shoppingCartItem.lineType;\n\t\t\t\t\t\tif (!lineType) {\n\t\t\t\t\t\t\tlineType = shoppingCartItem.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (digitalDataCartItem.productInfo.productKind.toLowerCase() === getLineType(lineType).toLowerCase()) {\n\t\t\t\t\t\t\tnewItem = false;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (newItem) {\n\t\t\t\taddItemToDigitalData(shoppingCartItem);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n * Update cart pricing details\n * @param {object} ev - Event object.\n * @param {object} shoppingCart - Shopping cart data.\n */\n\tfunction updateCartTotals(ev, shoppingCart) {\n\t\tif (window.digitalData && window.digitalData.cart && shoppingCart) {\n\t\t\tvar price = {};\n\t\t\tprice.basePrice = parseFloat(shoppingCart.subTotal).toFixed(2);\n\t\t\tprice.shipping = parseFloat(shoppingCart.shippingCost).toFixed(2);\n\t\t\tprice.taxAmount = parseFloat(shoppingCart.tax).toFixed(2);\n\t\t\tprice.cartTotal = parseFloat(shoppingCart.grandTotal).toFixed(2);\n\t\t\twindow.digitalData.cart.price = price;\n\t\t}\n\t}\n\n\t/**\n * Returns line type value for provided string.\n * @param {String} productLineType Line type of the cart item.\n */\n\tfunction getLineType(productLineType) {\n\t\tif (productLineType.toLowerCase() === "ship") {\n\t\t\treturn "Physical Product";\n\t\t} else if (productLineType.toLowerCase() === "perm") {\n\t\t\treturn "Copyright Permissions";\n\t\t} else {\n\t\t\treturn productLineType;\n\t\t}\n\t}\n\n\t/**\n * Add new item to digital data object.\n * @param {object} shoppingCartItem - Shopping cart item data.\n */\n\tfunction addItemToDigitalData(shoppingCartItem) {\n\t\tvar newCartItem = {};\n\t\tvar productInfo = {};\n\t\tvar attributes = {};\n\t\tif (shoppingCartItem.product) {\n\t\t\tif (shoppingCartItem.product.availabilities && shoppingCartItem.product.availabilities[0]) {\n\t\t\t\tproductInfo.productID = shoppingCartItem.product.availabilities[0].productId;\n\t\t\t}\n\t\t\tproductInfo.productKind = getLineType(shoppingCartItem.lineType);\n\t\t\tproductInfo.productURL = "/product/" + shoppingCartItem.product.seoTitle + "/" + shoppingCartItem.productId;\n\t\t\tproductInfo.productImage = shoppingCartItem.product.image;\n\t\t\tproductInfo.productThumbnail = shoppingCartItem.product.image;\n\t\t\tproductInfo.type = shoppingCartItem.product.contentType;\n\t\t\tproductInfo.language = shoppingCartItem.product.language;\n\n\t\t\t// set publication date\n\t\t\tif (shoppingCartItem.product.publicationDate) {\n\t\t\t\tvar publishedDate = new Date(shoppingCartItem.product.publicationDate);\n\t\t\t\tattributes.publicationDate = publishedDate.getFullYear() + "-" + ("0" + (publishedDate.getMonth() + 1)).slice(-2) + "-" + ("0" + publishedDate.getDate()).slice(-2);\n\t\t\t}\n\t\t\t// set authors\n\t\t\tvar authorsObject = shoppingCartItem.product.authors;\n\t\t\tif (authorsObject && authorsObject.length > 0) {\n\t\t\t\tattributes.primaryAuthor = authorsObject[0];\n\t\t\t\tif (authorsObject.length > 1) {\n\t\t\t\t\tvar authors = [];\n\t\t\t\t\t_jquery2["default"].each(authorsObject, function (index, author) {\n\t\t\t\t\t\tif (author.name.toLowerCase() !== attributes.primaryAuthor.toLowerCase()) {\n\t\t\t\t\t\t\tauthors += author;\n\t\t\t\t\t\t\tif (index < authorsObject.length - 1) {\n\t\t\t\t\t\t\t\tauthors += "|";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tattributes.author = authors;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// set categories\n\t\t\tvar categoriesObject = shoppingCartItem.product.categories;\n\t\t\tif (categoriesObject && categoriesObject.length > 0) {\n\t\t\t\tvar categories = "";\n\t\t\t\t_jquery2["default"].each(categoriesObject, function (index, category) {\n\t\t\t\t\tif (category.toLowerCase() !== shoppingCartItem.product.marketingCategory.toLowerCase()) {\n\t\t\t\t\t\tcategories += category;\n\t\t\t\t\t\tif (index < categoriesObject.length - 1) {\n\t\t\t\t\t\t\tcategories += "|";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tattributes.topic = categories;\n\t\t\t}\n\t\t\tnewCartItem.attributes = attributes;\n\t\t\t// set primary and sub category\n\t\t\tnewCartItem.category = {};\n\t\t\tnewCartItem.category.primaryCategory = shoppingCartItem.product.marketingCategory;\n\t\t\tnewCartItem.category.subCategory = shoppingCartItem.product.primaryCategory;\n\t\t}\n\t\tproductInfo.productSKU = shoppingCartItem.productId;\n\t\tproductInfo.productName = shoppingCartItem.title;\n\t\tproductInfo.format = shoppingCartItem.format;\n\t\tnewCartItem.productInfo = productInfo;\n\t\t// set item price\n\t\tnewCartItem.price = {};\n\t\tif (shoppingCartItem.unitPrice) {\n\t\t\tnewCartItem.price.basePrice = parseFloat(shoppingCartItem.unitPrice).toFixed(2);\n\t\t\tif (shoppingCartItem.quantity) {\n\t\t\t\tnewCartItem.price.totalPrice = (shoppingCartItem.unitPrice * shoppingCartItem.quantity).toFixed(2);\n\t\t\t}\n\t\t}\n\t\tnewCartItem.price.currency = "USD";\n\t\t// set quantity\n\t\tnewCartItem.quantity = {};\n\t\tnewCartItem.quantity.productQuantity = shoppingCartItem.quantity;\n\t\twindow.digitalData.cart.item.push(newCartItem);\n\t}\n\n\t/**\n * Set mini cart digital data.\n * @param {object} ev - Event object.\n * @param {object} cart - Shopping cart data.\n */\n\tfunction setMiniCartInfo(ev, cart) {\n\t\tif (window.digitalData) {\n\t\t\t// set page name and type to digital data\n\t\t\tif (window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\t\twindow.digitalData.page.pageInfo.pageName = "Mini Cart Modal";\n\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Modal";\n\t\t\t}\n\t\t\t// skip populating cart to digital data in case of shopping cart pages as the cart object is already set in digital data for these pages.\n\t\t\tif (location.pathname.indexOf("/shopping-cart") >= 0 || location.pathname.indexOf("/shipping-payment") >= 0 || location.pathname.indexOf("/review-order") >= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// set cart info to digital data\n\t\t\tif (cart) {\n\t\t\t\tif (!window.digitalData.cart) {\n\t\t\t\t\twindow.digitalData.cart = { cartID: cart.id };\n\t\t\t\t}\n\t\t\t\tsetShoppingCartInfo(ev, { cart: cart });\n\t\t\t}\n\t\t}\n\t}\n})();\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/cart.js\n ** module id = 442\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/cart.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t(0, _jquery2["default"])("body").on("content-action:success", setEventData);\n\n\t/**\n * Set event information to digital data for a content action.\n *\n * @param {object} ev - event object.\n * @param {object} eventData - object containing content action information.\n */\n\tfunction setEventData(ev, eventData) {\n\t\tif (window.digitalData && eventData && eventData.element) {\n\t\t\t// create event info\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Content Interaction";\n\t\t\teventInfo.eventAction = eventData.eventAction;\n\t\t\teventInfo.contentName = eventData.element.data().title;\n\t\t\teventInfo.contentType = eventData.element.data().contentType;\n\t\t\tif (eventData.shareMedium) {\n\t\t\t\teventInfo.shareMedium = eventData.shareMedium;\n\t\t\t}\n\t\t\tif (eventData.eventAction === "Content Save" || eventData.eventAction.match(/Content Share/)) {\n\t\t\t\teventInfo.actionSource = getActionSource(eventData.element);\n\t\t\t}\n\t\t\t// set event info to digital data\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\t\t}\n\t}\n\n\t/**\n * Finds out the source of content interaction.\n *\n * @param {object} element - Element used for content interaction.\n */\n\tfunction getActionSource(element) {\n\t\t// check for product detail page\n\t\tif (location.pathname.indexOf("/product/") >= 0) {\n\t\t\treturn "Product Detail Page";\n\t\t}\n\n\t\t// check for store category page\n\t\tif (/store\\/([a-zA-Z]+)/.test(location.pathname)) {\n\t\t\treturn "Category Page";\n\t\t}\n\n\t\t// check for home page\n\t\tvar streamListComponent;\n\t\tvar endpoint;\n\t\tif (location.pathname === "/" || location.pathname === "/resources/html/marketing/intromercial/overlay.html") {\n\t\t\tstreamListComponent = (0, _jquery2["default"])(element).closest("stream-list");\n\t\t\tif (streamListComponent && streamListComponent.length > 0) {\n\t\t\t\tendpoint = streamListComponent.attr("data-stream-endpoint");\n\t\t\t\tif (endpoint) {\n\t\t\t\t\tif (endpoint.indexOf("components/list/latest") >= 0) {\n\t\t\t\t\t\treturn "The Latest";\n\t\t\t\t\t} else if (endpoint.indexOf("components/list/editors-picks") >= 0) {\n\t\t\t\t\t\treturn "Editor\'s Picks";\n\t\t\t\t\t} else if (endpoint.indexOf("components/search-list/popular-content") >= 0) {\n\t\t\t\t\t\treturn "Most Popular";\n\t\t\t\t\t} else if (endpoint.indexOf("stream/placements/home_page.for_you") >= 0) {\n\t\t\t\t\t\treturn "For You";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn "Home Page";\n\t\t}\n\n\t\t// check for topic page\n\t\tif (location.pathname.indexOf("/topic/") >= 0) {\n\t\t\treturn "Topic Page";\n\t\t}\n\n\t\t// check for article page\n\t\tif ((0, _jquery2["default"])(element).closest("article-content").length > 0) {\n\t\t\treturn "Article Page";\n\t\t}\n\n\t\t// check for store page\n\t\tif (location.pathname.indexOf("/store") >= 0) {\n\t\t\t// check for store page stream lists\n\t\t\tstreamListComponent = (0, _jquery2["default"])(element).closest("stream-list");\n\t\t\tif (streamListComponent && streamListComponent.length > 0) {\n\t\t\t\tendpoint = streamListComponent.attr("data-stream-endpoint");\n\t\t\t\tif (endpoint) {\n\t\t\t\t\tif (endpoint.indexOf("home_page.store_classics") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Classics";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store_must_read") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Must Read";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store_for_you") >= 0) {\n\t\t\t\t\t\treturn "Top Products - For You";\n\t\t\t\t\t} else if (endpoint.indexOf("home_page.store") >= 0) {\n\t\t\t\t\t\treturn "Top Products - Top This Month";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn "Landing Page";\n\t}\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/content-actions.js\n ** module id = 443\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/content-actions.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t/**\n * Set event information to digital data for form interaction.\n *\n * @param {object} ev - event object.\n * @param {String} formName - Form name.\n * @param {String} eventAction - Event action name.\n */\n\tvar handleFormInteraction = function handleFormInteraction(ev, formName, eventAction) {\n\t\tif (window.digitalData && window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\t// set event info\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Form Interaction";\n\t\t\teventInfo.eventAction = eventAction;\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\t\t\t// set form name\n\t\t\tif (!window.digitalData.page.pageInfo.attributes) {\n\t\t\t\twindow.digitalData.page.pageInfo.attributes = {};\n\t\t\t}\n\t\t\twindow.digitalData.page.pageInfo.attributes.formName = formName;\n\t\t}\n\t};\n\n\t// bind event\n\t(0, _jquery2["default"])("body").on("form-interaction", handleFormInteraction);\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/forms.js\n ** module id = 444\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/forms.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t/**\n * Set page type and page name to digital data.\n *\n * @param {object} ev - Event object.\n * @param {string} pageType.\n * @param {string} pageName.\n */\n\tvar setPageInfo = function setPageInfo(ev, pageType, pageName) {\n\t\tif (window.digitalData && window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\twindow.digitalData.page.pageInfo.pageName = pageName;\n\t\t\twindow.digitalData.page.pageInfo.pageType = pageType;\n\t\t}\n\t};\n\t(0, _jquery2["default"])("body").on("set-page-info", setPageInfo);\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/page-setting.js\n ** module id = 445\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/page-setting.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\nvar _moment = __webpack_require__(1);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _shaJs = __webpack_require__(465);\n\nvar _shaJs2 = _interopRequireDefault(_shaJs);\n\n(function () {\n\t(0, _jquery2["default"])("body").on("sign-in:success", setLoginInfo);\n\t(0, _jquery2["default"])("body").on("register:success", setRegisterInfo);\n\n\t/**\n * Set digital data on login operation.\n *\n * @param {object} ev - event object.\n */\n\tfunction setLoginInfo(ev) {\n\t\tif (window.digitalData) {\n\t\t\t// set event info\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Account Interaction";\n\t\t\teventInfo.eventAction = "Account Login";\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\n\t\t\t// set page type & name\n\t\t\tif (window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\t\twindow.digitalData.page.pageInfo.pageType = "My Account";\n\t\t\t\twindow.digitalData.page.pageInfo.pageName = (0, _jquery2["default"])("title").html();\n\t\t\t}\n\n\t\t\t// get userprofile from local storage\n\t\t\tvar userProfile = _servicesLocalstorageUtil2["default"].getCache("user");\n\t\t\tsetUserInfo(userProfile);\n\t\t}\n\t}\n\n\t/**\n * Set digital data on register operation.\n *\n * @param {object} ev - event object.\n * @param {string} pageName - page name value for this operation.\n * @param {object} userProfile - userProfile object containing user information.\n */\n\tfunction setRegisterInfo(ev, pageName, userProfile) {\n\t\tif (window.digitalData && userProfile) {\n\t\t\t// set event info\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Account Interaction";\n\t\t\teventInfo.eventAction = "Registration";\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\n\t\t\t// set page type & name\n\t\t\tif (window.digitalData.page && window.digitalData.page.pageInfo) {\n\t\t\t\twindow.digitalData.page.pageInfo.pageType = "Registration";\n\t\t\t\twindow.digitalData.page.pageInfo.pageName = pageName;\n\t\t\t}\n\n\t\t\t// set user info to digital data\n\t\t\tsetUserInfo(userProfile);\n\t\t}\n\t}\n\n\t/**\n * Set user info to digital data.\n *\n * @param {object} userProfile - userProfile object containing user information.\n */\n\tfunction setUserInfo(userProfile) {\n\t\tif (window.digitalData.users && window.digitalData.users.length > 0 && window.digitalData.users[0].profile && userProfile) {\n\t\t\t// set profile details\n\t\t\tvar profile = window.digitalData.users[0].profile;\n\t\t\tprofile.accountID = userProfile.id;\n\t\t\tprofile.sessionID = userProfile.sessionID;\n\t\t\tprofile.userState = "Registered";\n\t\t\tprofile.username = userProfile.emailAddress;\n\t\t\t// set hashed email\n\t\t\tprofile.hashedEmail = (0, _shaJs2["default"])("sha256").update(userProfile.emailAddress, "utf8").digest("hex");\n\t\t\t// set quota\n\t\t\tprofile.quota = {};\n\t\t\tif (userProfile.quota) {\n\t\t\t\tprofile.quota.limit = userProfile.quota.limit;\n\t\t\t\tprofile.quota.remaining = userProfile.quota.remaining;\n\t\t\t}\n\n\t\t\t// set subscriber ID\n\t\t\tif (userProfile.status === "subscribers") {\n\t\t\t\tprofile.userState = "Subscriber";\n\t\t\t\tvar subscriberID = getSubscriberID(userProfile);\n\t\t\t\tif (subscriberID) {\n\t\t\t\t\tprofile.subscriberID = subscriberID;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// set registration date\n\t\t\tvar outputDateFormat = "YYYY-MM-DD";\n\t\t\tif (userProfile.createdDate) {\n\t\t\t\tprofile.registrationDate = _moment2["default"].utc(userProfile.createdDate).format(outputDateFormat);\n\t\t\t}\n\n\t\t\t// set last visit date and days since last visit\n\t\t\tif (userProfile.lastVisitDate) {\n\t\t\t\tvar lastVisitDate = _moment2["default"].utc(userProfile.lastVisitDate);\n\t\t\t\tvar daysSinceLastVisit = _moment2["default"].utc().diff(lastVisitDate, "days");\n\t\t\t\tif (daysSinceLastVisit < 1) {\n\t\t\t\t\tdaysSinceLastVisit = "Less Than One Day";\n\t\t\t\t}\n\t\t\t\tprofile.daysSinceLastVisit = daysSinceLastVisit;\n\t\t\t\tprofile.dateLastVisit = lastVisitDate.format(outputDateFormat);\n\t\t\t}\n\n\t\t\t// set topic feeds information\n\t\t\tif (userProfile.following && userProfile.following.items && userProfile.following.items.length && userProfile.following.items.length > 0) {\n\t\t\t\tif (!profile.feeds) {\n\t\t\t\t\tprofile.feeds = [];\n\t\t\t\t}\n\t\t\t\t_jquery2["default"].each(userProfile.following.items, function (index, topicName) {\n\t\t\t\t\tvar topic = {};\n\t\t\t\t\ttopic.topicName = topicName;\n\t\t\t\t\tprofile.feeds.push(topic);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n * Get subscriber account number by checking most recent start date.\n *\n * @param {String} account number of current magazine subscription.\n */\n\tfunction getSubscriberID(userProfile) {\n\t\tvar subscriberID = "";\n\t\tif (userProfile.subscriber && userProfile.subscriber.subscriptions && _jquery2["default"].isArray(userProfile.subscriber.subscriptions)) {\n\t\t\tvar currentSubscription = {};\n\t\t\tcurrentSubscription.subscriptionAccessPeriod = {};\n\t\t\tcurrentSubscription.subscriptionAccessPeriod.startDate = 0;\n\n\t\t\t// find magazine subscription with most recent start date\n\t\t\t_jquery2["default"].each(userProfile.subscriber.subscriptions, function (index, subscription) {\n\t\t\t\tif (subscription.subscriptionSourceCode.toLowerCase() !== "ACCESS_CODE".toLowerCase() && subscription.subscriptionAccessPeriod.startDate > currentSubscription.subscriptionAccessPeriod.startDate) {\n\t\t\t\t\tcurrentSubscription = subscription;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (currentSubscription && currentSubscription.accountNumber) {\n\t\t\t\tsubscriberID = currentSubscription.accountNumber;\n\t\t\t}\n\t\t}\n\t\treturn subscriberID;\n\t}\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/signin-register.js\n ** module id = 446\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/signin-register.js?')},function(module,exports){eval('/* eslint camelcase: 0 */\n"use strict";\n\nvar env_value = "integration";\nvar apikey_value = "dae139408f447afd";\n\nif (window.location.hostname === "hbr.org" || window.location.hostname === "ae.hbr.org") {\n\tenv_value = "recs";\n}\n\nexports.RR_COMMON = {\n\tenv: env_value,\n\tAPI_KEY: apikey_value,\n\tpages: {\n\t\thome: function home() {\n\t\t\twindow.R3_HOME = new r3_home();\n\t\t\treturn window.R3_HOME;\n\t\t},\n\t\tsearch: function search(placementObj) {\n\t\t\twindow.R3_SEARCH = new r3_search();\n\n\t\t\twindow.R3_SEARCH.setTerms(placementObj["search-term"]);\n\n\t\t\tvar searchResults = placementObj["search-results"];\n\t\t\tif (searchResults.length > 0) {\n\t\t\t\tsearchResults.forEach(function (searchResult) {\n\t\t\t\t\twindow.R3_COMMON.addItemId(searchResult);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn window.R3_SEARCH;\n\t\t},\n\t\tcategory: function category(placementObj) {\n\t\t\twindow.R3_CATEGORY = new r3_category();\n\t\t\twindow.R3_CATEGORY.setName(placementObj["page-category-name"]);\n\t\t\twindow.R3_CATEGORY.setId(placementObj["page-category-id"]);\n\n\t\t\treturn window.R3_CATEGORY;\n\t\t},\n\t\titem: function item(placementObj) {\n\t\t\twindow.R3_ITEM = new r3_item();\n\t\t\twindow.R3_ITEM.setName(placementObj["item-name"]);\n\t\t\twindow.R3_ITEM.setId(placementObj["item-id"]);\n\n\t\t\treturn window.R3_ITEM;\n\t\t},\n\t\t"shopping-cart": function shoppingCart(placementObj) {\n\t\t\twindow.R3_CART = new r3_cart();\n\n\t\t\tvar cartTotal = placementObj["cart-total"] || 0.00;\n\t\t\tvar cartItems = placementObj["cart-items"];\n\t\t\tif (cartItems.length > 0) {\n\t\t\t\tcartItems.forEach(function (cartItem) {\n\t\t\t\t\tvar thisCartItem = cartItem.split("|");\n\t\t\t\t\twindow.R3_CART.addItemId(thisCartItem[0]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\twindow.R3_COMMON.setCartValue(cartTotal);\n\n\t\t\treturn window.R3_CART;\n\t\t},\n\t\t"order-complete": function orderComplete(placementObj) {\n\t\t\twindow.R3_PURCHASED = new r3_purchased();\n\n\t\t\twindow.R3_PURCHASED.setOrderNumber(placementObj["order-id"]);\n\n\t\t\tvar cartTotal = placementObj["cart-total"] || 0.00;\n\t\t\tvar cartItems = placementObj["cart-items"];\n\t\t\tif (cartItems.length > 0) {\n\t\t\t\tcartItems.forEach(function (cartItem) {\n\t\t\t\t\tvar thisCartItem = cartItem.split("|");\n\t\t\t\t\twindow.R3_PURCHASED.addItemIdPriceQuantity(thisCartItem[0], thisCartItem[1], thisCartItem[2]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\twindow.R3_COMMON.setCartValue(cartTotal);\n\n\t\t\treturn window.R3_PURCHASED;\n\t\t},\n\t\t"add-to-cart": function addToCart(placementObj) {\n\t\t\twindow.R3_ADDTOCART = new r3_addtocart();\n\n\t\t\tplacementObj.itemIds.forEach(function (itemId) {\n\t\t\t\twindow.R3_ADDTOCART.addItemIdToCart(itemId);\n\t\t\t});\n\n\t\t\treturn window.R3_ADDTOCART;\n\t\t},\n\t\terror: function error() {\n\t\t\twindow.R3_ERROR = new r3_error();\n\t\t}\n\t},\n\ttemplates: {\n\t\thome: {\n\t\t\tstore_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tstore: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tstore_classics: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tstore_must_read: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tstore_for_you: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tfor_you: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\trecommended_for_you: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tinside_store: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttop_deals_engage: {\n\t\t\t\ttemplateName: "top-deals",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttop_deals2_engage: {\n\t\t\t\ttemplateName: "top-deals",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttop_deals3_engage: {\n\t\t\t\ttemplateName: "top-deals",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmanager_mentor_engage: {\n\t\t\t\ttemplateName: "hmm",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tget_more_engage: {\n\t\t\t\ttemplateName: "get-more",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscription_engage: {\n\t\t\t\ttemplateName: "subscription",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\taccount_setting_engage: {\n\t\t\t\ttemplateName: "button-link",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_3_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-line1",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-line2",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t},\n\t\titem: {\n\t\t\tarticles: {\n\t\t\t\ttemplateName: "dive-deeper",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttop_right: {\n\t\t\t\ttemplateName: "top-recirc",\n\t\t\t\ttype: "content"\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t\ttemplateName: "bottom-recirc",\n\t\t\t\ttype: "content"\n\t\t\t},\n\t\t\tbooks_recirc: {\n\t\t\t\ttemplateName: "books-recirc",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\trr1: {\n\t\t\t\ttemplateName: "related-section",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tbetter_together_1: {\n\t\t\t\ttemplateName: "better-together",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe: {\n\t\t\t\ttemplateName: "subscribe-button",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tarticle_slider_engage: {\n\t\t\t\ttemplateName: "slider-promo",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tarticle_slider_big_idea_engage: {\n\t\t\t\ttemplateName: "big-idea-promo",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\texit_popup_slider: {\n\t\t\t\ttemplateName: "popup-slider",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_3_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-line1",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-line2",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t},\n\t\tcategory: {\n\t\t\tbooks_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tarticles_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcase_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcollections_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttools_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tmag_top_carousel: {\n\t\t\t\ttemplateName: "large-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tstore_for_you: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tbooks_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tbooks_readers_fav: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tbooks_must_read: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tarticles_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tarticles_classics: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tarticles_must_read: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcase_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcase_most_popular: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcase_multimedia: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcollections_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcollections_most_popular: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tcollections_must_read: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttools_new: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttools_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttools_harvard_manager: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\ttools_most_popular: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tmag_new: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tmag_top_month: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tmag_most_popular: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tmag_on_point: {\n\t\t\t\ttemplateName: "stream-content",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tinside_store: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_box_3_engage: {\n\t\t\t\ttemplateName: "orange-strip-box",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_1_engage: {\n\t\t\t\ttemplateName: "orange-strip-line1",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\torange_strip_line_2_engage: {\n\t\t\t\ttemplateName: "orange-strip-line2",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t},\n\t\tsearch: {\n\t\t\trr1_noresults: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t},\n\t\t"shopping-cart": {\n\t\t\tinside_store: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t},\n\t\t"order-complete": {\n\t\t\trr1: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t},\n\t\t\tred_strip_engage: {\n\t\t\t\ttemplateName: "red-strip",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tmag_cover_engage: {\n\t\t\t\ttemplateName: "mag-cover",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\tsubscribe_now_footer_engage: {\n\t\t\t\ttemplateName: "subscribe-now",\n\t\t\t\ttype: "promo"\n\t\t\t},\n\t\t\ttopbar_subscribe_engage: {\n\t\t\t\ttemplateName: "topbar-subscribe",\n\t\t\t\ttype: "promo"\n\t\t\t}\n\t\t}, common: {\n\t\t\tadded_to_cart: {\n\t\t\t\ttemplateName: "small-carousel",\n\t\t\t\ttype: "recs"\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.placementObj = {\n\tuid: "",\n\tsid: "5A4E97B00683A971AB65F914B874D7CC",\n\tplacements: [],\n\tcategory: "home",\n\tsettings: {},\n\tcacheName: "home"\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/personalization-placement/personalization-placement.js\n ** module id = 447\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/support/personalization-placement/personalization-placement.js?')},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports="amd" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `""`, `undefined`, and `NaN` are all falsey.\n *\n * @static\n * @memberOf _\n * @category Arrays\n * @param {Array} array The array to compact.\n * @returns {Array} Returns a new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, \'\', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array ? array.length : 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result.push(value);\n }\n }\n return result;\n }\n\n return compact;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/arrays/compact.js\n ** module id = 448\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/arrays/compact.js?')},function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * Lo-Dash 2.4.1 (Custom Build) <http://lodash.com/>\n * Build: `lodash modularize modern exports=\"amd\" -o ./modern/`\n * Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.5.2 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <http://lodash.com/license>\n */\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(22), __webpack_require__(31)], __WEBPACK_AMD_DEFINE_RESULT__ = function(createCallback, forOwn) {\n\n /**\n * Iterates over elements of a collection, returning an array of all elements\n * the callback returns truey for. The callback is bound to `thisArg` and\n * invoked with three arguments; (value, index|key, collection).\n *\n * If a property name is provided for `callback` the created \"_.pluck\" style\n * callback will return the property value of the given element.\n *\n * If an object is provided for `callback` the created \"_.where\" style callback\n * will return `true` for elements that have the properties of the given object,\n * else `false`.\n *\n * @static\n * @memberOf _\n * @alias select\n * @category Collections\n * @param {Array|Object|string} collection The collection to iterate over.\n * @param {Function|Object|string} [callback=identity] The function called\n * per iteration. If a property name or object is provided it will be used\n * to create a \"_.pluck\" or \"_.where\" style callback, respectively.\n * @param {*} [thisArg] The `this` binding of `callback`.\n * @returns {Array} Returns a new array of elements that passed the callback check.\n * @example\n *\n * var evens = _.filter([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });\n * // => [2, 4, 6]\n *\n * var characters = [\n * { 'name': 'barney', 'age': 36, 'blocked': false },\n * { 'name': 'fred', 'age': 40, 'blocked': true }\n * ];\n *\n * // using \"_.pluck\" callback shorthand\n * _.filter(characters, 'blocked');\n * // => [{ 'name': 'fred', 'age': 40, 'blocked': true }]\n *\n * // using \"_.where\" callback shorthand\n * _.filter(characters, { 'age': 36 });\n * // => [{ 'name': 'barney', 'age': 36, 'blocked': false }]\n */\n function filter(collection, callback, thisArg) {\n var result = [];\n callback = createCallback(callback, thisArg, 3);\n\n var index = -1,\n length = collection ? collection.length : 0;\n\n if (typeof length == 'number') {\n while (++index < length) {\n var value = collection[index];\n if (callback(value, index, collection)) {\n result.push(value);\n }\n }\n } else {\n forOwn(collection, function(value, index, collection) {\n if (callback(value, index, collection)) {\n result.push(value);\n }\n });\n }\n return result;\n }\n\n return filter;\n}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lodash-amd/modern/collections/filter.js\n ** module id = 449\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/lodash-amd/modern/collections/filter.js?"); },function(module,exports,__webpack_require__){eval('/*! Moment Duration Format v1.3.0\n * https://github.com/jsmreese/moment-duration-format \n * Date: 2014-07-15\n *\n * Duration format plugin function for the Moment.js library\n * http://momentjs.com/\n *\n * Copyright 2014 John Madhavan-Reese\n * Released under the MIT license\n */\n\n(function (root, undefined) {\n\n\t// repeatZero(qty)\n\t// returns "0" repeated qty times\n\tfunction repeatZero(qty) {\n\t\tvar result = "";\n\t\t\n\t\t// exit early\n\t\t// if qty is 0 or a negative number\n\t\t// or doesn\'t coerce to an integer\n\t\tqty = parseInt(qty, 10);\n\t\tif (!qty || qty < 1) { return result; }\n\t\t\n\t\twhile (qty) {\n\t\t\tresult += "0";\n\t\t\tqty -= 1;\n\t\t}\n\t\t\n\t\treturn result;\n\t}\n\t\n\t// padZero(str, len [, isRight])\n\t// pads a string with zeros up to a specified length\n\t// will not pad a string if its length is aready\n\t// greater than or equal to the specified length\n\t// default output pads with zeros on the left\n\t// set isRight to `true` to pad with zeros on the right\n\tfunction padZero(str, len, isRight) {\n\t\tif (str == null) { str = ""; }\n\t\tstr = "" + str;\n\t\t\n\t\treturn (isRight ? str : "") + repeatZero(len - str.length) + (isRight ? "" : str);\n\t}\n\t\n\t// isArray\n\tfunction isArray(array) {\n\t\treturn Object.prototype.toString.call(array) === "[object Array]";\n\t}\n\t\n\t// isObject\n\tfunction isObject(obj) {\n\t\treturn Object.prototype.toString.call(obj) === "[object Object]";\n\t}\n\t\n\t// findLast\n\tfunction findLast(array, callback) {\n\t\tvar index = array.length;\n\n\t\twhile (index -= 1) {\n\t\t\tif (callback(array[index])) { return array[index]; }\n\t\t}\n\t}\n\n\t// find\n\tfunction find(array, callback) {\n\t\tvar index = 0,\n\t\t\tmax = array.length,\n\t\t\tmatch;\n\t\t\t\n\t\tif (typeof callback !== "function") {\n\t\t\tmatch = callback;\n\t\t\tcallback = function (item) {\n\t\t\t\treturn item === match;\n\t\t\t};\n\t\t}\n\n\t\twhile (index < max) {\n\t\t\tif (callback(array[index])) { return array[index]; }\n\t\t\tindex += 1;\n\t\t}\n\t}\n\t\n\t// each\n\tfunction each(array, callback) {\n\t\tvar index = 0,\n\t\t\tmax = array.length;\n\t\t\t\n\t\tif (!array || !max) { return; }\n\n\t\twhile (index < max) {\n\t\t\tif (callback(array[index], index) === false) { return; }\n\t\t\tindex += 1;\n\t\t}\n\t}\n\t\n\t// map\n\tfunction map(array, callback) {\n\t\tvar index = 0,\n\t\t\tmax = array.length,\n\t\t\tret = [];\n\n\t\tif (!array || !max) { return ret; }\n\t\t\t\t\n\t\twhile (index < max) {\n\t\t\tret[index] = callback(array[index], index);\n\t\t\tindex += 1;\n\t\t}\n\t\t\n\t\treturn ret;\n\t}\n\t\n\t// pluck\n\tfunction pluck(array, prop) {\n\t\treturn map(array, function (item) {\n\t\t\treturn item[prop];\n\t\t});\n\t}\n\t\n\t// compact\n\tfunction compact(array) {\n\t\tvar ret = [];\n\t\t\n\t\teach(array, function (item) {\n\t\t\tif (item) { ret.push(item); }\n\t\t});\n\t\t\n\t\treturn ret;\n\t}\n\t\n\t// unique\n\tfunction unique(array) {\n\t\tvar ret = [];\n\t\t\n\t\teach(array, function (_a) {\n\t\t\tif (!find(ret, _a)) { ret.push(_a); }\n\t\t});\n\t\t\n\t\treturn ret;\n\t}\n\t\n\t// intersection\n\tfunction intersection(a, b) {\n\t\tvar ret = [];\n\t\t\n\t\teach(a, function (_a) {\n\t\t\teach(b, function (_b) {\n\t\t\t\tif (_a === _b) { ret.push(_a); }\n\t\t\t});\n\t\t});\n\t\t\n\t\treturn unique(ret);\n\t}\n\t\n\t// rest\n\tfunction rest(array, callback) {\n\t\tvar ret = [];\n\t\t\n\t\teach(array, function (item, index) {\n\t\t\tif (!callback(item)) {\n\t\t\t\tret = array.slice(index);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn ret;\n\t}\n\n\t// initial\n\tfunction initial(array, callback) {\n\t\tvar reversed = array.slice().reverse();\n\t\t\n\t\treturn rest(reversed, callback).reverse();\n\t}\n\t\n\t// extend\n\tfunction extend(a, b) {\n\t\tfor (var key in b) {\n\t\t\tif (b.hasOwnProperty(key)) { a[key] = b[key]; }\n\t\t}\n\t\t\n\t\treturn a;\n\t}\n\t\t\t\n\t// define internal moment reference\n\tvar moment;\n\n\tif (true) {\n\t\ttry { moment = __webpack_require__(1); } \n\t\tcatch (e) {}\n\t} \n\t\n\tif (!moment && root.moment) {\n\t\tmoment = root.moment;\n\t}\n\t\n\tif (!moment) {\n\t\tthrow "Moment Duration Format cannot find Moment.js";\n\t}\n\t\n\t// moment.duration.format([template] [, precision] [, settings])\n\tmoment.duration.fn.format = function () {\n\n\t\tvar tokenizer, tokens, types, typeMap, momentTypes, foundFirst, trimIndex,\n\t\t\targs = [].slice.call(arguments),\n\t\t\tsettings = extend({}, this.format.defaults),\n\t\t\t// keep a shadow copy of this moment for calculating remainders\n\t\t\tremainder = moment.duration(this);\n\n\t\t// add a reference to this duration object to the settings for use\n\t\t// in a template function\n\t\tsettings.duration = this;\n\n\t\t// parse arguments\n\t\teach(args, function (arg) {\n\t\t\tif (typeof arg === "string" || typeof arg === "function") {\n\t\t\t\tsettings.template = arg;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof arg === "number") {\n\t\t\t\tsettings.precision = arg;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isObject(arg)) {\n\t\t\t\textend(settings, arg);\n\t\t\t}\n\t\t});\n\n\t\t// types\n\t\ttypes = settings.types = (isArray(settings.types) ? settings.types : settings.types.split(" "));\n\n\t\t// template\n\t\tif (typeof settings.template === "function") {\n\t\t\tsettings.template = settings.template.apply(settings);\n\t\t}\n\n\t\t// tokenizer regexp\n\t\ttokenizer = new RegExp(map(types, function (type) {\n\t\t\treturn settings[type].source;\n\t\t}).join("|"), "g");\n\n\t\t// token type map function\n\t\ttypeMap = function (token) {\n\t\t\treturn find(types, function (type) {\n\t\t\t\treturn settings[type].test(token);\n\t\t\t});\n\t\t};\n\n\t\t// tokens array\n\t\ttokens = map(settings.template.match(tokenizer), function (token, index) {\n\t\t\tvar type = typeMap(token),\n\t\t\t\tlength = token.length;\n\n\t\t\treturn {\n\t\t\t\tindex: index,\n\t\t\t\tlength: length,\n\n\t\t\t\t// replace escaped tokens with the non-escaped token text\n\t\t\t\ttoken: (type === "escape" ? token.replace(settings.escape, "$1") : token),\n\n\t\t\t\t// ignore type on non-moment tokens\n\t\t\t\ttype: ((type === "escape" || type === "general") ? null : type)\n\n\t\t\t\t// calculate base value for all moment tokens\n\t\t\t\t//baseValue: ((type === "escape" || type === "general") ? null : this.as(type))\n\t\t\t};\n\t\t}, this);\n\n\t\t// unique moment token types in the template (in order of descending magnitude)\n\t\tmomentTypes = intersection(types, unique(compact(pluck(tokens, "type"))));\n\n\t\t// exit early if there are no momentTypes\n\t\tif (!momentTypes.length) {\n\t\t\treturn pluck(tokens, "token").join("");\n\t\t}\n\n\t\t// calculate values for each token type in the template\n\t\teach(momentTypes, function (momentType, index) {\n\t\t\tvar value, wholeValue, decimalValue, isLeast, isMost;\n\n\t\t\t// calculate integer and decimal value portions\n\t\t\tvalue = remainder.as(momentType);\n\t\t\twholeValue = (value > 0 ? Math.floor(value) : Math.ceil(value));\n\t\t\tdecimalValue = value - wholeValue;\n\n\t\t\t// is this the least-significant moment token found?\n\t\t\tisLeast = ((index + 1) === momentTypes.length);\n\n\t\t\t// is this the most-significant moment token found?\n\t\t\tisMost = (!index);\n\n\t\t\t// update tokens array\n\t\t\t// using this algorithm to not assume anything about\n\t\t\t// the order or frequency of any tokens\n\t\t\teach(tokens, function (token) {\n\t\t\t\tif (token.type === momentType) {\n\t\t\t\t\textend(token, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\twholeValue: wholeValue,\n\t\t\t\t\t\tdecimalValue: decimalValue,\n\t\t\t\t\t\tisLeast: isLeast,\n\t\t\t\t\t\tisMost: isMost\n\t\t\t\t\t});\n\n\t\t\t\t\tif (isMost) {\n\t\t\t\t\t\t// note the length of the most-significant moment token:\n\t\t\t\t\t\t// if it is greater than one and forceLength is not set, default forceLength to `true`\n\t\t\t\t\t\tif (settings.forceLength == null && token.length > 1) {\n\t\t\t\t\t\t\tsettings.forceLength = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// rationale is this:\n\t\t\t\t\t\t// if the template is "h:mm:ss" and the moment value is 5 minutes, the user-friendly output is "5:00", not "05:00"\n\t\t\t\t\t\t// shouldn\'t pad the `minutes` token even though it has length of two\n\t\t\t\t\t\t// if the template is "hh:mm:ss", the user clearly wanted everything padded so we should output "05:00"\n\t\t\t\t\t\t// if the user wanted the full padded output, they can set `{ trim: false }` to get "00:05:00"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// update remainder\n\t\t\tremainder.subtract(wholeValue, momentType);\n\t\t});\n\t\n\t\t// trim tokens array\n\t\tif (settings.trim) {\n\t\t\ttokens = (settings.trim === "left" ? rest : initial)(tokens, function (token) {\n\t\t\t\t// return `true` if:\n\t\t\t\t// the token is not the least moment token (don\'t trim the least moment token)\n\t\t\t\t// the token is a moment token that does not have a value (don\'t trim moment tokens that have a whole value)\n\t\t\t\treturn !(token.isLeast || (token.type != null && token.wholeValue));\n\t\t\t});\n\t\t}\n\t\t\n\t\t\n\t\t// build output\n\n\t\t// the first moment token can have special handling\n\t\tfoundFirst = false;\n\n\t\t// run the map in reverse order if trimming from the right\n\t\tif (settings.trim === "right") {\n\t\t\ttokens.reverse();\n\t\t}\n\n\t\ttokens = map(tokens, function (token) {\n\t\t\tvar val,\n\t\t\t\tdecVal;\n\n\t\t\tif (!token.type) {\n\t\t\t\t// if it is not a moment token, use the token as its own value\n\t\t\t\treturn token.token;\n\t\t\t}\n\n\t\t\t// apply negative precision formatting to the least-significant moment token\n\t\t\tif (token.isLeast && (settings.precision < 0)) {\n\t\t\t\tval = (Math.floor(token.wholeValue * Math.pow(10, settings.precision)) * Math.pow(10, -settings.precision)).toString();\n\t\t\t} else {\n\t\t\t\tval = token.wholeValue.toString();\n\t\t\t}\n\t\t\t\n\t\t\t// remove negative sign from the beginning\n\t\t\tval = val.replace(/^\\-/, "");\n\n\t\t\t// apply token length formatting\n\t\t\t// special handling for the first moment token that is not the most significant in a trimmed template\n\t\t\tif (token.length > 1 && (foundFirst || token.isMost || settings.forceLength)) {\n\t\t\t\tval = padZero(val, token.length);\n\t\t\t}\n\n\t\t\t// add decimal value if precision > 0\n\t\t\tif (token.isLeast && (settings.precision > 0)) {\n\t\t\t\tdecVal = token.decimalValue.toString().replace(/^\\-/, "").split(/\\.|e\\-/);\n\t\t\t\tswitch (decVal.length) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tval += "." + padZero(decVal[0], settings.precision, true).slice(0, settings.precision);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tval += "." + padZero(decVal[1], settings.precision, true).slice(0, settings.precision);\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tval += "." + padZero(repeatZero((+decVal[2]) - 1) + (decVal[0] || "0") + decVal[1], settings.precision, true).slice(0, settings.precision);\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow "Moment Duration Format: unable to parse token decimal value.";\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// add a negative sign if the value is negative and token is most significant\n\t\t\tif (token.isMost && token.value < 0) {\n\t\t\t\tval = "-" + val;\n\t\t\t}\n\n\t\t\tfoundFirst = true;\n\n\t\t\treturn val;\n\t\t});\n\n\t\t// undo the reverse if trimming from the right\n\t\tif (settings.trim === "right") {\n\t\t\ttokens.reverse();\n\t\t}\n\n\t\treturn tokens.join("");\n\t};\n\n\tmoment.duration.fn.format.defaults = {\n\t\t// token definitions\n\t\tescape: /\\[(.+?)\\]/,\n\t\tyears: /[Yy]+/,\n\t\tmonths: /M+/,\n\t\tweeks: /[Ww]+/,\n\t\tdays: /[Dd]+/,\n\t\thours: /[Hh]+/,\n\t\tminutes: /m+/,\n\t\tseconds: /s+/,\n\t\tmilliseconds: /S+/,\n\t\tgeneral: /.+?/,\n\n\t\t// token type names\n\t\t// in order of descending magnitude\n\t\t// can be a space-separated token name list or an array of token names\n\t\ttypes: "escape years months weeks days hours minutes seconds milliseconds general",\n\n\t\t// format options\n\n\t\t// trim\n\t\t// "left" - template tokens are trimmed from the left until the first moment token that has a value >= 1\n\t\t// "right" - template tokens are trimmed from the right until the first moment token that has a value >= 1\n\t\t// (the final moment token is not trimmed, regardless of value)\n\t\t// `false` - template tokens are not trimmed\n\t\ttrim: "left",\n\n\t\t// precision\n\t\t// number of decimal digits to include after (to the right of) the decimal point (positive integer)\n\t\t// or the number of digits to truncate to 0 before (to the left of) the decimal point (negative integer)\n\t\tprecision: 0,\n\n\t\t// force first moment token with a value to render at full length even when template is trimmed and first moment token has length of 1\n\t\tforceLength: null,\n\n\t\t// template used to format duration\n\t\t// may be a function or a string\n\t\t// template functions are executed with the `this` binding of the settings object\n\t\t// so that template strings may be dynamically generated based on the duration object\n\t\t// (accessible via `this.duration`)\n\t\t// or any of the other settings\n\t\ttemplate: function () {\n\t\t\tvar types = this.types,\n\t\t\t\tdur = this.duration,\n\t\t\t\tlastType = findLast(types, function (type) {\n\t\t\t\t\treturn dur._data[type];\n\t\t\t\t});\n\n\t\t\t// default template strings for each duration dimension type\n\t\t\tswitch (lastType) {\n\t\t\t\tcase "seconds":\n\t\t\t\t\treturn "h:mm:ss";\n\t\t\t\tcase "minutes":\n\t\t\t\t\treturn "d[d] h:mm";\n\t\t\t\tcase "hours":\n\t\t\t\t\treturn "d[d] h[h]";\n\t\t\t\tcase "days":\n\t\t\t\t\treturn "M[m] d[d]";\n\t\t\t\tcase "weeks":\n\t\t\t\t\treturn "y[y] w[w]";\n\t\t\t\tcase "months":\n\t\t\t\t\treturn "y[y] M[m]";\n\t\t\t\tcase "years":\n\t\t\t\t\treturn "y[y]";\n\t\t\t\tdefault:\n\t\t\t\t\treturn "y[y] M[m] d[d] h:mm:ss";\n\t\t\t}\n\t\t}\n\t};\n\n})(this);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/moment-duration-format/lib/moment-duration-format.js\n ** module id = 450\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/moment-duration-format/lib/moment-duration-format.js?')},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = applyMiddleware;\n\nvar _compose = __webpack_require__(267);\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/applyMiddleware.js\n ** module id = 451\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/applyMiddleware.js?")},function(module,exports){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = bindActionCreators;\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/bindActionCreators.js\n ** module id = 452\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/bindActionCreators.js?")},function(module,exports,__webpack_require__){eval("'use strict';\n\nexports.__esModule = true;\nexports['default'] = combineReducers;\n\nvar _createStore = __webpack_require__(268);\n\nvar _isPlainObject = __webpack_require__(272);\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _warning = __webpack_require__(270);\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!(0, _isPlainObject2['default'])(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {\n if (typeof reducers[key] === 'undefined') {\n (0, _warning2['default'])('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (false) {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n (0, _warning2['default'])(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/lib/combineReducers.js\n ** module id = 453\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/lib/combineReducers.js?")},function(module,exports,__webpack_require__){eval("var Symbol = __webpack_require__(271),\n getRawTag = __webpack_require__(457),\n objectToString = __webpack_require__(458);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_baseGetTag.js\n ** module id = 454\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_baseGetTag.js?")},function(module,exports){eval("/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_freeGlobal.js\n ** module id = 455\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_freeGlobal.js?")},function(module,exports,__webpack_require__){eval("var overArg = __webpack_require__(459);\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_getPrototype.js\n ** module id = 456\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_getPrototype.js?")},function(module,exports,__webpack_require__){eval("var Symbol = __webpack_require__(271);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_getRawTag.js\n ** module id = 457\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_getRawTag.js?")},function(module,exports){eval("/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_objectToString.js\n ** module id = 458\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_objectToString.js?")},function(module,exports){eval("/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_overArg.js\n ** module id = 459\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_overArg.js?")},function(module,exports,__webpack_require__){eval("var freeGlobal = __webpack_require__(455);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/_root.js\n ** module id = 460\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/_root.js?")},function(module,exports){eval("/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/lodash/isObjectLike.js\n ** module id = 461\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/lodash/isObjectLike.js?"); },function(module,exports,__webpack_require__){eval("module.exports = __webpack_require__(463);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/symbol-observable/index.js\n ** module id = 462\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/symbol-observable/index.js?")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(global, module) {'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ponyfill = __webpack_require__(464);\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (true) {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;\n/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(264)(module)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/symbol-observable/lib/index.js\n ** module id = 463\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/symbol-observable/lib/index.js?")},function(module,exports){eval("'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/redux/~/symbol-observable/lib/ponyfill.js\n ** module id = 464\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/redux/~/symbol-observable/lib/ponyfill.js?")},function(module,exports,__webpack_require__){eval("var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)')\n\n return new Algorithm()\n}\n\nexports.sha = __webpack_require__(466)\nexports.sha1 = __webpack_require__(467)\nexports.sha224 = __webpack_require__(468)\nexports.sha256 = __webpack_require__(273)\nexports.sha384 = __webpack_require__(469)\nexports.sha512 = __webpack_require__(274)\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/index.js\n ** module id = 465\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/index.js?")},function(module,exports,__webpack_require__){eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = __webpack_require__(40)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha.js\n ** module id = 466\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha.js?")},function(module,exports,__webpack_require__){eval("/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = __webpack_require__(40)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha1.js\n ** module id = 467\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha1.js?")},function(module,exports,__webpack_require__){eval("/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(40)\nvar Sha256 = __webpack_require__(273)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha224.js\n ** module id = 468\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha224.js?")},function(module,exports,__webpack_require__){eval("var inherits = __webpack_require__(40)\nvar SHA512 = __webpack_require__(274)\nvar Hash = __webpack_require__(39)\nvar Buffer = __webpack_require__(30).Buffer\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sha.js/sha384.js\n ** module id = 469\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./~/sha.js/sha384.js?")},function(module,exports){eval("'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return (b64.length * 3 / 4) - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr((len * 3 / 4) - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0; i < l; i += 4) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/base64-js/index.js\n ** module id = 470\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/buffer/~/base64-js/index.js?")},function(module,exports){eval("exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js\n ** module id = 471\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/buffer/~/ieee754/index.js?")},function(module,exports){eval("var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** (webpack)/~/node-libs-browser/~/buffer/~/isarray/index.js\n ** module id = 472\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///(webpack)/~/node-libs-browser/~/buffer/~/isarray/index.js?")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n\n if (itemAdded === true){ ;\n__p += \'\\n<section class="small-12 column">\\n\t<section class="clearfix">\\n\t\t<div class="row cushion"> \\n\t\t\t<div class="small-12 large-9 large-centered column">\\n\t\t\t\t<h3 class="section-label mbl"><i class="icon icon-unfollow-this success-color"></i> Added to cart</h4>\\n\t\t\t\t\';\n items.forEach(function(item) { ;\n__p += \'\\n\t\t\t\t<div class="row mtl">\\n\t\t\t\t\t<div class="medium-8 column">\\n\t\t\t\t\t\t<h4 class="hed mbs"><a href="\' +\n((__t = ( item.productUrl )) == null ? \'\' : __t) +\n\'">\' +\n((__t = ( item.productTitle )) == null ? \'\' : __t) +\n\'</a></h4>\\n\t\t\t\t\t\t<div><span class="topic">\' +\n((__t = ( item.productMajorSubject )) == null ? \'\' : __t) +\n\'</span> <span class="content-type">\' +\n((__t = ( item.productContentType )) == null ? \'\' : __t) +\n\'</span></div>\\n\t\t\t\t\t\t\';\n if (item.productAvailabilityStatus === "COMING_SOON") { ;\n__p += \'<div class="label info mts">Available \' +\n((__t = ( item.publicationDate )) == null ? \'\' : __t) +\n\'</div>\';\n } ;\n__p += \'\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class="medium-4 column">\\n\t\t\t\t\t\t<div class="price mbm">\' +\n((__t = ( item.productPrice )) == null ? \'\' : __t) +\n\'</div>\\n\t\t\t\t\t\t\';\n if (item.format) { ;\n__p += \'\\n\t\t\t\t\t\t\t<h6 class="product-hed mbn">Format</h6>\\n\t\t\t\t\t\t\t<p class="product-text mbm">\';\n if (item.type === "Perm") { ;\n__p += \'(Copyright Permissions)\';\n } else { ;\n__p +=\n((__t = ( item.format )) == null ? \'\' : __t);\n } ;\n__p += \'</p>\\n\t\t\t\t\t\t\';\n } ;\n__p += \'\\n\t\t\t\t\t\t<h6 class="product-hed mbn">Quantity</h6>\\n\t\t\t\t\t\t<p class="product-text mbm">\' +\n((__t = ( item.quantity )) == null ? \'\' : __t) +\n\'</p>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t\t\';\n }); ;\n__p += \'\\n\t\t\t\t<div class="medium-8 column mvl">\\n\t\t\t\t\t<div class="medium-6 column"><button class="button--alt expand" js-target="add-to-cart-confirmation-close">Continue shopping</button></div>\\n\t\t\t\t\t<div class="medium-6 column"><a class="button expand" href="/shopping-cart">Checkout</a></div>\\n\t\t\t\t\t<div class="font-size-small text-gray-light">\\n\t\t\t\t\t\t*Digital products can be downloaded from the Order Confirmation screen. Item pre-orders will be available after the publication date listed on the item description.\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</section>\\n</section>\\n<section class="small-12 column">\\n\t<div class="row">\\n\t\t<div class="small-12 large-9 large-centered column">\\n\t\t\t<h4 class="section-label mbl">You might also like:</h4>\\n\t\t\t<personalization-placement class="personalization-placement" data-placement-id="added-to-cart"></personalization-placement>\\n\t\t</div>\\n\t</div>\\n</section>\\n\';\n } else { ;\n__p += \'\\n\t<div class="column large-8 large-push-2 mts">\\n\t<i js-target="add-to-cart-confirmation-close" class="icon icon-times right"></i>\\n\t<h3 class="subheader backdrop-alert-color white pam mvl">Our apologies, something went wrong.</h3>\\n\t<h4 class="subheader line-height-normal mbs">There seems to be an issue with the product you requested. Please call Customer Service at <strong>800.988.0886</strong> (U.S./Canada) or <strong>+1.617.783.7500</strong> (outside U.S./Canada) and reference product ID <strong class="info-color">[\t\\n\t\';\n items.forEach(function(item, index, items) { ;\n__p += \'\\n\t\t\' +\n((__t = (item.productId)) == null ? \'\' : __t) +\n\'\\n\t\t\t\';\n if(index !== items.length - 1) { ;\n__p += \',\';\n } ;\n__p += \'\\n\t\t\';\n }); ;\n__p += \']\\n\t</strong> for assistance.<p></p></h4>\\n\t</div>\\n\';\n } ;\n\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/add-to-cart/add-to-cart-confirmation/template.html\n ** module id = 473\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/add-to-cart/add-to-cart-confirmation/template.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<optgroup label=\"MONTH\">\\n\t';\n months.forEach(function(month,index) { ;\n__p += '\\n\t\t';\n if(index === (typeof selected === \"number\" ? selected : 0)) { ;\n__p += '\\n\t\t\t<option value=\"' +\n((__t = ( month.issueURL )) == null ? '' : __t) +\n'\" selected>' +\n((__t = ( month.issueMonth )) == null ? '' : __t) +\n'</option>\\n\t\t';\n } else { ;\n__p += '\\n\t\t\t<option value=\"' +\n((__t = ( month.issueURL )) == null ? '' : __t) +\n'\">' +\n((__t = ( month.issueMonth )) == null ? '' : __t) +\n'</option>\\n\t\t';\n } ;\n__p += '\\n\t';\n }); ;\n__p += '\\n</optgroup>';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/find-issue/templates/month.html\n ** module id = 474\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/find-issue/templates/month.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<optgroup label=\"YEAR\">\\n\t';\n years.forEach(function(year,index) { ;\n__p += '\\n\t\t';\n if(index === 0) { ;\n__p += '\\n\t\t\t<option value=\"' +\n((__t = ( year.yearId )) == null ? '' : __t) +\n'\" selected>' +\n((__t = ( year.yearId )) == null ? '' : __t) +\n'</option>\\n\t\t';\n } else { ;\n__p += '\\n\t\t\t<option value=\"' +\n((__t = ( year.yearId )) == null ? '' : __t) +\n'\">' +\n((__t = ( year.yearId )) == null ? '' : __t) +\n'</option>\\n\t\t';\n } ;\n__p += '\\n\t';\n }); ;\n__p += '\\n</optgroup>';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/find-issue/templates/year.html\n ** module id = 475\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/find-issue/templates/year.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n if (items.length !== 0) { ;\n__p += '\\n\t';\n items.forEach(function(item) { ;\n__p += '\\n\t\t<div class=\"flex-row has-border-bottom pvs\">\\n\t\t\t<div class=\"flex-1\">\\n\t\t\t\t<a href=\"' +\n((__t = ( item.link.href )) == null ? '' : __t) +\n'\" class=\"link--black\">' +\n((__t = ( item.title )) == null ? '' : __t) +\n'</a> ';\n if (item.type == \"Perm\") { ;\n__p += ' (Copyright Permissions) ';\n } ;\n__p += '\\n\t\t\t</div>\\n\t\t\t<div class=\"mlm\">' +\n((__t = ( item.quantity )) == null ? '' : __t) +\n'</div>\\n\t\t</div>\\n\t';\n }); ;\n__p += '\\n\t<div class=\"flex-row pvs\">\\n\t\t<div class=\"flex-1 font-bold\">SUBTOTAL</div><div>$' +\n((__t = ( subTotal )) == null ? '' : __t) +\n'</div>\\n\t</div>\\n\t<a href=\"/shopping-cart\" class=\"button mbn mtm expand\">View your cart</a>\\n';\n } else { ;\n__p += '\\n\t<div class=\"message mbs mtm\">Your Shopping Cart is empty.</div>\\n\t<a href=\"/store\" class=\"button expand mbn\">Visit our store</a>\\n';\n } ;\n__p += '\\n\\n\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/header/templates/cart-contents.html\n ** module id = 476\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/header/templates/cart-contents.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="help-box backdrop-off-white pam thick-border">\\n\t<svg class="border-caret absolute \' +\n((__t = ( box.vertical === "top" ? "top-100pct rotate-180deg" : "bottom-100pct" )) == null ? \'\' : __t) +\n\'" width="24px" height="16px" js-target="help-box-caret"><path stroke-width="4px" d="M 0 16 l 12 -14 l 12 14" /></svg>\\n\t<a href="#" class="text-gray right" js-target="close-help-box"><i class="icon icon-times"></i></a>\\n\t<div class="flex-row justify-center mvs"><i class="icon icon-user-info font-size-xlarge alert-color"></i></div>\\n\t<h3 class="font-light alert-color text-center">\' +\n((__t = ( box.headline )) == null ? \'\' : __t) +\n\'</h3>\\n\t\' +\n((__t = ( box.body )) == null ? \'\' : __t) +\n\'\\n\t<div class="text-center"><a href="#" class="button--black mtm mbn" js-target="close-help-box">OK, Thanks</a></div>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/help-box/template.html\n ** module id = 477\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/help-box/template.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n\n var groupPrice = 0.00; ;\n__p += \'\\n<div class="ptxl">\\n<div class="row backdrop-lightest mln mrn prm plm">\\n<div class="section-label pbl ptl font-size-large font-weight-normal">Better Together</div>\\n\';\n skus.forEach(function(sku) { ;\n__p += \'\\n\';\n sku.Product_Type_Name = sku.Product_Type_Name ? sku.Product_Type_Name : sku.ProductTypeName ;\n__p += \'\\n\';\n groupPrice = (parseFloat(groupPrice) + parseFloat(sku.Price)).toFixed(2) ;\n__p += \'\\n\t<div class="small-12 medium-4 column plm mbl item-separator prm better-together__item">\\n\t\t<figure class="left product-thumb mbn">\\n\t\t\t<a href="\' +\n((__t = ( sku.ProductLink )) == null ? \'\' : __t) +\n\'"><img src="\' +\n((__t = ( sku.ImageUrl )) == null ? \'\' : __t) +\n\'"></a>\\n\t\t</figure>\\n\t\t<div class="product-thumb-margin mrl">\\n\t\t\t<a href="\' +\n((__t = ( sku.ProductLink )) == null ? \'\' : __t) +\n\'"><h6 class="mbs font-size-default font-bold title-ellipses-3" js-target="ellipse-product-title">\' +\n((__t = ( sku.Name )) == null ? \'\' : __t) +\n\'</h6></a>\\n\t\t\t\t<h6 js-target="bt-content-format" class="font-size-small text-gray">\' +\n((__t = ( sku.Product_Type_Name )) == null ? \'\' : __t) +\n\'</h6> \\n\t\t\t\t<div class="stick-to-bottom">\\n\t\t\t\t\';\n if ((parseFloat(sku.Price)).toFixed(2) !=0) { ;\n__p += \'\t\\n\t\t\t\t\t<div class="price mbs">\' +\n((__t = ( sku.Price )) == null ? \'\' : __t) +\n\'</div>\\n\t\t\t\t\t<add-to-cart class="add-to-cart is-inline-block" \\n\t\t\t\t\t\tdata-type=""\\n\t\t\t\t\t\tdata-product-title="\' +\n((__t = ( sku.Name )) == null ? \'\' : __t) +\n\'" \\n\t\t\t\t\t\tdata-product-major-subject="\' +\n((__t = ( sku.Major_Subject )) == null ? \'\' : __t) +\n\'" \\n\t\t\t\t\t\tdata-product-author="\' +\n((__t = ( sku.Authors )) == null ? \'\' : __t) +\n\'"\\n\t\t\t\t\t\tdata-product-price="\' +\n((__t = ( sku.Price )) == null ? \'\' : __t) +\n\'"\\n\t\t\t\t\t\tdata-product-image="\' +\n((__t = ( sku.ImageUrl )) == null ? \'\' : __t) +\n\'"\\n\t\t\t\t\t\tdata-product-id="\' +\n((__t = ( sku.ProductID )) == null ? \'\' : __t) +\n\'" \\n\t\t\t\t\t\tdata-product-url="\' +\n((__t = ( sku.ProductLink )) == null ? \'\' : __t) +\n\'" \\n\t\t\t\t\t\tdata-product-content-type="\' +\n((__t = ( sku.Product_Type_Name )) == null ? \'\' : __t) +\n\'"\\n\t\t\t\t\t\tdata-product-format="${ sku.Product_Format }"\\n\t\t\t\t\t\tdata-group-name="better-together"\\n\t\t\t\t\t\t>\\n\t\t\t\t\t\t<input type="hidden" js-target="item-quantity" value="1">\\n\t\t\t\t\t\t<div class="hbr-checkbox mrn mbn mln mtn is-inline-block"> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\n\t\t\t\t\t\t\t<input id="\' +\n((__t = ( sku.ProductID )) == null ? \'\' : __t) +\n\'" checked="checked" type="checkbox" value="\' +\n((__t = ( sku.ProductID )) == null ? \'\' : __t) +\n\'" js-target="checkbox-better-together" class="vertical-align-bottom mts checkbox-size-large mbn">\\n\t\t\t\t\t\t\t<label for="\' +\n((__t = ( sku.ProductID )) == null ? \'\' : __t) +\n\'" class="mts"></label>\t\t\t\t\t\t\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</add-to-cart>\\n\t\t\t\t\t\';\n } ;\n__p += \'\\n\t\t\t\t</div>\t\t\t\t\\n\t\t</div>\\n\t</div>\\n\';\n }); ;\n__p += \'\\n</div>\\n<div class="is-centered-list"><svg class="rotate-180deg" width="45px" height="20px"><path fill="#eff0f0" stroke-width="4px" d="M 0 21 l 22 -19 l 22 19"></path></svg></div>\\n<div class="text--align-center">\\n\t<span class="font-size-small font-bold">TOTAL PRICE =&nbsp;</span><span class="price font-size-xlarge font-light mrl" js-target="price-better-together">\' +\n((__t = ( groupPrice )) == null ? \'\' : __t) +\n\'</span>\\n\t<div class="show-for-small mbs"></div>\\n\t<button js-target="add-bt-multiple" class="button--tight mbn mln mrn btn-cart baseline-shift-up-more button--add-to-cart__idp expand-when-small" data-group-name="better-together">Add to cart</button>\\n</div>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/better-together.html\n ** module id = 478\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/better-together.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="small-only-text-left">\\n\t<a href="\' +\n((__t = ( link )) == null ? \'\' : __t) +\n\'">\\n\t\t<div class="mbl big-idea-svg is-inline-block"></div>\\n\t\t<h5 class="mbl">\' +\n((__t = ( heading )) == null ? \'\' : __t) +\n\'</h5>\\n\t</a>\t\\n</div>\\n<h6 class="mbn font-size-small">\\n\t<a href="#" class="dark-gray font-weight-normal" js-target="slider-promo-close">\\n\t\t<i class="icon icon-circle-x baseline-shift-down"></i>\\n\t\t<strong class="font-heavy">NO THANKS,</strong> I WANT TO CONTINUE READING.\\n\t</a>\\n</h6>\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/big-idea-promo.html\n ** module id = 479\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/big-idea-promo.html?./web_loaders/template.loader.js'); },function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<section class=\"content-circulator mvl pvl\">\\n\t<div class=\"row\">\\n\t\t<div class=\"content-area\">\\n\t\t\t<h5>Related Products</h5>\\n\t\t\t<div class=\"flex-row-wrap\">\\n\t\t\t\t';\n skus.forEach(function(sku) { ;\n__p += '\\n\t\t\t\t<div class=\"small-12 medium-4 column has-border-left\">\\n\t\t\t\t\t<div class=\"pls prm pbm\">\\n\t\t\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" class=\"produc\">\\n\t\t\t\t\t\t\t';\n if( sku.ImageUrl) { ;\n__p += '\\n\t\t\t\t\t\t\t<img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\" class=\"product-thumb-small\">\\n\t\t\t\t\t\t\t';\n } else { ;\n__p += '\\n\t\t\t\t\t\t\t<img src=\"/resources/css/images/article-default-img.png\" alt=\"default image\" class=\"product-thumb-small\">\\n\t\t\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t\t\t</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div>\\n\t\t\t\t\t\t';\n if (typeof sku.Major_Subject !== \"undefined\") {\n\t\t\t\t\t\tvar termlink = sku.Major_Subject.toLowerCase().replace(\"&\",\"and\").replace(/ /g,\"-\");\n\t\t\t\t\t\t;\n__p += '\\n\t\t\t\t\t\t<h5 class=\"section-label font-bold pls font-size-small\">\\n\t\t\t\t\t\t\t<strong><a href=\"/topic/' +\n((__t = ( termlink )) == null ? '' : __t) +\n'\"class=\"topic\">' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'</a></strong>\\n\t\t\t\t\t\t</h5>\\n\t\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class=\"panel mbn pls pts pbn\">\\n\t\t\t\t\t\t<stream-item class=\"stream-item\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t\t\t data-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\">\\n\\n\t\t\t\t\t\t\t<h5 class=\"hed black font-size-large font-bold title-ellipses-3 mbn\" js-target=\"ellipse-product-title\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h5>\\n\t\t\t\t\t\t\t<div class=\"flex-row justify-between align-items-end\">\\n\t\t\t\t\t\t\t\t<div>\\n\t\t\t\t\t\t\t\t\t<h6 class=\"font-size-small text-gray\">' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'</h6>\\n\t\t\t\t\t\t\t\t\t<span class=\"price\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</span>\\n\t\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t\t<div>\\n\t\t\t\t\t\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t\t\t\t class=\"button--alt-black mbn mtn prm plm spacing-neutral uppercase\">View Details</a>\\n\t\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</stream-item>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t\t';\n }); ;\n__p += '\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/books-recirc.html\n ** module id = 480\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/books-recirc.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<section class=\"content-circulator mvl\">\\n\t<div class=\"row\">\\n\t\t<div class=\"content-area\">\\n\t\t\t<h5>Related Articles</h5>\\n\t\t\t<div class=\"flex-row-wrap\">\\n\t\t\t';\n skus.forEach(function(sku) { ;\n__p += '\\n\t\t\t\t<div class=\"small-12 medium-4 column has-border-left\">\\n\t\t\t\t\t<div class=\"pls prm pbm\">\\n\t\t\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">\\n\t\t\t\t\t\t';\n if( sku.ThumbnailImageURL) { ;\n__p += '\\n\t\t\t\t\t\t<img src=\"' +\n((__t = ( sku.ThumbnailImageURL )) == null ? '' : __t) +\n'\" class=\"section-image\">\\n\t\t\t\t\t\t';\n }\n\t\t\t\t\t\telse { ;\n__p += '\\n\t\t\t\t\t\t<img src=\"/resources/css/images/article-default-img.png\" alt=\"default image\" class=\"section-image\">\\n\t\t\t\t\t\t';\n }\n\t\t\t\t\t\t;\n__p += '\\n\t\t\t\t\t\t</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div>\\n\t\t\t\t\t\t';\n if (typeof sku.Major_Subject !== \"undefined\") {\n\t\t\t\t\t\tvar termlink = sku.Major_Subject.toLowerCase().replace(\"&\",\"and\").replace(/ /g,\"-\");\n\t\t\t\t\t\t;\n__p += '\\n\t\t\t\t\t\t<h5 class=\"section-label font-bold pls font-size-small\">Up Next in <strong><a href=\"/topic/' +\n((__t = ( termlink )) == null ? '' : __t) +\n'\" class=\"topic\">' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'</a></strong></h5>\\n\t\t\t\t\t\t';\n } ;\n__p += '\\n </div>\\n <div class=\"panel mbn pls pts pbn\">\\n <stream-item class=\"stream-item\"\\n data-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\"\\n data-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\"\\n data-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"\\n data-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-image=\"' +\n((__t = ( sku.ThumbnailImageURL )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t>\\n\\n\t\t\t\t\t<h5 class=\"hed black font-size-large font-bold\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h5>\\n\t\t\t\t\t<div>\\n\t\t\t\t\t\t<span class=\"content-type\">' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'</span>\\n\t\t\t\t\t\t';\n if(sku.Authors) { ;\n__p += '\\n\t\t\t\t\t\t<ul class=\"byline byline-list line-height-tight\"><li>' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'</li></ul>\\n\t\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t\t</div>\\n\t\t\t\t\t</stream-item>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t';\n }); ;\n__p += '\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/bottom-recirc.html\n ** module id = 481\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/bottom-recirc.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n if (button_text == \"RENR\" || button_text == \"RENI\") { ;\n__p += '\\n\t\t<a href=\"' +\n((__t = ( button_link )) == null ? '' : __t) +\n'\" class=\"button expand mbs\">RENEW NOW</a>\\n';\n } else if (button_text == \"GIFR\" || button_text == \"GIFI\") { ;\n__p += '\\n\t\t<a href=\"' +\n((__t = ( button_link )) == null ? '' : __t) +\n'\" class=\"button expand mbs\">GIVE A GIFT</a>\\n';\n } else if (button_text == \"PAYR\" || button_text == \"PAYI\") { ;\n__p += '\\n\t\t<a href=\"' +\n((__t = ( button_link )) == null ? '' : __t) +\n'\" class=\"button expand mbs\">PLEASE PAY NOW</a>\t\t\\n';\n } else { ;\n__p += '\\n<a href=\"' +\n((__t = ( button_link )) == null ? '' : __t) +\n'\" class=\"button expand mbs\">SUBSCRIBE</a>\\n';\n } ;\n\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/button-link.html\n ** module id = 482\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/button-link.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<h4 class=\"mtl\">Recommended</h4>\\n\\n<ul>\\n';\n skus.forEach(function(sku) { ;\n__p += '\\n\t<li>\\n\t\t<div>\\n\t\t\t<figure class=\"left product-thumb\">\\n\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"></a>\\n\t\t\t</figure>\\n\t\t\t<div class=\"product-thumb-margin\">\\n\t\t\t\t<h6 class=\"hed mbs title-ellipses-3\" js-target=\"ellipse-product-title\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h6>\\n\t\t\t\t<div class=\"stream-item-info\">\\n\t\t\t\t\t<span class=\"topic\">' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'</span> <span class=\"content-type\">' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'</span> \\n\t\t\t\t\t<div class=\"mvm\">\\n\t\t\t\t\t\t<span class=\"price\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</span>\\n\\n\t\t\t\t\t\t<add-to-cart class=\"add-to-cart is-inline-block\" \\n\t\t\t\t\t\t\tdata-type=\"\"\\n\t\t\t\t\t\t\tdata-product-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-major-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-author=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\tdata-product-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\t\tdata-product-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t\t>\\n\t\t\t\t\t\t\t<input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n\t\t\t\t\t\t\t<a href=\"#\" js-target=\"add\" class=\"alt-action pts mls\">Add to Cart</a>\\n\t\t\t\t\t\t</add-to-cart>\\n\\n\t\t\t\t\t</div>\\n\\n\t\t\t\t\t<stream-item class=\"stream-item\" \\n\t\t\t\t\t\tdata-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t>\\n\t\t\t\t\t</stream-item>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</li>\\n';\n }); ;\n__p += '\\n</ul>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/dive-deeper.html\n ** module id = 483\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/dive-deeper.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<section class=\"section poster clearfix\" style=\"background-image: url(\\'' +\n((__t = ( background )) == null ? '' : __t) +\n'\\');\">\\n\t<div class=\"row\">\\n\t\t<div class=\"content-area column container\">\\n\t\t\t<div class=\"row\">\\n\t\t\t\t<div class=\"medium-8 large-5 columns\">\\n\t\t\t\t\t<div class=\"mt-large2 mbl\">\\n\t\t\t\t\t\t<figure class=\"poster-logo-for-small medium-8\">\\n\t\t\t\t\t\t\t<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( logo )) == null ? '' : __t) +\n'\" alt=\"' +\n((__t = ( heading )) == null ? '' : __t) +\n'\" /></a>\\n\t\t\t\t\t\t</figure>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<h3 class=\"poster-top-hed white\"><a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\">' +\n((__t = ( heading )) == null ? '' : __t) +\n'</a></h3>\\n\t\t\t\t\t<div class=\"font-size-large line-height-normal medium-9 white\"><a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\">' +\n((__t = ( description )) == null ? '' : __t) +\n'</a></div>\\n\t\t\t\t\t\\n\t\t\t\t\t<a href=\"' +\n((__t = ( btn_link )) == null ? '' : __t) +\n'\" class=\"button mtm mb-large2\">' +\n((__t = ( btn_text )) == null ? '' : __t) +\n'</a>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/get-more.html\n ** module id = 484\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/get-more.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<section class=\"section poster clearfix\" style=\"background-image: url(\\'' +\n((__t = ( background )) == null ? '' : __t) +\n'\\');\">\\n\t<div class=\"row\">\\n\t\t<div class=\"content-area column container\">\\n\t\t\\n\t\t\t<div class=\"row\">\\n\t\t\t\t<div class=\"medium-8 large-5 columns\">\\n\t\t\t\t\t<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\"><div class=\"mb-large2 mt-large2\">\\n\t\t\t\t\t\t<figure class=\"poster-logo-for-small medium-7 large-11\">\\n\t\t\t\t\t\t\t<img src=\"' +\n((__t = ( logo )) == null ? '' : __t) +\n'\" alt=\"' +\n((__t = ( heading )) == null ? '' : __t) +\n'\" />\\n\t\t\t\t\t\t</figure>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<h2 class=\"poster-top-hed white\">' +\n((__t = ( heading )) == null ? '' : __t) +\n'</h2>\\n\t\t\t\t\t<p class=\"description-text white line-height-normal\">' +\n((__t = ( description )) == null ? '' : __t) +\n'</p></a>\\n\t\t\t\t\t<a href=\"' +\n((__t = ( btn_link )) == null ? '' : __t) +\n'\" class=\"button mtm mbl\">' +\n((__t = ( btn_text )) == null ? '' : __t) +\n'</a>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/hmm.html\n ** module id = 485\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/hmm.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"poster-carousel mb-large2\">\\n\\n\t';\n skus.forEach(function(sku) { ;\n__p += '\\n\t<!-- item -->\\n\t<div class=\"row carousel-item\"> \\n\t\t<div class=\"medium-4 column mtm\">\\n\t\t\t<figure class=\"carousel-image\">\\n\t\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\" alt=\"\" /></a>\\n\t\t\t</figure>\\n\t\t</div>\\n\t\t<div class=\"medium-7 end column mtl\">\\n\t\t\t<!-- issue info, featured links, etc -->\\n\t\t\t\\n\t\t\t<div class=\"eyebrow hbrgray font-light mbm\"><strong>' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'</strong> ' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'</div>\\n\\n\t\t\t<h2 class=\"mbm\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h2>\\n\t\t\t\\n\t\t\t<p class=\"dek text-gray-light\">' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'</p>\\n\\n\t\t\t<div class=\"row\">\\n\t\t\t\t<div class=\"medium-6 column\">\\n\t\t\t\t\t<span class=\"price\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</span> \\n\\n\t\t\t\t\t<add-to-cart class=\"add-to-cart is-inline-block\" \\n\t\t\t\t\t\tdata-type=\"\"\\n\t\t\t\t\t\tdata-product-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-major-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-author=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t>\\n\t\t\t\t\t\t<input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n\\n\t\t\t\t\t\t<a href=\"#\" js-target=\"add\" class=\"button--tight mls\">Add to Cart</a>\\n\t\t\t\t\t</add-to-cart>\\n\\n\t\t\t\t</div>\\n\\n\t\t\t\t<div class=\"medium-6 column\">\\n\t\t\t\t\t<stream-item class=\"stream-item\" \\n\t\t\t\t\t\tdata-id=\"' +\n((__t = ( sku.ProductID)) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-title=\"' +\n((__t = ( sku.Name)) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-topic=\"' +\n((__t = ( sku.Major_Subject)) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-summary=\"' +\n((__t = ( sku.Description)) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t>\\n\t\t\t\t\t\t<ul class=\"stream-utility\">\\n\t\t\t\t\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"save-flyout\"><i class=\"icon icon-file-text-o\"></i> Save</a></li>\\n\t\t\t\t\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"share-flyout\"><i class=\"icon icon-share-square-o\"></i> Share</a></li>\\n\t\t\t\t\t\t</ul>\\n\t\t\t\t\t</stream-item>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\\n\t\t</div>\\n\t</div>\\n\t';\n }); ;\n__p += '\t\\n\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/large-carousel.html\n ** module id = 486\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/large-carousel.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"flex-row justify-center hide-small\">\\n\t<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" target=\"_blank\"><img class=\"nav-magazine-cover\" src=\"' +\n((__t = ( image )) == null ? '' : __t) +\n'\" alt=\"Subscribe\" /></a>\\n</div>\\n<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" target=\"_blank\" class=\"is-block text-center slug--small light-gray inverted font-tight line-height-tight pvm phl\">' +\n((__t = ( heading )) == null ? '' : __t) +\n'</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/mag-cover.html\n ** module id = 487\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/mag-cover.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<ul class=\"link-list tidy-list no-bullet\">\\n';\n skus.forEach(function(sku) { ;\n__p += '\\n\t<li>\\n\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a>\\n\t</li>\\n';\n }); ;\n__p += '\\n</ul>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/no-results.html\n ** module id = 488\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/no-results.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"prl plm placement-box\">\\n\t\t';\n if (image) { ;\n__p += '\\n\t\t\t<figure class=\"left product-thumb\">\\n\t\t\t\t<a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = (image)) == null ? '' : __t) +\n'\" /></a>\\n\t\t\t</figure>\\n\t\t\t<div class=\"\">\\n\t\t\t\t\t<h1 class=\"font-size-large darker-gray font-heavy mbn\"><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = (header)) == null ? '' : __t) +\n'</a></h1>\\n\t\t\t\t\t<div class=\"font-size-large darker-gray line-height-tight\"><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = (description)) == null ? '' : __t) +\n'</a></div>\t\t\t\t\t\\n\t\t\t\t\t<div><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = (link_text)) == null ? '' : __t) +\n'</a></div>\\n\t\t\t</div>\\n\t\t';\n } else { ;\n__p += '\\n\t\t\t\t<h1 class=\"font-size-large darker-gray font-heavy mbs\"><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = ( header)) == null ? '' : __t) +\n'</a></h1>\\n\t\t\t\t<div class=\"font-size-large darker-gray line-height-tight\" ><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = (description)) == null ? '' : __t) +\n'</a></div>\\n\t\t\t\t<div><a href=\"' +\n((__t = (link)) == null ? '' : __t) +\n'\">' +\n((__t = (link_text)) == null ? '' : __t) +\n'</a></div>\\n\t\t';\n } ;\n__p += '\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/orange-strip-box.html\n ** module id = 489\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/orange-strip-box.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<a href="#" js-target="orange-strip" class="font-size-small">\\n\t<div>\\n\t\t<span class="white font-bold">\' +\n((__t = (TEXT)) == null ? \'\' : __t) +\n\'</span>&nbsp;<span id="offer-msg" class="font-light white">OFFERS</span>\\n\t\t<i js-target="caret" class="icon icon-caret-up white baseline-shift-down font-size-medium mls"></i>\\n\t</div>\\n</a>\t\\n\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/orange-strip-line1.html\n ** module id = 490\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/orange-strip-line1.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"pls pts\">' +\n((__t = (TEXT)) == null ? '' : __t) +\n'</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/orange-strip-line2.html\n ** module id = 491\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/orange-strip-line2.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<!-- This template does nothing -->\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/pop-topics.html\n ** module id = 492\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/pop-topics.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<h2 class="line-height-tight spacing-narrow mtl mb-large2 small-10 is-centered">\' +\n((__t = ( heading )) == null ? \'\' : __t) +\n\'\\n <br>\\n <a href="\' +\n((__t = ( link )) == null ? \'\' : __t) +\n\'" class="primary-color">\' +\n((__t = ( btn_text )) == null ? \'\' : __t) +\n\' \\n <i class="icon icon-load-more font-size-40pct icon-rotate-270 baseline-shift-up"></i>\\n </a>\\n</h2>\\n<img src="https://hbr.org/resources/images/commerce_assets/subscription/paywall-exit-popup.png" alt="" class="width-550">\\n<h5 class="font-weight-normal font-size-large line-height-tight mt-large2 mbl small-10 medium-5 is-centered text-gray">Try six months of the \\n\t<em>Harvard Business Review</em> All-Access Subscription with no further commitment.\\n</h5>\\n<h6 class="mtl font-size-small">\\n <a href="/" class="dark-gray font-weight-normal">\\n <i class="icon icon-circle-x baseline-shift-down"></i>\\n <strong class="font-heavy">NO THANKS,</strong> TAKE ME TO THE HOMEPAGE.\\n </a>\\n</h6>\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/popup-slider.html\n ** module id = 493\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/popup-slider.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '\t<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" target=\"_blank\">' +\n((__t = (heading)) == null ? '' : __t) +\n'</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/red-strip.html\n ** module id = 494\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/red-strip.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"flex-row flex-row-wrap justify-center\">\\n';\n skus.forEach(function(sku, index) { ;\n__p += '\\n ';\n sku.Product_Type_Name = sku.Product_Type_Name ? sku.Product_Type_Name : sku.ProductTypeName ;\n__p += '\\n ';\n if (index < 3) { ;\n__p += '\\n <div class=\"related-section__item mrl\">\\n <figure class=\"left product-thumb\">\\n <a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"></a>\\n </figure>\\n <div class=\"product-thumb-margin mrs\">\\n <a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><h6 class=\"font-size-default font-bold mbs title-ellipses-3\" js-target=\"ellipse-product-title\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</h6></a>\\n <h6 class=\"font-size-small text-gray\">' +\n((__t = (sku.Product_Type_Name)) == null ? '' : __t) +\n'</h6>\\n <div class=\"stream-item-info\">\\n <div class=\"mvm\">\\n <div class=\"stick-to-bottom\">\\n <div class=\"price mbm\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</div>\\n\\n <add-to-cart class=\"add-to-cart is-inline-block\" \\n data-type=\"\"\\n data-product-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n data-product-major-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n data-product-author=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n data-product-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n data-product-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n data-product-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n data-product-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n data-product-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n >\\n <input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n <button href=\"#\" js-target=\"add\" class=\"button--tight mbn button--add-to-cart__idp\">Add to Cart</button>\\n </add-to-cart>\\n </div>\\n </div>\\n\\n <stream-item class=\"stream-item\" \\n data-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n data-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n data-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n data-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n data-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n data-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n data-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\" \\n data-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n data-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n >\\n </stream-item>\\n </div>\\n </div>\\n </div>\\n ';\n } ;\n__p += '\\n\\n';\n }); ;\n__p += '\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/related-section.html\n ** module id = 495\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/related-section.html?./web_loaders/template.loader.js"); },function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n__p += \'<div class="subscription-reminder is-hidden" js-target="subrem-intro">\\n\t<h2 class="line-height-tight spacing-narrow">Did you know subscribers get exclusive access to HBR.org content?</h2>\\n\t<a href="https://subscribe.hbr.org/"><button class="tight phl mtm">Learn More</button></a><button class="tight button--black mtm" js-target="request-reminder">Remind Me Later</button>\\n</div>\\n\\n<div class="subscription-reminder is-hidden" js-target="subrem-form">\\n\t<div class="line-height-tight mbm">We\\\'ll send you a reminder e-mail with information about an HBR subscription.</div>\\n\t<follow-subscribe data-name="Mobile Subscription Reminder" data-activity="newsletter">\\n\t\t<input type="email" name="emailToSubscribe" placeholder="EMAIL" class="font-size-default" />\\n\t\t<div class="font-size-small line-height-tight text--align-left text-gray-light mbl">You will receive occasional emails from HBR. You may unsubscribe at any time. <a href="/corporate/privacy-policy" class="text-gray-dark">View our privacy policy ></a></div>\\n\t\t<button class="tight" style="visibility:hidden;">Learn More</button><button class="tight button--black" js-target="enable-this-by-email" data-method="subscribe">Remind Me Later</button>\\n\t</follow-subscribe>\\n</div>\\n\\n<div class="subscription-reminder is-hidden" js-target="subrem-confirmation">\\n\t<div class="line-height-tight mbl">We\\\'ll send you a reminder e-mail with information about an HBR subscription.</div>\\n\t<div class="font-size-small"><i class="icon icon-unfollow-this-full dark-teal"></i> <span class="uppercase font-bold">An e-mail has been sent to your inbox</span></div>\\n</div>\\n\\n<div class="is-hidden" js-target="normal-slider">\\n\';\n if (layout=="big-idea") { ;\n__p += \'\\n <div class="small-only-text-left">\\n\t\t<a href="\' +\n((__t = ( link )) == null ? \'\' : __t) +\n\'">\\n\t\t\t<div class="mbl big-idea-svg is-inline-block"></div>\\n\t\t\t<h5 class="mbl">\' +\n((__t = ( heading )) == null ? \'\' : __t) +\n\'</h5>\\n\t\t</a>\\n </div>\\n\';\n } else { ;\n__p += \'\\n <h2 class="line-height-tight spacing-narrow mtl">\' +\n((__t = ( heading )) == null ? \'\' : __t) +\n\'\\n\t\t<a href="\' +\n((__t = ( link )) == null ? \'\' : __t) +\n\'" class="primary-color">\' +\n((__t = ( btn_text )) == null ? \'\' : __t) +\n\'\\n\t\t\t<i class="icon icon-load-more font-size-40pct icon-rotate-270 baseline-shift-up"></i>\\n\t\t</a>\\n </h2>\\n\';\n } ;\n__p += \'\\n</div>\\n\\n<h6 class="pp-footer mtl font-size-small" js-target="slider-promo-close">\\n <a href="#" class="dark-gray font-weight-normal">\\n <i class="icon icon-circle-x baseline-shift-down"></i>\\n <strong class="font-heavy">NO THANKS,</strong> I WANT TO CONTINUE READING.\\n </a>\\n</h6>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/slider-promo.html\n ** module id = 496\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/slider-promo.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<store-carousel class=\"store-carousel flex-row\" style=\"height:200px\">\\n';\n skus.forEach(function(sku) { ;\n__p += '\\n\t<div>\\n\t\t<figure class=\"left product-thumb\">\\n\t\t\t<a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"></a>\\n\t\t</figure>\\n\t\t<div class=\"product-thumb-margin mrs\">\\n\t\t\t<h6 class=\"font-size-default font-bold mbs title-ellipses-3\" js-target=\"ellipse-product-title\"><a href=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'</a></h6>\\n\t\t\t<h6 class=\"font-size-small text-gray\">' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'</h6>\\n\t\t\t<div class=\"stream-item-info\">\\n\t\t\t\t<div class=\"mvm\">\\n\t\t\t\t\t<div class=\"test-bottom\">\\n\t\t\t\t\t<div class=\"price mbs\">' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'</div>\\n\\n\t\t\t\t\t<add-to-cart class=\"add-to-cart is-inline-block\" \\n\t\t\t\t\t\tdata-type=\"\"\\n\t\t\t\t\t\tdata-product-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-major-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-author=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\tdata-product-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\t\tdata-product-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\t\t>\\n\t\t\t\t\t\t<input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n\t\t\t\t\t\t<button href=\"#\" js-target=\"add\" class=\"button--tight mbn test--button\">Add to Cart</button>\\n\t\t\t\t\t</add-to-cart>\\n\t\t\t\t</div>\\n\t\t\t\t</div>\\n\\n\t\t\t\t<stream-item class=\"stream-item\" \\n\t\t\t\t\tdata-id=\"' +\n((__t = ( sku.ProductID )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-title=\"' +\n((__t = ( sku.Name )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-url=\"' +\n((__t = ( sku.ProductLink )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-topic=\"' +\n((__t = ( sku.Major_Subject )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-image=\"' +\n((__t = ( sku.ImageUrl )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-summary=\"' +\n((__t = ( sku.Description )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-authors=\"' +\n((__t = ( sku.Authors )) == null ? '' : __t) +\n'\" \\n\t\t\t\t\tdata-content-type=\"' +\n((__t = ( sku.Product_Type_Name )) == null ? '' : __t) +\n'\"\\n\t\t\t\t\tdata-list-price=\"' +\n((__t = ( sku.Price )) == null ? '' : __t) +\n'\"\\n\t\t\t\t>\\n\t\t\t\t</stream-item>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t</div>\\n';\n }); ;\n__p += '\\n</store-carousel>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/small-carousel.html\n ** module id = 497\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/small-carousel.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<ul>\\n' +\n((__t = ( streamEntry({skus: skus}) )) == null ? '' : __t) +\n'\\n';\n if (showLoadMore) { ;\n__p += '\t\\n\t' +\n((__t = ( loadMore() )) == null ? '' : __t) +\n'\\n';\n } ;\n__p += '\\n\\n</ul>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/stream-content.html\n ** module id = 498\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/stream-content.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" class=\"button hide-for-subscriber mvm\">\\n\tSUBSCRIBE\\n</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/subscribe-button.html\n ** module id = 499\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/subscribe-button.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" class=\"subscribe-tout\" target=\"_blank\">\\n\t' +\n((__t = ( heading )) == null ? '' : __t) +\n'\\n</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/subscribe-now.html\n ** module id = 500\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/subscribe-now.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div style=\"background-image: url(\\'' +\n((__t = ( background )) == null ? '' : __t) +\n'\\');\" class=\"poster-subscription-offer text-center\">\\n\t<a href=\"' +\n((__t = ( btn_link )) == null ? '' : __t) +\n'\" class=\"button mbn is-centered mtl\">' +\n((__t = ( btn_text )) == null ? '' : __t) +\n'</a>\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/subscription.html\n ** module id = 501\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/subscription.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<a href=\"' +\n((__t = (btn_link)) == null ? '' : __t) +\n'\"><div class=\"\\n';\n if (name == \"home_page.top_deals_engage\") { ;\n__p += 'backdrop-archive\\n';\n } else if (name == \"home_page.top_deals2_engage\") { ;\n__p += 'backdrop-ordered\\n';\n } else { ;\n__p += 'backdrop-success-color\\n';\n };\n__p += ' pvm mbm text-center\">\\n\t<h1 class=\"white subheader xlarge-hed\">\\n\t\t' +\n((__t = ( box_text_top )) == null ? '' : __t) +\n'\\n\t</h1>\\n\t<div class=\"white font-light\">\\n\t\t' +\n((__t = ( box_text_bottom )) == null ? '' : __t) +\n'\\n\t</div>\\n</div></a>\\n<h4>\\n\t' +\n((__t = ( heading )) == null ? '' : __t) +\n'\\n</h4>\\n<p class=\"mhl mvm message text-left\">\\n\t' +\n((__t = (description)) == null ? '' : __t) +\n'\\n</p>\\n<a href=\"' +\n((__t = (btn_link)) == null ? '' : __t) +\n'\" class=\"button\">\\n\t' +\n((__t = (btn_text)) == null ? '' : __t) +\n'\\n</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/top-deals.html\n ** module id = 502\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/top-deals.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"has-border-left mtl\">\\n\t<h4 class=\"circulator-text-header uppercase ptn plm mbn\">What to read next</h4>\\n\t<div class=\"plm ptm\">\\n\t\t<div class=\"circulator-image mbs\">\\n\t\t\t<a href=\"' +\n((__t = ( skus[0].ProductLink )) == null ? '' : __t) +\n'\">\\n ';\n if( skus[0].ThumbnailImageURL) { ;\n__p += '\\n <img src=\"' +\n((__t = ( skus[0].ThumbnailImageURL )) == null ? '' : __t) +\n'\" class=\"prs pbs\">\\n ';\n }\n else { ;\n__p += '\\n <img src=\"/resources/css/images/article-default-img.png\" alt=\"default image\" class=\"prs pbs\">\\n ';\n }\n ;\n__p += '\\n\t\t\t</a>\\n\t\t</div>\\n\t<h5 class=\"hed black font-size-large font-bold\"><a href=\"' +\n((__t = ( skus[0].ProductLink )) == null ? '' : __t) +\n'\">' +\n((__t = ( skus[0].Name )) == null ? '' : __t) +\n'</a></h5>\\n\t</div>\\n</div>\\n\\n\\n\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/top-recirc.html\n ** module id = 503\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/top-recirc.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<a href=\"' +\n((__t = ( link )) == null ? '' : __t) +\n'\" class=\"link--black justify-center align-items-center flex-row nowrap font-heavy font-size-large\">' +\n((__t = (heading)) == null ? '' : __t) +\n'</a>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/personalization-placement/templates/topbar-subscribe.html\n ** module id = 504\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/personalization-placement/templates/topbar-subscribe.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"flex-row-medium\">\\n\t<figure class=\"magazine-cover medium-3 large-2 mts mbm mrl\">\\n\t\t';\n if (entry.image) { ;\n__p += '\\n\t\t\t<a href=\"/archive-toc/' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( entry.image )) == null ? '' : __t) +\n'\" alt=\"' +\n((__t = ( entry.title )) == null ? '' : __t) +\n'\"></a>\\n\t\t';\n } ;\n__p += '\\n\t</figure>\\n\t<div>\\n\t\t<div class=\"card mtn\">\\n\t\t\t<a href=\"/archive-toc/' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\">\\n\t\t\t\t<h2 class=\"mvn\"> ' +\n((__t = ( entry.title )) == null ? '' : __t) +\n' </h2>\\n\t\t\t</a>\\n\t\t\t<div class=\"dek text-gray-light mts\"> ' +\n((__t = ( entry.summary )) == null ? '' : __t) +\n' </div>\\n\t\t</div>\\n\t\t<div class=\"eyebrow hbr-gray mbm mtl\">\\n\t\t\tFeaturing\\n\t\t</div>\\n\t\t<ul>\\n\t\t\t';\n entry.items.forEach(function(feature) { ;\n__p += '<li class=\"dark-gray\">\\n\t\t\t\t<a href=\"' +\n((__t = ( feature.link )) == null ? '' : __t) +\n'\">' +\n((__t = ( feature.title )) == null ? '' : __t) +\n'</a></li>';\n }); ;\n__p += '\\n\t\t</ul>\\n\t</div>\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/issue.html\n ** module id = 505\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/issue.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'\t<li class="stream-entry mtl ptm">\\n\t\t<div class="row">\\n\t\t\t<div class="content-area column">\\n\t\t\t\t<div class="stream-item-activity-label ordered text-centered"></div>\\n\t\t\t\t<stream-item class="mvl backdrop-cool-3">\\n\t\t\t\t\t<h2 class="hed text-center ptl"><i class="icon icon-alert primary-color baseline-shift-down"></i> Site is in maintenance mode.</h2>\\n\t\t\t\t\t<div class="pbl description-text text-center">Purchasing will be unavailable on hbr.org throughout the weekend due to system upgrades. We apologize for any inconvenience this may cause.</div>\\n\t\t\t\t\t</stream-item>\\n\t\t\t\t</div>\\n\t\t</div>\\n\t</li>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/maintenance.html\n ** module id = 506\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/maintenance.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n\n if (entries.length !== 0) { entries.forEach(function(entry) { ;\n__p += \'\\n<li class="stream-entry \';\n if (entry.contentType === \'Sponsored Content\' || entry.contentType === \'Sponsor Content\') { ;\n__p += \' backdrop-cool-2 sponsored flip-stream-items \';\n } ;\n__p += \'">\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t\' +\n((__t = ( renderEntry(entry) )) == null ? \'\' : __t) +\n\'\\n\t\t</div>\\n\t</div>\\n</li>\\n\';\n }); \n} else { \n\tif (contentType === "watched") { ;\n__p += \'\\n<section>\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="row">\\n\t\t\t\t<div class="small-12 columns backdrop-cool-3 mtl">\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-12 columns text-right mts">\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-10 small-offset-1 columns mtl mbm text-center">\\n\t\t\t\t\t\t\t<h3 class="subheader darker-gray text-center mtm">Welcome to Your Watched History</h3>\\n\t\t\t\t\t\t\t<h5 class="subheader darker-gray text-center mvl line-height-normal">Looks like you haven\\\'t watched any of our videos yet. Want to get started? Visit our video homepage</h5>\\n\t\t\t\t\t\t\t<div class="mvl text-center">\\n\t\t\t\t\t\t\t\t<a href="/video" class="button mtm mbl">VISIT OUR VIDEO PAGE</a>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\';\n } if (contentType === "read") { ;\n__p += \'\\n<section>\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="row">\\n\t\t\t\t<div class="small-12 columns">\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-12 columns text-right mtm">\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-10 small-offset-1 columns mvm text-center">\\n\t\t\t\t\t\t\t<h3 class="subheader darker-gray mtn">Welcome to Your Reading History</h3>\\n\t\t\t\t\t\t\t<h5 class="subheader darker-gray mtm mbl line-height-normal">Looks like you haven\\\'t read anything since creating your account. Try visiting our homepage to see what our editors are focused on today, or check out content on one of our 150+ topics.</h5>\\n\\n\t\t\t\t\t\t\t<div class="mvl">\\n\t\t\t\t\t\t\t\t<a href="/" class="button--black mrm">VISIT HOME PAGE</a>\\n\t\t\t\t\t\t\t\t\t<a href="/topics" class="button--light-gray mrm">SEE OUR TOPICS</a>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\';\n } if (contentType === "shared") { ;\n__p += \'\\n<section>\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="row">\\n\t\t\t\t<div class="small-12 columns">\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-12 columns text-right mtm">\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t<div class="small-10 small-offset-1 columns mvm text-center">\\n\t\t\t\t\t\t\t<h3 class="subheader darker-gray mtn">Welcome to Your Sharing History</h3>\\n\t\t\t\t\t\t\t<h5 class="subheader darker-gray line-height-normal">Looks like you haven\\\'t shared anything since creating your account. Use the share icon <small class="icon primary-color icon-share-square-o"></small> to easily share any piece of content via email or social media.</h5>\t\t\t\t\t\t\t\\n\t\t\t\t\t\t\t<div class="mvl">\\n\t\t\t\t\t\t\t\t<a href="/" class="button--black mrm">VISIT HOME PAGE</a>\\n\t\t\t\t\t\t\t\t\t<a href="/topics" class="button--light-gray mrm">SEE OUR TOPICS</a>\\n\t\t\t\t\t\t\t</div> \\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\';\n } if (contentType === "ordered") { ;\n__p += \'\\n<section>\\n\t<div class="row mt-large3">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="row">\\n\t\t\t\t<div class="small-10 small-offset-1 columns mt-large2 mbm text-center ">\\n\t\t\t\t\t<h3 class="subheader darker-gray mtm">Welcome to Your Purchase History</h3>\\n\t\t\t\t\t<h5 class="subheader darker-gray mtm mbl line-height-normal">You haven\\\'t purchased anything yet. Visit our store to start shopping.</h5>\\n\t\t\t\t\t<div class="mvl text-center">\\n\t\t\t\t\t\t<a href="/store" class="button mtm mbl">VISIT OUR STORE</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</section>\\n\';\n } if (contentType === "topics") { ;\n__p += \'\\n\t<li>\\n\t\t<h3 class="subheader darker-gray mtm text-center">Welcome to your Topics, <strong>\' +\n((__t = (user.getFirstName())) == null ? \'\' : __t) +\n\'</strong></h3>\\n\t\t<h5 class="subheader darker-gray mbl mtm text-center line-height-normal">Welcome to your topic feeds, where you follow any of our 180+ topics and get a fresh daily dose of <em>Harvard Business Review</em> content related to your interests. To get started, select a few topics you\\\'re interested in. You can explore all of our topics using the "Find More" button to the left.</h5>\\n\t\t<div class="row mt-large2">\\n\t\t\t\';\n [["Strategy", "Negotiations", "Managing Yourself", "Economy"], ["Leading Teams", "Decision Making", "Innovation", "Marketing"]].forEach(function(names) { ;\n__p += \'\\n\t\t\t\t<div class="small-12 medium-6 columns">\\n\t\t\t\t\t\';\n names.forEach(function(name) { ;\n__p += \'\\n\t\t\t\t\t\t<div class="row mtm">\\n\t\t\t\t\t\t\t<div class="small-7 columns"><h5>\' +\n((__t = (name)) == null ? \'\' : __t) +\n\'</h5></div>\\n\t\t\t\t\t\t\t<div class="small-5 columns">\\n\t\t\t\t\t\t\t\t<follow-subscribe class="follow-topic" data-name="\' +\n((__t = (name)) == null ? \'\' : __t) +\n\'" data-activity="topic">\\n\t\t\t\t\t\t\t\t\t<div class="follow-this"><a href="#" js-target="enable-this" data-method="follow"><i class="icon icon-follow-this"></i> <strong>Follow</strong> this</a></div>\\n\t\t\t\t\t\t\t\t\t<div class="unfollow-this"><a href="#" js-target="disable-this" data-method="unfollow"><i class="icon icon-unfollow-this"></i> <strong>Following</strong></a></div>\\n\t\t\t\t\t\t\t\t</follow-subscribe>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t\';\n }); ;\n__p += \'\\n\t\t\t\t</div>\\n\t\t\t\';\n }); ;\n__p += \'\\n\t\t</div>\\n\t\t<a href="#" class="button--black mtl" js-target="reload-stream-list">Done</a>\\n\t</li>\\n\';\n } if (contentType === "newFolderCreated") { ;\n__p += \'\\n\t<section>\\n\t\t<div class="row">\\n\t\t\t<div class="content-area column">\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-10 small-offset-1 columns mtl mbm text-center">\\n\t\t\t\t\t\t<h3 class="subheader darker-gray">You\\\'ve just created a new folder</h3>\\n\t\t\t\t\t\t<h5 class="subheader darker-gray mtm mbl line-height-normal">Use folders to organize the content you save and share with colleagues. Use the folder icon <small class="icon icon-file-text-o primary-color"></small> on any piece of content to add it to a folder.</h5>\\n\t\t\t\t\t\t<a href="/" class="button--black mrm">Go to Home Page</a>\\n\t\t\t\t\t\t<a href="/topics" class="button--black mrm">See Our Topics</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</section>\\n\';\n } if (contentType === "library") { ;\n__p += \'\\n\t<section>\\n\t\t<div class="row">\\n\t\t\t<div class="content-area column">\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-12 columns mtl">\\n\t\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t\t<div class="hbr-checkbox left mrl mln hide-for-small"></div>\\n\t\t\t\t\t\t\t<div class="small-10 columns text-center">\\n\t\t\t\t\t\t\t\t\t<h3 class="subheader darker-gray">Hi, <strong>\' +\n((__t = (user.getFirstName())) == null ? \'\' : __t) +\n\'</strong>. Welcome to your personal HBR Library.</h3>\\n\t\t\t\t\t\t\t\t\t<h5 class="subheader darker-gray mtm mbl line-height-normal">Consider this your own personal space for collecting, organizing, and sharing your favorite content from Harvard Business Review. Use the folder icon <small class="icon icon-file-text-o primary-color"></small> on any piece of content to add it to your library.</h5>\\n\t\t\t\t\t\t\t\t\t <a href="/" class="button--black">Go to Home Page</a>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</section>\t\\n\';\n } if (contentType === "activity") { ;\n__p += \'\\n<section>\\n\t\t<div class="row">\\n\t\t\t<div class="content-area column">\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-12 columns">\\n\t\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t\t<div class="small-10 small-offset-1 columns mtl mbm text-center">\\n\t\t\t\t\t\t\t\t<h3 class="subheader darker-gray mtn">Welcome to Your Activity Feed</h3>\\n\t\t\t\t\t\t\t\t<h5 class="subheader darker-gray mtm mbl line-height-normal">Here you can find all the things that you\\\'ve read and shared while signed in to your account. To get started, visit our homepage to see what our editors are focused on today, or check out content on one of our 150+ topics.</h5>\\n\t\t\t\t\t\t\t\t \\n\t\t\t\t\t\t\t\t<div class="mvl"> \\n\t\t\t\t\t\t\t\t\t<a href="/" class="button--black mrm">VISIT HOME PAGE</a>\\n\t\t\t\t\t\t\t\t\t<a href="/topics" class="button--light-gray mrm">SEE OUR TOPICS</a>\\n\t\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t</div>\t\t\t\t\t\t\t\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n</section>\\n\';\n } if (contentType === "content") { ;\n__p += \'\\n\t<section>\\n\t\t<div class="row">\\n\t\t\t<div class="content-area column">\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-12 columns backdrop-cool-3 mtl">\\n\t\t\t\t\t\t<div class="row">\\n\t\t\t\t\t\t\t<div class="small-10 small-offset-1 columns mtl mbm">\\n\t\t\t\t\t\t\t\t<h3 class="subheader darker-gray text-center mvl">Looks like there is nothing here yet. To get started, click on the Harvard Business Review logo in the upper left corner to go to our homepage and see what our editors are focused on today.</h3>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</section>\\n\';\n }\n} ;\n__p += \'\\n\\n\';\n if (!hide) { ;\n__p += \'\\n<li class="stream-entry">\\n\t<div class="row">\\n\t\t<div class="content-area column">\\n\t\t\t<div class="load-ten-more">\\n\t\t\t\t<a href="#" js-target="load-ten-more-link">\\n\t\t\t\t<i class="icon icon-load-more mrs"></i> Load more items</a>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</li>\\n\';\n } ;\n__p += \'\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/page.html\n ** module id = 507\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/page.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="loading cushion is-centered">\\n\t<div class="pie rotation"></div>\\n\t<div class="pie filler"></div>\\n\t<div class="mask"></div>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/spinner.html\n ** module id = 508\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/spinner.html?./web_loaders/template.loader.js')},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(moment) {module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n if (entry.content.seriesLabel) { ;\n__p += '\\n\t<div class=\"nudge-up\">' +\n((__t = ( entry.content.seriesLabel )) == null ? '' : __t) +\n'</div>\\n';\n } else if (entry.productStatus === \"F\") { ;\n__p += '\\n\t<div class=\"nudge-up mbs\"><div class=\"label info\">Coming soon</div></div>\\n';\n } ;\n__p += '\\n\\n';\n if (entry.content.selectable === true) { ;\n__p += '\\n\t<div class=\"hbr-checkbox left mrl mln hide-for-small\">\\n\t\t<input type=\"checkbox\" value=\"' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\" id=\"' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\" js-target=\"bulk-action-checkbox\" name=\"' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\"\\n\t\t';\n if (entry.content.list) { ;\n__p += ' data-list=\"' +\n((__t = ( entry.content.list.id )) == null ? '' : __t) +\n'\"';\n } ;\n__p += '>\\n\t\t<label for=\"' +\n((__t = ( entry.id )) == null ? '' : __t) +\n'\"></label>\\n\t</div>\\n';\n } ;\n__p += '\\n\\n';\n if (entry.content.activity) { ;\n__p += '\\n\t<div class=\"stream-item-activity-label ' +\n((__t = ( entry.content.activity )) == null ? '' : __t) +\n'\">\\n\t\t<span class=\"stream-item-activity-label-text\">' +\n((__t = ( entry.content.activity === \"ordered\" ? \"order\" : entry.content.activity )) == null ? '' : __t) +\n'</span>\\n\t</div>\\n';\n } ;\n__p += '\\n\\n\\n<stream-item class=\"stream-item overflow-hidden\"\\n\tdata-id=\"' +\n((__t = ( entry.content.id )) == null ? '' : __t) +\n'\"\\n\tdata-title=\"' +\n((__t = ( entry.title.replace(/\"/g, \"&quot;\") )) == null ? '' : __t) +\n'\"\\n\tdata-url=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'\"\\n\tdata-topic=\"' +\n((__t = ( entry.category.term )) == null ? '' : __t) +\n'\"\\n\tdata-authors=\"';\n entry.author.forEach(function(author){ ;\n__p +=\n((__t = ( author.name.replace(/\"/g, \"&quot;\") )) == null ? '' : __t) +\n';';\n }); ;\n__p += '\"\\n\tdata-content-type=\"' +\n((__t = ( entry.contentType )) == null ? '' : __t) +\n'\"\\n\tdata-content-image = \"' +\n((__t = ( entry.content.image )) == null ? '' : __t) +\n'\"\\n\tdata-summary = \"' +\n((__t = ( entry.summary.replace(/\"/g, \"&quot;\") )) == null ? '' : __t) +\n'\"\\n\tdata-list-price =\"' +\n((__t = (entry.listPrice)) == null ? '' : __t) +\n'\"\\n>\\n\t';\n if (entry.content.activity === \"ordered\") { ;\n__p += '\\n\t\\n\t\t';\n if (entry.title.indexOf('#S') !== -1) { ;\n__p += '\\n\t<h3 class=\"hed\"><a href=\"#\" js-target=\"subscription-details\">Subscribed to Harvard Business Review</a></h3>\\n\t\\n\t<div class=\"dek\">\\n\t\tAccount Number: <strong>#' +\n((__t = ( entry.title.substring(entry.title.indexOf('#S') + 2) )) == null ? '' : __t) +\n'</strong>\\n\t</div>\\n\t<ul class=\"stream-utility plain-inline-list\">\t\\n\t\t<li class=\"utility pubdate\">\\n\t\t\t<time>\\n\t\t\t\t';\n if (entry.published !== undefined && entry.published !== null && entry.published !== \"\") { ;\n__p += '\\n\t\t\t\t\t' +\n((__t = ( moment(entry.published).format(\"MMMM DD, YYYY\") )) == null ? '' : __t) +\n'\\n\t\t\t\t';\n } ;\n__p += '\t\\n\t\t\t</time>\\n\t\t</li>\\n\t</ul>\\n\t\t';\n } else { ;\n__p += '\\n\t\t\t<div class=\"right\">\\n\t\t\t\t';\n if (entry.content.hasDownloads) { ;\n__p += '\\n\t\t\t\t\t<div><a href=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'\" class=\"button--black mbm\">Download files</a></div>\\n\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t<div class=\"text-center\"><a href=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'?printMe=1\" class=\"alt-action\">Print receipt</a></div>\\n\t\t\t</div>\\n\t\t\t# ' +\n((__t = ( entry.content.id )) == null ? '' : __t) +\n' | Total: ' +\n((__t = ( entry.content.grandTotal )) == null ? '' : __t) +\n' | Purchased ';\n if (entry.published !== undefined && entry.published !== null && entry.published !== \"\") { ;\n__p += ' ' +\n((__t = ( moment(entry.published).format(\"MMMM DD, YYYY\") )) == null ? '' : __t) +\n' ';\n } ;\n__p += ' | <a href=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'\">View ' +\n((__t = ( entry.content.itemCount )) == null ? '' : __t) +\n' item(s)</a>\\n\t\t\t';\n entry.lineItems.slice(0, 5).forEach(function(item) { ;\n__p += '\\n\t\t\t\t<div class=\"stream-entry\">\\n\t\t\t\t\t<h3 class=\"hed\">' +\n((__t = ( item.title )) == null ? '' : __t) +\n'</h3>\\n\t\t\t\t\t<span class=\"content-type\">' +\n((__t = ( item.contentType )) == null ? '' : __t) +\n'</span>\\n\t\t\t\t\t<ul class=\"byline byline-list\">';\n if (item.authors) item.authors.forEach(function(author) { ;\n__p += '<li>' +\n((__t = ( author )) == null ? '' : __t) +\n'</li>';\n }); ;\n__p += '</ul>\\n\t\t\t\t</div>\\n\t\t\t';\n }); ;\n__p += '\\n\t\t';\n } ;\n__p += '\\n\\n\t';\n } else { ;\n__p += '\\n\t';\n if (entry.content.image) { ;\n__p += '\\n\t<div class=\"stream-image\">\\n\t\t<figure>\\n\t\t\t<a href=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'\"><img src=\"' +\n((__t = ( entry.content.image )) == null ? '' : __t) +\n'\" alt=\"\" /></a>\\n\t\t</figure>\\n\t</div>\\n\t';\n } ;\n__p += '\\n\\n\t<h3 class=\"hed\"><a href=\"' +\n((__t = ( entry.content.src )) == null ? '' : __t) +\n'\">' +\n((__t = ( entry.title )) == null ? '' : __t) +\n'</a></h3>\\n\\n\t<!-- item info -->\\n\t<div class=\"stream-item-info\">\\n\t\t';\n if (typeof entry.category.term !== \"undefined\") { \n\t\t\tvar termlink = entry.category.term.toLowerCase().replace(\"&\",\"and\").replace(/ /g,\"-\");\n\t\t;\n__p += '\\n\t\t<a href=\"/topic/' +\n((__t = ( termlink )) == null ? '' : __t) +\n'\" class=\"topic\">' +\n((__t = ( entry.category.term )) == null ? '' : __t) +\n'</a>\\n\t\t';\n } ;\n__p += '\\n\t\t<span class=\"content-type\">' +\n((__t = ( entry.contentType )) == null ? '' : __t) +\n'</span>\\n\t\t<!-- author could be none, one or many -->\\n\t\t';\n if (typeof entry.author !== \"undefined\") { ;\n__p += '\\n\t\t<ul class=\"byline byline-list\">';\n entry.author.forEach(function(author) { ;\n__p += '<li>' +\n((__t = ( author.name )) == null ? '' : __t) +\n'</li>';\n }); ;\n__p += '</ul>\\n\t\t';\n } ;\n__p += '\\n\t</div>\\n\\n\t\t<!-- product price/add to cart --> \\n\t\t ';\n if (entry.listPrice && 0 < entry.listPrice && entry.contentType.toUpperCase() !== \"MAGAZINE ARTICLE\" && entry.contentType.toUpperCase() !== \"DIGITAL ARTICLE\") { ;\n__p += '\\n\t\t<div class=\"stream-item-price\">\\n <div class=\"price\">' +\n((__t = ( entry.listPrice )) == null ? '' : __t) +\n'</div>\\n <add-to-cart class=\"add-to-cart is-inline-block\"\\n data-product-title=\"' +\n((__t = (entry.title)) == null ? '' : __t) +\n'\"\\n data-product-major-topic=\"Strategy\" \\n data-product-author=\"' +\n((__t = (entry.authors)) == null ? '' : __t) +\n'\"\\n data-product-price=\"' +\n((__t = (entry.listPrice)) == null ? '' : __t) +\n'\"\\n data-product-availability-status=\"';\n if (entry.productStatus === \"F\") { ;\n__p += 'COMING_SOON';\n } ;\n__p += '\"\\n data-publication-date=\"' +\n((__t = (entry.published)) == null ? '' : __t) +\n'\"\\n data-product-image=\"' +\n((__t = (entry.image)) == null ? '' : __t) +\n'\"\\n data-product-id=\"' +\n((__t = (entry.id)) == null ? '' : __t) +\n'\" \\n data-product-url=\"' +\n((__t = (entry.productLink)) == null ? '' : __t) +\n'\" \\n data-product-content-type=\"' +\n((__t = (entry.contentType)) == null ? '' : __t) +\n'\"\\n data-product-format=\"\"\\n ';\n if (referral !== undefined && referral !== \"\") { ;\n__p += '\\n\t\t\t\t\tdata-referral=\"' +\n((__t = (referral)) == null ? '' : __t) +\n'\"\\n\t\t\t\t';\n } else { ;\n__p += '\\n\t\t\t\t\tdata-referral=\"02749\"\\n\t\t\t\t';\n } ;\n__p += '\\n\t\t\t>\\n <input type=\"hidden\" js-target=\"item-quantity\" value=\"1\">\\n <button js-target=\"add\" class=\"button--tight\">';\n if (entry.productStatus === \"F\") { ;\n__p += 'Pre-order';\n } else { ;\n__p += 'Add to cart';\n } ;\n__p += '</button>\\n </add-to-cart>\\n </div>\\n\t\t';\n } ;\n__p += '\\n\t\\n\t<!-- Hiding description in case of mobile devices -->\\n\t<div class=\"dek';\n if (entry.endpoint === \"search/more-results\") { ;\n__p += ' hide-for-small';\n } ;\n__p += '\">\\n\t';\n if (entry.content.activity === \"shared\") { ;\n__p += '\\n\t\tShared with: ';\n if (entry.content.provider === \"email\") { ;\n__p += '\\n\t\t';\n entry.content.sharedWith.forEach(function(shared) { ;\n__p += '<strong>' +\n((__t = ( shared )) == null ? '' : __t) +\n'</strong> ';\n }); ;\n__p += '\\n\t\t';\n } else { ;\n__p += '<strong>' +\n((__t = ( entry.content.provider )) == null ? '' : __t) +\n'</strong>\\n\t\t';\n } ;\n__p += '\\n\t';\n } else { ;\n__p += '\\n\t\t' +\n((__t = ( entry.summary )) == null ? '' : __t) +\n'\\n\t';\n } ;\n__p += '\\n\t</div>\\n\t\\n\t<ul class=\"stream-utility plain-inline-list\">\\n\t\t';\n if (!entry.content.readOnly) { ;\n__p += '\\n\t\t';\n if (entry.content.selectable === true) { ;\n__p += '\\n\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"organize-flyout\"><i class=\"icon icon-organize\"></i> Move</a></li>\\n\t\t';\n } else { ;\n__p += '\\n\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"save-flyout\"><i class=\"icon icon-file-text-o\"></i> Save</a></li>\\n\t\t';\n } ;\n__p += '\\n\t\t<li class=\"utility\"><a href=\"#\" js-target=\"share-flyout\"><i class=\"icon icon-share-square-o\"></i> Share</a></li>\\n\t\t';\n if (entry.productLink !== undefined && entry.productLink !== \"\" && (entry.contentType.toUpperCase() === \"MAGAZINE ARTICLE\" || entry.contentType.toUpperCase() === \"DIGITAL ARTICLE\")) { ;\n__p += '\\n\t\t\t';\n var buyCopiesLink = entry.productLink + ((referral !== undefined && referral !== \"\") ? \"?referral=\" + referral : \"?referral=02749\") ;\n__p += '\\n\t\t\t<li class=\"utility\"><a href=\"' +\n((__t = ( buyCopiesLink )) == null ? '' : __t) +\n'\"><i class=\"icon icon-buy-copies\"></i> Buy Copies</a></li>\\n\t\t';\n } ;\n__p += '\\n\t\t';\n if (entry.content.selectable === true) { ;\n__p += '\\n\t\t\t<li class=\"utility\"><a href=\"#\" js-target=\"discard-flyout\"><i class=\"icon icon-times\"></i> Discard</a></li>\\n\t\t';\n } ;\n__p += '\\n\t\t';\n if (entry.published !== undefined && entry.published !== null && entry.published !== \"\") { ;\n__p += '\\n\t\t<li class=\"utility pubdate\">' +\n((__t = ( entry.published )) == null ? '' : __t) +\n'</li>\\n\t\t';\n } ;\n__p += '\\n\t\t';\n } ;\n__p += '\\n\t</ul>\\n\t';\n } ;\n__p += '\\n\t';\n if (entry.content.downloads) { ;\n__p += '\t\t\\n\t<ul class=\"piped-inline-list mvm\">\\n\t\t';\n entry.content.downloads.forEach(function(download) { ;\n__p += '\\n\t\t\t<li><a href=\"' +\n((__t = (download.link)) == null ? '' : __t) +\n'\"><i class=\"icon icon-' +\n((__t = (download.format)) == null ? '' : __t) +\n' baseline-shift-down icon-lg\"></i><span class=\"text-gray font-size-small\"> \\n\t\t\tDOWNLOAD ';\n if (download.format === \"ZIP\") { ;\n__p += '\\n\t\t\t\tZIP FILE TO DESKTOP\\n\t\t\t';\n } else { ;\n__p += '\\n\t\t\t\t' +\n((__t = (download.format)) == null ? '' : __t) +\n'\\n\t\t\t';\n } ;\n__p += '\\n\t\t\t</span></a></li>\\n\t\t';\n }); ;\n__p += '\\n\t</ul>\\n\t';\n } ;\n__p += '\\n\t\\n</stream-item>\\n';\n\n}\nreturn __p\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/types.html\n ** module id = 509\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/types.html?./web_loaders/template.loader.js"); },function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(moment) {module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n__p += \'<stream-item class="stream-item"\\n\tdata-id="\' +\n((__t = ( entry.id )) == null ? \'\' : __t) +\n\'"\\n\tdata-title="\' +\n((__t = ( entry.title )) == null ? \'\' : __t) +\n\'"\\n\tdata-url="\' +\n((__t = ( entry.content.src )) == null ? \'\' : __t) +\n\'"\\n\tdata-topic="\' +\n((__t = ( entry.category.term )) == null ? \'\' : __t) +\n\'"\\n\tdata-authors="\';\n entry.author.forEach(function(author){ ;\n__p +=\n((__t = ( author.name )) == null ? \'\' : __t) +\n\';\';\n }); ;\n__p += \'"\\n\tdata-content-type="\' +\n((__t = ( entry.contentType )) == null ? \'\' : __t) +\n\'"\\n\tdata-content-image = "\' +\n((__t = ( entry.content.image )) == null ? \'\' : __t) +\n\'"\\n\tdata-summary = "\' +\n((__t = ( entry.summary )) == null ? \'\' : __t) +\n\'"\\n>\\n\\n\t<div class="row collapsed">\\n\t\t<div class="column small-4 medium-3">\\n\t\t\t<figure><img src="\' +\n((__t = ( entry.content.image )) == null ? \'\' : __t) +\n\'" alt="" /></figure>\\n\t\t\t<div class="text-right mtm hide-for-small"><a href="\' +\n((__t = ( entry.content.src )) == null ? \'\' : __t) +\n\'" class="lighter-gray"><i class="icon icon-zoom icon-lg"></i></a></div>\\n\t\t</div>\\n\t\t<div class="column small-8 medium-9">\\n\t\t\t<h4><a href="\' +\n((__t = ( entry.content.src )) == null ? \'\' : __t) +\n\'">\' +\n((__t = ( entry.title )) == null ? \'\' : __t) +\n\'</a></h4>\\n\t\\n\t\t\t<div class="article-tools mbm has-no-border">\\n\t\t\t\t<ul class="plain-inline-list has-vertical-dividers nowrap mln">\\n\t\t\t\t\t<li class="utility text-center"><a href="#" js-target="save-flyout"><i class="icon icon-lg icon-file-text-o"></i><span class="hide-for-small"><br>SAVE</span></a></li>\\n\t\t\t\t\t<!-- <li class="utility text-center"><a href="#" js-target="share-flyout"><i class="icon icon-lg icon-share"></i><span class="hide-for-small"><br>SHARE</span></a></li> -->\\n\t\t\t\t\t<!-- <li class="utility text-center"><a href="javascript:window.print();" js-target="print-article"><i class="icon icon-lg icon-print"></i><span class="hide-for-small"><br>PRINT</span></a></li> -->\\n\t\t\t\t\t\';\n if (user.isSubscriber()) { ;\n__p += \'\\n\t\t\t\t\t\t<li class="utility text-center"><a href="/visual-library/download/S\' +\n((__t = ( user.getSubscriberId() )) == null ? \'\' : __t) +\n\'/\' +\n((__t = ( entry.content.asset )) == null ? \'\' : __t) +\n\'"><i class="icon icon-lg icon-download-pdf"></i><span class="hide-for-small"><br/>Download</span></a></li>\\n\t\t\t\t\t\';\n } ;\n__p += \'\\n\t\t\t\t</ul>\\n\t\t\t</div>\\n\t\\n\t\t\t<div class="hide-small">\\n\t\t\t\t<h6 class="product-hed mbn">About</h6>\\n\t\t\t\t<p class="product-text mbs">\\n\t\t\t\t\t\' +\n((__t = ( entry.summary )) == null ? \'\' : __t) +\n\'\\n\t\t\t\t</p>\t\t\t\t\\n\t\t\t\t\';\n if (typeof entry.author !== "undefined") { ;\n__p += \'\\n\t\t\t\t<h6 class="product-hed mbn">Author</h6>\\n\t\t\t\t<ul class="product-text mbs byline-list no-by is-block">\';\n entry.author.forEach(function(author) { ;\n__p += \'<li>\' +\n((__t = ( author.name )) == null ? \'\' : __t) +\n\'</li>\';\n }); ;\n__p += \'</ul>\\n\t\t\t\t\';\n } ;\n__p += \'\\n\t\t\t\t<h6 class="product-hed mbn">Subject</h6>\\n\t\t\t\t<p class="product-text mbs">\\n\t\t\t\t\t\' +\n((__t = ( entry.category.term )) == null ? \'\' : __t) +\n\'\\n\t\t\t\t</p>\\n\t\t\t\t<h6 class="product-hed mbn">Format</h6>\\n\t\t\t\t<p class="product-text mbs">\\n\t\t\t\t\t\' +\n((__t = ( entry.content.format )) == null ? \'\' : __t) +\n\'\\n\t\t\t\t</p>\\n\t\t\t\t<h6 class="product-hed mbn">Publication Date</h6>\\n\t\t\t\t<p class="product-text mbs">\\n\t\t\t\t\t<time>\\n\t\t\t\t\t\t\' +\n((__t = ( moment(entry.published).format("MMMM DD, YYYY") )) == null ? \'\' : __t) +\n\'\\n\t\t\t\t\t</time>\\n\t\t\t\t</p>\\n\t\t\t</div>\\n\t\\n\t\t</div>\\n\t</div>\\n</stream-item>\\n\';\n\n}\nreturn __p\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/stream-section/stream-list/templates/vl-types.html\n ** module id = 510\n ** module chunks = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26\n **/\n//# sourceURL=webpack:///./js/components/stream-section/stream-list/templates/vl-types.html?./web_loaders/template.loader.js')},,,,function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(jQuery) {/*!\n * jQuery Validation Plugin v1.12.0\n *\n * http://jqueryvalidation.org/\n *\n * Copyright (c) 2014 Jörn Zaefferer\n * Released under the MIT license\n */\n(function($) {\n\n$.extend($.fn, {\n\t// http://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// if nothing is selected, return nothing; can\'t chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( "Nothing selected, can\'t validate, returning nothing." );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// check if a validator for this form was already created\n\t\tvar validator = $.data( this[0], "validator" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( "novalidate", "novalidate" );\n\n\t\tvalidator = new $.validator( options, this[0] );\n\t\t$.data( this[0], "validator", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.validateDelegate( ":submit", "click", function( event ) {\n\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\tvalidator.submitButton = event.target;\n\t\t\t\t}\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $(event.target).hasClass("cancel") ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $(event.target).attr("formnovalidate") !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// validate the form on submit\n\t\t\tthis.submit( function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\t\t\t\t\t// prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden;\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t\t\thidden = $("<input type=\'hidden\'/>").attr("name", validator.submitButton.name).val( $(validator.submitButton).val() ).appendTo(validator.currentForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalidator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( validator.submitButton ) {\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn validator;\n\t},\n\t// http://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator;\n\n\t\tif ( $(this[0]).is("form")) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\tvalid = true;\n\t\t\tvalidator = $(this[0].form).validate();\n\t\t\tthis.each(function() {\n\t\t\t\tvalid = validator.element(this) && valid;\n\t\t\t});\n\t\t}\n\t\treturn valid;\n\t},\n\t// attributes: space separated list of attributes to retrieve and remove\n\tremoveAttrs: function( attributes ) {\n\t\tvar result = {},\n\t\t\t$element = this;\n\t\t$.each(attributes.split(/\\s/), function( index, value ) {\n\t\t\tresult[value] = $element.attr(value);\n\t\t\t$element.removeAttr(value);\n\t\t});\n\t\treturn result;\n\t},\n\t// http://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[0],\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data(element.form, "validator").settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules(element);\n\t\t\tswitch (command) {\n\t\t\tcase "add":\n\t\t\t\t$.extend(existingRules, $.validator.normalizeRule(argument));\n\t\t\t\t// remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[element.name] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase "remove":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[element.name];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each(argument.split(/\\s/), function( index, method ) {\n\t\t\t\t\tfiltered[method] = existingRules[method];\n\t\t\t\t\tdelete existingRules[method];\n\t\t\t\t\tif ( method === "required" ) {\n\t\t\t\t\t\t$(element).removeAttr("aria-required");\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules(element),\n\t\t\t$.validator.attributeRules(element),\n\t\t\t$.validator.dataRules(element),\n\t\t\t$.validator.staticRules(element)\n\t\t), element);\n\n\t\t// make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend({ required: param }, data );\n\t\t\t$(element).attr( "aria-required", "true" );\n\t\t}\n\n\t\t// make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param });\n\t\t}\n\n\t\treturn data;\n\t}\n});\n\n// Custom selectors\n$.extend($.expr[":"], {\n\t// http://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) { return !$.trim("" + $(a).val()); },\n\t// http://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) { return !!$.trim("" + $(a).val()); },\n\t// http://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) { return !$(a).prop("checked"); }\n});\n\n// constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// http://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray(arguments);\n\t\t\targs.unshift(source);\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray(arguments).slice(1);\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each(params, function( i, n ) {\n\t\tsource = source.replace( new RegExp("\\\\{" + i + "\\\\}", "g"), function() {\n\t\t\treturn n;\n\t\t});\n\t});\n\treturn source;\n};\n\n$.extend($.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: "error",\n\t\tvalidClass: "valid",\n\t\terrorElement: "label",\n\t\tfocusInvalid: true,\n\t\terrorContainer: $([]),\n\t\terrorLabelContainer: $([]),\n\t\tonsubmit: true,\n\t\tignore: ":hidden",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup && !this.blockFocusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.addWrapper(this.errorsFor(element)).hide();\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\t\t\tif ( event.which === 9 && this.elementValue(element) === "" ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\n\t\t\t\tthis.element(element);\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\t\t\t// click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element(element);\n\n\t\t\t// or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element(element.parentNode);\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === "radio" ) {\n\t\t\t\tthis.findByName(element.name).addClass(errorClass).removeClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).addClass(errorClass).removeClass(validClass);\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === "radio" ) {\n\t\t\t\tthis.findByName(element.name).removeClass(errorClass).addClass(validClass);\n\t\t\t} else {\n\t\t\t\t$(element).removeClass(errorClass).addClass(validClass);\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: "This field is required.",\n\t\tremote: "Please fix this field.",\n\t\temail: "Please enter a valid email address.",\n\t\turl: "Please enter a valid URL.",\n\t\tdate: "Please enter a valid date.",\n\t\tdateISO: "Please enter a valid date (ISO).",\n\t\tnumber: "Please enter a valid number.",\n\t\tdigits: "Please enter only digits.",\n\t\tcreditcard: "Please enter a valid credit card number.",\n\t\tequalTo: "Please enter the same value again.",\n\t\tmaxlength: $.validator.format("Please enter no more than {0} characters."),\n\t\tminlength: $.validator.format("Please enter at least {0} characters."),\n\t\trangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),\n\t\trange: $.validator.format("Please enter a value between {0} and {1}."),\n\t\tmax: $.validator.format("Please enter a value less than or equal to {0}."),\n\t\tmin: $.validator.format("Please enter a value greater than or equal to {0}.")\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $(this.settings.errorLabelContainer);\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n\t\t\tthis.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar groups = (this.groups = {}),\n\t\t\t\trules;\n\t\t\t$.each(this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === "string" ) {\n\t\t\t\t\tvalue = value.split(/\\s/);\n\t\t\t\t}\n\t\t\t\t$.each(value, function( index, name ) {\n\t\t\t\t\tgroups[name] = key;\n\t\t\t\t});\n\t\t\t});\n\t\t\trules = this.settings.rules;\n\t\t\t$.each(rules, function( key, value ) {\n\t\t\t\trules[key] = $.validator.normalizeRule(value);\n\t\t\t});\n\n\t\t\tfunction delegate(event) {\n\t\t\t\tvar validator = $.data(this[0].form, "validator"),\n\t\t\t\t\teventType = "on" + event.type.replace(/^validate/, ""),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[eventType] && !this.is( settings.ignore ) ) {\n\t\t\t\t\tsettings[eventType].call(validator, this[0], event);\n\t\t\t\t}\n\t\t\t}\n\t\t\t$(this.currentForm)\n\t\t\t\t.validateDelegate(":text, [type=\'password\'], [type=\'file\'], select, textarea, " +\n\t\t\t\t\t"[type=\'number\'], [type=\'search\'] ,[type=\'tel\'], [type=\'url\'], " +\n\t\t\t\t\t"[type=\'email\'], [type=\'datetime\'], [type=\'date\'], [type=\'month\'], " +\n\t\t\t\t\t"[type=\'week\'], [type=\'time\'], [type=\'datetime-local\'], " +\n\t\t\t\t\t"[type=\'range\'], [type=\'color\'] ",\n\t\t\t\t\t"focusin focusout keyup", delegate)\n\t\t\t\t.validateDelegate("[type=\'radio\'], [type=\'checkbox\'], select, option", "click", delegate);\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);\n\t\t\t}\n\n\t\t\t// Add aria-required to any Static/Data/Class required fields before first validation\n\t\t\t// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html\n\t\t\t$(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true");\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend(this.submitted, this.errorMap);\n\t\t\tthis.invalid = $.extend({}, this.errorMap);\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$(this.currentForm).triggerHandler("invalid-form", [ this ]);\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {\n\t\t\t\tthis.check( elements[i] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tresult = true;\n\n\t\t\tthis.lastElement = checkElement;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\tresult = this.check( checkElement ) !== false;\n\t\t\t\tif (result) {\n\t\t\t\t\tdelete this.invalid[checkElement.name];\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[checkElement.name] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Add aria-invalid status for screen readers\n\t\t\t$( element ).attr( "aria-invalid", !result );\n\n\t\t\tif ( !this.numberOfInvalids() ) {\n\t\t\t\t// Hide error containers on last error\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn result;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\t// add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = [];\n\t\t\t\tfor ( var name in errors ) {\n\t\t\t\t\tthis.errorList.push({\n\t\t\t\t\t\tmessage: errors[name],\n\t\t\t\t\t\telement: this.findByName(name)[0]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !(element.name in errors);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// http://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$(this.currentForm).resetForm();\n\t\t\t}\n\t\t\tthis.submitted = {};\n\t\t\tthis.lastElement = null;\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tthis.elements()\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeData( "previousValue" )\n\t\t\t\t\t.removeAttr( "aria-invalid" );\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength(this.invalid);\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.addWrapper( this.toHide ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])\n\t\t\t\t\t.filter(":visible")\n\t\t\t\t\t.focus()\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn\'t called, findLastActive won\'t have anything to find\n\t\t\t\t\t.trigger("focusin");\n\t\t\t\t} catch(e) {\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep(this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t}).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $(this.currentForm)\n\t\t\t.find("input, select, textarea")\n\t\t\t.not(":submit, :reset, :image, [disabled]")\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter(function() {\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( "%o has no name assigned", this);\n\t\t\t\t}\n\n\t\t\t\t// select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[this.name] = true;\n\t\t\t\treturn true;\n\t\t\t});\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $(selector)[0];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split(" ").join(".");\n\t\t\treturn $(this.settings.errorElement + "." + errorClass, this.errorContext);\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $([]);\n\t\t\tthis.toHide = $([]);\n\t\t\tthis.currentElements = $([]);\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor(element);\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar val,\n\t\t\t\t$element = $(element),\n\t\t\t\ttype = $element.attr("type");\n\n\t\t\tif ( type === "radio" || type === "checkbox" ) {\n\t\t\t\treturn $("input[name=\'" + $element.attr("name") + "\']:checked").val();\n\t\t\t}\n\n\t\t\tval = $element.val();\n\t\t\tif ( typeof val === "string" ) {\n\t\t\t\treturn val.replace(/\\r/g, "");\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $(element).rules(),\n\t\t\t\trulesCount = $.map( rules, function(n, i) {\n\t\t\t\t\treturn i;\n\t\t\t\t}).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue(element),\n\t\t\t\tresult, method, rule;\n\n\t\t\tfor (method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[method] };\n\t\t\t\ttry {\n\n\t\t\t\t\tresult = $.validator.methods[method].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don\'t mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === "dependency-mismatch" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === "pending" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor(element) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( "Exception occurred when checking element " + element.id + ", check the \'" + rule.method + "\' method.", e );\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength(rules) ) {\n\t\t\t\tthis.successList.push(element);\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// return the custom message for the given element and validation method\n\t\t// specified in the element\'s HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( "msg" + method[ 0 ].toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data("msg");\n\t\t},\n\n\t\t// return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[name];\n\t\t\treturn m && (m.constructor === String ? m : m[method]);\n\t\t},\n\n\t\t// return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\t\tif ( arguments[i] !== undefined ) {\n\t\t\t\t\treturn arguments[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\tdefaultMessage: function( element, method ) {\n\t\t\treturn this.findDefined(\n\t\t\t\tthis.customMessage( element.name, method ),\n\t\t\t\tthis.customDataMessage( element, method ),\n\t\t\t\t// title is never undefined, so handle empty string as undefined\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t$.validator.messages[method],\n\t\t\t\t"<strong>Warning: No message defined for " + element.name + "</strong>"\n\t\t\t);\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === "function" ) {\n\t\t\t\tmessage = message.call(this, rule.parameters, element);\n\t\t\t} else if (theregex.test(message)) {\n\t\t\t\tmessage = $.validator.format(message.replace(theregex, "{$1}"), rule.parameters);\n\t\t\t}\n\t\t\tthis.errorList.push({\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t});\n\n\t\t\tthis.errorMap[element.name] = message;\n\t\t\tthis.submitted[element.name] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[i]; i++ ) {\n\t\t\t\terror = this.errorList[i];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[i]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[i]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not(this.invalidElements());\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $(this.errorList).map(function() {\n\t\t\t\treturn this.element;\n\t\t\t});\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar label = this.errorsFor( element );\n\t\t\tif ( label.length ) {\n\t\t\t\t// refresh error/success class\n\t\t\t\tlabel.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\t\t\t\t// replace message on existing label\n\t\t\t\tlabel.html(message);\n\t\t\t} else {\n\t\t\t\t// create label\n\t\t\t\tlabel = $("<" + this.settings.errorElement + ">")\n\t\t\t\t\t.attr("for", this.idOrName(element))\n\t\t\t\t\t.addClass(this.settings.errorClass)\n\t\t\t\t\t.html(message || "");\n\t\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\t\t// make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tlabel = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();\n\t\t\t\t}\n\t\t\t\tif ( !this.labelContainer.append(label).length ) {\n\t\t\t\t\tif ( this.settings.errorPlacement ) {\n\t\t\t\t\t\tthis.settings.errorPlacement(label, $(element) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlabel.insertAfter(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\tlabel.text("");\n\t\t\t\tif ( typeof this.settings.success === "string" ) {\n\t\t\t\t\tlabel.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( label, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add(label);\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.idOrName(element);\n\t\t\treturn this.errors().filter(function() {\n\t\t\t\treturn $(this).attr("for") === name;\n\t\t\t});\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\t\t\t// if radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\telement = this.findByName( element.name ).not(this.settings.ignore)[0];\n\t\t\t}\n\t\t\treturn element;\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn (/radio|checkbox/i).test(element.type);\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $(this.currentForm).find("[name=\'" + name + "\']");\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase "select":\n\t\t\t\treturn $("option:selected", element).length;\n\t\t\tcase "input":\n\t\t\t\tif ( this.checkable( element) ) {\n\t\t\t\t\treturn this.findByName(element.name).filter(":checked").length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t"boolean": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t"string": function( param, element ) {\n\t\t\t\treturn !!$(param, element.form).length;\n\t\t\t},\n\t\t\t"function": function( param, element ) {\n\t\t\t\treturn param(element);\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue(element);\n\t\t\treturn !$.validator.methods.required.call(this, val, element) && "dependency-mismatch";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[element.name] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\tthis.pending[element.name] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[element.name];\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$(this.currentForm).submit();\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n\t\t\t\t$(this.currentForm).triggerHandler("invalid-form", [ this ]);\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element ) {\n\t\t\treturn $.data(element, "previousValue") || $.data(element, "previousValue", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, "remote" )\n\t\t\t});\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[className] = rules;\n\t\t} else {\n\t\t\t$.extend(this.classRuleSettings, className);\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $(element).attr("class");\n\n\t\tif ( classes ) {\n\t\t\t$.each(classes.split(" "), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend(rules, $.validator.classRuleSettings[this]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn rules;\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $(element),\n\t\t\ttype = element.getAttribute("type"),\n\t\t\tmethod, value;\n\n\t\tfor (method in $.validator.methods) {\n\n\t\t\t// support for <input required> in both html5 and older browsers\n\t\t\tif ( method === "required" ) {\n\t\t\t\tvalue = element.getAttribute(method);\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required="" markup\n\t\t\t\tif ( value === "" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\t\t\t\t// force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr(method);\n\t\t\t}\n\n\t\t\t// convert the value to a number for number inputs, and for text for backwards compability\n\t\t\t// allows type="date" and others to be compared as strings\n\t\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\n\t\t\tif ( value || value === 0 ) {\n\t\t\t\trules[method] = value;\n\t\t\t} else if ( type === method && type !== "range" ) {\n\t\t\t\t// exception: the jquery validate \'range\' method\n\t\t\t\t// does not test for the html5 \'range\' type\n\t\t\t\trules[method] = true;\n\t\t\t}\n\t\t}\n\n\t\t// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar method, value,\n\t\t\trules = {}, $element = $( element );\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( "rule" + method[ 0 ].toUpperCase() + method.substring( 1 ).toLowerCase() );\n\t\t\tif ( value !== undefined ) {\n\t\t\t\trules[ method ] = value;\n\t\t\t}\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data(element.form, "validator");\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\t\t// handle dependency check\n\t\t$.each(rules, function( prop, val ) {\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[prop];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch (typeof val.depends) {\n\t\t\t\tcase "string":\n\t\t\t\t\tkeepRule = !!$(val.depends, element.form).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase "function":\n\t\t\t\t\tkeepRule = val.depends.call(element, element);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[prop] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\tdelete rules[prop];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// evaluate parameters\n\t\t$.each(rules, function( rule, parameter ) {\n\t\t\trules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;\n\t\t});\n\n\t\t// clean number parameters\n\t\t$.each([ "minlength", "maxlength" ], function() {\n\t\t\tif ( rules[this] ) {\n\t\t\t\trules[this] = Number(rules[this]);\n\t\t\t}\n\t\t});\n\t\t$.each([ "rangelength", "range" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[this] ) {\n\t\t\t\tif ( $.isArray(rules[this]) ) {\n\t\t\t\t\trules[this] = [ Number(rules[this][0]), Number(rules[this][1]) ];\n\t\t\t\t} else if ( typeof rules[this] === "string" ) {\n\t\t\t\t\tparts = rules[this].split(/[\\s,]+/);\n\t\t\t\t\trules[this] = [ Number(parts[0]), Number(parts[1]) ];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\t\t\t// auto-create ranges\n\t\t\tif ( rules.min && rules.max ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength && rules.maxlength ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === "string" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each(data.split(/\\s/), function() {\n\t\t\t\ttransformed[this] = true;\n\t\t\t});\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// http://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[name] = method;\n\t\t$.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules(name, $.validator.normalizeRule(name));\n\t\t}\n\t},\n\n\tmethods: {\n\n\t\t// http://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\t\t\t// check if dependency is met\n\t\t\tif ( !this.depend(param, element) ) {\n\t\t\t\treturn "dependency-mismatch";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === "select" ) {\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $(element).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable(element) ) {\n\t\t\t\treturn this.getLength(value, element) > 0;\n\t\t\t}\n\t\t\treturn $.trim(value).length > 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\t\t\t// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional(element) || /^[a-zA-Z0-9.!#$%&\'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);\n\t\t},\n\n\t\t// http://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\n\t\t\treturn this.optional(element) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&\'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(value);\n\t\t},\n\n\t\t// http://jqueryvalidation.org/date-method/\n\t\tdate: function( value, element ) {\n\t\t\treturn this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());\n\t\t},\n\n\t\t// http://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(value);\n\t\t},\n\n\t\t// http://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional(element) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\n\t\t},\n\n\t\t// http://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional(element) || /^\\d+$/.test(value);\n\t\t},\n\n\t\t// http://jqueryvalidation.org/creditcard-method/\n\t\t// based on http://en.wikipedia.org/wiki/Luhn/\n\t\tcreditcard: function( value, element ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn "dependency-mismatch";\n\t\t\t}\n\t\t\t// accept only spaces, digits and dashes\n\t\t\tif ( /[^0-9 \\-]+/.test(value) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar nCheck = 0,\n\t\t\t\tnDigit = 0,\n\t\t\t\tbEven = false,\n\t\t\t\tn, cDigit;\n\n\t\t\tvalue = value.replace(/\\D/g, "");\n\n\t\t\t// Basing min and max length on\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\n\t\t\t\tcDigit = value.charAt(n);\n\t\t\t\tnDigit = parseInt(cDigit, 10);\n\t\t\t\tif ( bEven ) {\n\t\t\t\t\tif ( (nDigit *= 2) > 9 ) {\n\t\t\t\t\t\tnDigit -= 9;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCheck += nDigit;\n\t\t\t\tbEven = !bEven;\n\t\t\t}\n\n\t\t\treturn (nCheck % 10) === 0;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || length <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element);\n\t\t\treturn this.optional(element) || ( length >= param[0] && length <= param[1] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value >= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional(element) || value <= param;\n\t\t},\n\n\t\t// http://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional(element) || ( value >= param[0] && value <= param[1] );\n\t\t},\n\n\t\t// http://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\n\t\t\tvar target = $(param);\n\t\t\tif ( this.settings.onfocusout ) {\n\t\t\t\ttarget.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {\n\t\t\t\t\t$(element).valid();\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// http://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param ) {\n\t\t\tif ( this.optional(element) ) {\n\t\t\t\treturn "dependency-mismatch";\n\t\t\t}\n\n\t\t\tvar previous = this.previousValue(element),\n\t\t\t\tvalidator, data;\n\n\t\t\tif (!this.settings.messages[element.name] ) {\n\t\t\t\tthis.settings.messages[element.name] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = this.settings.messages[element.name].remote;\n\t\t\tthis.settings.messages[element.name].remote = previous.message;\n\n\t\t\tparam = typeof param === "string" && { url: param } || param;\n\n\t\t\tif ( previous.old === value ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = value;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest(element);\n\t\t\tdata = {};\n\t\t\tdata[element.name] = value;\n\t\t\t$.ajax($.extend(true, {\n\t\t\t\turl: param,\n\t\t\t\tmode: "abort",\n\t\t\t\tport: "validate" + element.name,\n\t\t\t\tdataType: "json",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === "true",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[element.name].remote = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.prepareElement(element);\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push(element);\n\t\t\t\t\t\tdelete validator.invalid[element.name];\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, "remote" );\n\t\t\t\t\t\terrors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;\n\t\t\t\t\t\tvalidator.invalid[element.name] = true;\n\t\t\t\t\t\tvalidator.showErrors(errors);\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest(element, valid);\n\t\t\t\t}\n\t\t\t}, param));\n\t\t\treturn "pending";\n\t\t}\n\n\t}\n\n});\n\n$.format = function deprecated() {\n\tthrow "$.format has been deprecated. Please use $.validator.format instead.";\n};\n\n}(jQuery));\n\n// ajax mode: abort\n// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});\n// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n(function($) {\n\tvar pendingRequests = {},\n\t\tajax;\n\t// Use a prefilter if available (1.5+)\n\tif ( $.ajaxPrefilter ) {\n\t\t$.ajaxPrefilter(function( settings, _, xhr ) {\n\t\t\tvar port = settings.port;\n\t\t\tif ( settings.mode === "abort" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = xhr;\n\t\t\t}\n\t\t});\n\t} else {\n\t\t// Proxy ajax\n\t\tajax = $.ajax;\n\t\t$.ajax = function( settings ) {\n\t\t\tvar mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\t\tport = ( "port" in settings ? settings : $.ajaxSettings ).port;\n\t\t\tif ( mode === "abort" ) {\n\t\t\t\tif ( pendingRequests[port] ) {\n\t\t\t\t\tpendingRequests[port].abort();\n\t\t\t\t}\n\t\t\t\tpendingRequests[port] = ajax.apply(this, arguments);\n\t\t\t\treturn pendingRequests[port];\n\t\t\t}\n\t\t\treturn ajax.apply(this, arguments);\n\t\t};\n\t}\n}(jQuery));\n\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\n(function($) {\n\t$.extend($.fn, {\n\t\tvalidateDelegate: function( delegate, type, handler ) {\n\t\t\treturn this.bind(type, function( event ) {\n\t\t\t\tvar target = $(event.target);\n\t\t\t\tif ( target.is(delegate) ) {\n\t\t\t\t\treturn handler.apply(target, arguments);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}(jQuery));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./bower_components/jquery.validation/dist/jquery.validate.js\n ** module id = 514\n ** module chunks = 1 3 9 11 12 18 19\n **/\n//# sourceURL=webpack:///./bower_components/jquery.validation/dist/jquery.validate.js?'); },,function(module,exports,__webpack_require__){eval('/**\n * @module components/article-comments\n * @requires module:jquery\n * @requires module:mixins/component\n * @requires module:services/hbr/comment\n * @requires module:components/article-comments/article-comments-post/article-comments-post\n * @requires module:components/article-comments/article-comments-list/article-comments-list\n */\n\n// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleComments;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// Services\n\nvar _servicesHbrComment = __webpack_require__(517);\n\nvar _servicesHbrComment2 = _interopRequireDefault(_servicesHbrComment);\n\n// Article Comments list sub-component\n\nvar _articleCommentsListArticleCommentsList = __webpack_require__(518);\n\nvar _articleCommentsListArticleCommentsList2 = _interopRequireDefault(_articleCommentsListArticleCommentsList);\n\nvar _articleCommentsPostArticleCommentsPost = __webpack_require__(524);\n\nvar _articleCommentsPostArticleCommentsPost2 = _interopRequireDefault(_articleCommentsPostArticleCommentsPost);\n\n// Gigya defaults\nvar ARTICLE_COMMENT_SERVICE = {\n\tcategoryId: "Conversations"\n};\n\n// exposed promise object\nvar commentPromise = _jquery2["default"].Deferred();\n\n/**\n * Represents a StreamContent component.\n *\n * @constructor\n * @public\n */\n\nfunction ArticleComments($el) {\n\tthis.initializeAsComponent($el);\n\tvar streamId = ARTICLE_COMMENT_SERVICE.streamId = this.dataset.gigyaId;\n\tvar categoryId = this.dataset.categoryId || ARTICLE_COMMENT_SERVICE.categoryId;\n\tARTICLE_COMMENT_SERVICE.isFirstTime = this.dataset.isFirstTime;\n\tvar options = ARTICLE_COMMENT_SERVICE.options = {\n\t\tincludeStreamInfo: true,\n\t\tincludeUID: true,\n\t\tthreadLimit: 1,\n\t\tthreadDepth: 1\n\t};\n\n\tthis.$commentsList = _articleCommentsListArticleCommentsList2["default"].activateAll();\n\tthis.$commentsPost = _articleCommentsPostArticleCommentsPost2["default"].activateAll();\n\tthis.getComments(categoryId, streamId, options).done(function (response) {\n\t\tcommentPromise.resolve(response);\n\t});\n}\n\n/**\n * The prototype augmentation here must happen before the `mixinComponent`\n * call, because it attaches directly to whatever prototype object exists.\n *\n * @type {Object}\n */\nArticleComments.prototype = {\n\t/**\n * function that will retrieve the comments\n *\n * @param {string} categoryId\n * @param {string} streamId\n * @param {object} options\n *\n * @return\n */\n\tgetComments: function getComments(categoryId, streamId, options) {\n\t\treturn _servicesHbrComment2["default"].getComments(categoryId, streamId, options);\n\t},\n\n\t/**\n * function that will update the comment count and trigger the update:comment\n * event so that all listeners will be evoked.\n *\n * @param {object} commentObject- object returned from the gigya reponse\n * @param {boolean} isDelete - check to see if we are posting or deleting a comment\n * @param {object} countEl - current count element\n * @param {number} currentCount - current number of comments\n *\n */\n\tupdateCommentCount: function updateCommentCount(commentObject, isDelete, countEl, currentCount) {\n\t\tvar newCount = commentObject.streamInfo.commentCount = isDelete ? currentCount - 1 : currentCount + 1;\n\n\t\t(0, _jquery2["default"])(countEl).html(newCount);\n\n\t\t(0, _jquery2["default"])("body").trigger("update:comment", commentObject);\n\t}\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(ArticleComments, "article-comments");\n\n// exposed attributes\nArticleComments.commentPromise = commentPromise;\nArticleComments.commentServiceDefaults = ARTICLE_COMMENT_SERVICE;\nArticleComments.getComments = ArticleComments.prototype.getComments;\nArticleComments.updateCommentCount = ArticleComments.prototype.updateCommentCount;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-comments/article-comments.js\n ** module id = 516\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments.js?')},function(module,exports,__webpack_require__){eval('\n// Depedencies for the commenting service\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\nvar _componentsFlyoutFlyout = __webpack_require__(278);\n\nvar _componentsFlyoutFlyout2 = _interopRequireDefault(_componentsFlyoutFlyout);\n\nvar _localstorageUtil = __webpack_require__(25);\n\nvar _localstorageUtil2 = _interopRequireDefault(_localstorageUtil);\n\n//default values set for the commenting section\n//TODO will there be some default settings?\nvar defaults = {};\n\n//private functions\nfunction getUserId() {\n\tvar userId = _localstorageUtil2["default"].getCache("user") ? _localstorageUtil2["default"].getCache("user").guid : _modelsUser2["default"].isAuthenticated() ? _modelsUser2["default"].getId() : null;\n\treturn userId;\n}\n\nfunction setParams(params, options) {\n\tvar opts = params;\n\n\tif (options) {\n\t\topts = (0, _lodashAmdModernObjectsAssign2["default"])(params, options);\n\t}\n\n\treturn (0, _lodashAmdModernObjectsAssign2["default"])(defaults, opts);\n}\n\n//public functions\n\n/**\n* Function that will retrieve the comment information\n*\n* @param {string} categoryID - The identifier of the comments category from which to retrieve the comments.\n* @param {string} streamID - The identifier of the comments stream from which to retrieve the comments.\n* @param {object} options - optional object containing name/values that will override default options. Please refer to\n\thttp://developers.gigya.com/020_Client_API/030_Comments/comments.getComments for list of optional parameters that can\n\tbe passed in this object.\n*\n* @return {promise.object} comments\n*/\nexports.getComments = function (categoryID, streamID, options) {\n\tvar deferred = _jquery2["default"].Deferred();\n\n\tvar params = setParams({\n\t\tcategoryID: categoryID,\n\t\tstreamID: streamID,\n\t\tcallback: function callback(response) {\n\t\t\tif (response.errorCode === 0) {\n\t\t\t\tresponse.currentUserId = getUserId();\n\t\t\t\tdeferred.resolve(response);\n\t\t\t} else {\n\t\t\t\tdeferred.reject();\n\t\t\t\tthrow new Error(response.errorCode + ": " + response.errorMessage);\n\t\t\t}\n\t\t}\n\t}, options);\n\n\tgigya.comments.getComments(params);\n\n\treturn deferred.promise();\n};\n\n/**\n* Function that will post the comment to service\n*\n* @param {string} categoryID - The identifier of the comments category to which you would like to post the comment.\n* @param {string} commentText - The content of the comment to post. The string may be maximum 5000 characters long.\n\tThe HTML elements that are allowed are: div, br, p, span - always allowed, and ul, li, u, b, i, em - allowed when\n\tRichText is enabled. Other than these exceptions, the text is sanitized and all other HTML elements are removed.\n* @param {string} streamID - The identifier of the comments stream to which you would like to post the comment.\n* @param {string} UID - The unique ID of a logged-in user, with which this method call is associated. This is the\n\tUID you receive from Gigya after a successful login of this user.\n* @param {object} options - optional object containing name/values that will override default options. Please refer to\n\thttp://developers.gigya.com/020_Client_API/030_Comments/comments.postComment for list of optional parameters that can\n\tbe passed in this object.\n*\n* @return {promise.object} comment\n*/\nexports.postComment = function (categoryID, commentText, streamID, UID, options) {\n\tvar deferred = _jquery2["default"].Deferred();\n\tvar userId = getUserId() || UID;\n\n\tif (userId) {\n\t\tvar params = setParams({\n\t\t\tcategoryID: categoryID,\n\t\t\tcommentText: commentText,\n\t\t\tstreamID: streamID,\n\t\t\tUID: userId,\n\n\t\t\tcallback: function callback(response) {\n\t\t\t\tif (response.errorCode === 0) {\n\t\t\t\t\tdeferred.resolve(response);\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.reject(response);\n\t\t\t\t\tthrow new Error(response.errorCode + ": " + response.errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}, options);\n\n\t\tgigya.comments.postComment(params);\n\t} else {\n\t\tdeferred.reject({\n\t\t\terrorCode: 401,\n\t\t\terrorMessage: "Must be logged in, on order to be able to post a comment"\n\t\t});\n\t\t// throw new Error("must be logged in, in order to post a comment");\n\t}\n\n\treturn deferred.promise();\n};\n\n/**\n* Function that will allow user to vote a comment in a positive (up) or negative (down) manner\n*\n* @param {string} commentID - The identifier of the comment on which to vote.\n* @param {string} categoryID - The category identifier to which the comment on which to vote belongs.\n* @param {string} streamID - The stream identifier to which the comment on which to vote belongs.\n* @param {string} vote The vote on the comment. The vote value may be one of the following:\n\t<ul>\n\t\t<li>"pos" - a positive vote, in favor of the specified comment.</li>\n\t\t<li>"neg" - a negative vote, opposing the specified comment.</li>\n\t\t<li>"none" - no vote. This will undo a previous vote on the specified comment.</li>\n\t</ul>\n* @param {object} options - optional object containing name/values that will override default options. Please refer to\n\thttp://developers.gigya.com/020_Client_API/030_Comments/comments.vote for list of optional parameters that can\n\tbe passed in this object.\n*\n* @return {promise.object}\n*/\nexports.voteComment = function (commentID, categoryID, streamID, vote, options) {\n\tvar deferred = _jquery2["default"].Deferred();\n\tvar userId = getUserId();\n\n\tif (userId) {\n\t\tvar params = setParams({\n\t\t\tcommentID: commentID,\n\t\t\tcategoryID: categoryID,\n\t\t\tstreamID: streamID,\n\t\t\tvote: vote,\n\t\t\tcallback: function callback(response) {\n\t\t\t\tif (response.errorCode === 0) {\n\t\t\t\t\tdeferred.resolve(response);\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t\tthrow new Error(response.errorCode + ": " + response.errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t}, options);\n\n\t\tgigya.comments.vote(params);\n\t} else {\n\t\tdeferred.reject();\n\t\tthrow new Error("must be logged in, in order to vote on a comment");\n\t}\n\n\treturn deferred.promise();\n};\n\n/**\n* Function that will allow the removal of a comment. This function may not be available\n* to all users, only some with admin privileges(?).\n*\n* @param {string} UID - The unique ID of a logged-in user, whose comment is to be deleted.\nThis is the UID you receive from Gigya after a successful login of this user.\n* @param {string} categoryID - The identifier of the comments category to delete.\n* @param {string} streamID - The identifier of the comments stream to delete.\n* @param {string} commentID - The identifier of the comment to delete.\n*\n* @return {object} response\n*/\nexports.deleteComment = function (UID, categoryID, streamID, commentID) {\n\tvar deferred = _jquery2["default"].Deferred();\n\tvar userId = getUserId();\n\tif (userId) {\n\t\tvar params = setParams({\n\t\t\tUID: UID,\n\t\t\tcategoryID: categoryID,\n\t\t\tstreamID: streamID,\n\t\t\tcommentID: commentID,\n\t\t\tcallback: function callback(response) {\n\t\t\t\tif (response.errorCode === 0) {\n\t\t\t\t\tdeferred.resolve(response);\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.reject();\n\t\t\t\t\tthrow new Error(response.errorCode + ": " + response.errorMessage);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tgigya.comments.deleteComment(params);\n\t} else {\n\t\tdeferred.reject();\n\t\tthrow new Error("must be logged in, in order to delete a comment");\n\t}\n\treturn deferred.promise();\n};\n\n/**\n* function that will validate if the user is logged in\n* before submitting a comment\n*\n* @param {object} ev\n* @param {object} elem\n* @param {object} promise\n*\n* @return {boolean}\n*/\nexports.validateUserForComment = function (ev, elem, promise) {\n\tif (!_modelsUser2["default"].isAuthenticated()) {\n\t\t(0, _jquery2["default"])(elem).attr("disabled", "disabled");\n\n\t\t// Let\'s show the signin flyout\n\t\t_componentsFlyoutFlyout2["default"].activate((0, _jquery2["default"])(elem)).show(ev);\n\n\t\tpromise.then(function (response) {\n\t\t\t(0, _jquery2["default"])(elem).removeAttr("disabled");\n\t\t});\n\n\t\treturn false;\n\t}\n\treturn true;\n};\n/**\n* @param {string} categoryID - The identifier of the comments category to delete.\n* @param {string} streamID - The identifier of the comments stream to delete.\n* @param {string} streamURL - The stream URL assigned to the commenting stream.\n* http://developers.gigya.com/037_API_reference/030_Comments/comments.setStreamInfo\n*/\nexports.setStreamInfo = function (categoryID, streamID, streamURL, streamTitle) {\n\tvar deferred = _jquery2["default"].Deferred();\n\tvar params = {\n\t\tcategoryID: categoryID,\n\t\tstreamID: streamID,\n\t\tstreamTitle: streamTitle,\n\t\tstreamURL: streamURL,\n\t\tcallback: function callback(response) {\n\t\t\tif (response.errorCode === 0) {\n\t\t\t\tdeferred.resolve(response);\n\t\t\t} else {\n\t\t\t\tdeferred.reject();\n\t\t\t\tthrow new Error(response.errorCode + ": " + response.errorMessage);\n\t\t\t}\n\t\t}\n\t};\n\t//call gigya\n\tgigya.comments.setStreamInfo(params);\n\treturn deferred.promise();\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/services/hbr/comment.js\n ** module id = 517\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/services/hbr/comment.js?')},function(module,exports,__webpack_require__){eval('/**\n * @module components/article-comments/article-comments-list\n * @requires module:mixins/component\n */\n\n// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleCommentsList;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _moment = __webpack_require__(1);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _lodashAmdModernObjectsAssign = __webpack_require__(32);\n\nvar _lodashAmdModernObjectsAssign2 = _interopRequireDefault(_lodashAmdModernObjectsAssign);\n\n// Component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _signInSignIn = __webpack_require__(61);\n\nvar _signInSignIn2 = _interopRequireDefault(_signInSignIn);\n\n// Services\n\nvar _servicesHbrComment = __webpack_require__(517);\n\nvar _servicesHbrComment2 = _interopRequireDefault(_servicesHbrComment);\n\n// Templates\n\nvar _templateTemplate = __webpack_require__(542);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _templateComment = __webpack_require__(541);\n\nvar _templateComment2 = _interopRequireDefault(_templateComment);\n\nvar _templateArticleCommentsPostCommentPost = __webpack_require__(521);\n\nvar _templateArticleCommentsPostCommentPost2 = _interopRequireDefault(_templateArticleCommentsPostCommentPost);\n\nvar component;\n\n/**\n * Represents a ArticleCommentsList component.\n *\n * @constructor\n * @public\n */\n\nfunction ArticleCommentsList($el) {\n\tthis.initializeAsComponent($el);\n\tcomponent = this;\n\n\tvar $articleComments = this.$articleComments = __webpack_require__(516);\n\t$articleComments.commentPromise.done(function (response) {\n\t\tvar $commentAccessObject = component.$commentAccessObject = {\n\t\t\ttotalThreadCount: response.streamInfo.threadCount,\n\t\t\tthreadCount: response.threadCount,\n\t\t\tnext: response.next,\n\t\t\tisFirstTime: $articleComments.commentServiceDefaults.isFirstTime,\n\t\t\tcurrentUserId: response.currentUserId,\n\t\t\tstreamId: $articleComments.commentServiceDefaults.streamId,\n\t\t\tcategoryId: $articleComments.commentServiceDefaults.categoryId\n\t\t};\n\t\t// setStreamInfo for the article in gigya if not set and is on prod server\n\t\tif (typeof response.streamInfo.streamURL === "undefined" && window.location.hostname === "hbr.org") {\n\t\t\t//Get url and title from meta tags\n\t\t\tvar streamURL = (0, _jquery2["default"])("meta[property=\'og:url\']").attr("content");\n\t\t\tvar streamTitle = (0, _jquery2["default"])("meta[name=\'item-name\']").attr("content");\n\t\t\t_servicesHbrComment2["default"].setStreamInfo($commentAccessObject.categoryId, $commentAccessObject.streamId, streamURL, streamTitle).then(function (response) {\n\t\t\t\t//do nothing\n\t\t\t});\n\t\t}\n\t\t// render\n\t\tcomponent.render(response.comments, response.streamInfo.commentCount, $commentAccessObject, false);\n\t});\n}\n\n/**\n * The prototype augmentation here must happen before the `mixinComponent`\n * call, because it attaches directly to whatever prototype object exists.\n *\n * @type {Object}\n */\nArticleCommentsList.prototype = {\n\tevents: {\n\t\t"click [js-target=\'comment-reply\']": "replyComment",\n\t\t"click [js-target=\'comment-vote\']": "voteComment",\n\t\t"click [js-target=\'comment-load-more\']": "loadMoreComments",\n\t\t"click [js-target=\'comment-join-conversation\']": "loadComments",\n\t\t"click [js-target=\'comment-delete\']": "deleteComment"\n\t},\n\n\t/**\n * function that will open an instance of ArticelCommentsPost\n *\n * @param {object} ev\n */\n\treplyComment: function replyComment(ev) {\n\t\tev.preventDefault();\n\t\tev.stopPropagation();\n\t\tif (_servicesHbrComment2["default"].validateUserForComment(ev, (0, _jquery2["default"])(ev.currentTarget), _signInSignIn2["default"].signInPromise)) {\n\t\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget).closest(".comment-footer");\n\t\t\tif (thisEl.siblings(".comment-reply-post").length > 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// make sure there are no other comment-reply-post elements open\n\t\t\t// if there are, remove them before opening a new one\n\t\t\tvar thisComment = (0, _jquery2["default"])(thisEl).closest("li");\n\t\t\tvar thisCommentId = (0, _jquery2["default"])(thisComment).data().commentId;\n\t\t\tvar thisCommentThread = (0, _jquery2["default"])(thisEl).closest("article-comments-list");\n\t\t\t(0, _jquery2["default"])(thisCommentThread).find(".comment-reply-post").filter(function () {\n\t\t\t\treturn (0, _jquery2["default"])(this).slideUp("750").delay("500").remove();\n\t\t\t});\n\n\t\t\tvar streamId = this.$articleComments.commentServiceDefaults.streamId;\n\n\t\t\t(0, _jquery2["default"])(thisEl).after("<div class=\'comment-reply-post\'></div>");\n\t\t\t(0, _jquery2["default"])(thisEl).siblings(".comment-reply-post").data("parent-id", thisCommentId).hide().html((0, _templateArticleCommentsPostCommentPost2["default"])({ streamId: streamId })).slideDown("750").find("textarea").focus();\n\t\t}\n\t},\n\n\t/**\n * function that will render the comments that have been retrieved\n *\n * @param {object} comments - comments JSON object\n * @param {number} commentCount\n * @param {object} commentAccessObject - total number of threads (threads do not include\n the replies to a comment)\n * @param {boolean} isRerender\n *\n * @return\n */\n\trender: function render(comments, commentCount, commentAccessObject, isRerender) {\n\t\tvar renderedHtml = (0, _templateTemplate2["default"])({\n\t\t\tcomments: comments,\n\t\t\tcommentCount: commentCount,\n\t\t\tmoment: _moment2["default"],\n\t\t\tcommentReply: _templateComment2["default"],\n\t\t\tcommentAccessObject: commentAccessObject,\n\t\t\tremoveEmail: removeEmail\n\t\t});\n\n\t\tif (isRerender) {\n\t\t\tthis.$el.html(renderedHtml);\n\t\t} else {\n\t\t\tthis.$el.append(renderedHtml);\n\t\t}\n\t},\n\n\t/**\n * function that will\n *\n * @param {object} comment - comment to be rendered\n *\n * @return {string} compiled html with the given data\n */\n\trenderCommentHtml: function renderCommentHtml(comment) {\n\t\tvar comments = _jquery2["default"].isArray(comment) ? comment : [comment];\n\t\treturn (0, _templateComment2["default"])({\n\t\t\tcommentReply: _templateComment2["default"],\n\t\t\tcomments: comments,\n\t\t\tmoment: _moment2["default"],\n\t\t\tremoveEmail: removeEmail,\n\t\t\tcommentAccessObject: component.$commentAccessObject\n\t\t});\n\t},\n\n\t/**\n * function that will render the indivdual comment that has been\n * posted\n *\n * @param {object|array} comments - object returned by gigya\n * @param {object} el - element to update\n * @param {boolean} isPrepend - is the rendered html to be prepended or appended to the list\n * @param {boolean} isReply - is this a reply post\n *\n */\n\trenderComment: function renderComment(comments, el, isPrepend, isReply) {\n\t\tvar renderedHtml = this.renderCommentHtml(comments);\n\t\tvar commentList = (0, _jquery2["default"])("article-comments-list").find("[js-target=\'comments-list\']");\n\t\tif (isPrepend) {\n\t\t\t(0, _jquery2["default"])(commentList).prepend(renderedHtml);\n\t\t} else {\n\t\t\t(0, _jquery2["default"])(commentList).append(renderedHtml);\n\t\t}\n\n\t\tif (isReply) {\n\t\t\tthis.updateReplyCount(el);\n\t\t}\n\t},\n\n\t/**\n * function that will render the comment in a certain area of the page\n *\n * @param {object} comment - comment to be displayed\n * @param {object} el - element to be used as starting reference\n *\n */\n\trenderCommentInPlace: function renderCommentInPlace(comment, el) {\n\t\tvar renderedHtml = this.renderCommentHtml(comment);\n\t\tvar replyEl = (0, _jquery2["default"])(el).siblings("ul").length > 0 ? (0, _jquery2["default"])(el).siblings("ul") : (0, _jquery2["default"])(el).after("<ul/>").siblings("ul");\n\n\t\t(0, _jquery2["default"])(replyEl).append(renderedHtml);\n\t\tthis.updateReplyCount(el);\n\t},\n\n\t/**\n * function that will update the reply count after the comment\n * has been submitted\n *\n * @param {object} el - element to be used as a starting reference\n *\n */\n\tupdateReplyCount: function updateReplyCount(el) {\n\t\tvar replyCountEl = (0, _jquery2["default"])(el).siblings(".comment-footer").find(".reply span");\n\t\tvar count = replyCountEl.length > 0 ? (0, _jquery2["default"])(replyCountEl).data().replyCount : "0";\n\t\tvar updatedCount = parseInt(count) + 1;\n\t\t(0, _jquery2["default"])(replyCountEl).text((0, _jquery2["default"])(replyCountEl).text().replace(count, updatedCount));\n\t\t(0, _jquery2["default"])(replyCountEl).data("replyCount", updatedCount);\n\t},\n\n\t/**\n * function that will load more comments\n *\n * @param {object} ev - event that fired the load more comments\n */\n\tloadMoreComments: function loadMoreComments(ev) {\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\tvar next = (0, _jquery2["default"])(thisEl).data().commentNext;\n\t\tvar options = (0, _lodashAmdModernObjectsAssign2["default"])(this.$articleComments.commentServiceDefaults.options, { start: next });\n\t\tvar self = this;\n\n\t\t_servicesHbrComment2["default"].getComments(this.$articleComments.commentServiceDefaults.categoryId, this.$articleComments.commentServiceDefaults.streamId, options).done(function (response) {\n\t\t\t// update the latest threadcount and total displayed\n\t\t\tself.$commentAccessObject.threadCount += response.threadCount;\n\n\t\t\t// update the html with the new comments\n\t\t\tself.renderComment(response.comments, thisEl, false, false);\n\n\t\t\t// determine whether the load more comments buttons needs to remain\n\t\t\t// and remove it, if need be\n\t\t\tif (response.streamInfo.threadCount <= self.$commentAccessObject.threadCount) {\n\t\t\t\t(0, _jquery2["default"])(thisEl).closest("div").remove();\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])(thisEl).data().commentNext = response.next;\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * function that will allow the user to up vote or down vote a comment\n *\n * @param {object} ev - event fired to trigger the voting\n *\n */\n\tvoteComment: function voteComment(ev) {\n\t\tev.preventDefault();\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\tvar commentId = (0, _jquery2["default"])(thisEl).closest("li").data().commentId;\n\t\tvar voteType = (0, _jquery2["default"])(thisEl).data().voteDir;\n\n\t\t_servicesHbrComment2["default"].voteComment(commentId, this.$articleComments.commentServiceDefaults.categoryId, this.$articleComments.commentServiceDefaults.streamId, voteType).done(function (response) {\n\t\t\tif (response.errorCode === 0) {\n\t\t\t\t(0, _jquery2["default"])(thisEl).addClass("voted").siblings().removeClass("voted");\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * function that will load the comments other than the\n * first comment\n *\n * @param {object} ev\n *\n */\n\tloadComments: function loadComments(ev) {\n\t\tvar $articleComments = component.$articleComments;\n\t\t$articleComments.commentServiceDefaults.options.threadLimit = 10;\n\t\t$articleComments.commentServiceDefaults.options.threadDepth = 5;\n\n\t\t$articleComments.getComments($articleComments.commentServiceDefaults.categoryId, $articleComments.commentServiceDefaults.streamId, $articleComments.commentServiceDefaults.options).then(function (response) {\n\t\t\tcomponent.$commentAccessObject.isFirstTime = false;\n\t\t\tcomponent.$commentAccessObject.totalThreadCount = response.streamInfo.threadCount;\n\t\t\tcomponent.$commentAccessObject.threadCount = response.threadCount;\n\t\t\tcomponent.$commentAccessObject.next = response.next;\n\t\t\tcomponent.render(response.comments, response.streamInfo.commentCount, component.$commentAccessObject, true);\n\t\t});\n\t},\n\n\t/**\n * function that will set the current user id\n *\n * @param {String} userId\n *\n */\n\tsetCurrentUserId: function setCurrentUserId(userId) {\n\t\tcomponent.$commentAccessObject.currentUserId = userId;\n\t},\n\n\t/**\n * function that will delete the users own comment\n *\n * @param {object} ev\n *\n */\n\tdeleteComment: function deleteComment(ev) {\n\t\tev.preventDefault();\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\tvar commentEl = thisEl.closest("li");\n\t\tvar thisData = commentEl.data();\n\t\tvar self = this;\n\n\t\t_servicesHbrComment2["default"].deleteComment(thisData.commentUid, thisData.commentCategoryId, thisData.commentStreamId, thisData.commentId).then(function (response) {\n\t\t\tvar countDisplay = (0, _jquery2["default"])("[js-target=\'comment-count\']");\n\t\t\tvar currentCount = parseInt((0, _jquery2["default"])(countDisplay).html());\n\t\t\tvar commentObject = {\n\t\t\t\tstreamInfo: {\n\t\t\t\t\tcommentCount: 0\n\t\t\t\t}\n\t\t\t};\n\t\t\t(0, _jquery2["default"])(commentEl).remove();\n\t\t\tself.$articleComments.updateCommentCount(commentObject, true, countDisplay, currentCount);\n\t\t\t// check if it is first time which means they are deleting the only visible comment\n\t\t\tif (self.$commentAccessObject.isFirstTime && currentCount > 1) {\n\t\t\t\tself.$articleComments.getComments(self.$commentAccessObject.categoryId, self.$commentAccessObject.streamId, self.$articleComments.commentServiceDefaults).then(function (response) {\n\t\t\t\t\tcomponent.render(response.comments, response.streamInfo.commentCount, self.$commentAccessObject, true);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n* function that will temporarily remove any emails from the commentor\'s display name\n* THIS IS A TEMP FIX!!\n* TODO remove after all the commentor names have been updated and all emails have been\n* removed.\n*\n* @param {string} commentorName\n*\n* @return {string}\n*/\nvar removeEmail = function removeEmail(commentorName) {\n\tvar nameArr = commentorName.split(" ");\n\tvar emailExp = new RegExp(/[^\\s@]+@[^\\s@]+\\.[^\\s@]+/);\n\n\tvar tempArr = nameArr.filter(function (name) {\n\t\treturn !emailExp.test(name);\n\t});\n\n\treturn tempArr.join(" ");\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(ArticleCommentsList, "article-comments-list");\n\n// exposed attributes\nArticleCommentsList.renderComment = ArticleCommentsList.prototype.renderComment;\nArticleCommentsList.renderCommentInPlace = ArticleCommentsList.prototype.renderCommentInPlace;\nArticleCommentsList.renderCommentHtml = ArticleCommentsList.prototype.renderCommentHtml;\nArticleCommentsList.updateReplyCount = ArticleCommentsList.prototype.updateReplyCount;\nArticleCommentsList.setCurrentUserId = ArticleCommentsList.prototype.setCurrentUserId;\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-comments/article-comments-list/article-comments-list.js\n ** module id = 518\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-list/article-comments-list.js?')},,function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t/**\n * Set event information to digital data for video interaction.\n *\n * @param {object} ev - event object.\n * @param {object} videoTitle - title of video played.\n * @param {object} eventAction - event action name performed on video.\n * @param {object} windowObj - window object or parent window object.\n */\n\tvar handleVideoInteraction = function handleVideoInteraction(ev, videoTitle, eventAction, windowObj) {\n\t\tif (windowObj && windowObj.digitalData) {\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Video Interaction";\n\t\t\teventInfo.eventAction = eventAction;\n\t\t\teventInfo.videoName = videoTitle;\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindowObj.digitalData.event = [];\n\t\t\twindowObj.digitalData.event.push(event);\n\t\t}\n\t};\n\n\t// bind event\n\t(0, _jquery2["default"])("body").on("video-interaction", handleVideoInteraction);\n})();\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/video.js\n ** module id = 520\n ** module chunks = 1 5 15\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/video.js?')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div js-target="comment-post-section">\\n <div js-target="loading-indicator" class="overflow-auto"></div>\\n <div js-target="comment-post-error"></div>\\n <div js-target="comment-post-form">\\n <textarea class="mbm" rows="2" cols="48" placeholder="Leave a Comment" data-stream-id="\' +\n((__t = ( streamId )) == null ? \'\' : __t) +\n\'" js-target="comment-post-text"></textarea>\\n <div class="mbn clearfix"><button class="button--black right mbn" js-target="comment-post">POST</button></div>\\n </div>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-post/comment-post.html\n ** module id = 521\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-post/comment-post.html?./web_loaders/template.loader.js')},,,function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleCommentsPost;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _articleCommentsListArticleCommentsList = __webpack_require__(518);\n\nvar _articleCommentsListArticleCommentsList2 = _interopRequireDefault(_articleCommentsListArticleCommentsList);\n\n/**\n * @module components/article-comments/article-comments-post\n * @requires module:mixins/component\n */\n\n// Component mixin.\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\n// Services\n\nvar _servicesHbrComment = __webpack_require__(517);\n\nvar _servicesHbrComment2 = _interopRequireDefault(_servicesHbrComment);\n\nvar _servicesHbrInteraction = __webpack_require__(10);\n\nvar _servicesHbrInteraction2 = _interopRequireDefault(_servicesHbrInteraction);\n\n// Template\n\nvar _templateTemplate = __webpack_require__(545);\n\nvar _templateTemplate2 = _interopRequireDefault(_templateTemplate);\n\nvar _templateCommentPost = __webpack_require__(521);\n\nvar _templateCommentPost2 = _interopRequireDefault(_templateCommentPost);\n\nvar _templateLoadingIndicator = __webpack_require__(544);\n\nvar _templateLoadingIndicator2 = _interopRequireDefault(_templateLoadingIndicator);\n\nvar _templateErrorMessage = __webpack_require__(543);\n\nvar _templateErrorMessage2 = _interopRequireDefault(_templateErrorMessage);\n\n// Dependencies\n\nvar _signInSignIn = __webpack_require__(61);\n\nvar _signInSignIn2 = _interopRequireDefault(_signInSignIn);\n\n/**\n * Represents a ArticleCommentsPost component.\n *\n * @constructor\n * @public\n */\n\nfunction ArticleCommentsPost($el) {\n\tvar component = this;\n\n\tthis.initializeAsComponent($el);\n\n\tvar $articleComments = this.$articleComments = __webpack_require__(516);\n\tvar streamId = this.streamId = $articleComments.commentServiceDefaults.streamId;\n\tthis.categoryId = $articleComments.commentServiceDefaults.categoryId;\n\t$articleComments.commentPromise.done(function (response) {\n\t\tcomponent.render(streamId);\n\t\tcomponent.commentObject = response;\n\t});\n}\n\n/**\n * The prototype augmentation here must happen before the `mixinComponent`\n * call, because it attaches directly to whatever prototype object exists.\n *\n * @type {Object}\n */\nArticleCommentsPost.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target=\'comment-post\']": "postComment",\n\t\t"click [js-target=\'comment-post-text\']": "validateUserForComment"\n\t},\n\n\t/**\n * function that will post the comment to the gigya service\n * and re-render the comments section\n *\n * @param {object} ev\n *\n * @return\n */\n\tpostComment: function postComment(ev, retryRequest) {\n\t\tev.preventDefault();\n\t\tvar self = this;\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\tvar thisPost = (0, _jquery2["default"])(thisEl).closest(".comment-reply-post");\n\t\tvar textarea = thisPost.find("textarea");\n\t\tvar categoryId = this.categoryId;\n\t\tvar commentText = textarea.val().replace(/(?:\\r\\n|\\r|\\n)/g, "<br/>");\n\t\tvar streamId = textarea.data().streamId;\n\t\tvar parentId = (0, _jquery2["default"])(thisPost).data().parentId;\n\t\tvar commentPostSection = (0, _jquery2["default"])(thisEl).closest("[js-target=\'comment-post-section\']");\n\t\tvar UID;\n\t\tvar options = {};\n\n\t\tif (parentId) {\n\t\t\toptions.parentID = parentId;\n\t\t}\n\n\t\tif (_modelsUser2["default"].isAuthenticated()) {\n\t\t\tvar loadingIndicatorEl = commentPostSection.find("[js-target=\'loading-indicator\']");\n\t\t\tloadingIndicatorEl.html((0, _templateLoadingIndicator2["default"])()).show();\n\t\t\tvar commentPostFormEl = commentPostSection.find("[js-target=\'comment-post-form\']");\n\t\t\tcommentPostFormEl.hide();\n\t\t\t_servicesHbrComment2["default"].postComment(categoryId, commentText, streamId, UID, options).then(function (response) {\n\t\t\t\t// set the UID for the sender object, Gigya does not return this value on the\n\t\t\t\t// the post of a comment\n\t\t\t\tloadingIndicatorEl.hide();\n\t\t\t\tvar uid = response.requestParams.UID;\n\t\t\t\tresponse.comment.sender.UID = uid;\n\t\t\t\t_articleCommentsListArticleCommentsList2["default"].setCurrentUserId(uid);\n\t\t\t\tif (parentId) {\n\t\t\t\t\t// Add it to the existing structure\n\t\t\t\t\t_articleCommentsListArticleCommentsList2["default"].renderCommentInPlace(response.comment, thisPost);\n\t\t\t\t\ttextarea.val("");\n\t\t\t\t\tself.removePostComment(thisPost);\n\t\t\t\t} else {\n\t\t\t\t\t// Add it to the top of the comment pile\n\n\t\t\t\t\t_articleCommentsListArticleCommentsList2["default"].renderComment(response.comment, thisPost, true, true);\n\t\t\t\t\tcommentPostFormEl.show();\n\t\t\t\t\ttextarea.val("");\n\t\t\t\t}\n\t\t\t\tself.updateCommentCount();\n\t\t\t\t(0, _jquery2["default"])("body").trigger("post-comment:success");\n\t\t\t}, function (response) {\n\t\t\t\tif (response && response.errorCode === 401) {\n\t\t\t\t\tloadingIndicatorEl.hide();\n\t\t\t\t\tcommentPostFormEl.show();\n\t\t\t\t\t_servicesHbrComment2["default"].validateUserForComment(ev, thisEl, _signInSignIn2["default"].signInPromise);\n\t\t\t\t} else if (!retryRequest && response && (response.errorCode === 403005 || response.errorCode === 403007)) {\n\t\t\t\t\t// if error from Gigya is unauthorized access, then try notifying login again to Gigya\n\t\t\t\t\t_servicesHbrInteraction2["default"].notifyLogin().then(function (resp) {\n\t\t\t\t\t\tself.postComment(ev, true);\n\t\t\t\t\t}, function (errorResp) {\n\t\t\t\t\t\tloadingIndicatorEl.hide();\n\t\t\t\t\t\tcommentPostFormEl.show();\n\t\t\t\t\t\tcommentPostSection.find("[js-target=\'comment-post-error\']").replaceWith((0, _templateErrorMessage2["default"])({\n\t\t\t\t\t\t\t"errorCode": errorResp.errorCode\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tcommentPostFormEl.find("[js-target=\'comment-post\']").attr("disabled", "disabled");\n\t\t\t\t\t\tconsole.log("Error while gigya login: " + errorResp.errorCode);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tloadingIndicatorEl.hide();\n\t\t\t\t\tcommentPostFormEl.show();\n\t\t\t\t\tcommentPostSection.find("[js-target=\'comment-post-error\']").replaceWith((0, _templateErrorMessage2["default"])({\n\t\t\t\t\t\t"errorCode": response.errorCode\n\t\t\t\t\t}));\n\t\t\t\t\tcommentPostFormEl.find("[js-target=\'comment-post\']").attr("disabled", "disabled");\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t_servicesHbrComment2["default"].validateUserForComment(ev, thisEl, _signInSignIn2["default"].signInPromise);\n\t\t}\n\t},\n\n\t/**\n * function that will validate if the user is logged in\n * before submitting a comment\n *\n * @param {object} ev\n */\n\tvalidateUserForComment: function validateUserForComment(ev) {\n\t\tev.preventDefault();\n\t\tev.stopImmediatePropagation();\n\t\tvar thisEl = (0, _jquery2["default"])(ev.currentTarget);\n\t\t_servicesHbrComment2["default"].validateUserForComment(ev, thisEl, _signInSignIn2["default"].signInPromise);\n\t},\n\n\t/**\n * function that will render the comment post component\n *\n * @param {string} streamId - ID of the content stream\n */\n\trender: function render(streamId) {\n\t\tthis.$el.append((0, _templateTemplate2["default"])({\n\t\t\tcommentPost: _templateCommentPost2["default"],\n\t\t\tstreamId: streamId\n\t\t}));\n\t},\n\n\t/**\n * function that will remove the post comment after it\n * has been posted\n *\n * @param {object} el - element to be removed\n *\n */\n\tremovePostComment: function removePostComment(el) {\n\t\t(0, _jquery2["default"])(el).slideUp("500").remove();\n\t},\n\n\t/**\n * function that will update the number of comments\n * after one has been posted\n *\n */\n\tupdateCommentCount: function updateCommentCount() {\n\t\tvar countDisplay = (0, _jquery2["default"])("[js-target=\'comment-count\']");\n\t\tvar currentCount = parseInt((0, _jquery2["default"])(countDisplay).html());\n\t\tthis.$articleComments.updateCommentCount(this.commentObject, false, countDisplay, currentCount);\n\t}\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(ArticleCommentsPost, "article-comments-post");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-comments/article-comments-post/article-comments-post.js\n ** module id = 524\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-post/article-comments-post.js?'); },,,,,,,function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.expandAllSidebarVideos = expandAllSidebarVideos;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _react = __webpack_require__(60);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _servicesVideo = __webpack_require__(276);\n\nvar _lodashAmdModernCollectionsForEach = __webpack_require__(21);\n\nvar _lodashAmdModernCollectionsForEach2 = _interopRequireDefault(_lodashAmdModernCollectionsForEach);\n\nvar _moment = __webpack_require__(1);\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(520);\n\nvar trigger = __webpack_require__(26).trigger;\nvar dom = _react2["default"].DOM;\n\nvar VideoEmbed = _react2["default"].createClass({\n\tdisplayName: "VideoEmbed",\n\n\tgetInitialState: function getInitialState() {\n\t\treturn { video: null };\n\t},\n\n\tcomponentDidMount: function componentDidMount() {\n\t\tvar _this = this;\n\n\t\t(0, _servicesVideo.getVideo)(window.location.pathname.match(/\\d+/)[0]).then(function (video) {\n\t\t\treturn _this.setState({ video: video });\n\t\t});\n\t},\n\n\tcomponentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n\t\tvar _this2 = this;\n\n\t\tvar video = this.state.video;\n\t\tif (video && !prevState.video) {\n\t\t\twindow.addEventListener("click", function () {\n\t\t\t\ttrigger("metrics:video_start", { video: _this2.state.video });\n\t\t\t}, { once: true });\n\t\t\twindow.addEventListener("touchstart", function () {\n\t\t\t\ttrigger("metrics:video_start", { video: _this2.state.video });\n\t\t\t}, { once: true });\n\t\t\tvar videoTag = _react2["default"].findDOMNode(this).querySelector("video");\n\t\t\tvideoTag.setAttribute("data-account", "2071817190001");\n\t\t\tvideoTag.setAttribute("data-player", "e17e6e1b-ffd1-4650-843d-76760bab288b");\n\t\t\tvideoTag.setAttribute("data-video-id", video.id);\n\t\t\tbc(videoTag);\n\t\t\tvar isIPhone = /iPhone/.test(navigator.userAgent) && !window.MSStream;\n\t\t\tif (!isIPhone) {\n\t\t\t\t(0, _jquery2["default"])("#the-video > .vjs-big-play-button").empty().removeClass().addClass("hbr-play-button").prepend("<i class=\\"icon icon-play\\"></i><strong>PLAY</strong>" + _moment2["default"].duration(video.duration).format("h:mm:ss"));\n\t\t\t}\n\t\t\tvar videoPlayer = videojs("the-video");\n\t\t\tvideoPlayer.on("ended", function () {\n\t\t\t\ttrigger("metrics:video_complete", { video: _this2.state.video });\n\t\t\t});\n\t\t\t// bind interaction events for digital data\n\t\t\tthis.bindInteractionEvents();\n\t\t}\n\t},\n\n\tbindInteractionEvents: function bindInteractionEvents() {\n\t\tvar _this3 = this;\n\n\t\tif (this.state.video && this.state.video.name) {\n\t\t\tvar videoTitle;\n\n\t\t\t(function () {\n\t\t\t\tvideoTitle = _this3.state.video.name;\n\n\t\t\t\tvar videoPlayer = videojs("the-video");\n\t\t\t\tvideoPlayer.on("firstplay", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Start", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("pause", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Pause", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("ended", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Complete", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("play", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Play", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("volumechange", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Volume Change", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("fullscreenchange", function (e) {\n\t\t\t\t\tvar eventAction = "Fullscreen Enter";\n\t\t\t\t\tif (!videoPlayer.isFullscreen()) {\n\t\t\t\t\t\teventAction = "Fullscreen Exit";\n\t\t\t\t\t}\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, eventAction, window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("error", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Error", window.parent]);\n\t\t\t\t});\n\t\t\t\tvideoPlayer.on("playing", function (e) {\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("video-interaction", [videoTitle, "Play", window.parent]);\n\t\t\t\t});\n\t\t\t})();\n\t\t}\n\t},\n\n\trender: function render() {\n\t\tvar video = this.state.video;\n\t\treturn video ? dom.div({ className: "relative", style: { paddingTop: "56.25%" }, dangerouslySetInnerHTML: { __html: "<video id=\\"the-video\\" data-embed=\\"default\\" class=\\"video-js\\" controls=\\"\\" style=\\"width: 100%; height: 100%; position: absolute; top: 0; bottom: 0; right: 0; left: 0\\"></video>"\n\t\t\t} }) : null;\n\t}\n});\n\nVideoEmbed.activateAll = function () {\n\t(0, _lodashAmdModernCollectionsForEach2["default"])((0, _jquery2["default"])("[js-target=\'video-player-page\']"), function (el) {\n\t\treturn _react2["default"].render(_react2["default"].createElement(VideoEmbed, {}), el);\n\t});\n};\n\n/*\tAttach handlers to video components of class sidebar--half or sidebar--half-right,\n\twhich toggles class to "-expanded" (full-width) form when video starts\t*/\n\nfunction expandAllSidebarVideos() {\n\t(0, _jquery2["default"])("embedded-video").filter(".sidebar--half, .sidebar--half-right").each(function () {\n\t\tvar _this4 = this;\n\n\t\tvar iframe = (0, _jquery2["default"])(this).find("iframe")[0];\n\t\tiframe.contentWindow.addEventListener("metrics:video_start", function () {\n\t\t\t_this4.className = _this4.className.replace(/sidebar--half(?:-right)?/i, "$&-expanded");\n\t\t});\n\t});\n}\n\nexports["default"] = VideoEmbed;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/video/video-embed.js\n ** module id = 531\n ** module chunks = 1 15\n **/\n//# sourceURL=webpack:///./js/components/video/video-embed.js?')},,,,,,,,,,function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(moment) {module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n\n comments.forEach(function(comment) { ;\n__p += '\\n<li data-comment-id=\"' +\n((__t = ( comment.ID )) == null ? '' : __t) +\n'\" data-comment-uid=\"' +\n((__t = ( comment.sender.UID )) == null ? '' : __t) +\n'\" data-comment-stream-id=\"' +\n((__t = ( commentAccessObject.streamId )) == null ? '' : __t) +\n'\" data-comment-category-id=\"' +\n((__t = ( commentAccessObject.categoryId )) == null ? '' : __t) +\n'\">\\n\t<h5>\\n\t\t' +\n((__t = ( removeEmail(comment.sender.name) )) == null ? '' : __t) +\n' <small js-target=\"timeago\">' +\n((__t = ( moment(comment.timestamp).fromNow() )) == null ? '' : __t) +\n'</small>\\n\t</h5>\\n\t<p class=\"comment-text\">' +\n((__t = ( comment.commentText )) == null ? '' : __t) +\n'</p>\\n\t<div class=\"comment-footer mbl clearfix\">\\n\t\t<div class=\"left reply\">\\n\t\t\t<a href=\"#\" js-target=\"comment-reply\" class=\"alt-action\">Reply</a>\\n\t\t\t';\n if(commentAccessObject.currentUserId === comment.sender.UID && !comment.replies) { ;\n__p += '\\n\t\t\t| <a href=\"#\" js-target=\"comment-delete\" class=\"alt-action\">Delete</a>\\n\t\t\t';\n } ;\n__p += '\\n\t\t</div>\\n\t\t<div class=\"right vote\">\\n\t\t\t<span class=\"vote-up\" js-target=\"comment-vote\" data-vote-dir=\"pos\" data-pos-vote-count=\"' +\n((__t = ( comment.posVotes )) == null ? '' : __t) +\n'\">';\n if (comment.posVotes >= 0) { ;\n__p += ' ' +\n((__t = ( comment.posVotes )) == null ? '' : __t) +\n' ';\n } ;\n__p += ' <i class=\"icon icon-thumbs-up\"></i></span>\\n\t\t\t<span class=\"vote-down\" js-target=\"comment-vote\" data-vote-dir=\"neg\" data-neg-vote-count=\"' +\n((__t = ( comment.negVotes )) == null ? '' : __t) +\n'\">';\n if (comment.negVotes >= 0) { ;\n__p += ' ' +\n((__t = ( comment.negVotes )) == null ? '' : __t) +\n' ';\n } ;\n__p += ' <i class=\"icon icon-thumbs-down\"></i></span>\\n\t\t</div>\\n\t</div>\\n\t';\n if(comment.replies) { ;\n__p += '\\n\t<ul>\\n\t\t' +\n((__t = ( commentReply({comments: comment.replies, commentReply: commentReply, removeEmail: removeEmail, commentAccessObject: commentAccessObject}) )) == null ? '' : __t) +\n'\\n\t</ul>\\n\t';\n } ;\n__p += '\\n</li>\\n';\n }); ;\n__p += '\\n';\n\n}\nreturn __p\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-list/comment.html\n ** module id = 541\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-list/comment.html?./web_loaders/template.loader.js")},function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(moment) {module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\nwith (obj) {\n__p += '<div class=\"content-area--article column\">\\n\t<div class=\"text-gray slug--small\"><span js-target=\"comment-count\">' +\n((__t = ( commentCount )) == null ? '' : __t) +\n'</span> COMMENTS</div>\\n\t<hr class=\"mts mbl\">\\n\t<ul class=\"comments-list\" js-target=\"comments-list\">\\n\t\t';\n comments.forEach(function(comment) { ;\n__p += '\\n\t\t<li data-comment-id=\"' +\n((__t = ( comment.ID )) == null ? '' : __t) +\n'\" data-comment-uid=\"' +\n((__t = ( comment.sender.UID )) == null ? '' : __t) +\n'\" data-comment-stream-id=\"' +\n((__t = ( commentAccessObject.streamId )) == null ? '' : __t) +\n'\" data-comment-category-id=\"' +\n((__t = ( commentAccessObject.categoryId )) == null ? '' : __t) +\n'\">\\n\t\t\t<h5>\\n\t\t\t\t' +\n((__t = ( removeEmail(comment.sender.name) )) == null ? '' : __t) +\n' <small js-target=\"timeago\">' +\n((__t = ( moment(comment.timestamp).fromNow() )) == null ? '' : __t) +\n'</small>\\n\t\t\t</h5>\\n\t\t\t<p class=\"comment-text\">' +\n((__t = ( comment.commentText )) == null ? '' : __t) +\n'</p>\\n\t\t\t<div class=\"comment-footer mbl clearfix\">\\n\t\t\t\t<div class=\"left reply\">\\n\t\t\t\t\t<a href=\"#\" js-target=\"comment-reply\" class=\"alt-action\">Reply</a> \\n\t\t\t\t\t';\n if(commentAccessObject.currentUserId === comment.sender.UID && !comment.replies) { ;\n__p += '\\n\t\t\t\t\t| <a href=\"#\" js-target=\"comment-delete\" class=\"alt-action\">Delete</a>\\n\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t\t';\n if(comment.replies && !commentAccessObject.isFirstTime) { ;\n__p += '\\n\t\t\t\t\t\t<span data-reply-count=\"' +\n((__t = ( comment.replies.length )) == null ? '' : __t) +\n'\">| ' +\n((__t = ( comment.replies.length )) == null ? '' : __t) +\n' ';\n if (comment.replies.length == 1) { ;\n__p += ' reply ';\n } else { ;\n__p += ' replies ';\n } ;\n__p += ' </span>\\n\t\t\t\t\t';\n } ;\n__p += '\\n\t\t\t\t</div>\\n\t\t\t\t<div class=\"right vote\">\\n\t\t\t\t\t<span class=\"vote-up\" js-target=\"comment-vote\" data-vote-dir=\"pos\" data-pos-vote-count=\"' +\n((__t = ( comment.posVotes )) == null ? '' : __t) +\n'\">';\n if (comment.posVotes >= 0) { ;\n__p += ' ' +\n((__t = ( comment.posVotes )) == null ? '' : __t) +\n' ';\n } ;\n__p += ' <i class=\"icon icon-thumbs-up\"></i></span>\\n\t\t\t\t\t<span class=\"vote-down\" js-target=\"comment-vote\" data-vote-dir=\"neg\" data-neg-vote-count=\"' +\n((__t = ( comment.negVotes )) == null ? '' : __t) +\n'\">';\n if (comment.negVotes >= 0) { ;\n__p += ' ' +\n((__t = ( comment.negVotes )) == null ? '' : __t) +\n' ';\n } ;\n__p += ' <i class=\"icon icon-thumbs-down\"></i></span>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t\t';\n if(comment.replies && !commentAccessObject.isFirstTime) { ;\n__p += '\\n\t\t\t<!-- if 1 or more replies -->\\n\t\t\t<ul>\\n\t\t\t\t' +\n((__t = ( commentReply({comments: comment.replies, commentReply: commentReply, removeEmail: removeEmail, commentAccessObject: commentAccessObject}) )) == null ? '' : __t) +\n'\\n\t\t\t</ul>\\n\t\t\t';\n } ;\n__p += '\\n\t\t</li>\\n\t\t';\n }); ;\n__p += '\\n\t</ul>\\n\t';\n if (commentAccessObject.totalThreadCount > commentAccessObject.threadCount && !commentAccessObject.isFirstTime) { ;\n__p += '\\n\t<div class=\"column small-12 text-center mvm\">\\n\t\t<a class=\"load-ten-more\" js-target=\"comment-load-more\" data-comment-next=\"' +\n((__t = ( commentAccessObject.next )) == null ? '' : __t) +\n'\"><i class=\"icon icon-load-more\"></i> <strong>View more comments</strong></a>\\n\t</div>\\n\t';\n } ;\n__p += '\\n\t';\n if (commentAccessObject.isFirstTime) { ;\n__p += '\\n\t<div class=\"column small-12 text-center mtn mbl\">\\n\t\t<a class=\"load-ten-more\" js-target=\"comment-join-conversation\" data-comment-next=\"' +\n((__t = ( commentAccessObject.next )) == null ? '' : __t) +\n'\"><i class=\"icon icon-load-more\"></i> <strong>Join the conversation</strong></a>\\n\t</div>\\n\t';\n } ;\n__p += '\\n\t<hr/>\\n\t<div class=\"text-gray slug--small\">Posting Guidelines</div>\\n\t<div class=\"text-gray\">\\n\t\t<p class=\"disclaimer mbl\">We hope the conversations that take place on HBR.org will be energetic, constructive, and thought-provoking. To comment, readers must <a href=\"/sign-in\" js-target=\"show-sign-in\">sign in</a> or <a href=\"/register\">register</a>. And to ensure the quality of the discussion, our moderating team will review all comments and may edit them for clarity, length, and relevance. Comments that are overly promotional, mean-spirited, or off-topic may be deleted per the moderators\\' judgment. All postings become the property of Harvard Business Publishing. </p>\\n\t</div>\\n</div>\\n';\n\n}\nreturn __p\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-list/template.html\n ** module id = 542\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-list/template.html?./web_loaders/template.loader.js")},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<h3 class=\"alert-color mbn\">Oops! We\\'re having technical trouble posting your comment.</h3>\\n<h4 class=\"alert-color subheader\">\\n For help, please call Customer Service at 800.988.0886 (U.S./Canada) or\\n +1.617.783.7500 (International) and reference error ' +\n((__t = (errorCode)) == null ? '' : __t) +\n'.\\n</h4>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-post/error-message.html\n ** module id = 543\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-post/error-message.html?./web_loaders/template.loader.js")},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="loading--light cushion left">\\n <div class="pie rotation"></div>\\n <div class="pie filler"></div>\\n <div class="mask"></div>\\n</div>\\n<div class="cushion left pls">\\n <h4 class="text-gray font-weight-normal mbm" >\\n Your comment is being posted.\\n </h4>\\n</div>\\n\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-post/loading-indicator.html\n ** module id = 544\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-post/loading-indicator.html?./web_loaders/template.loader.js')},function(module,exports){eval("module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"row mvl\">\\n\t<div class=\"content-area--article column comment-reply-post\">\\n\t\t<h3 class=\"text-gray font-weight-normal mbm\">Comments</h3>\\n\t\t' +\n((__t = ( commentPost({streamId: streamId}) )) == null ? '' : __t) +\n'\\n\t</div>\\n</div>\\n';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-comments/article-comments-post/template.html\n ** module id = 545\n ** module chunks = 1 4\n **/\n//# sourceURL=webpack:///./js/components/article-comments/article-comments-post/template.html?./web_loaders/template.loader.js")},,,,,,,function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleContent;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\n/**\n * @module components/article/article-content\n * @requires module:mixins/component\n * @requires module:components/article/article-toolbar\n */\n\n// Component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// Sign In Component\n\nvar _signInSignIn = __webpack_require__(61);\n\nvar _signInSignIn2 = _interopRequireDefault(_signInSignIn);\n\n/**\n * Represents an ArticleContent component\n * @constructor\n * @public\n */\n\nfunction ArticleContent($el) {\n\tthis.initializeAsComponent($el);\n\n\t// store a reference to this component\n\tvar component = this;\n\n\t// listen for the sign in event\n\t_signInSignIn2["default"].signInPromise.then(function () {\n\t\t// check to see if the paywall is present\n\t\tvar $paywall = component.$el.find("article-paywall");\n\t\tvar $article = component.$el.find("[js-target=\'article-content\']");\n\t\tvar $pdflink = component.$el.find("[js-target=\'pdf-download-link\']");\n\t\tif ($paywall.length !== 0) {\n\t\t\t// update pdf download link if available/accessible\n\t\t\tif (_modelsUser2["default"].getSubscriberId() && $pdflink.length !== 0) {\n\t\t\t\tvar id = $pdflink.attr("data-reprint-product-id"),\n\t\t\t\t newlink = "/download/subscriber/reprint/" + id;\n\t\t\t\t$pdflink.attr("href", newlink);\n\t\t\t\t$pdflink.removeClass("is-hidden");\n\t\t\t}\n\t\t\t$paywall.fadeOut(500, function () {\n\t\t\t\t$article.fadeIn(500);\n\t\t\t});\n\t\t}\n\t});\n}\n\nArticleContent.prototype = {\n\tevents: {\n\t\t"click [js-target=\'dismiss-subscriber-only-message\']": "dismissSubscriberOnlyMessage"\n\t},\n\n\tdismissSubscriberOnlyMessage: function dismissSubscriberOnlyMessage(ev) {\n\t\tev.preventDefault();\n\t\tthis.$("[js-target=\'subscriber-only-message\']").removeClass("active");\n\t}\n};\n\n// Decorate this constructor as a component.\n(0, _mixinsComponent2["default"])(ArticleContent, "article-content");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-content/article-content.js\n ** module id = 552\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-content/article-content.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleFontResizer;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar $window = (0, _jquery2["default"])(window);\n\nfunction ArticleFontResizer($el) {\n\tthis.initializeAsComponent($el);\n}\n\nArticleFontResizer.prototype = {\n\tevents: {\n\t\tclick: "cycle"\n\t},\n\n\t/* Toggles to a different font size using a selector */\n\tcycle: function cycle(evt) {\n\t\tevt.preventDefault();\n\t\t// Get the current font size\n\t\tvar scrollPercentage = $window.scrollTop() / document.body.scrollHeight;\n\n\t\t(0, _jquery2["default"])(".article, .article-executive-summary").toggleClass("article-larger");\n\n\t\t$window.scrollTop(scrollPercentage * document.body.scrollHeight);\n\t\t// Cause anything in the page that depends on the page\'s size to recalculate\n\t\t$window.trigger("resize");\n\t\t// Update digital data\n\t\tvar eventData = {};\n\t\teventData.eventAction = "Content Text Size Change";\n\t\teventData.element = (0, _jquery2["default"])(evt.currentTarget).closest("stream-item");\n\t\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ArticleFontResizer, "[js-target$=\'text-size\']");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-font-resizer/article-font-resizer.js\n ** module id = 553\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-font-resizer/article-font-resizer.js?')},function(module,exports,__webpack_require__){eval('// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticlePaywall;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n__webpack_require__(514);\n\nvar _componentsSignInSignIn = __webpack_require__(61);\n\nvar _componentsSignInSignIn2 = _interopRequireDefault(_componentsSignInSignIn);\n\nvar _servicesAuth = __webpack_require__(49);\n\nvar _servicesAuth2 = _interopRequireDefault(_servicesAuth);\n\nvar _servicesGeoip = __webpack_require__(281);\n\nvar _servicesGeoip2 = _interopRequireDefault(_servicesGeoip);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\n// Components\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\n// Templates\n\nvar _templateTemplatesRegisterForm = __webpack_require__(609);\n\nvar _templateTemplatesRegisterForm2 = _interopRequireDefault(_templateTemplatesRegisterForm);\n\nvar _templateTemplatesSignInForm = __webpack_require__(611);\n\nvar _templateTemplatesSignInForm2 = _interopRequireDefault(_templateTemplatesSignInForm);\n\nvar _templateTemplatesExistingAccount = __webpack_require__(606);\n\nvar _templateTemplatesExistingAccount2 = _interopRequireDefault(_templateTemplatesExistingAccount);\n\nvar _templateTemplatesForgotPassword = __webpack_require__(608);\n\nvar _templateTemplatesForgotPassword2 = _interopRequireDefault(_templateTemplatesForgotPassword);\n\nvar _templateTemplatesForgotPasswordSuccess = __webpack_require__(607);\n\nvar _templateTemplatesForgotPasswordSuccess2 = _interopRequireDefault(_templateTemplatesForgotPasswordSuccess);\n\nvar _templateTemplatesRegistrationSuccess = __webpack_require__(610);\n\nvar _templateTemplatesRegistrationSuccess2 = _interopRequireDefault(_templateTemplatesRegistrationSuccess);\n\n// internal reference\n\nvar trigger = __webpack_require__(26).trigger;\nfunction ArticlePaywall($el) {\n\tthis.initializeAsComponent($el);\n\tthis.articleRef = null;\n\tthis.articleParaRef = null;\n\tthis.paywallComponent = null;\n\tthis.userLoggedIn = false;\n}\n\nArticlePaywall.prototype = {\n\tevents: {\n\t\t"click [js-target=\'show-sign-in\']": "showSignIn",\n\t\t"click [js-target=\'show-register\']": "showRegister",\n\t\t"click [js-target=\'show-forgot-password\']": "showForgotPassword",\n\t\t"click [js-target=\'register-paywall-user\']": "register",\n\t\t"click [js-target=\'verify-forgot-password\']": "verifyForgotPassword",\n\t\t"click [js-target=\'send-subscribe\']": "subscribe"\n\t},\n\n\tglobalEvents: {\n\t\t"click [js-target=\'close-article-paywall\']": "onClose"\n\t},\n\n\trender: function render() {\n\n\t\t// get article reference\n\t\tthis.articleRef = this.getArticleReference();\n\t\tif (this.articleRef) {\n\n\t\t\t// get article para reference\n\t\t\tthis.articleParaRef = this.getArticleParaReference();\n\t\t\tif (this.articleParaRef) {\n\t\t\t\tthis.paywallComponent = this.$el;\n\n\t\t\t\t//set the top of this component as the height of the second para of the article\n\t\t\t\tthis.paywallComponent.css("top", this.articleParaRef.position().top);\n\t\t\t\tthis.paywallComponent.html((0, _templateTemplatesRegisterForm2["default"])());\n\t\t\t\t(0, _jquery2["default"])("body").trigger("set-page-info", ["Registration", "Registration Wall"]);\n\t\t\t\tthis.$el.append(this.paywallComponent);\n\t\t\t\tthis.displayOptIn();\n\n\t\t\t\t// updated article height\n\t\t\t\tthis.updateArticleHeight();\n\n\t\t\t\tvar thisObj = this;\n\t\t\t\t(0, _jquery2["default"])(".article img:first").load(function () {\n\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t});\n\n\t\t\t\tthis.articleRef.css("overflow", "hidden");\n\n\t\t\t\tvar $window = (0, _jquery2["default"])(window);\n\t\t\t\t// update the article height when window is being resized\n\t\t\t\t$window.on("resize", function () {\n\t\t\t\t\tif (!thisObj.userLoggedIn) {\n\t\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// hide the author section\n\t\t\t\t(0, _jquery2["default"])("[js-target=\'authors-section\']").hide();\n\n\t\t\t\tthis.articleRef.addClass("mbl");\n\n\t\t\t\t// on successful sign-in, hide the paywall\n\t\t\t\t// on error, update the article height as error message is added\n\t\t\t\t_componentsSignInSignIn2["default"].signInPromise.then((function () {\n\t\t\t\t\tthis.userLoggedIn = true;\n\n\t\t\t\t\t// if logged in user is not having any quota remaining, then refresh the page to\n\t\t\t\t\t// show the registered user paywall\n\t\t\t\t\tif (_modelsUser2["default"].getQuotaRemaining() === 0) {\n\t\t\t\t\t\tdocument.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.hidePaywall();\n\t\t\t\t\t}\n\t\t\t\t}).bind(this), (function () {\n\t\t\t\t\tthis.updateArticleHeight();\n\t\t\t\t}).bind(this));\n\n\t\t\t\t_servicesState2["default"].on("transition", function (previous, current) {\n\t\t\t\t\tif (!thisObj.userLoggedIn) {\n\t\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["register", "Form Initiations"]);\n\t\t\t}\n\t\t}\n\t},\n\n\tdisplayOptIn: function displayOptIn() {\n\t\tvar thisObj = this;\n\t\t_servicesGeoip2["default"].determineIfDomesticUser().then(function (isDomUser) {\n\t\t\tif (isDomUser) {\n\t\t\t\t(0, _jquery2["default"])("[js-target=\'promotional-optin\'] .dom-lang").show();\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])("[js-target=\'promotional-optin\'] .intl-lang").show();\n\t\t\t}\n\t\t\t_servicesLocalstorageUtil2["default"].setCache("isDomUser", isDomUser);\n\t\t\tthisObj.updateArticleHeight();\n\t\t});\n\t},\n\n\tupdateArticleHeight: function updateArticleHeight() {\n\t\t//get article and para component reference\n\t\tthis.articleRef = this.getArticleReference();\n\t\tif (this.articleRef != null) {\n\t\t\tthis.articleParaRef = this.getArticleParaReference(this.articleRef);\n\t\t\tif (this.articleParaRef != null) {\n\t\t\t\t// compute article height which needs to be set\n\t\t\t\t// this should be second paragpaph top + height of the paywall component\n\t\t\t\tthis.paywallComponent.css("height", "auto");\n\t\t\t\tvar articleHeightWithPaywall = this.articleParaRef.position().top + this.paywallComponent.outerHeight(true);\n\n\t\t\t\t//Get right tail reference\n\t\t\t\tvar articleRightRailRef = this.getArticleRightRailReference();\n\n\t\t\t\t// if right rail component height is greater than article height with paywall, the use right rail height for the paywall\n\t\t\t\tif (articleRightRailRef && articleRightRailRef.outerHeight(true) > articleHeightWithPaywall) {\n\t\t\t\t\tarticleHeightWithPaywall = articleRightRailRef.outerHeight(true);\n\n\t\t\t\t\t//set the paywall component height\n\t\t\t\t\tthis.paywallComponent.height(articleHeightWithPaywall - this.articleParaRef.position().top);\n\t\t\t\t}\n\n\t\t\t\t//set the paywall component top\n\t\t\t\tthis.paywallComponent.css("top", this.articleParaRef.position().top);\n\n\t\t\t\t//set the article height\n\t\t\t\tthis.articleRef.height(articleHeightWithPaywall);\n\t\t\t}\n\t\t}\n\t},\n\n\tgetArticleReference: function getArticleReference() {\n\t\tvar ARTICLE_SELECTOR = ".content-area--article .article.article-first-row";\n\t\tvar articleRef = (0, _jquery2["default"])(ARTICLE_SELECTOR);\n\t\tif (articleRef && articleRef.length > 0) {\n\t\t\treturn articleRef;\n\t\t}\n\t\treturn null;\n\t},\n\n\t/**\n * Returns article paragraph reference from where paywall needs to be shown.\n */\n\tgetArticleParaReference: function getArticleParaReference() {\n\t\tvar ARTICLE_PARA_SELECTOR = ".content-area--article .article.article-first-row > p";\n\t\tvar articleParaRef = (0, _jquery2["default"])(ARTICLE_PARA_SELECTOR);\n\t\tif (articleParaRef && articleParaRef.length > 1) {\n\t\t\treturn (0, _jquery2["default"])(articleParaRef[1]);\n\t\t}\n\t\treturn null;\n\t},\n\n\tgetArticleRightRailReference: function getArticleRightRailReference() {\n\t\tvar ARTICLE_RIGHT_RAIL_SELECTOR = ".content-area--article .promo--right";\n\t\tvar rightRailRef = (0, _jquery2["default"])(ARTICLE_RIGHT_RAIL_SELECTOR);\n\t\tif (rightRailRef && rightRailRef.length > 0) {\n\t\t\treturn rightRailRef;\n\t\t}\n\t\treturn null;\n\t},\n\n\tregister: function register() {\n\t\tvar thisObj = this;\n\t\tthis.paywallComponent.find("[js-target=\'paywall-register-form\']").validate({\n\t\t\trules: {\n\t\t\t\tfirstName: {\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tlastName: {\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\temailAddress: {\n\t\t\t\t\trequired: true\n\t\t\t\t},\n\t\t\t\tpassword: {\n\t\t\t\t\trequired: true,\n\t\t\t\t\tminlength: 6\n\t\t\t\t}\n\t\t\t},\n\t\t\tunhighlight: function unhighlight(element, errorClass, validClass) {\n\t\t\t\t(0, _jquery2["default"])(element).removeClass(errorClass).addClass(validClass);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t}, 1);\n\t\t\t},\n\t\t\thighlight: function highlight(element, errorClass, validClass) {\n\t\t\t\t(0, _jquery2["default"])(element).removeClass(validClass).addClass(errorClass);\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t}, 1);\n\t\t\t},\n\t\t\tinvalidHandler: function invalidHandler() {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t}, 1);\n\t\t\t},\n\t\t\tsubmitHandler: function submitHandler() {\n\t\t\t\tthisObj.paywallComponent.find("[js-target=\'error-box\']").hide();\n\t\t\t\tthisObj.paywallComponent.find("[js-target=\'register-paywall-user\']").prop("disabled", true);\n\t\t\t\tvar optIn = thisObj.getOptIn();\n\t\t\t\tvar userDetail = {\n\t\t\t\t\t"firstName": thisObj.paywallComponent.find("input[name=\'firstName\']").val(),\n\t\t\t\t\t"lastName": thisObj.paywallComponent.find("input[name=\'lastName\']").val(),\n\t\t\t\t\t"password": thisObj.paywallComponent.find("input[name=\'password\']").val(),\n\t\t\t\t\t"emailAddress": thisObj.paywallComponent.find("input[name=\'emailAddress\']").val(),\n\t\t\t\t\t"optIn": optIn\n\t\t\t\t};\n\t\t\t\t_modelsUser2["default"].paywallRegister(userDetail).then(function (createdUser) {\n\t\t\t\t\ttrigger("metrics:registration_success", { user: createdUser });\n\t\t\t\t\tthisObj.onSuccess(createdUser);\n\t\t\t\t\tthisObj.hidePaywall();\n\t\t\t\t\t(0, _jquery2["default"])("body").trigger("register:success", ["Registration Wall", createdUser]);\n\t\t\t\t}, function (res) {\n\t\t\t\t\tif (res.status === 409) {\n\t\t\t\t\t\tthisObj.showRegisteredUserLogin(userDetail.emailAddress);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar data = res.responseJSON;\n\t\t\t\t\t\tvar errorMessage = "We are sorry. We are unable to process your request at this time.";\n\t\t\t\t\t\terrorMessage += "Customer Service is available 24/7. ";\n\t\t\t\t\t\terrorMessage += "Phone: <a href=\'tel:18009880886\'>1-800-988-0886</a> (<a href=\'tel:16177837500\'>1-617-783-7500</a>";\n\t\t\t\t\t\terrorMessage += " outside the U.S. and Canada) or email at ";\n\t\t\t\t\t\terrorMessage += "<a href=\'mailto:[email protected]\'>[email protected]</a>";\n\t\t\t\t\t\tif (data && data.errors && data.errors.length !== 0) {\n\t\t\t\t\t\t\terrorMessage = data.errors[0].errorMessage;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthisObj.paywallComponent.find("[js-target=\'error-box-message\']").html(errorMessage);\n\t\t\t\t\t\tthisObj.paywallComponent.find("[js-target=\'error-box\']").show();\n\t\t\t\t\t}\n\t\t\t\t\tthisObj.updateArticleHeight();\n\t\t\t\t\tthisObj.paywallComponent.find("[js-target=\'register-paywall-user\']").prop("disabled", false);\n\t\t\t\t});\n\t\t\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["register", "Form Submission"]);\n\t\t\t}\n\t\t});\n\t},\n\n\thidePaywall: function hidePaywall() {\n\t\tthis.paywallComponent.hide();\n\t\tthis.articleRef.css("overflow", "visible");\n\t\tthis.articleRef.css("height", "auto");\n\t\t(0, _jquery2["default"])("[js-target=\'authors-section\']").show();\n\t},\n\n\tgetOptIn: function getOptIn() {\n\t\tvar optIn;\n\t\tif (_servicesLocalstorageUtil2["default"].getCache("isDomUser")) {\n\t\t\toptIn = true;\n\t\t} else {\n\t\t\toptIn = this.paywallComponent.find("input[name=\'enroll\']").is(":checked");\n\t\t}\n\t\treturn optIn;\n\t},\n\n\tverifyForgotPassword: function verifyForgotPassword(ev) {\n\t\tev.preventDefault();\n\t\t//this.paywallComponent.find("[js-target=\'error-box\']").hide();\n\t\tthis.paywallComponent.find("[js-target=\'verify-forgot-password\']").prop("disabled", true);\n\t\tvar emailAddress = this.paywallComponent.find("input[name=\'emailAddress\']").val();\n\t\t_servicesAuth2["default"].verifyForgotPassword(emailAddress).then((function (user) {\n\t\t\tthis.paywallComponent.html((0, _templateTemplatesForgotPasswordSuccess2["default"])({ emailAddress: emailAddress }));\n\t\t\tthis.updateArticleHeight();\n\t\t}).bind(this), (function (res) {\n\t\t\tvar data = res.responseJSON;\n\t\t\tvar errorMessage = "We are sorry. We are unable to process your request at this time.";\n\t\t\terrorMessage += "Customer Service is available 24/7. ";\n\t\t\terrorMessage += "Phone: <a href=\'tel:18009880886\'>1-800-988-0886</a> (<a href=\'tel:16177837500\'>1-617-783-7500</a>";\n\t\t\terrorMessage += " outside the U.S. and Canada) or email at ";\n\t\t\terrorMessage += "<a href=\'mailto:[email protected]\'>[email protected]</a>";\n\t\t\tif (data && data.errors && data.errors.length !== 0) {\n\t\t\t\terrorMessage = data.errors[0].errorMessage;\n\t\t\t} else if (res.status === 404) {\n\t\t\t\terrorMessage = "Account not found.";\n\t\t\t}\n\t\t\tthis.paywallComponent.find("[js-target=\'error-box-message\']").html(errorMessage);\n\t\t\tthis.paywallComponent.find("[js-target=\'error-box\']").show();\n\t\t\tthis.paywallComponent.find("[js-target=\'verify-forgot-password\']").prop("disabled", false);\n\t\t\tthis.updateArticleHeight();\n\t\t}).bind(this));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["forgot-password", "Form Submission"]);\n\t},\n\n\tshowSignIn: function showSignIn(ev) {\n\t\tif (ev.preventDefault) {\n\t\t\tev.preventDefault();\n\t\t}\n\t\tthis.paywallComponent.html((0, _templateTemplatesSignInForm2["default"])({ emailAddress: ev.emailAddress }));\n\t\tthis.updateArticleHeight();\n\t\t_componentsSignInSignIn2["default"].activate(this.paywallComponent.find("sign-in"));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["sign-in", "Form Initiations"]);\n\t},\n\n\tshowRegisteredUserLogin: function showRegisteredUserLogin(email) {\n\t\tthis.paywallComponent.html((0, _templateTemplatesExistingAccount2["default"])({ emailAddress: email }));\n\t\t_componentsSignInSignIn2["default"].activate(this.paywallComponent.find("sign-in"));\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["sign-in", "Form Initiations"]);\n\t},\n\n\tshowForgotPassword: function showForgotPassword(ev) {\n\t\tev.preventDefault();\n\t\tthis.paywallComponent.html((0, _templateTemplatesForgotPassword2["default"])());\n\t\tthis.updateArticleHeight();\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["forgot-password", "Form Initiations"]);\n\t},\n\n\tshowRegister: function showRegister(ev) {\n\t\tev.preventDefault();\n\t\tthis.paywallComponent.html((0, _templateTemplatesRegisterForm2["default"])());\n\t\tthis.displayOptIn();\n\t\tthis.updateArticleHeight();\n\t\t(0, _jquery2["default"])("body").trigger("form-interaction", ["register", "Form Initiations"]);\n\t},\n\n\tonSuccess: function onSuccess(createdUser) {\n\t\tthis.userLoggedIn = true;\n\t\t(0, _jquery2["default"])("body").append((0, _templateTemplatesRegistrationSuccess2["default"])({ user: _modelsUser2["default"] }));\n\t\t_componentsSignInSignIn2["default"].signInPromise.resolve(createdUser);\n\t\tvar closePopup = this.onClose;\n\t\tsetTimeout(function () {\n\t\t\tclosePopup();\n\t\t}, 5000);\n\t},\n\n\tonClose: function onClose() {\n\t\t(0, _jquery2["default"])("[js-target=\'paywall-success\']").remove();\n\t},\n\n\tsubscribe: function subscribe() {\n\t\twindow.location.href = "https://w1.buysub.com/servlet/ConvertibleGateway?cds_mag_code=HVR&cds_page_id=203760&cds_response_key=I66AHRV1";\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ArticlePaywall, "article-paywall-anonymous");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-paywall/article-paywall.js\n ** module id = 554\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/article-paywall.js?'); },function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ArticleSidebar;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _lodashAmdModernCollectionsFind = __webpack_require__(283);\n\nvar _lodashAmdModernCollectionsFind2 = _interopRequireDefault(_lodashAmdModernCollectionsFind);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nfunction ArticleSidebar($el) {\n\tthis.initializeAsComponent($el);\n\t// defaultClass for originalClass should match the default type output from WordPress\n\tvar defaultClass = "sidebar--half";\n\tvar elementClasses = this.$el.attr("class").split(/\\s+/);\n\tvar originalClass = (0, _lodashAmdModernCollectionsFind2["default"])(elementClasses, function (elClass) {\n\t\treturn elClass.indexOf("sidebar") === 0;\n\t});\n\tthis.$dom = {\n\t\ttitle: this.$("h4"),\n\t\tcontents: this.$(".sidebar-contents"),\n\t\tcollapseButton: (0, _jquery2["default"])("<div class=\\"sidebar-collapse\\"><i class=\\"icon icon-times white font-size-large font-heavy\\"></i></div>"),\n\t\texpandButton: (0, _jquery2["default"])("<div class=\\"sidebar-expand\\"><i class=\\"icon icon-caret-right\\"></i> Read more</div>"),\n\t\tfadeMask: (0, _jquery2["default"])("<div class=\\"sidebar-fade\\">&nbsp;</div>"),\n\t\t// Construct array used for state alternation, using original and transition states (if provided).\n\t\ttransitionStates: this.$el.attr("data-sidebar-alternate") !== undefined ? [originalClass !== undefined ? originalClass : defaultClass, this.$el.attr("data-sidebar-alternate")] : undefined\n\t};\n\t// Decorate upon loading\n\tthis.decorate();\n}\n\n/* Decorates a sidebar with the appropriate tools based on its format, including:\n\t- Expand/Collapse\n\t- Share/Save\n\t...and provides the backing interactivity for the tools */\nArticleSidebar.prototype = {\n\tdecorate: function decorate() {\n\t\tvar component = this;\n\t\tif (component.$dom.contents.hasClass("height--collapse")) {\n\t\t\tcomponent.$dom.collapseButton.detach();\n\t\t\tcomponent.$dom.contents.after(component.$dom.expandButton);\n\t\t\tcomponent.$dom.contents.after(component.$dom.fadeMask);\n\t\t} else if (component.$dom.contents.hasClass("collapsible")) {\n\t\t\tcomponent.$dom.title.before(component.$dom.collapseButton);\n\t\t\tcomponent.$dom.expandButton.detach();\n\t\t\tcomponent.$dom.fadeMask.detach();\n\t\t}\n\t},\n\tredecorate: function redecorate(event) {\n\t\tevent.preventDefault();\n\t\tvar component = this;\n\t\tif (component.$dom.transitionStates !== undefined && component.$dom.transitionStates.length > 1) {\n\t\t\tif (component.$el.hasClass(component.$dom.transitionStates[1])) {\n\t\t\t\tcomponent.$el.addClass(component.$dom.transitionStates[0]);\n\t\t\t\tcomponent.$el.removeClass(component.$dom.transitionStates[1]);\n\t\t\t} else {\n\t\t\t\tcomponent.$el.addClass(component.$dom.transitionStates[1]);\n\t\t\t\tcomponent.$el.removeClass(component.$dom.transitionStates[0]);\n\t\t\t}\n\t\t}\n\t\tif (component.$dom.contents.hasClass("height--collapse")) {\n\t\t\tcomponent.$dom.contents.removeClass("height--collapse");\n\t\t\tcomponent.$dom.contents.addClass("collapsible");\n\t\t\tcomponent.$dom.contents.removeClass("column-collapse");\n\t\t} else if (component.$dom.contents.hasClass("collapsible")) {\n\t\t\tcomponent.$dom.contents.addClass("height--collapse");\n\t\t\tcomponent.$dom.contents.removeClass("collapsible");\n\t\t\tcomponent.$dom.contents.addClass("column-collapse");\n\t\t}\n\t\tcomponent.decorate();\n\t},\n\tevents: {\n\t\t"click .sidebar-expand,.sidebar-collapse": "redecorate"\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ArticleSidebar, "article-sidebar");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/article-sidebar/article-sidebar.js\n ** module id = 555\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-sidebar/article-sidebar.js?')},function(module,exports,__webpack_require__){eval('\n// Dependencies\n"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n__webpack_require__(592);\n\n/**\n * On-page audio player\n * finds <a> tag on the page with "hbraudio" class,\n * and replace it with custom html and use jplayer for playing the audio\n * a tag accepts following attributes\n * href (required for it to work), data-hsare-url (soundcloud), data-audio-length, width\n * @public\n * @requires module:jquery\n * @requires module:jplayer\n */\nfunction insertAudioPlayer($el) {\n\t_jquery2["default"].each($el, function (index) {\n\t\tvar src = (0, _jquery2["default"])(this).attr("href"),\n\t\t audioid = "audio" + index,\n\t\t playerid = "hbrplayer" + audioid,\n\t\t playeridselector = "#" + playerid,\n\t\t playerwidth = "300px",\n\t\t shareurl,\n\t\t audiotitle,\n\t\t playertime = "00:00";\n\t\t/* get width */\n\t\tif (typeof (0, _jquery2["default"])(this).attr("width") !== "undefined") {\n\t\t\tif ((0, _jquery2["default"])(this).attr("width").match(/^([0-9]+)$/)) {\n\t\t\t\tplayerwidth = (0, _jquery2["default"])(this).attr("width") + "px";\n\t\t\t} else if ((0, _jquery2["default"])(this).attr("width").match(/^([0-9]+)%$/)) {\n\t\t\t\tplayerwidth = (0, _jquery2["default"])(this).attr("width");\n\t\t\t}\n\t\t}\n\t\t/* get url for share */\n\t\tif (typeof (0, _jquery2["default"])(this).attr("data-share-url") === "undefined") {\n\t\t\tshareurl = window.location;\n\t\t} else {\n\t\t\tshareurl = (0, _jquery2["default"])(this).attr("data-share-url");\n\t\t}\n\t\t/* get title */\n\t\tif (typeof (0, _jquery2["default"])(this).attr("title") === "undefined") {\n\t\t\taudiotitle = document.title;\n\t\t} else {\n\t\t\taudiotitle = (0, _jquery2["default"])(this).attr("title");\n\t\t}\n\t\t/* get remaining time */\n\t\tif (typeof (0, _jquery2["default"])(this).attr("data-audio-length") !== "undefined") {\n\t\t\tif ((0, _jquery2["default"])(this).attr("data-audio-length").match(/\\d\\d:\\d\\d/)) {\n\t\t\t\tplayertime = (0, _jquery2["default"])(this).attr("data-audio-length");\n\t\t\t}\n\t\t}\n\t\t// building data for this <audio> element on the page\n\t\tvar data = {\n\t\t\taudiotag: (0, _jquery2["default"])(this),\n\t\t\taudioindex: index,\n\t\t\taudioid: audioid,\n\t\t\tplayerid: playerid,\n\t\t\tplayeridselector: playeridselector,\n\t\t\tsrc: src,\n\t\t\tw: playerwidth,\n\t\t\tplayertime: playertime,\n\t\t\taudiotitle: audiotitle,\n\t\t\tshareurl: shareurl\n\t\t};\n\n\t\tcreatePlayer(data);\n\n\t\t// first div after audio tag is the jplayer div\n\t\tvar jplayerdiv = (0, _jquery2["default"])(this).next();\n\t\tdata.jplayerdiv = jplayerdiv;\n\n\t\tjplayerdiv.data("player", data);\n\n\t\t/* Get remaining time */\n\t\tjplayerdiv.updateTimer = function (event) {\n\t\t\tvar status = event.jPlayer.status;\n\t\t\tvar remaining = status.duration - status.currentTime;\n\t\t\tif (remaining === 0 && typeof (0, _jquery2["default"])(event.currentTarget).data("player").playertime !== "undefined") {\n\t\t\t\t(0, _jquery2["default"])(playeridselector + " .hbraudio-remaining-time").text((0, _jquery2["default"])(event.currentTarget).data("player").playertime);\n\t\t\t} else {\n\t\t\t\t(0, _jquery2["default"])(playeridselector + " .hbraudio-remaining-time").text(_jquery2["default"].jPlayer.convertTime(remaining));\n\t\t\t}\n\t\t};\n\n\t\tjplayerdiv.jPlayer({\n\t\t\tready: function ready() {\n\t\t\t\t(0, _jquery2["default"])(this).jPlayer("setMedia", {\n\t\t\t\t\tmp3: src\n\t\t\t\t});\n\t\t\t},\n\t\t\tswfPath: "Jplayer.swf",\n\t\t\tsupplied: "mp3",\n\t\t\twmode: "window",\n\t\t\tcssSelectorAncestor: playeridselector,\n\t\t\tcssSelector: {\n\t\t\t\tseekBar: ".hbraudio-seek-bar",\n\t\t\t\tplayBar: ".hbraudio-play-bar"\n\t\t\t}\n\t\t}).bind(_jquery2["default"].jPlayer.event.timeupdate, jplayerdiv.updateTimer);\n\n\t\t(0, _jquery2["default"])(this).hide();\n\t\tsetupPluginEvents();\n\t});\n\tfunction play(ev) {\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev();\n\t\tvar data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\tconsole.log(data);\n\t\t(0, _jquery2["default"])(ev.currentTarget).hide();\n\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-pause").show();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-replay").show();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-headset").hide();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-share-toolbox").fadeIn();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-share-open").addClass("opened");\n\t\t(0, _jquery2["default"])(jplayerdiv).jPlayer("play");\n\t}\n\tfunction pause(ev) {\n\t\t/* figure out which player was clicked ? */\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\t(0, _jquery2["default"])(ev.currentTarget).hide();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-play").show();\n\t\t(0, _jquery2["default"])(jplayerdiv).jPlayer("pause");\n\t}\n\tfunction replay(ev) {\n\t\t/* figure out which player was clicked ? */\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\t(0, _jquery2["default"])(jplayerdiv).jPlayer("play", 0);\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-play").hide();\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-pause").show();\n\t}\n\n\tfunction createPlayer(data) {\n\t\t/* BUILDING PLAYER HTML */\n\t\t/* Jplayer div is an empty div that jplayer puts audio object in. */\n\t\tvar $jPlayerDiv = (0, _jquery2["default"])("<div></div>");\n\t\t/* this is the code for play/pause, remaining-time and progressbar */\n\t\tvar playerDivString = "<div class=\'hbraudio-top\'><ul class=\'hbraudio-play-holder\'><li><a class=\'hbraudio-play\' title=\'Play\'>Play</a></li><li><a class=\'hbraudio-pause\' style=\'display:none\' title=\'Pause\'>Pause</a></li></ul><div class=\'hbraudio-time-holder\'><div class=\'hbraudio-remaining-time\'>";\n\t\tplayerDivString += data.playertime;\n\t\tplayerDivString += "</div></div><ul class=\'hbraudio-replay-holder\'><li><span class=\'hbraudio-headset\'>Headset</span></li><li><a class=\'hbraudio-replay\' style=\'display:none\' title=\'Replay\'>Replay</a></li></ul></div><div class=\'hbraudio-progress\'><div class=\'hbraudio-seek-bar\'><div class=\'hbraudio-play-bar\'></div></div></div>";\n\n\t\t/* Build share portion */\n\t\tvar shareItems = [{ classname: "download", linktext: "Download" }, { classname: "twitter", linktext: "Twitter" }, { classname: "linkedin", linktext: "LinkedIn" }, { classname: "facebook", linktext: "Facebook" }];\n\t\tvar shareButtonsLi = [];\n\t\t_jquery2["default"].each(shareItems, function (i, item) {\n\t\t\tvar li = "<li><a class=\'hbraudio-share-" + item.classname + "\'";\n\t\t\tif (item.classname === "download") {\n\t\t\t\tli += "title=\'Right-click to download\' href=\'" + data.src + "\'>";\n\t\t\t} else {\n\t\t\t\tli += "title=\'" + item.linktext + "\'>";\n\t\t\t}\n\t\t\tli += item.linktext + "</a></li>";\n\t\t\tshareButtonsLi.push(li);\n\t\t});\n\t\tvar $shareButtonsUl = (0, _jquery2["default"])("<ul></ul>").addClass("hbraudio-share-tools").append(shareButtonsLi.join(""));\n\t\tvar $shareOpener = (0, _jquery2["default"])("<div></div>").addClass("hbraudio-share-opener").append("<a class=\'hbraudio-share-open\'>Share tools</a>");\n\n\t\tvar $playerDiv = (0, _jquery2["default"])("<div></div>").addClass("hbraudio-container").width(data.w).attr("id", data.playerid).append(playerDivString).append((0, _jquery2["default"])("<div></div>").addClass("hbraudio-share").append($shareOpener).append((0, _jquery2["default"])("<div></div>").addClass("hbraudio-share-toolbox").append($shareButtonsUl).hide()));\n\t\tdata.audiotag.after($playerDiv).after($jPlayerDiv);\n\t}\n\n\tfunction setupPluginEvents() {\n\t\t(0, _jquery2["default"])(".hbraudio-play").click(play);\n\t\t(0, _jquery2["default"])(".hbraudio-pause").click(pause);\n\t\t(0, _jquery2["default"])(".hbraudio-replay").click(replay);\n\t\t(0, _jquery2["default"])(".hbraudio-share-open").click(shareOpen);\n\t\t(0, _jquery2["default"])(".hbraudio-share-twitter").click(twitter);\n\t\t(0, _jquery2["default"])(".hbraudio-share-linkedin").click(linkedin);\n\t\t(0, _jquery2["default"])(".hbraudio-share-facebook").click(facebook);\n\t}\n\n\t/* SHARE FUNCTIONS */\n\tfunction shareOpen(ev) {\n\t\t/* figure out which player was clicked ? */\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\t(0, _jquery2["default"])(data.playeridselector + " .hbraudio-share-toolbox").fadeToggle();\n\t\t(0, _jquery2["default"])(ev.currentTarget).toggleClass("opened");\n\t}\n\tfunction popup(url) {\n\t\tvar l = (screen.width - 700) / 2,\n\t\t t = (screen.height - 450) / 2;\n\t\twindow.open(url, "mywindow", "menubar=1,scrollbars=1,resizable=1,width=700,height=450,left=" + l + ",top=" + t);\n\t}\n\tfunction twitter(ev) {\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\tvar twitterurl = "http://twitter.com/share?text=" + encodeURIComponent(data.audiotitle) + " " + encodeURIComponent(data.shareurl);\n\t\tpopup(twitterurl);\n\t}\n\tfunction linkedin(ev) {\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\tvar linkedinurl = "http://www.linkedin.com/shareArticle?mini=true&url=" + encodeURIComponent(data.shareurl);\n\t\tpopup(linkedinurl);\n\t}\n\tfunction facebook(ev) {\n\t\tvar jplayerdiv = (0, _jquery2["default"])(ev.currentTarget).closest(".hbraudio-container").prev(),\n\t\t data = (0, _jquery2["default"])(jplayerdiv).data("player");\n\t\tvar facebookurl = "http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent(data.shareurl) + "&amp;t=" + encodeURIComponent(data.audiotitle);\n\t\tpopup(facebookurl);\n\t}\n}\n\n// Look for hbraudio class, if so, insert it to the page\nif ((0, _jquery2["default"])(".hbraudio").length > 0) {\n\tinsertAudioPlayer((0, _jquery2["default"])(".hbraudio"));\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/audio-player/audio-player.js\n ** module id = 556\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/audio-player/audio-player.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = BuyOrDownloadLink;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nfunction BuyOrDownloadLink($el) {\n\tthis.initializeAsComponent($el);\n\n\t// Re-render once login has completed.\n\t_modelsUser2["default"].authPromise.then((function () {\n\t\tif (_modelsUser2["default"].isSubscriber()) {\n\t\t\tvar rpid = this.$el.attr("data-reprint-product-id");\n\t\t\tthis.$el.attr("href", "/download/subscriber/reprint/" + rpid);\n\t\t\tthis.$(".price--small").replaceWith("<i class=\\"icon icon-lg icon-download-pdf\\"></i>");\n\t\t\tthis.$(".hide-for-small").html("<br/>PDF");\n\t\t}\n\t}).bind(this));\n}\n\n(0, _mixinsComponent2["default"])(BuyOrDownloadLink, "[js-target=\'pdf-download-link\']");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/buy-or-download/buy-or-download.js\n ** module id = 557\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/buy-or-download/buy-or-download.js?')},function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = CommentValidator;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _flyoutFlyout = __webpack_require__(278);\n\nvar _flyoutFlyout2 = _interopRequireDefault(_flyoutFlyout);\n\nfunction CommentValidator($el) {\n\tthis.initializeAsComponent($el);\n}\n\nCommentValidator.prototype = {\n\tevents: {\n\t\tclick: "showRegister"\n\t},\n\n\t/**\n * Ensure the user is authenticated, otherwise open the flyout.\n *\n * @private\n * @param {object} evt - A jQuery event object.\n */\n\tshowRegister: function showRegister(evt) {\n\t\tvar component = this;\n\n\t\tif (!_modelsUser2["default"].isAuthenticated()) {\n\t\t\t(0, _jquery2["default"])(evt.target).attr("disabled", "disabled");\n\n\t\t\t// Wait for successful login.\n\t\t\t_modelsUser2["default"].authPromise.then(function () {\n\t\t\t\t(0, _jquery2["default"])(evt.target).removeAttr("disabled");\n\t\t\t\t(0, _jquery2["default"])(evt.target).focus();\n\t\t\t});\n\n\t\t\t// Open the flyout.\n\t\t\t_flyoutFlyout2["default"].activate(component.$el[0]).show(evt);\n\t\t}\n\t}\n};\n\n(0, _mixinsComponent2["default"])(CommentValidator, ".comments textarea");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/comment-validation/comment-validation.js\n ** module id = 558\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/comment-validation/comment-validation.js?')},,,,function(module,exports,__webpack_require__){eval('// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.PopupSlider = PopupSlider;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Services\n\n// Components\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar trigger = __webpack_require__(26).trigger;\n\nvar component;\n\nfunction PopupSlider($el) {\n\tthis.initializeAsComponent($el);\n\tcomponent = this;\n}\n\nPopupSlider.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target=\'no-thanks\']": "checkPromo"\n\t},\n\n\trender: function render() {\n\t\t(0, _jquery2["default"])("<popup-slider/>").addClass("popup-slider text-center").append((0, _jquery2["default"])("[js-target=\'exit-popup-slider-content\']").html()).appendTo("body");\n\t\t(0, _jquery2["default"])("popup-slider").animate({ bottom: 0 }, 500);\n\t\t// call global event for dtm\n\t\ttrigger("metrics:helpbox_shown", { helpbox: "6_month_offer" });\n\t},\n\n\tcheckPromo: function checkPromo(ev) {\n\t\tev.preventDefault();\n\t\t// Check to see if content from RR is rendered, and cookie does not exit\n\t\tif ((0, _jquery2["default"])("[js-target=\'exit-popup-slider-content\'] > personalization-placement").children().length && !document.cookie.match(/hbr_ps=exit_slider/)) {\n\t\t\tdocument.cookie = "hbr_ps=exit_slider;max-age=" + 60 * 60 * 24 * 30 + ";";\n\t\t\tcomponent.render();\n\t\t} else {\n\t\t\twindow.location.href = ev.currentTarget.href;\n\t\t}\n\t}\n};\n\n(0, _mixinsComponent2["default"])(PopupSlider, "popup-slider");\n\nPopupSlider.checkPromo = PopupSlider.prototype.checkPromo;\n\nexports["default"] = PopupSlider;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/popup-slider/popup-slider.js\n ** module id = 562\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/popup-slider/popup-slider.js?')},function(module,exports,__webpack_require__){eval('\n// Components\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ProgressMeter;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// The component mixin.\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar $window = (0, _jquery2["default"])(window);\nvar $container = (0, _jquery2["default"])(".article");\nvar granuleWidth = 0.5;\nvar height = 0;\n\nfunction ProgressMeter($el) {\n\tthis.initializeAsComponent($el);\n\n\tvar $barFilled = this.$(".meter-granules-filled");\n\n\tfunction recalculateHeight() {\n\t\t(0, _jquery2["default"])(".content-area--article").each(function () {\n\t\t\theight += (0, _jquery2["default"])(this).outerHeight();\n\t\t});\n\t}\n\n\tfunction updateProgress(evt) {\n\t\tvar pct = 0;\n\t\tvar offset = $window.scrollTop() - $container.offset().top;\n\n\t\tif (offset > 0) {\n\t\t\t$el.width("100%");\n\t\t\t$el.fadeIn("fast");\n\t\t\tif ("load" === evt.type || "resize" === evt.type) {\n\t\t\t\theight = 0;\n\t\t\t\trecalculateHeight();\n\t\t\t}\n\t\t\tvar numberOfGranules = Math.floor($el.width() / granuleWidth);\n\t\t\tvar wholeGranuleWidth = numberOfGranules * granuleWidth;\n\t\t\t$el.width(wholeGranuleWidth);\n\t\t\tpct = offset / height;\n\t\t\tpct = pct > 1 ? 1 : pct;\n\t\t\tvar pixelWidth = pct * $el.width();\n\t\t\t$barFilled.width(Math.floor(pixelWidth / granuleWidth) * granuleWidth);\n\t\t} else {\n\t\t\t$el.fadeOut("fast");\n\t\t}\n\t}\n\n\t// Only listen for scroll events if the container is visible.\n\tif ($container.length) {\n\t\t// Calculate an initial height for when document isn\'t already scrolled on load\n\t\trecalculateHeight();\n\t\t$window.on("load resize scroll", updateProgress);\n\t}\n}\n\n// Here you register the Component to be decorated.\n(0, _mixinsComponent2["default"])(ProgressMeter, ".progress-meter");\n\n// Export the constructor so that it may be initialized elsewhere.\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/progress-meter/progress-meter.js\n ** module id = 563\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/progress-meter/progress-meter.js?')},,,,,,,,,,,,,function(module,exports,__webpack_require__){eval('// Dependencies\n"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports.SliderPromo = SliderPromo;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n// Services\n\nvar _modelsUser = __webpack_require__(15);\n\nvar _modelsUser2 = _interopRequireDefault(_modelsUser);\n\nvar _servicesState = __webpack_require__(11);\n\nvar _servicesState2 = _interopRequireDefault(_servicesState);\n\nvar _servicesLocalstorageUtil = __webpack_require__(25);\n\nvar _servicesLocalstorageUtil2 = _interopRequireDefault(_servicesLocalstorageUtil);\n\n// Components\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar _followSubscribeFollowSubscribe = __webpack_require__(282);\n\nvar _followSubscribeFollowSubscribe2 = _interopRequireDefault(_followSubscribeFollowSubscribe);\n\nvar trigger = __webpack_require__(26).trigger;\nvar isElementInViewport = __webpack_require__(26).isElementInViewport;\nvar followSubscribeSlider;\n\n// Constants\nvar ANONYMOUS_USER_ARTICLE_READ_COOKIE_EXP_DAYS = 7;\nvar ANONYMOUS_USER_ARTICLE_READ_VALUE = 1;\n\nvar component;\n\nfunction SliderPromo($el) {\n\tthis.initializeAsComponent($el);\n\tcomponent = this;\n}\n\nvar emailFields;\n\nSliderPromo.prototype = {\n\tglobalEvents: {\n\t\t"click [js-target=\'slider-promo-close\']": "closeSliderPromo",\n\t\t"click .transparent-layer-white": "closeSliderPromo",\n\t\t"click [js-target=\'request-reminder\']": "transitionOne"\n\t},\n\n\trender: function render() {\n\t\tvar width = (0, _jquery2["default"])(document).width();\n\t\tvar height = (0, _jquery2["default"])(document).height();\n\t\t(0, _jquery2["default"])("<div/>", {\n\t\t\t"class": "transparent-layer-white",\n\t\t\theight: height,\n\t\t\twidth: width,\n\t\t\tbottom: -200\n\t\t}).hide().appendTo("body").fadeIn(300);\n\t\t(0, _jquery2["default"])("<slider-promo/>").addClass("slider-promo text-center").append((0, _jquery2["default"])("[js-target=\'slider-promo-content\']").html()).appendTo("body");\n\t\tif (_servicesState2["default"].isMobile()) {\n\t\t\t(0, _jquery2["default"])(".pp-footer").css({\n\t\t\t\t"width": "100%",\n\t\t\t\t"position": "absolute",\n\t\t\t\t"bottom": "16px",\n\t\t\t\t"left": "0"\n\t\t\t});\n\t\t\t(0, _jquery2["default"])("[js-target=\'subrem-intro\']").removeClass("is-hidden");\n\t\t\tfollowSubscribeSlider = _followSubscribeFollowSubscribe2["default"].activateAll();\n\t\t\temailFields = (0, _jquery2["default"])("input[type=email][name=emailToSubscribe]");\n\t\t\temailFields.on("change", function (ev) {\n\t\t\t\tvar followSubEl = (0, _jquery2["default"])(ev.target).closest("follow-subscribe");\n\t\t\t\t(0, _jquery2["default"])(followSubEl).data("email", (0, _jquery2["default"])(ev.target).val());\n\t\t\t});\n\t\t\tif (_servicesState2["default"].current.indexOf("guest") !== 0 && emailFields) {\n\t\t\t\t_modelsUser2["default"].fetch().then(function (localUser) {\n\t\t\t\t\treturn emailFields.val(localUser.emailAddress);\n\t\t\t\t});\n\t\t\t}\n\t\t\tfollowSubscribeSlider.each(function () {\n\t\t\t\tthis.successHandler = component.emailSuccessHandler;\n\t\t\t\tthis.failureHandler = component.emailFailureHandler;\n\t\t\t});\n\t\t\ttrigger("metrics:helpbox_shown", { helpbox: "rr-article-slider" });\n\t\t\t(0, _jquery2["default"])("slider-promo").height(300);\n\t\t} else {\n\t\t\t(0, _jquery2["default"])("[js-target=\'normal-slider\']").removeClass("is-hidden");\n\t\t}\n\t\t(0, _jquery2["default"])("slider-promo").animate({ bottom: 0 }, 500);\n\t\ttrigger("metrics:helpbox_shown", { helpbox: "rr-article-slider" });\n\t},\n\n\ttransitionOne: function transitionOne() {\n\t\t(0, _jquery2["default"])("[js-target=\'subrem-intro\']").fadeToggle(function () {\n\t\t\t(0, _jquery2["default"])("[js-target=\'subrem-form\']").hide().removeClass("is-hidden").fadeToggle();\n\t\t});\n\t},\n\n\ttransitionTwo: function transitionTwo() {\n\t\t(0, _jquery2["default"])("[js-target=\'slider-promo-close\']").fadeToggle();\n\t\t(0, _jquery2["default"])("[js-target=\'subrem-form\']").fadeToggle(function () {\n\t\t\t(0, _jquery2["default"])("[js-target=\'subrem-confirmation\']").hide().removeClass("is-hidden").fadeToggle();\n\t\t});\n\t\tsetTimeout(component.closeSliderPromo, 5000);\n\t},\n\n\tcheckPromo: function checkPromo() {\n\t\tif ((0, _jquery2["default"])("[js-target=\'slider-promo-content\'] > personalization-placement").children().length && !(0, _jquery2["default"])("slider-promo").length && isElementInViewport((0, _jquery2["default"])("section.authors")[0])) {\n\t\t\tif (_modelsUser2["default"].isGuest()) {\n\t\t\t\tif (!document.cookie.match(/hbr_anonymous_user_slider=true/)) {\n\t\t\t\t\tdocument.cookie = "hbr_anonymous_user_slider=true;max-age=" + 60 * 60 * 24 * ANONYMOUS_USER_ARTICLE_READ_COOKIE_EXP_DAYS + ";";\n\t\t\t\t\t_servicesLocalstorageUtil2["default"].setCache("sliderShown", false);\n\t\t\t\t} else {\n\t\t\t\t\tvar guestSliderShown = _servicesLocalstorageUtil2["default"].getCache("sliderShown");\n\t\t\t\t\tif (!guestSliderShown && _modelsUser2["default"].getQuotaProgress() % ANONYMOUS_USER_ARTICLE_READ_VALUE === 0) {\n\t\t\t\t\t\tcomponent.render();\n\t\t\t\t\t\t_servicesLocalstorageUtil2["default"].setCache("sliderShown", true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!document.cookie.match(/hbr_rp=article_slider/)) {\n\t\t\t\tdocument.cookie = "hbr_rp=article_slider;max-age=" + 60 * 60 * 24 * 7 + ";";\n\t\t\t\tcomponent.render();\n\t\t\t}\n\t\t}\n\t},\n\n\tcloseSliderPromo: function closeSliderPromo(ev) {\n\t\tif (ev) {\n\t\t\tev.preventDefault();\n\t\t}\n\t\t(0, _jquery2["default"])("slider-promo").animate({ bottom: -300 }, 400).fadeOut(500, function () {\n\t\t\t(0, _jquery2["default"])(this).remove();\n\t\t});\n\t\t(0, _jquery2["default"])(".transparent-layer-white").fadeOut(500, function () {\n\t\t\t(0, _jquery2["default"])(this).remove();\n\t\t});\n\t\ttrigger("metrics:helpbox_closed", { helpbox: "rr-article-slider" });\n\t},\n\n\temailSuccessHandler: function emailSuccessHandler(el) {\n\t\tcomponent.transitionTwo();\n\t},\n\n\temailFailureHandler: function emailFailureHandler(e, evt) {\n\t\tvar errorMessage = "An unknown error occurred. Please try again later.";\n\t\tif (e && e === "invalid email") {\n\t\t\terrorMessage = "Please enter a valid email address.";\n\t\t}\n\t\talert(errorMessage);\n\t}\n};\n\n(0, _mixinsComponent2["default"])(SliderPromo, "slider-promo");\n\nSliderPromo.checkPromo = SliderPromo.prototype.checkPromo;\n\nexports["default"] = SliderPromo;\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/slider-promo/slider-promo.js\n ** module id = 576\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/slider-promo/slider-promo.js?')},,,,function(module,exports,__webpack_require__){eval('"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n\tvalue: true\n});\nexports["default"] = ToggleContent;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _mixinsComponent = __webpack_require__(7);\n\nvar _mixinsComponent2 = _interopRequireDefault(_mixinsComponent);\n\nvar toggleElements = "div.article-executive-summary, div.article, div.content-area--article > h2.article-hed, div.spotlight-article-wrapper div.content-area--article div.byline, div.spotlight-article-wrapper div.content-area--article section.authors, div.spotlight-article-wrapper div.content-area--article stream-item.ptl";\n\nfunction ToggleContent($el) {\n\tthis.initializeAsComponent($el);\n}\n\nToggleContent.prototype = {\n\tevents: {\n\t\tclick: "toggle"\n\t},\n\n\tinstantToggle: function instantToggle() {\n\t\t(0, _jquery2["default"])(toggleElements).toggle();\n\t\t(0, _jquery2["default"])(".toggle-state").toggleClass("is-hidden");\n\t},\n\n\t/* Swaps the visibility of designated divs */\n\ttoggle: function toggle(evt) {\n\t\tevt.preventDefault();\n\n\t\t(0, _jquery2["default"])(toggleElements).fadeToggle();\n\t\tthis.$(".toggle-state").toggleClass("is-hidden");\n\n\t\t// Update digital data\n\t\tvar eventData = {};\n\t\tvar toggledElement = this.$(".toggle-state.is-hidden");\n\t\tif (toggledElement) {\n\t\t\teventData.eventAction = "Content " + toggledElement.data().state;\n\t\t}\n\t\teventData.element = (0, _jquery2["default"])(evt.currentTarget).closest("stream-item");\n\t\t(0, _jquery2["default"])("body").trigger("content-action:success", eventData);\n\t}\n};\n\n(0, _mixinsComponent2["default"])(ToggleContent, "[js-target$=\'toggle-summary\']");\nmodule.exports = exports["default"];\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/components/toggle-content/toggle-content.js\n ** module id = 580\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/toggle-content/toggle-content.js?'); },,,,,,function(module,exports,__webpack_require__){eval('"use strict";\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }\n\nvar _jquery = __webpack_require__(2);\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\n(function () {\n\t(0, _jquery2["default"])("body").on("post-comment:success", setCommentPostInfo);\n\t(0, _jquery2["default"])("body").on("article-loaded", setArticleReferrer);\n\n\t/**\n * Set comment information to digital data.\n *\n * @param {object} ev - Event object.\n * @param {object} commentData - contains content title and type.\n */\n\tfunction setCommentPostInfo(ev) {\n\t\tif (window.digitalData && window.digitalData.page && window.digitalData.page.attributes) {\n\t\t\tvar eventInfo = {};\n\t\t\teventInfo.eventName = "Content Interaction";\n\t\t\teventInfo.eventAction = "Post a Comment";\n\t\t\teventInfo.contentName = window.digitalData.page.attributes.articleTitle;\n\t\t\teventInfo.contentType = window.digitalData.page.attributes.articleContentType;\n\t\t\tvar event = {};\n\t\t\tevent.eventInfo = eventInfo;\n\t\t\twindow.digitalData.event = [];\n\t\t\twindow.digitalData.event.push(event);\n\t\t}\n\t}\n\n\t/**\n * Set value for \'articleFindingMethod\', which refers to how user has landed to the article page.\n */\n\tfunction setArticleReferrer() {\n\t\tif (window.digitalData && window.digitalData.page && window.digitalData.page.attributes) {\n\t\t\tvar articleFindingMethod;\n\t\t\tvar documentReferrer = document.referrer.toUpperCase();\n\t\t\tvar homeURL = (location.protocol + "//" + location.hostname + "/").toUpperCase();\n\t\t\tif (documentReferrer === homeURL) {\n\t\t\t\tarticleFindingMethod = "Home Navigation";\n\t\t\t} else if (documentReferrer.indexOf(homeURL) === 0) {\n\t\t\t\t/* if url is hbr.org, then check for specific pages like topic, search etc. */\n\t\t\t\tif (documentReferrer.match(/\\/topic\\//i)) {\n\t\t\t\t\tarticleFindingMethod = "Topic Navigation";\n\t\t\t\t} else if (documentReferrer.match(/\\/search/i)) {\n\t\t\t\t\tarticleFindingMethod = "Search";\n\t\t\t\t} else if (documentReferrer.match(/\\/my-library\\/topics/i)) {\n\t\t\t\t\tarticleFindingMethod = "Topic Feed";\n\t\t\t\t} else if (documentReferrer.match(/\\/my-library/i)) {\n\t\t\t\t\tarticleFindingMethod = "My Library";\n\t\t\t\t} else {\n\t\t\t\t\tarticleFindingMethod = "Other";\n\t\t\t\t}\n\t\t\t} else if (location.href.match(/rr_item_page.top_right/i) || location.href.match(/rr_item_page.bottom/i)) {\n\t\t\t\tarticleFindingMethod = "Recommendations";\n\t\t\t} else {\n\t\t\t\tarticleFindingMethod = "External";\n\t\t\t}\n\t\t\twindow.digitalData.page.attributes.articleFindingMethod = articleFindingMethod;\n\t\t}\n\t}\n})();\n\n/**\n * Set comment information to digital data.\n *\n * @param {object} commentObject - comment information.\n */\nexports.setCommentCount = function (commentObject) {\n\tif (window.digitalData && window.digitalData.page && window.digitalData.page.attributes) {\n\t\tif (commentObject && commentObject.streamInfo && commentObject.streamInfo.commentCount) {\n\t\t\t// set number of comments\n\t\t\twindow.digitalData.page.attributes.articleComments = commentObject.streamInfo.commentCount;\n\t\t}\n\t}\n};\n\n/*****************\n ** WEBPACK FOOTER\n ** ./js/support/digital-data/handler/article.js\n ** module id = 586\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/support/digital-data/handler/article.js?')},,,,,function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * isMobile.js v0.4.1\n *\n * A simple library to detect Apple phones and tablets,\n * Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),\n * and any kind of seven inch device, via user agent sniffing.\n *\n * @author: Kai Mallea ([email protected])\n *\n * @license: http://creativecommons.org/publicdomain/zero/1.0/\n */\n(function (global) {\n\n var apple_phone = /iPhone/i,\n apple_ipod = /iPod/i,\n apple_tablet = /iPad/i,\n android_phone = /(?=.*\\bAndroid\\b)(?=.*\\bMobile\\b)/i, // Match 'Android' AND 'Mobile'\n android_tablet = /Android/i,\n amazon_phone = /(?=.*\\bAndroid\\b)(?=.*\\bSD4930UR\\b)/i,\n amazon_tablet = /(?=.*\\bAndroid\\b)(?=.*\\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\\b)/i,\n windows_phone = /Windows Phone/i,\n windows_tablet = /(?=.*\\bWindows\\b)(?=.*\\bARM\\b)/i, // Match 'Windows' AND 'ARM'\n other_blackberry = /BlackBerry/i,\n other_blackberry_10 = /BB10/i,\n other_opera = /Opera Mini/i,\n other_chrome = /(CriOS|Chrome)(?=.*\\bMobile\\b)/i,\n other_firefox = /(?=.*\\bFirefox\\b)(?=.*\\bMobile\\b)/i, // Match 'Firefox' AND 'Mobile'\n seven_inch = new RegExp(\n '(?:' + // Non-capturing group\n\n 'Nexus 7' + // Nexus 7\n\n '|' + // OR\n\n 'BNTV250' + // B&N Nook Tablet 7 inch\n\n '|' + // OR\n\n 'Kindle Fire' + // Kindle Fire\n\n '|' + // OR\n\n 'Silk' + // Kindle Fire, Silk Accelerated\n\n '|' + // OR\n\n 'GT-P1000' + // Galaxy Tab 7 inch\n\n ')', // End non-capturing group\n\n 'i'); // Case-insensitive matching\n\n var match = function(regex, userAgent) {\n return regex.test(userAgent);\n };\n\n var IsMobileClass = function(userAgent) {\n var ua = userAgent || navigator.userAgent;\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n var tmp = ua.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probable happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = ua.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n ua = tmp[0];\n }\n\n this.apple = {\n phone: match(apple_phone, ua),\n ipod: match(apple_ipod, ua),\n tablet: !match(apple_phone, ua) && match(apple_tablet, ua),\n device: match(apple_phone, ua) || match(apple_ipod, ua) || match(apple_tablet, ua)\n };\n this.amazon = {\n phone: match(amazon_phone, ua),\n tablet: !match(amazon_phone, ua) && match(amazon_tablet, ua),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua)\n };\n this.android = {\n phone: match(amazon_phone, ua) || match(android_phone, ua),\n tablet: !match(amazon_phone, ua) && !match(android_phone, ua) && (match(amazon_tablet, ua) || match(android_tablet, ua)),\n device: match(amazon_phone, ua) || match(amazon_tablet, ua) || match(android_phone, ua) || match(android_tablet, ua)\n };\n this.windows = {\n phone: match(windows_phone, ua),\n tablet: match(windows_tablet, ua),\n device: match(windows_phone, ua) || match(windows_tablet, ua)\n };\n this.other = {\n blackberry: match(other_blackberry, ua),\n blackberry10: match(other_blackberry_10, ua),\n opera: match(other_opera, ua),\n firefox: match(other_firefox, ua),\n chrome: match(other_chrome, ua),\n device: match(other_blackberry, ua) || match(other_blackberry_10, ua) || match(other_opera, ua) || match(other_firefox, ua) || match(other_chrome, ua)\n };\n this.seven_inch = match(seven_inch, ua);\n this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch;\n\n // excludes 'other' devices and ipods, targeting touchscreen phones\n this.phone = this.apple.phone || this.android.phone || this.windows.phone;\n\n // excludes 7 inch devices, classifying as phone or tablet is left to the user\n this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet;\n\n if (typeof window === 'undefined') {\n return this;\n }\n };\n\n var instantiate = function() {\n var IM = new IsMobileClass();\n IM.Class = IsMobileClass;\n return IM;\n };\n\n if (typeof module !== 'undefined' && module.exports && typeof window === 'undefined') {\n //node\n module.exports = IsMobileClass;\n } else if (typeof module !== 'undefined' && module.exports && typeof window !== 'undefined') {\n //browserify\n module.exports = instantiate();\n } else if (true) {\n //AMD\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (global.isMobile = instantiate()), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {\n global.isMobile = instantiate();\n }\n\n})(this);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/ismobilejs/isMobile.js\n ** module id = 591\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./~/ismobilejs/isMobile.js?")},function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\n * jPlayer Plugin for jQuery JavaScript Library\n * http://www.jplayer.org\n *\n * Copyright (c) 2009 - 2014 Happyworm Ltd\n * Licensed under the MIT license.\n * http://opensource.org/licenses/MIT\n *\n * Author: Mark J Panaghiston\n * Version: 2.9.2\n * Date: 14th December 2014\n */\n\n/* Support for Zepto 1.0 compiled with optional data module.\n * For AMD or NODE/CommonJS support, you will need to manually switch the related 2 lines in the code below.\n * Search terms: "jQuery Switch" and "Zepto Switch"\n */\n\n(function (root, factory) {\n\tif (true) {\n\t\t// AMD. Register as an anonymous module.\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(2)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); // jQuery Switch\n\t\t// define([\'zepto\'], factory); // Zepto Switch\n\t} else if (typeof exports === \'object\') {\n\t\t// Node/CommonJS\n\t\tfactory(require(\'jquery\')); // jQuery Switch\n\t\t//factory(require(\'zepto\')); // Zepto Switch\n\t} else {\n\t\t// Browser globals\n\t\tif(root.jQuery) { // Use jQuery if available\n\t\t\tfactory(root.jQuery);\n\t\t} else { // Otherwise, use Zepto\n\t\t\tfactory(root.Zepto);\n\t\t}\n\t}\n}(this, function ($, undefined) {\n\n\t// Adapted from jquery.ui.widget.js (1.8.7): $.widget.bridge - Tweaked $.data(this,XYZ) to $(this).data(XYZ) for Zepto\n\t$.fn.jPlayer = function( options ) {\n\t\tvar name = "jPlayer";\n\t\tvar isMethodCall = typeof options === "string",\n\t\t\targs = Array.prototype.slice.call( arguments, 1 ),\n\t\t\treturnValue = this;\n\n\t\t// allow multiple hashes to be passed on init\n\t\toptions = !isMethodCall && args.length ?\n\t\t\t$.extend.apply( null, [ true, options ].concat(args) ) :\n\t\t\toptions;\n\n\t\t// prevent calls to internal methods\n\t\tif ( isMethodCall && options.charAt( 0 ) === "_" ) {\n\t\t\treturn returnValue;\n\t\t}\n\n\t\tif ( isMethodCall ) {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $(this).data( name ),\n\t\t\t\t\tmethodValue = instance && $.isFunction( instance[options] ) ?\n\t\t\t\t\t\tinstance[ options ].apply( instance, args ) :\n\t\t\t\t\t\tinstance;\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\treturnValue = methodValue;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tthis.each(function() {\n\t\t\t\tvar instance = $(this).data( name );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\t// instance.option( options || {} )._init(); // Orig jquery.ui.widget.js code: Not recommend for jPlayer. ie., Applying new options to an existing instance (via the jPlayer constructor) and performing the _init(). The _init() is what concerns me. It would leave a lot of event handlers acting on jPlayer instance and the interface.\n\t\t\t\t\tinstance.option( options || {} ); // The new constructor only changes the options. Changing options only has basic support atm.\n\t\t\t\t} else {\n\t\t\t\t\t$(this).data( name, new $.jPlayer( options, this ) );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\t$.jPlayer = function( options, element ) {\n\t\t// allow instantiation without initializing for simple inheritance\n\t\tif ( arguments.length ) {\n\t\t\tthis.element = $(element);\n\t\t\tthis.options = $.extend(true, {},\n\t\t\t\tthis.options,\n\t\t\t\toptions\n\t\t\t);\n\t\t\tvar self = this;\n\t\t\tthis.element.bind( "remove.jPlayer", function() {\n\t\t\t\tself.destroy();\n\t\t\t});\n\t\t\tthis._init();\n\t\t}\n\t};\n\t// End of: (Adapted from jquery.ui.widget.js (1.8.7))\n\n\t// Zepto is missing one of the animation methods.\n\tif(typeof $.fn.stop !== \'function\') {\n\t\t$.fn.stop = function() {};\n\t}\n\n\t// Emulated HTML5 methods and properties\n\t$.jPlayer.emulateMethods = "load play pause";\n\t$.jPlayer.emulateStatus = "src readyState networkState currentTime duration paused ended playbackRate";\n\t$.jPlayer.emulateOptions = "muted volume";\n\n\t// Reserved event names generated by jPlayer that are not part of the HTML5 Media element spec\n\t$.jPlayer.reservedEvent = "ready flashreset resize repeat error warning";\n\n\t// Events generated by jPlayer\n\t$.jPlayer.event = {};\n\t$.each(\n\t\t[\n\t\t\t\'ready\',\n\t\t\t\'setmedia\', // Fires when the media is set\n\t\t\t\'flashreset\', // Similar to the ready event if the Flash solution is set to display:none and then shown again or if it\'s reloaded for another reason by the browser. For example, using CSS position:fixed on Firefox for the full screen feature.\n\t\t\t\'resize\', // Occurs when the size changes through a full/restore screen operation or if the size/sizeFull options are changed.\n\t\t\t\'repeat\', // Occurs when the repeat status changes. Usually through clicks on the repeat button of the interface.\n\t\t\t\'click\', // Occurs when the user clicks on one of the following: poster image, html video, flash video.\n\t\t\t\'error\', // Event error code in event.jPlayer.error.type. See $.jPlayer.error\n\t\t\t\'warning\', // Event warning code in event.jPlayer.warning.type. See $.jPlayer.warning\n\n\t\t\t// Other events match HTML5 spec.\n\t\t\t\'loadstart\',\n\t\t\t\'progress\',\n\t\t\t\'suspend\',\n\t\t\t\'abort\',\n\t\t\t\'emptied\',\n\t\t\t\'stalled\',\n\t\t\t\'play\',\n\t\t\t\'pause\',\n\t\t\t\'loadedmetadata\',\n\t\t\t\'loadeddata\',\n\t\t\t\'waiting\',\n\t\t\t\'playing\',\n\t\t\t\'canplay\',\n\t\t\t\'canplaythrough\',\n\t\t\t\'seeking\',\n\t\t\t\'seeked\',\n\t\t\t\'timeupdate\',\n\t\t\t\'ended\',\n\t\t\t\'ratechange\',\n\t\t\t\'durationchange\',\n\t\t\t\'volumechange\'\n\t\t],\n\t\tfunction() {\n\t\t\t$.jPlayer.event[ this ] = \'jPlayer_\' + this;\n\t\t}\n\t);\n\n\t$.jPlayer.htmlEvent = [ // These HTML events are bubbled through to the jPlayer event, without any internal action.\n\t\t"loadstart",\n\t\t// "progress", // jPlayer uses internally before bubbling.\n\t\t// "suspend", // jPlayer uses internally before bubbling.\n\t\t"abort",\n\t\t// "error", // jPlayer uses internally before bubbling.\n\t\t"emptied",\n\t\t"stalled",\n\t\t// "play", // jPlayer uses internally before bubbling.\n\t\t// "pause", // jPlayer uses internally before bubbling.\n\t\t"loadedmetadata",\n\t\t// "loadeddata", // jPlayer uses internally before bubbling.\n\t\t// "waiting", // jPlayer uses internally before bubbling.\n\t\t// "playing", // jPlayer uses internally before bubbling.\n\t\t"canplay",\n\t\t"canplaythrough"\n\t\t// "seeking", // jPlayer uses internally before bubbling.\n\t\t// "seeked", // jPlayer uses internally before bubbling.\n\t\t// "timeupdate", // jPlayer uses internally before bubbling.\n\t\t// "ended", // jPlayer uses internally before bubbling.\n\t\t// "ratechange" // jPlayer uses internally before bubbling.\n\t\t// "durationchange" // jPlayer uses internally before bubbling.\n\t\t// "volumechange" // jPlayer uses internally before bubbling.\n\t];\n\n\t$.jPlayer.pause = function() {\n\t\t$.jPlayer.prototype.destroyRemoved();\n\t\t$.each($.jPlayer.prototype.instances, function(i, element) {\n\t\t\tif(element.data("jPlayer").status.srcSet) { // Check that media is set otherwise would cause error event.\n\t\t\t\telement.jPlayer("pause");\n\t\t\t}\n\t\t});\n\t};\n\n\t// Default for jPlayer option.timeFormat\n\t$.jPlayer.timeFormat = {\n\t\tshowHour: false,\n\t\tshowMin: true,\n\t\tshowSec: true,\n\t\tpadHour: false,\n\t\tpadMin: true,\n\t\tpadSec: true,\n\t\tsepHour: ":",\n\t\tsepMin: ":",\n\t\tsepSec: ""\n\t};\n\tvar ConvertTime = function() {\n\t\tthis.init();\n\t};\n\tConvertTime.prototype = {\n\t\tinit: function() {\n\t\t\tthis.options = {\n\t\t\t\ttimeFormat: $.jPlayer.timeFormat\n\t\t\t};\n\t\t},\n\t\ttime: function(s) { // function used on jPlayer.prototype._convertTime to enable per instance options.\n\t\t\ts = (s && typeof s === \'number\') ? s : 0;\n\n\t\t\tvar myTime = new Date(s * 1000),\n\t\t\t\thour = myTime.getUTCHours(),\n\t\t\t\tmin = this.options.timeFormat.showHour ? myTime.getUTCMinutes() : myTime.getUTCMinutes() + hour * 60,\n\t\t\t\tsec = this.options.timeFormat.showMin ? myTime.getUTCSeconds() : myTime.getUTCSeconds() + min * 60,\n\t\t\t\tstrHour = (this.options.timeFormat.padHour && hour < 10) ? "0" + hour : hour,\n\t\t\t\tstrMin = (this.options.timeFormat.padMin && min < 10) ? "0" + min : min,\n\t\t\t\tstrSec = (this.options.timeFormat.padSec && sec < 10) ? "0" + sec : sec,\n\t\t\t\tstrTime = "";\n\n\t\t\tstrTime += this.options.timeFormat.showHour ? strHour + this.options.timeFormat.sepHour : "";\n\t\t\tstrTime += this.options.timeFormat.showMin ? strMin + this.options.timeFormat.sepMin : "";\n\t\t\tstrTime += this.options.timeFormat.showSec ? strSec + this.options.timeFormat.sepSec : "";\n\n\t\t\treturn strTime;\n\t\t}\n\t};\n\tvar myConvertTime = new ConvertTime();\n\t$.jPlayer.convertTime = function(s) {\n\t\treturn myConvertTime.time(s);\n\t};\n\n\t// Adapting jQuery 1.4.4 code for jQuery.browser. Required since jQuery 1.3.2 does not detect Chrome as webkit.\n\t$.jPlayer.uaBrowser = function( userAgent ) {\n\t\tvar ua = userAgent.toLowerCase();\n\n\t\t// Useragent RegExp\n\t\tvar rwebkit = /(webkit)[ \\/]([\\w.]+)/;\n\t\tvar ropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/;\n\t\tvar rmsie = /(msie) ([\\w.]+)/;\n\t\tvar rmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/;\n\n\t\tvar match = rwebkit.exec( ua ) ||\n\t\t\tropera.exec( ua ) ||\n\t\t\trmsie.exec( ua ) ||\n\t\t\tua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||\n\t\t\t[];\n\n\t\treturn { browser: match[1] || "", version: match[2] || "0" };\n\t};\n\n\t// Platform sniffer for detecting mobile devices\n\t$.jPlayer.uaPlatform = function( userAgent ) {\n\t\tvar ua = userAgent.toLowerCase();\n\n\t\t// Useragent RegExp\n\t\tvar rplatform = /(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/;\n\t\tvar rtablet = /(ipad|playbook)/;\n\t\tvar randroid = /(android)/;\n\t\tvar rmobile = /(mobile)/;\n\n\t\tvar platform = rplatform.exec( ua ) || [];\n\t\tvar tablet = rtablet.exec( ua ) ||\n\t\t\t!rmobile.exec( ua ) && randroid.exec( ua ) ||\n\t\t\t[];\n\n\t\tif(platform[1]) {\n\t\t\tplatform[1] = platform[1].replace(/\\s/g, "_"); // Change whitespace to underscore. Enables dot notation.\n\t\t}\n\n\t\treturn { platform: platform[1] || "", tablet: tablet[1] || "" };\n\t};\n\n\t$.jPlayer.browser = {\n\t};\n\t$.jPlayer.platform = {\n\t};\n\n\tvar browserMatch = $.jPlayer.uaBrowser(navigator.userAgent);\n\tif ( browserMatch.browser ) {\n\t\t$.jPlayer.browser[ browserMatch.browser ] = true;\n\t\t$.jPlayer.browser.version = browserMatch.version;\n\t}\n\tvar platformMatch = $.jPlayer.uaPlatform(navigator.userAgent);\n\tif ( platformMatch.platform ) {\n\t\t$.jPlayer.platform[ platformMatch.platform ] = true;\n\t\t$.jPlayer.platform.mobile = !platformMatch.tablet;\n\t\t$.jPlayer.platform.tablet = !!platformMatch.tablet;\n\t}\n\n\t// Internet Explorer (IE) Browser Document Mode Sniffer. Based on code at:\n\t// http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx#GetMode\n\t$.jPlayer.getDocMode = function() {\n\t\tvar docMode;\n\t\tif ($.jPlayer.browser.msie) {\n\t\t\tif (document.documentMode) { // IE8 or later\n\t\t\t\tdocMode = document.documentMode;\n\t\t\t} else { // IE 5-7\n\t\t\t\tdocMode = 5; // Assume quirks mode unless proven otherwise\n\t\t\t\tif (document.compatMode) {\n\t\t\t\t\tif (document.compatMode === "CSS1Compat") {\n\t\t\t\t\t\tdocMode = 7; // standards mode\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn docMode;\n\t};\n\t$.jPlayer.browser.documentMode = $.jPlayer.getDocMode();\n\n\t$.jPlayer.nativeFeatures = {\n\t\tinit: function() {\n\n\t\t\t/* Fullscreen function naming influenced by W3C naming.\n\t\t\t * No support for: Mozilla Proposal: https://wiki.mozilla.org/Gecko:FullScreenAPI\n\t\t\t */\n\n\t\t\tvar d = document,\n\t\t\t\tv = d.createElement(\'video\'),\n\t\t\t\tspec = {\n\t\t\t\t\t// http://www.w3.org/TR/fullscreen/\n\t\t\t\t\tw3c: [\n\t\t\t\t\t\t\'fullscreenEnabled\',\n\t\t\t\t\t\t\'fullscreenElement\',\n\t\t\t\t\t\t\'requestFullscreen\',\n\t\t\t\t\t\t\'exitFullscreen\',\n\t\t\t\t\t\t\'fullscreenchange\',\n\t\t\t\t\t\t\'fullscreenerror\'\n\t\t\t\t\t],\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode\n\t\t\t\t\tmoz: [\n\t\t\t\t\t\t\'mozFullScreenEnabled\',\n\t\t\t\t\t\t\'mozFullScreenElement\',\n\t\t\t\t\t\t\'mozRequestFullScreen\',\n\t\t\t\t\t\t\'mozCancelFullScreen\',\n\t\t\t\t\t\t\'mozfullscreenchange\',\n\t\t\t\t\t\t\'mozfullscreenerror\'\n\t\t\t\t\t],\n\t\t\t\t\t// http://developer.apple.com/library/safari/#documentation/WebKit/Reference/ElementClassRef/Element/Element.html\n\t\t\t\t\t// http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html\n\t\t\t\t\twebkit: [\n\t\t\t\t\t\t\'\',\n\t\t\t\t\t\t\'webkitCurrentFullScreenElement\',\n\t\t\t\t\t\t\'webkitRequestFullScreen\',\n\t\t\t\t\t\t\'webkitCancelFullScreen\',\n\t\t\t\t\t\t\'webkitfullscreenchange\',\n\t\t\t\t\t\t\'\'\n\t\t\t\t\t],\n\t\t\t\t\t// http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/HTMLVideoElementClassReference/HTMLVideoElement/HTMLVideoElement.html\n\t\t\t\t\t// https://developer.apple.com/library/safari/samplecode/HTML5VideoEventFlow/Listings/events_js.html#//apple_ref/doc/uid/DTS40010085-events_js-DontLinkElementID_5\n\t\t\t\t\t// Events: \'webkitbeginfullscreen\' and \'webkitendfullscreen\'\n\t\t\t\t\twebkitVideo: [\n\t\t\t\t\t\t\'webkitSupportsFullscreen\',\n\t\t\t\t\t\t\'webkitDisplayingFullscreen\',\n\t\t\t\t\t\t\'webkitEnterFullscreen\',\n\t\t\t\t\t\t\'webkitExitFullscreen\',\n\t\t\t\t\t\t\'\',\n\t\t\t\t\t\t\'\'\n\t\t\t\t\t],\n\t\t\t\t\tms: [\n\t\t\t\t\t\t\'\',\n\t\t\t\t\t\t\'msFullscreenElement\',\n\t\t\t\t\t\t\'msRequestFullscreen\',\n\t\t\t\t\t\t\'msExitFullscreen\',\n\t\t\t\t\t\t\'MSFullscreenChange\',\n\t\t\t\t\t\t\'MSFullscreenError\'\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\tspecOrder = [\n\t\t\t\t\t\'w3c\',\n\t\t\t\t\t\'moz\',\n\t\t\t\t\t\'webkit\',\n\t\t\t\t\t\'webkitVideo\',\n\t\t\t\t\t\'ms\'\n\t\t\t\t],\n\t\t\t\tfs, i, il;\n\n\t\t\tthis.fullscreen = fs = {\n\t\t\t\tsupport: {\n\t\t\t\t\tw3c: !!d[spec.w3c[0]],\n\t\t\t\t\tmoz: !!d[spec.moz[0]],\n\t\t\t\t\twebkit: typeof d[spec.webkit[3]] === \'function\',\n\t\t\t\t\twebkitVideo: typeof v[spec.webkitVideo[2]] === \'function\',\n\t\t\t\t\tms: typeof v[spec.ms[2]] === \'function\'\n\t\t\t\t},\n\t\t\t\tused: {}\n\t\t\t};\n\n\t\t\t// Store the name of the spec being used and as a handy boolean.\n\t\t\tfor(i = 0, il = specOrder.length; i < il; i++) {\n\t\t\t\tvar n = specOrder[i];\n\t\t\t\tif(fs.support[n]) {\n\t\t\t\t\tfs.spec = n;\n\t\t\t\t\tfs.used[n] = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(fs.spec) {\n\t\t\t\tvar s = spec[fs.spec];\n\t\t\t\tfs.api = {\n\t\t\t\t\tfullscreenEnabled: true,\n\t\t\t\t\tfullscreenElement: function(elem) {\n\t\t\t\t\t\telem = elem ? elem : d; // Video element required for webkitVideo\n\t\t\t\t\t\treturn elem[s[1]];\n\t\t\t\t\t},\n\t\t\t\t\trequestFullscreen: function(elem) {\n\t\t\t\t\t\treturn elem[s[2]](); // Chrome and Opera want parameter (Element.ALLOW_KEYBOARD_INPUT) but Safari fails if flag used.\n\t\t\t\t\t},\n\t\t\t\t\texitFullscreen: function(elem) {\n\t\t\t\t\t\telem = elem ? elem : d; // Video element required for webkitVideo\n\t\t\t\t\t\treturn elem[s[3]]();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfs.event = {\n\t\t\t\t\tfullscreenchange: s[4],\n\t\t\t\t\tfullscreenerror: s[5]\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfs.api = {\n\t\t\t\t\tfullscreenEnabled: false,\n\t\t\t\t\tfullscreenElement: function() {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t},\n\t\t\t\t\trequestFullscreen: function() {},\n\t\t\t\t\texitFullscreen: function() {}\n\t\t\t\t};\n\t\t\t\tfs.event = {};\n\t\t\t}\n\t\t}\n\t};\n\t$.jPlayer.nativeFeatures.init();\n\n\t// The keyboard control system.\n\n\t// The current jPlayer instance in focus.\n\t$.jPlayer.focus = null;\n\n\t// The list of element node names to ignore with key controls.\n\t$.jPlayer.keyIgnoreElementNames = "A INPUT TEXTAREA SELECT BUTTON";\n\n\t// The function that deals with key presses.\n\tvar keyBindings = function(event) {\n\t\tvar f = $.jPlayer.focus,\n\t\t\tignoreKey;\n\n\t\t// A jPlayer instance must be in focus. ie., keyEnabled and the last one played.\n\t\tif(f) {\n\t\t\t// What generated the key press?\n\t\t\t$.each( $.jPlayer.keyIgnoreElementNames.split(/\\s+/g), function(i, name) {\n\t\t\t\t// The strings should already be uppercase.\n\t\t\t\tif(event.target.nodeName.toUpperCase() === name.toUpperCase()) {\n\t\t\t\t\tignoreKey = true;\n\t\t\t\t\treturn false; // exit each.\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(!ignoreKey) {\n\t\t\t\t// See if the key pressed matches any of the bindings.\n\t\t\t\t$.each(f.options.keyBindings, function(action, binding) {\n\t\t\t\t\t// The binding could be a null when the default has been disabled. ie., 1st clause in if()\n\t\t\t\t\tif(\n\t\t\t\t\t\t(binding && $.isFunction(binding.fn)) &&\n\t\t\t\t\t\t((typeof binding.key === \'number\' && event.which === binding.key) ||\n\t\t\t\t\t\t(typeof binding.key === \'string\' && event.key === binding.key))\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault(); // Key being used by jPlayer, so prevent default operation.\n\t\t\t\t\t\tbinding.fn(f);\n\t\t\t\t\t\treturn false; // exit each.\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\t$.jPlayer.keys = function(en) {\n\t\tvar event = "keydown.jPlayer";\n\t\t// Remove any binding, just in case enabled more than once.\n\t\t$(document.documentElement).unbind(event);\n\t\tif(en) {\n\t\t\t$(document.documentElement).bind(event, keyBindings);\n\t\t}\n\t};\n\n\t// Enable the global key control handler ready for any jPlayer instance with the keyEnabled option enabled.\n\t$.jPlayer.keys(true);\n\n\t$.jPlayer.prototype = {\n\t\tcount: 0, // Static Variable: Change it via prototype.\n\t\tversion: { // Static Object\n\t\t\tscript: "2.9.2",\n\t\t\tneedFlash: "2.9.0",\n\t\t\tflash: "unknown"\n\t\t},\n\t\toptions: { // Instanced in $.jPlayer() constructor\n\t\t\tswfPath: "js", // Path to jquery.jplayer.swf. Can be relative, absolute or server root relative.\n\t\t\tsolution: "html, flash", // Valid solutions: html, flash, aurora. Order defines priority. 1st is highest,\n\t\t\tsupplied: "mp3", // Defines which formats jPlayer will try and support and the priority by the order. 1st is highest,\n\t\t\tauroraFormats: "wav", // List the aurora.js codecs being loaded externally. Its core supports "wav". Specify format in jPlayer context. EG., The aac.js codec gives the "m4a" format.\n\t\t\tpreload: \'metadata\', // HTML5 Spec values: none, metadata, auto.\n\t\t\tvolume: 0.8, // The volume. Number 0 to 1.\n\t\t\tmuted: false,\n\t\t\tremainingDuration: false, // When true, the remaining time is shown in the duration GUI element.\n\t\t\ttoggleDuration: false, // When true, clicks on the duration toggle between the duration and remaining display.\n\t\t\tcaptureDuration: true, // When true, clicks on the duration are captured and no longer propagate up the DOM.\n\t\t\tplaybackRate: 1,\n\t\t\tdefaultPlaybackRate: 1,\n\t\t\tminPlaybackRate: 0.5,\n\t\t\tmaxPlaybackRate: 4,\n\t\t\twmode: "opaque", // Valid wmode: window, transparent, opaque, direct, gpu. \n\t\t\tbackgroundColor: "#000000", // To define the jPlayer div and Flash background color.\n\t\t\tcssSelectorAncestor: "#jp_container_1",\n\t\t\tcssSelector: { // * denotes properties that should only be required when video media type required. _cssSelector() would require changes to enable splitting these into Audio and Video defaults.\n\t\t\t\tvideoPlay: ".jp-video-play", // *\n\t\t\t\tplay: ".jp-play",\n\t\t\t\tpause: ".jp-pause",\n\t\t\t\tstop: ".jp-stop",\n\t\t\t\tseekBar: ".jp-seek-bar",\n\t\t\t\tplayBar: ".jp-play-bar",\n\t\t\t\tmute: ".jp-mute",\n\t\t\t\tunmute: ".jp-unmute",\n\t\t\t\tvolumeBar: ".jp-volume-bar",\n\t\t\t\tvolumeBarValue: ".jp-volume-bar-value",\n\t\t\t\tvolumeMax: ".jp-volume-max",\n\t\t\t\tplaybackRateBar: ".jp-playback-rate-bar",\n\t\t\t\tplaybackRateBarValue: ".jp-playback-rate-bar-value",\n\t\t\t\tcurrentTime: ".jp-current-time",\n\t\t\t\tduration: ".jp-duration",\n\t\t\t\ttitle: ".jp-title",\n\t\t\t\tfullScreen: ".jp-full-screen", // *\n\t\t\t\trestoreScreen: ".jp-restore-screen", // *\n\t\t\t\trepeat: ".jp-repeat",\n\t\t\t\trepeatOff: ".jp-repeat-off",\n\t\t\t\tgui: ".jp-gui", // The interface used with autohide feature.\n\t\t\t\tnoSolution: ".jp-no-solution" // For error feedback when jPlayer cannot find a solution.\n\t\t\t},\n\t\t\tstateClass: { // Classes added to the cssSelectorAncestor to indicate the state.\n\t\t\t\tplaying: "jp-state-playing",\n\t\t\t\tseeking: "jp-state-seeking",\n\t\t\t\tmuted: "jp-state-muted",\n\t\t\t\tlooped: "jp-state-looped",\n\t\t\t\tfullScreen: "jp-state-full-screen",\n\t\t\t\tnoVolume: "jp-state-no-volume"\n\t\t\t},\n\t\t\tuseStateClassSkin: false, // A state class skin relies on the state classes to change the visual appearance. The single control toggles the effect, for example: play then pause, mute then unmute.\n\t\t\tautoBlur: true, // GUI control handlers will drop focus after clicks.\n\t\t\tsmoothPlayBar: false, // Smooths the play bar transitions, which affects clicks and short media with big changes per second.\n\t\t\tfullScreen: false, // Native Full Screen\n\t\t\tfullWindow: false,\n\t\t\tautohide: {\n\t\t\t\trestored: false, // Controls the interface autohide feature.\n\t\t\t\tfull: true, // Controls the interface autohide feature.\n\t\t\t\tfadeIn: 200, // Milliseconds. The period of the fadeIn anim.\n\t\t\t\tfadeOut: 600, // Milliseconds. The period of the fadeOut anim.\n\t\t\t\thold: 1000 // Milliseconds. The period of the pause before autohide beings.\n\t\t\t},\n\t\t\tloop: false,\n\t\t\trepeat: function(event) { // The default jPlayer repeat event handler\n\t\t\t\tif(event.jPlayer.options.loop) {\n\t\t\t\t\t$(this).unbind(".jPlayerRepeat").bind($.jPlayer.event.ended + ".jPlayer.jPlayerRepeat", function() {\n\t\t\t\t\t\t$(this).jPlayer("play");\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t$(this).unbind(".jPlayerRepeat");\n\t\t\t\t}\n\t\t\t},\n\t\t\tnativeVideoControls: {\n\t\t\t\t// Works well on standard browsers.\n\t\t\t\t// Phone and tablet browsers can have problems with the controls disappearing.\n\t\t\t},\n\t\t\tnoFullWindow: {\n\t\t\t\tmsie: /msie [0-6]\\./,\n\t\t\t\tipad: /ipad.*?os [0-4]\\./,\n\t\t\t\tiphone: /iphone/,\n\t\t\t\tipod: /ipod/,\n\t\t\t\tandroid_pad: /android [0-3]\\.(?!.*?mobile)/,\n\t\t\t\tandroid_phone: /(?=.*android)(?!.*chrome)(?=.*mobile)/,\n\t\t\t\tblackberry: /blackberry/,\n\t\t\t\twindows_ce: /windows ce/,\n\t\t\t\tiemobile: /iemobile/,\n\t\t\t\twebos: /webos/\n\t\t\t},\n\t\t\tnoVolume: {\n\t\t\t\tipad: /ipad/,\n\t\t\t\tiphone: /iphone/,\n\t\t\t\tipod: /ipod/,\n\t\t\t\tandroid_pad: /android(?!.*?mobile)/,\n\t\t\t\tandroid_phone: /android.*?mobile/,\n\t\t\t\tblackberry: /blackberry/,\n\t\t\t\twindows_ce: /windows ce/,\n\t\t\t\tiemobile: /iemobile/,\n\t\t\t\twebos: /webos/,\n\t\t\t\tplaybook: /playbook/\n\t\t\t},\n\t\t\ttimeFormat: {\n\t\t\t\t// Specific time format for this instance. The supported options are defined in $.jPlayer.timeFormat\n\t\t\t\t// For the undefined options we use the default from $.jPlayer.timeFormat\n\t\t\t},\n\t\t\tkeyEnabled: false, // Enables keyboard controls.\n\t\t\taudioFullScreen: false, // Enables keyboard controls to enter full screen with audio media.\n\t\t\tkeyBindings: { // The key control object, defining the key codes and the functions to execute.\n\t\t\t\t// The parameter, f = $.jPlayer.focus, will be checked truethy before attempting to call any of these functions.\n\t\t\t\t// Properties may be added to this object, in key/fn pairs, to enable other key controls. EG, for the playlist add-on.\n\t\t\t\tplay: {\n\t\t\t\t\tkey: 80, // p\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tif(f.status.paused) {\n\t\t\t\t\t\t\tf.play();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tf.pause();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tfullScreen: {\n\t\t\t\t\tkey: 70, // f\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tif(f.status.video || f.options.audioFullScreen) {\n\t\t\t\t\t\t\tf._setOption("fullScreen", !f.options.fullScreen);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tmuted: {\n\t\t\t\t\tkey: 77, // m\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tf._muted(!f.options.muted);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tvolumeUp: {\n\t\t\t\t\tkey: 190, // .\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tf.volume(f.options.volume + 0.1);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tvolumeDown: {\n\t\t\t\t\tkey: 188, // ,\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tf.volume(f.options.volume - 0.1);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tloop: {\n\t\t\t\t\tkey: 76, // l\n\t\t\t\t\tfn: function(f) {\n\t\t\t\t\t\tf._loop(!f.options.loop);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tverticalVolume: false, // Calculate volume from the bottom of the volume bar. Default is from the left. Also volume affects either width or height.\n\t\t\tverticalPlaybackRate: false,\n\t\t\tglobalVolume: false, // Set to make volume and muted changes affect all jPlayer instances with this option enabled\n\t\t\tidPrefix: "jp", // Prefix for the ids of html elements created by jPlayer. For flash, this must not include characters: . - + * / \\\n\t\t\tnoConflict: "jQuery",\n\t\t\temulateHtml: false, // Emulates the HTML5 Media element on the jPlayer element.\n\t\t\tconsoleAlerts: true, // Alerts are sent to the console.log() instead of alert().\n\t\t\terrorAlerts: false,\n\t\t\twarningAlerts: false\n\t\t},\n\t\toptionsAudio: {\n\t\t\tsize: {\n\t\t\t\twidth: "0px",\n\t\t\t\theight: "0px",\n\t\t\t\tcssClass: ""\n\t\t\t},\n\t\t\tsizeFull: {\n\t\t\t\twidth: "0px",\n\t\t\t\theight: "0px",\n\t\t\t\tcssClass: ""\n\t\t\t}\n\t\t},\n\t\toptionsVideo: {\n\t\t\tsize: {\n\t\t\t\twidth: "480px",\n\t\t\t\theight: "270px",\n\t\t\t\tcssClass: "jp-video-270p"\n\t\t\t},\n\t\t\tsizeFull: {\n\t\t\t\twidth: "100%",\n\t\t\t\theight: "100%",\n\t\t\t\tcssClass: "jp-video-full"\n\t\t\t}\n\t\t},\n\t\tinstances: {}, // Static Object\n\t\tstatus: { // Instanced in _init()\n\t\t\tsrc: "",\n\t\t\tmedia: {},\n\t\t\tpaused: true,\n\t\t\tformat: {},\n\t\t\tformatType: "",\n\t\t\twaitForPlay: true, // Same as waitForLoad except in case where preloading.\n\t\t\twaitForLoad: true,\n\t\t\tsrcSet: false,\n\t\t\tvideo: false, // True if playing a video\n\t\t\tseekPercent: 0,\n\t\t\tcurrentPercentRelative: 0,\n\t\t\tcurrentPercentAbsolute: 0,\n\t\t\tcurrentTime: 0,\n\t\t\tduration: 0,\n\t\t\tremaining: 0,\n\t\t\tvideoWidth: 0, // Intrinsic width of the video in pixels.\n\t\t\tvideoHeight: 0, // Intrinsic height of the video in pixels.\n\t\t\treadyState: 0,\n\t\t\tnetworkState: 0,\n\t\t\tplaybackRate: 1, // Warning - Now both an option and a status property\n\t\t\tended: 0\n\n/*\t\tPersistant status properties created dynamically at _init():\n\t\t\twidth\n\t\t\theight\n\t\t\tcssClass\n\t\t\tnativeVideoControls\n\t\t\tnoFullWindow\n\t\t\tnoVolume\n\t\t\tplaybackRateEnabled // Warning - Technically, we can have both Flash and HTML, so this might not be correct if the Flash is active. That is a niche case.\n*/\n\t\t},\n\n\t\tinternal: { // Instanced in _init()\n\t\t\tready: false\n\t\t\t// instance: undefined\n\t\t\t// domNode: undefined\n\t\t\t// htmlDlyCmdId: undefined\n\t\t\t// autohideId: undefined\n\t\t\t// mouse: undefined\n\t\t\t// cmdsIgnored\n\t\t},\n\t\tsolution: { // Static Object: Defines the solutions built in jPlayer.\n\t\t\thtml: true,\n\t\t\taurora: true,\n\t\t\tflash: true\n\t\t},\n\t\t// \'MPEG-4 support\' : canPlayType(\'video/mp4; codecs="mp4v.20.8"\')\n\t\tformat: { // Static Object\n\t\t\tmp3: {\n\t\t\t\tcodec: \'audio/mpeg\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tm4a: { // AAC / MP4\n\t\t\t\tcodec: \'audio/mp4; codecs="mp4a.40.2"\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tm3u8a: { // AAC / MP4 / Apple HLS\n\t\t\t\tcodec: \'application/vnd.apple.mpegurl; codecs="mp4a.40.2"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tm3ua: { // M3U\n\t\t\t\tcodec: \'audio/mpegurl\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\toga: { // OGG\n\t\t\t\tcodec: \'audio/ogg; codecs="vorbis, opus"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tflac: { // FLAC\n\t\t\t\tcodec: \'audio/x-flac\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\twav: { // PCM\n\t\t\t\tcodec: \'audio/wav; codecs="1"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\twebma: { // WEBM\n\t\t\t\tcodec: \'audio/webm; codecs="vorbis"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tfla: { // FLV / F4A\n\t\t\t\tcodec: \'audio/x-flv\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\trtmpa: { // RTMP AUDIO\n\t\t\t\tcodec: \'audio/rtmp; codecs="rtmp"\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'audio\'\n\t\t\t},\n\t\t\tm4v: { // H.264 / MP4\n\t\t\t\tcodec: \'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\tm3u8v: { // H.264 / AAC / MP4 / Apple HLS\n\t\t\t\tcodec: \'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\tm3uv: { // M3U\n\t\t\t\tcodec: \'audio/mpegurl\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\togv: { // OGG\n\t\t\t\tcodec: \'video/ogg; codecs="theora, vorbis"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\twebmv: { // WEBM\n\t\t\t\tcodec: \'video/webm; codecs="vorbis, vp8"\',\n\t\t\t\tflashCanPlay: false,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\tflv: { // FLV / F4V\n\t\t\t\tcodec: \'video/x-flv\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'video\'\n\t\t\t},\n\t\t\trtmpv: { // RTMP VIDEO\n\t\t\t\tcodec: \'video/rtmp; codecs="rtmp"\',\n\t\t\t\tflashCanPlay: true,\n\t\t\t\tmedia: \'video\'\n\t\t\t}\n\t\t},\n\t\t_init: function() {\n\t\t\tvar self = this;\n\t\t\t\n\t\t\tthis.element.empty();\n\t\t\t\n\t\t\tthis.status = $.extend({}, this.status); // Copy static to unique instance.\n\t\t\tthis.internal = $.extend({}, this.internal); // Copy static to unique instance.\n\n\t\t\t// Initialize the time format\n\t\t\tthis.options.timeFormat = $.extend({}, $.jPlayer.timeFormat, this.options.timeFormat);\n\n\t\t\t// On iOS, assume commands will be ignored before user initiates them.\n\t\t\tthis.internal.cmdsIgnored = $.jPlayer.platform.ipad || $.jPlayer.platform.iphone || $.jPlayer.platform.ipod;\n\n\t\t\tthis.internal.domNode = this.element.get(0);\n\n\t\t\t// Add key bindings focus to 1st jPlayer instanced with key control enabled.\n\t\t\tif(this.options.keyEnabled && !$.jPlayer.focus) {\n\t\t\t\t$.jPlayer.focus = this;\n\t\t\t}\n\n\t\t\t// A fix for Android where older (2.3) and even some 4.x devices fail to work when changing the *audio* SRC and then playing immediately.\n\t\t\tthis.androidFix = {\n\t\t\t\tsetMedia: false, // True when media set\n\t\t\t\tplay: false, // True when a progress event will instruct the media to play\n\t\t\t\tpause: false, // True when a progress event will instruct the media to pause at a time.\n\t\t\t\ttime: NaN // The play(time) parameter\n\t\t\t};\n\t\t\tif($.jPlayer.platform.android) {\n\t\t\t\tthis.options.preload = this.options.preload !== \'auto\' ? \'metadata\' : \'auto\'; // Default to metadata, but allow auto.\n\t\t\t}\n\n\t\t\tthis.formats = []; // Array based on supplied string option. Order defines priority.\n\t\t\tthis.solutions = []; // Array based on solution string option. Order defines priority.\n\t\t\tthis.require = {}; // Which media types are required: video, audio.\n\t\t\t\n\t\t\tthis.htmlElement = {}; // DOM elements created by jPlayer\n\t\t\tthis.html = {}; // In _init()\'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array.\n\t\t\tthis.html.audio = {};\n\t\t\tthis.html.video = {};\n\t\t\tthis.aurora = {}; // In _init()\'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array.\n\t\t\tthis.aurora.formats = [];\n\t\t\tthis.aurora.properties = [];\n\t\t\tthis.flash = {}; // In _init()\'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array.\n\t\t\t\n\t\t\tthis.css = {};\n\t\t\tthis.css.cs = {}; // Holds the css selector strings\n\t\t\tthis.css.jq = {}; // Holds jQuery selectors. ie., $(css.cs.method)\n\n\t\t\tthis.ancestorJq = []; // Holds jQuery selector of cssSelectorAncestor. Init would use $() instead of [], but it is only 1.4+\n\n\t\t\tthis.options.volume = this._limitValue(this.options.volume, 0, 1); // Limit volume value\'s bounds.\n\n\t\t\t// Create the formats array, with prority based on the order of the supplied formats string\n\t\t\t$.each(this.options.supplied.toLowerCase().split(","), function(index1, value1) {\n\t\t\t\tvar format = value1.replace(/^\\s+|\\s+$/g, ""); //trim\n\t\t\t\tif(self.format[format]) { // Check format is valid.\n\t\t\t\t\tvar dupFound = false;\n\t\t\t\t\t$.each(self.formats, function(index2, value2) { // Check for duplicates\n\t\t\t\t\t\tif(format === value2) {\n\t\t\t\t\t\t\tdupFound = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif(!dupFound) {\n\t\t\t\t\t\tself.formats.push(format);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Create the solutions array, with prority based on the order of the solution string\n\t\t\t$.each(this.options.solution.toLowerCase().split(","), function(index1, value1) {\n\t\t\t\tvar solution = value1.replace(/^\\s+|\\s+$/g, ""); //trim\n\t\t\t\tif(self.solution[solution]) { // Check solution is valid.\n\t\t\t\t\tvar dupFound = false;\n\t\t\t\t\t$.each(self.solutions, function(index2, value2) { // Check for duplicates\n\t\t\t\t\t\tif(solution === value2) {\n\t\t\t\t\t\t\tdupFound = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif(!dupFound) {\n\t\t\t\t\t\tself.solutions.push(solution);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t\t\n\t\t\t// Create Aurora.js formats array\n\t\t\t$.each(this.options.auroraFormats.toLowerCase().split(","), function(index1, value1) {\n\t\t\t\tvar format = value1.replace(/^\\s+|\\s+$/g, ""); //trim\n\t\t\t\tif(self.format[format]) { // Check format is valid.\n\t\t\t\t\tvar dupFound = false;\n\t\t\t\t\t$.each(self.aurora.formats, function(index2, value2) { // Check for duplicates\n\t\t\t\t\t\tif(format === value2) {\n\t\t\t\t\t\t\tdupFound = true;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif(!dupFound) {\n\t\t\t\t\t\tself.aurora.formats.push(format);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.internal.instance = "jp_" + this.count;\n\t\t\tthis.instances[this.internal.instance] = this.element;\n\n\t\t\t// Check the jPlayer div has an id and create one if required. Important for Flash to know the unique id for comms.\n\t\t\tif(!this.element.attr("id")) {\n\t\t\t\tthis.element.attr("id", this.options.idPrefix + "_jplayer_" + this.count);\n\t\t\t}\n\n\t\t\tthis.internal.self = $.extend({}, {\n\t\t\t\tid: this.element.attr("id"),\n\t\t\t\tjq: this.element\n\t\t\t});\n\t\t\tthis.internal.audio = $.extend({}, {\n\t\t\t\tid: this.options.idPrefix + "_audio_" + this.count,\n\t\t\t\tjq: undefined\n\t\t\t});\n\t\t\tthis.internal.video = $.extend({}, {\n\t\t\t\tid: this.options.idPrefix + "_video_" + this.count,\n\t\t\t\tjq: undefined\n\t\t\t});\n\t\t\tthis.internal.flash = $.extend({}, {\n\t\t\t\tid: this.options.idPrefix + "_flash_" + this.count,\n\t\t\t\tjq: undefined,\n\t\t\t\tswf: this.options.swfPath + (this.options.swfPath.toLowerCase().slice(-4) !== ".swf" ? (this.options.swfPath && this.options.swfPath.slice(-1) !== "/" ? "/" : "") + "jquery.jplayer.swf" : "")\n\t\t\t});\n\t\t\tthis.internal.poster = $.extend({}, {\n\t\t\t\tid: this.options.idPrefix + "_poster_" + this.count,\n\t\t\t\tjq: undefined\n\t\t\t});\n\n\t\t\t// Register listeners defined in the constructor\n\t\t\t$.each($.jPlayer.event, function(eventName,eventType) {\n\t\t\t\tif(self.options[eventName] !== undefined) {\n\t\t\t\t\tself.element.bind(eventType + ".jPlayer", self.options[eventName]); // With .jPlayer namespace.\n\t\t\t\t\tself.options[eventName] = undefined; // Destroy the handler pointer copy on the options. Reason, events can be added/removed in other ways so this could be obsolete and misleading.\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Determine if we require solutions for audio, video or both media types.\n\t\t\tthis.require.audio = false;\n\t\t\tthis.require.video = false;\n\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\tself.require[self.format[format].media] = true;\n\t\t\t});\n\n\t\t\t// Now required types are known, finish the options default settings.\n\t\t\tif(this.require.video) {\n\t\t\t\tthis.options = $.extend(true, {},\n\t\t\t\t\tthis.optionsVideo,\n\t\t\t\t\tthis.options\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.options = $.extend(true, {},\n\t\t\t\t\tthis.optionsAudio,\n\t\t\t\t\tthis.options\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._setSize(); // update status and jPlayer element size\n\n\t\t\t// Determine the status for Blocklisted options.\n\t\t\tthis.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls);\n\t\t\tthis.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow);\n\t\t\tthis.status.noVolume = this._uaBlocklist(this.options.noVolume);\n\n\t\t\t// Create event handlers if native fullscreen is supported\n\t\t\tif($.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled) {\n\t\t\t\tthis._fullscreenAddEventListeners();\n\t\t\t}\n\n\t\t\t// The native controls are only for video and are disabled when audio is also used.\n\t\t\tthis._restrictNativeVideoControls();\n\n\t\t\t// Create the poster image.\n\t\t\tthis.htmlElement.poster = document.createElement(\'img\');\n\t\t\tthis.htmlElement.poster.id = this.internal.poster.id;\n\t\t\tthis.htmlElement.poster.onload = function() { // Note that this did not work on Firefox 3.6: poster.addEventListener("onload", function() {}, false); Did not investigate x-browser.\n\t\t\t\tif(!self.status.video || self.status.waitForPlay) {\n\t\t\t\t\tself.internal.poster.jq.show();\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.element.append(this.htmlElement.poster);\n\t\t\tthis.internal.poster.jq = $("#" + this.internal.poster.id);\n\t\t\tthis.internal.poster.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\tthis.internal.poster.jq.hide();\n\t\t\tthis.internal.poster.jq.bind("click.jPlayer", function() {\n\t\t\t\tself._trigger($.jPlayer.event.click);\n\t\t\t});\n\t\t\t\n\t\t\t// Generate the required media elements\n\t\t\tthis.html.audio.available = false;\n\t\t\tif(this.require.audio) { // If a supplied format is audio\n\t\t\t\tthis.htmlElement.audio = document.createElement(\'audio\');\n\t\t\t\tthis.htmlElement.audio.id = this.internal.audio.id;\n\t\t\t\tthis.html.audio.available = !!this.htmlElement.audio.canPlayType && this._testCanPlayType(this.htmlElement.audio); // Test is for IE9 on Win Server 2008.\n\t\t\t}\n\t\t\tthis.html.video.available = false;\n\t\t\tif(this.require.video) { // If a supplied format is video\n\t\t\t\tthis.htmlElement.video = document.createElement(\'video\');\n\t\t\t\tthis.htmlElement.video.id = this.internal.video.id;\n\t\t\t\tthis.html.video.available = !!this.htmlElement.video.canPlayType && this._testCanPlayType(this.htmlElement.video); // Test is for IE9 on Win Server 2008.\n\t\t\t}\n\n\t\t\tthis.flash.available = this._checkForFlash(10.1);\n\n\t\t\tthis.html.canPlay = {};\n\t\t\tthis.aurora.canPlay = {};\n\t\t\tthis.flash.canPlay = {};\n\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\tself.html.canPlay[format] = self.html[self.format[format].media].available && "" !== self.htmlElement[self.format[format].media].canPlayType(self.format[format].codec);\n\t\t\t\tself.aurora.canPlay[format] = ($.inArray(format, self.aurora.formats) > -1);\n\t\t\t\tself.flash.canPlay[format] = self.format[format].flashCanPlay && self.flash.available;\n\t\t\t});\n\t\t\tthis.html.desired = false;\n\t\t\tthis.aurora.desired = false;\n\t\t\tthis.flash.desired = false;\n\t\t\t$.each(this.solutions, function(solutionPriority, solution) {\n\t\t\t\tif(solutionPriority === 0) {\n\t\t\t\t\tself[solution].desired = true;\n\t\t\t\t} else {\n\t\t\t\t\tvar audioCanPlay = false;\n\t\t\t\t\tvar videoCanPlay = false;\n\t\t\t\t\t$.each(self.formats, function(formatPriority, format) {\n\t\t\t\t\t\tif(self[self.solutions[0]].canPlay[format]) { // The other solution can play\n\t\t\t\t\t\t\tif(self.format[format].media === \'video\') {\n\t\t\t\t\t\t\t\tvideoCanPlay = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\taudioCanPlay = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tself[solution].desired = (self.require.audio && !audioCanPlay) || (self.require.video && !videoCanPlay);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// This is what jPlayer will support, based on solution and supplied.\n\t\t\tthis.html.support = {};\n\t\t\tthis.aurora.support = {};\n\t\t\tthis.flash.support = {};\n\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\tself.html.support[format] = self.html.canPlay[format] && self.html.desired;\n\t\t\t\tself.aurora.support[format] = self.aurora.canPlay[format] && self.aurora.desired;\n\t\t\t\tself.flash.support[format] = self.flash.canPlay[format] && self.flash.desired;\n\t\t\t});\n\t\t\t// If jPlayer is supporting any format in a solution, then the solution is used.\n\t\t\tthis.html.used = false;\n\t\t\tthis.aurora.used = false;\n\t\t\tthis.flash.used = false;\n\t\t\t$.each(this.solutions, function(solutionPriority, solution) {\n\t\t\t\t$.each(self.formats, function(formatPriority, format) {\n\t\t\t\t\tif(self[solution].support[format]) {\n\t\t\t\t\t\tself[solution].used = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Init solution active state and the event gates to false.\n\t\t\tthis._resetActive();\n\t\t\tthis._resetGate();\n\n\t\t\t// Set up the css selectors for the control and feedback entities.\n\t\t\tthis._cssSelectorAncestor(this.options.cssSelectorAncestor);\n\t\t\t\n\t\t\t// If neither html nor aurora nor flash are being used by this browser, then media playback is not possible. Trigger an error event.\n\t\t\tif(!(this.html.used || this.aurora.used || this.flash.used)) {\n\t\t\t\tthis._error( {\n\t\t\t\t\ttype: $.jPlayer.error.NO_SOLUTION, \n\t\t\t\t\tcontext: "{solution:\'" + this.options.solution + "\', supplied:\'" + this.options.supplied + "\'}",\n\t\t\t\t\tmessage: $.jPlayer.errorMsg.NO_SOLUTION,\n\t\t\t\t\thint: $.jPlayer.errorHint.NO_SOLUTION\n\t\t\t\t});\n\t\t\t\tif(this.css.jq.noSolution.length) {\n\t\t\t\t\tthis.css.jq.noSolution.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(this.css.jq.noSolution.length) {\n\t\t\t\t\tthis.css.jq.noSolution.hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add the flash solution if it is being used.\n\t\t\tif(this.flash.used) {\n\t\t\t\tvar htmlObj,\n\t\t\t\tflashVars = \'jQuery=\' + encodeURI(this.options.noConflict) + \'&id=\' + encodeURI(this.internal.self.id) + \'&vol=\' + this.options.volume + \'&muted=\' + this.options.muted;\n\n\t\t\t\t// Code influenced by SWFObject 2.2: http://code.google.com/p/swfobject/\n\t\t\t\t// Non IE browsers have an initial Flash size of 1 by 1 otherwise the wmode affected the Flash ready event. \n\n\t\t\t\tif($.jPlayer.browser.msie && (Number($.jPlayer.browser.version) < 9 || $.jPlayer.browser.documentMode < 9)) {\n\t\t\t\t\tvar objStr = \'<object id="\' + this.internal.flash.id + \'" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" tabindex="-1"></object>\';\n\n\t\t\t\t\tvar paramStr = [\n\t\t\t\t\t\t\'<param name="movie" value="\' + this.internal.flash.swf + \'" />\',\n\t\t\t\t\t\t\'<param name="FlashVars" value="\' + flashVars + \'" />\',\n\t\t\t\t\t\t\'<param name="allowScriptAccess" value="always" />\',\n\t\t\t\t\t\t\'<param name="bgcolor" value="\' + this.options.backgroundColor + \'" />\',\n\t\t\t\t\t\t\'<param name="wmode" value="\' + this.options.wmode + \'" />\'\n\t\t\t\t\t];\n\n\t\t\t\t\thtmlObj = document.createElement(objStr);\n\t\t\t\t\tfor(var i=0; i < paramStr.length; i++) {\n\t\t\t\t\t\thtmlObj.appendChild(document.createElement(paramStr[i]));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar createParam = function(el, n, v) {\n\t\t\t\t\t\tvar p = document.createElement("param");\n\t\t\t\t\t\tp.setAttribute("name", n);\t\n\t\t\t\t\t\tp.setAttribute("value", v);\n\t\t\t\t\t\tel.appendChild(p);\n\t\t\t\t\t};\n\n\t\t\t\t\thtmlObj = document.createElement("object");\n\t\t\t\t\thtmlObj.setAttribute("id", this.internal.flash.id);\n\t\t\t\t\thtmlObj.setAttribute("name", this.internal.flash.id);\n\t\t\t\t\thtmlObj.setAttribute("data", this.internal.flash.swf);\n\t\t\t\t\thtmlObj.setAttribute("type", "application/x-shockwave-flash");\n\t\t\t\t\thtmlObj.setAttribute("width", "1"); // Non-zero\n\t\t\t\t\thtmlObj.setAttribute("height", "1"); // Non-zero\n\t\t\t\t\thtmlObj.setAttribute("tabindex", "-1");\n\t\t\t\t\tcreateParam(htmlObj, "flashvars", flashVars);\n\t\t\t\t\tcreateParam(htmlObj, "allowscriptaccess", "always");\n\t\t\t\t\tcreateParam(htmlObj, "bgcolor", this.options.backgroundColor);\n\t\t\t\t\tcreateParam(htmlObj, "wmode", this.options.wmode);\n\t\t\t\t}\n\n\t\t\t\tthis.element.append(htmlObj);\n\t\t\t\tthis.internal.flash.jq = $(htmlObj);\n\t\t\t}\n\n\t\t\t// Setup playbackRate ability before using _addHtmlEventListeners()\n\t\t\tif(this.html.used && !this.flash.used) { // If only HTML\n\t\t\t\t// Using the audio element capabilities for playbackRate. ie., Assuming video element is the same.\n\t\t\t\tthis.status.playbackRateEnabled = this._testPlaybackRate(\'audio\');\n\t\t\t} else {\n\t\t\t\tthis.status.playbackRateEnabled = false;\n\t\t\t}\n\n\t\t\tthis._updatePlaybackRate();\n\n\t\t\t// Add the HTML solution if being used.\n\t\t\tif(this.html.used) {\n\n\t\t\t\t// The HTML Audio handlers\n\t\t\t\tif(this.html.audio.available) {\n\t\t\t\t\tthis._addHtmlEventListeners(this.htmlElement.audio, this.html.audio);\n\t\t\t\t\tthis.element.append(this.htmlElement.audio);\n\t\t\t\t\tthis.internal.audio.jq = $("#" + this.internal.audio.id);\n\t\t\t\t}\n\n\t\t\t\t// The HTML Video handlers\n\t\t\t\tif(this.html.video.available) {\n\t\t\t\t\tthis._addHtmlEventListeners(this.htmlElement.video, this.html.video);\n\t\t\t\t\tthis.element.append(this.htmlElement.video);\n\t\t\t\t\tthis.internal.video.jq = $("#" + this.internal.video.id);\n\t\t\t\t\tif(this.status.nativeVideoControls) {\n\t\t\t\t\t\tthis.internal.video.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.internal.video.jq.css({\'width\':\'0px\', \'height\':\'0px\'}); // Using size 0x0 since a .hide() causes issues in iOS\n\t\t\t\t\t}\n\t\t\t\t\tthis.internal.video.jq.bind("click.jPlayer", function() {\n\t\t\t\t\t\tself._trigger($.jPlayer.event.click);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// Add the Aurora.js solution if being used.\n\t\t\tif(this.aurora.used) {\n\t\t\t\t// Aurora.js player need to be created for each media, see setMedia function.\n\t\t\t}\n\n\t\t\t// Create the bridge that emulates the HTML Media element on the jPlayer DIV\n\t\t\tif( this.options.emulateHtml ) {\n\t\t\t\tthis._emulateHtmlBridge();\n\t\t\t}\n\n\t\t\tif((this.html.used || this.aurora.used) && !this.flash.used) { // If only HTML, then emulate flash ready() call after 100ms.\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\tself.internal.ready = true;\n\t\t\t\t\tself.version.flash = "n/a";\n\t\t\t\t\tself._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option.\n\t\t\t\t\tself._trigger($.jPlayer.event.ready);\n\t\t\t\t}, 100);\n\t\t\t}\n\n\t\t\t// Initialize the interface components with the options.\n\t\t\tthis._updateNativeVideoControls();\n\t\t\t// The other controls are now setup in _cssSelectorAncestor()\n\t\t\tif(this.css.jq.videoPlay.length) {\n\t\t\t\tthis.css.jq.videoPlay.hide();\n\t\t\t}\n\n\t\t\t$.jPlayer.prototype.count++; // Change static variable via prototype.\n\t\t},\n\t\tdestroy: function() {\n\t\t\t// MJP: The background change remains. Would need to store the original to restore it correctly.\n\t\t\t// MJP: The jPlayer element\'s size change remains.\n\n\t\t\t// Clear the media to reset the GUI and stop any downloads. Streams on some browsers had persited. (Chrome)\n\t\t\tthis.clearMedia();\n\t\t\t// Remove the size/sizeFull cssClass from the cssSelectorAncestor\n\t\t\tthis._removeUiClass();\n\t\t\t// Remove the times from the GUI\n\t\t\tif(this.css.jq.currentTime.length) {\n\t\t\t\tthis.css.jq.currentTime.text("");\n\t\t\t}\n\t\t\tif(this.css.jq.duration.length) {\n\t\t\t\tthis.css.jq.duration.text("");\n\t\t\t}\n\t\t\t// Remove any bindings from the interface controls.\n\t\t\t$.each(this.css.jq, function(fn, jq) {\n\t\t\t\t// Check selector is valid before trying to execute method.\n\t\t\t\tif(jq.length) {\n\t\t\t\t\tjq.unbind(".jPlayer");\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Remove the click handlers for $.jPlayer.event.click\n\t\t\tthis.internal.poster.jq.unbind(".jPlayer");\n\t\t\tif(this.internal.video.jq) {\n\t\t\t\tthis.internal.video.jq.unbind(".jPlayer");\n\t\t\t}\n\t\t\t// Remove the fullscreen event handlers\n\t\t\tthis._fullscreenRemoveEventListeners();\n\t\t\t// Remove key bindings\n\t\t\tif(this === $.jPlayer.focus) {\n\t\t\t\t$.jPlayer.focus = null;\n\t\t\t}\n\t\t\t// Destroy the HTML bridge.\n\t\t\tif(this.options.emulateHtml) {\n\t\t\t\tthis._destroyHtmlBridge();\n\t\t\t}\n\t\t\tthis.element.removeData("jPlayer"); // Remove jPlayer data\n\t\t\tthis.element.unbind(".jPlayer"); // Remove all event handlers created by the jPlayer constructor\n\t\t\tthis.element.empty(); // Remove the inserted child elements\n\t\t\t\n\t\t\tdelete this.instances[this.internal.instance]; // Clear the instance on the static instance object\n\t\t},\n\t\tdestroyRemoved: function() { // Destroy any instances that have gone away.\n\t\t\tvar self = this;\n\t\t\t$.each(this.instances, function(i, element) {\n\t\t\t\tif(self.element !== element) { // Do not destroy this instance.\n\t\t\t\t\tif(!element.data("jPlayer")) { // Check that element is a real jPlayer.\n\t\t\t\t\t\telement.jPlayer("destroy");\n\t\t\t\t\t\tdelete self.instances[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tenable: function() { // Plan to implement\n\t\t\t// options.disabled = false\n\t\t},\n\t\tdisable: function () { // Plan to implement\n\t\t\t// options.disabled = true\n\t\t},\n\t\t_testCanPlayType: function(elem) {\n\t\t\t// IE9 on Win Server 2008 did not implement canPlayType(), but it has the property.\n\t\t\ttry {\n\t\t\t\telem.canPlayType(this.format.mp3.codec); // The type is irrelevant.\n\t\t\t\treturn true;\n\t\t\t} catch(err) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t_testPlaybackRate: function(type) {\n\t\t\t// type: String \'audio\' or \'video\'\n\t\t\tvar el, rate = 0.5;\n\t\t\ttype = typeof type === \'string\' ? type : \'audio\';\n\t\t\tel = document.createElement(type);\n\t\t\t// Wrapping in a try/catch, just in case older HTML5 browsers throw and error.\n\t\t\ttry {\n\t\t\t\tif(\'playbackRate\' in el) {\n\t\t\t\t\tel.playbackRate = rate;\n\t\t\t\t\treturn el.playbackRate === rate;\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} catch(err) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\t_uaBlocklist: function(list) {\n\t\t\t// list : object with properties that are all regular expressions. Property names are irrelevant.\n\t\t\t// Returns true if the user agent is matched in list.\n\t\t\tvar\tua = navigator.userAgent.toLowerCase(),\n\t\t\t\tblock = false;\n\n\t\t\t$.each(list, function(p, re) {\n\t\t\t\tif(re && re.test(ua)) {\n\t\t\t\t\tblock = true;\n\t\t\t\t\treturn false; // exit $.each.\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn block;\n\t\t},\n\t\t_restrictNativeVideoControls: function() {\n\t\t\t// Fallback to noFullWindow when nativeVideoControls is true and audio media is being used. Affects when both media types are used.\n\t\t\tif(this.require.audio) {\n\t\t\t\tif(this.status.nativeVideoControls) {\n\t\t\t\t\tthis.status.nativeVideoControls = false;\n\t\t\t\t\tthis.status.noFullWindow = true;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_updateNativeVideoControls: function() {\n\t\t\tif(this.html.video.available && this.html.used) {\n\t\t\t\t// Turn the HTML Video controls on/off\n\t\t\t\tthis.htmlElement.video.controls = this.status.nativeVideoControls;\n\t\t\t\t// Show/hide the jPlayer GUI.\n\t\t\t\tthis._updateAutohide();\n\t\t\t\t// For when option changed. The poster image is not updated, as it is dealt with in setMedia(). Acceptable degradation since seriously doubt these options will change on the fly. Can again review later.\n\t\t\t\tif(this.status.nativeVideoControls && this.require.video) {\n\t\t\t\t\tthis.internal.poster.jq.hide();\n\t\t\t\t\tthis.internal.video.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t\t} else if(this.status.waitForPlay && this.status.video) {\n\t\t\t\t\tthis.internal.poster.jq.show();\n\t\t\t\t\tthis.internal.video.jq.css({\'width\': \'0px\', \'height\': \'0px\'});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_addHtmlEventListeners: function(mediaElement, entity) {\n\t\t\tvar self = this;\n\t\t\tmediaElement.preload = this.options.preload;\n\t\t\tmediaElement.muted = this.options.muted;\n\t\t\tmediaElement.volume = this.options.volume;\n\n\t\t\tif(this.status.playbackRateEnabled) {\n\t\t\t\tmediaElement.defaultPlaybackRate = this.options.defaultPlaybackRate;\n\t\t\t\tmediaElement.playbackRate = this.options.playbackRate;\n\t\t\t}\n\n\t\t\t// Create the event listeners\n\t\t\t// Only want the active entity to affect jPlayer and bubble events.\n\t\t\t// Using entity.gate so that object is referenced and gate property always current\n\t\t\t\n\t\t\tmediaElement.addEventListener("progress", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tif(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command\n\t\t\t\t\t\tself.internal.cmdsIgnored = false;\n\t\t\t\t\t}\n\t\t\t\t\tself._getHtmlStatus(mediaElement);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.progress);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("loadeddata", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself.androidFix.setMedia = false; // Disable the fix after the first progress event.\n\t\t\t\t\tif(self.androidFix.play) { // Play Android audio - performing the fix.\n\t\t\t\t\t\tself.androidFix.play = false;\n\t\t\t\t\t\tself.play(self.androidFix.time);\n\t\t\t\t\t}\n\t\t\t\t\tif(self.androidFix.pause) { // Pause Android audio at time - performing the fix.\n\t\t\t\t\t\tself.androidFix.pause = false;\n\t\t\t\t\t\tself.pause(self.androidFix.time);\n\t\t\t\t\t}\n\t\t\t\t\tself._trigger($.jPlayer.event.loadeddata);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("timeupdate", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._getHtmlStatus(mediaElement);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.timeupdate);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("durationchange", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._getHtmlStatus(mediaElement);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.durationchange);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("play", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._updateButtons(true);\n\t\t\t\t\tself._html_checkWaitForPlay(); // So the native controls update this variable and puts the hidden interface in the correct state. Affects toggling native controls.\n\t\t\t\t\tself._trigger($.jPlayer.event.play);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("playing", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._updateButtons(true);\n\t\t\t\t\tself._seeked();\n\t\t\t\t\tself._trigger($.jPlayer.event.playing);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("pause", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._updateButtons(false);\n\t\t\t\t\tself._trigger($.jPlayer.event.pause);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("waiting", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._seeking();\n\t\t\t\t\tself._trigger($.jPlayer.event.waiting);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("seeking", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._seeking();\n\t\t\t\t\tself._trigger($.jPlayer.event.seeking);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("seeked", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._seeked();\n\t\t\t\t\tself._trigger($.jPlayer.event.seeked);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("volumechange", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\t// Read the values back from the element as the Blackberry PlayBook shares the volume with the physical buttons master volume control.\n\t\t\t\t\t// However, when tested 6th July 2011, those buttons do not generate an event. The physical play/pause button does though.\n\t\t\t\t\tself.options.volume = mediaElement.volume;\n\t\t\t\t\tself.options.muted = mediaElement.muted;\n\t\t\t\t\tself._updateMute();\n\t\t\t\t\tself._updateVolume();\n\t\t\t\t\tself._trigger($.jPlayer.event.volumechange);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("ratechange", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself.options.defaultPlaybackRate = mediaElement.defaultPlaybackRate;\n\t\t\t\t\tself.options.playbackRate = mediaElement.playbackRate;\n\t\t\t\t\tself._updatePlaybackRate();\n\t\t\t\t\tself._trigger($.jPlayer.event.ratechange);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("suspend", function() { // Seems to be the only way of capturing that the iOS4 browser did not actually play the media from the page code. ie., It needs a user gesture.\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._seeked();\n\t\t\t\t\tself._trigger($.jPlayer.event.suspend);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("ended", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\t// Order of the next few commands are important. Change the time and then pause.\n\t\t\t\t\t// Solves a bug in Firefox, where issuing pause 1st causes the media to play from the start. ie., The pause is ignored.\n\t\t\t\t\tif(!$.jPlayer.browser.webkit) { // Chrome crashes if you do this in conjunction with a setMedia command in an ended event handler. ie., The playlist demo.\n\t\t\t\t\t\tself.htmlElement.media.currentTime = 0; // Safari does not care about this command. ie., It works with or without this line. (Both Safari and Chrome are Webkit.)\n\t\t\t\t\t}\n\t\t\t\t\tself.htmlElement.media.pause(); // Pause otherwise a click on the progress bar will play from that point, when it shouldn\'t, since it stopped playback.\n\t\t\t\t\tself._updateButtons(false);\n\t\t\t\t\tself._getHtmlStatus(mediaElement, true); // With override true. Otherwise Chrome leaves progress at full.\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.ended);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tmediaElement.addEventListener("error", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._updateButtons(false);\n\t\t\t\t\tself._seeked();\n\t\t\t\t\tif(self.status.srcSet) { // Deals with case of clearMedia() causing an error event.\n\t\t\t\t\t\tclearTimeout(self.internal.htmlDlyCmdId); // Clears any delayed commands used in the HTML solution.\n\t\t\t\t\t\tself.status.waitForLoad = true; // Allows the load operation to try again.\n\t\t\t\t\t\tself.status.waitForPlay = true; // Reset since a play was captured.\n\t\t\t\t\t\tif(self.status.video && !self.status.nativeVideoControls) {\n\t\t\t\t\t\t\tself.internal.video.jq.css({\'width\':\'0px\', \'height\':\'0px\'});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) {\n\t\t\t\t\t\t\tself.internal.poster.jq.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.css.jq.videoPlay.length) {\n\t\t\t\t\t\t\tself.css.jq.videoPlay.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._error( {\n\t\t\t\t\t\t\ttype: $.jPlayer.error.URL,\n\t\t\t\t\t\t\tcontext: self.status.src, // this.src shows absolute urls. Want context to show the url given.\n\t\t\t\t\t\t\tmessage: $.jPlayer.errorMsg.URL,\n\t\t\t\t\t\t\thint: $.jPlayer.errorHint.URL\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\t// Create all the other event listeners that bubble up to a jPlayer event from html, without being used by jPlayer.\n\t\t\t$.each($.jPlayer.htmlEvent, function(i, eventType) {\n\t\t\t\tmediaElement.addEventListener(this, function() {\n\t\t\t\t\tif(entity.gate) {\n\t\t\t\t\t\tself._trigger($.jPlayer.event[eventType]);\n\t\t\t\t\t}\n\t\t\t\t}, false);\n\t\t\t});\n\t\t},\n\t\t_addAuroraEventListeners : function(player, entity) {\n\t\t\tvar self = this;\n\t\t\t//player.preload = this.options.preload;\n\t\t\t//player.muted = this.options.muted;\n\t\t\tplayer.volume = this.options.volume * 100;\n\n\t\t\t// Create the event listeners\n\t\t\t// Only want the active entity to affect jPlayer and bubble events.\n\t\t\t// Using entity.gate so that object is referenced and gate property always current\n\t\t\t\n\t\t\tplayer.on("progress", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tif(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command\n\t\t\t\t\t\tself.internal.cmdsIgnored = false;\n\t\t\t\t\t}\n\t\t\t\t\tself._getAuroraStatus(player);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.progress);\n\t\t\t\t\t// Progress with song duration, we estimate timeupdate need to be triggered too.\n\t\t\t\t\tif (player.duration > 0) {\n\t\t\t\t\t\tself._trigger($.jPlayer.event.timeupdate);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tplayer.on("ready", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._trigger($.jPlayer.event.loadeddata);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tplayer.on("duration", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._getAuroraStatus(player);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.durationchange);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tplayer.on("end", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\t// Order of the next few commands are important. Change the time and then pause.\n\t\t\t\t\tself._updateButtons(false);\n\t\t\t\t\tself._getAuroraStatus(player, true);\n\t\t\t\t\tself._updateInterface();\n\t\t\t\t\tself._trigger($.jPlayer.event.ended);\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\tplayer.on("error", function() {\n\t\t\t\tif(entity.gate) {\n\t\t\t\t\tself._updateButtons(false);\n\t\t\t\t\tself._seeked();\n\t\t\t\t\tif(self.status.srcSet) { // Deals with case of clearMedia() causing an error event.\n\t\t\t\t\t\tself.status.waitForLoad = true; // Allows the load operation to try again.\n\t\t\t\t\t\tself.status.waitForPlay = true; // Reset since a play was captured.\n\t\t\t\t\t\tif(self.status.video && !self.status.nativeVideoControls) {\n\t\t\t\t\t\t\tself.internal.video.jq.css({\'width\':\'0px\', \'height\':\'0px\'});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) {\n\t\t\t\t\t\t\tself.internal.poster.jq.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(self.css.jq.videoPlay.length) {\n\t\t\t\t\t\t\tself.css.jq.videoPlay.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._error( {\n\t\t\t\t\t\t\ttype: $.jPlayer.error.URL,\n\t\t\t\t\t\t\tcontext: self.status.src, // this.src shows absolute urls. Want context to show the url given.\n\t\t\t\t\t\t\tmessage: $.jPlayer.errorMsg.URL,\n\t\t\t\t\t\t\thint: $.jPlayer.errorHint.URL\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, false);\n\t\t},\n\t\t_getHtmlStatus: function(media, override) {\n\t\t\tvar ct = 0, cpa = 0, sp = 0, cpr = 0;\n\n\t\t\t// Fixes the duration bug in iOS, where the durationchange event occurs when media.duration is not always correct.\n\t\t\t// Fixes the initial duration bug in BB OS7, where the media.duration is infinity and displays as NaN:NaN due to Date() using inifity.\n\t\t\tif(isFinite(media.duration)) {\n\t\t\t\tthis.status.duration = media.duration;\n\t\t\t}\n\n\t\t\tct = media.currentTime;\n\t\t\tcpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0;\n\t\t\tif((typeof media.seekable === "object") && (media.seekable.length > 0)) {\n\t\t\t\tsp = (this.status.duration > 0) ? 100 * media.seekable.end(media.seekable.length-1) / this.status.duration : 100;\n\t\t\t\tcpr = (this.status.duration > 0) ? 100 * media.currentTime / media.seekable.end(media.seekable.length-1) : 0; // Duration conditional for iOS duration bug. ie., seekable.end is a NaN in that case.\n\t\t\t} else {\n\t\t\t\tsp = 100;\n\t\t\t\tcpr = cpa;\n\t\t\t}\n\t\t\t\n\t\t\tif(override) {\n\t\t\t\tct = 0;\n\t\t\t\tcpr = 0;\n\t\t\t\tcpa = 0;\n\t\t\t}\n\n\t\t\tthis.status.seekPercent = sp;\n\t\t\tthis.status.currentPercentRelative = cpr;\n\t\t\tthis.status.currentPercentAbsolute = cpa;\n\t\t\tthis.status.currentTime = ct;\n\n\t\t\tthis.status.remaining = this.status.duration - this.status.currentTime;\n\n\t\t\tthis.status.videoWidth = media.videoWidth;\n\t\t\tthis.status.videoHeight = media.videoHeight;\n\n\t\t\tthis.status.readyState = media.readyState;\n\t\t\tthis.status.networkState = media.networkState;\n\t\t\tthis.status.playbackRate = media.playbackRate;\n\t\t\tthis.status.ended = media.ended;\n\t\t},\n\t\t_getAuroraStatus: function(player, override) {\n\t\t\tvar ct = 0, cpa = 0, sp = 0, cpr = 0;\n\n\t\t\tthis.status.duration = player.duration / 1000;\n\n\t\t\tct = player.currentTime / 1000;\n\t\t\tcpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0;\n\t\t\tif(player.buffered > 0) {\n\t\t\t\tsp = (this.status.duration > 0) ? (player.buffered * this.status.duration) / this.status.duration : 100;\n\t\t\t\tcpr = (this.status.duration > 0) ? ct / (player.buffered * this.status.duration) : 0;\n\t\t\t} else {\n\t\t\t\tsp = 100;\n\t\t\t\tcpr = cpa;\n\t\t\t}\n\t\t\t\n\t\t\tif(override) {\n\t\t\t\tct = 0;\n\t\t\t\tcpr = 0;\n\t\t\t\tcpa = 0;\n\t\t\t}\n\n\t\t\tthis.status.seekPercent = sp;\n\t\t\tthis.status.currentPercentRelative = cpr;\n\t\t\tthis.status.currentPercentAbsolute = cpa;\n\t\t\tthis.status.currentTime = ct;\n\n\t\t\tthis.status.remaining = this.status.duration - this.status.currentTime;\n\n\t\t\tthis.status.readyState = 4; // status.readyState;\n\t\t\tthis.status.networkState = 0; // status.networkState;\n\t\t\tthis.status.playbackRate = 1; // status.playbackRate;\n\t\t\tthis.status.ended = false; // status.ended;\n\t\t},\n\t\t_resetStatus: function() {\n\t\t\tthis.status = $.extend({}, this.status, $.jPlayer.prototype.status); // Maintains the status properties that persist through a reset.\n\t\t},\n\t\t_trigger: function(eventType, error, warning) { // eventType always valid as called using $.jPlayer.event.eventType\n\t\t\tvar event = $.Event(eventType);\n\t\t\tevent.jPlayer = {};\n\t\t\tevent.jPlayer.version = $.extend({}, this.version);\n\t\t\tevent.jPlayer.options = $.extend(true, {}, this.options); // Deep copy\n\t\t\tevent.jPlayer.status = $.extend(true, {}, this.status); // Deep copy\n\t\t\tevent.jPlayer.html = $.extend(true, {}, this.html); // Deep copy\n\t\t\tevent.jPlayer.aurora = $.extend(true, {}, this.aurora); // Deep copy\n\t\t\tevent.jPlayer.flash = $.extend(true, {}, this.flash); // Deep copy\n\t\t\tif(error) {\n\t\t\t\tevent.jPlayer.error = $.extend({}, error);\n\t\t\t}\n\t\t\tif(warning) {\n\t\t\t\tevent.jPlayer.warning = $.extend({}, warning);\n\t\t\t}\n\t\t\tthis.element.trigger(event);\n\t\t},\n\t\tjPlayerFlashEvent: function(eventType, status) { // Called from Flash\n\t\t\tif(eventType === $.jPlayer.event.ready) {\n\t\t\t\tif(!this.internal.ready) {\n\t\t\t\t\tthis.internal.ready = true;\n\t\t\t\t\tthis.internal.flash.jq.css({\'width\':\'0px\', \'height\':\'0px\'}); // Once Flash generates the ready event, minimise to zero as it is not affected by wmode anymore.\n\n\t\t\t\t\tthis.version.flash = status.version;\n\t\t\t\t\tif(this.version.needFlash !== this.version.flash) {\n\t\t\t\t\t\tthis._error( {\n\t\t\t\t\t\t\ttype: $.jPlayer.error.VERSION,\n\t\t\t\t\t\t\tcontext: this.version.flash,\n\t\t\t\t\t\t\tmessage: $.jPlayer.errorMsg.VERSION + this.version.flash,\n\t\t\t\t\t\t\thint: $.jPlayer.errorHint.VERSION\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tthis._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option.\n\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t} else {\n\t\t\t\t\t// This condition occurs if the Flash is hidden and then shown again.\n\t\t\t\t\t// Firefox also reloads the Flash if the CSS position changes. position:fixed is used for full screen.\n\n\t\t\t\t\t// Only do this if the Flash is the solution being used at the moment. Affects Media players where both solution may be being used.\n\t\t\t\t\tif(this.flash.gate) {\n\n\t\t\t\t\t\t// Send the current status to the Flash now that it is ready (available) again.\n\t\t\t\t\t\tif(this.status.srcSet) {\n\n\t\t\t\t\t\t\t// Need to read original status before issuing the setMedia command.\n\t\t\t\t\t\t\tvar\tcurrentTime = this.status.currentTime,\n\t\t\t\t\t\t\t\tpaused = this.status.paused; \n\n\t\t\t\t\t\t\tthis.setMedia(this.status.media);\n\t\t\t\t\t\t\tthis.volumeWorker(this.options.volume);\n\t\t\t\t\t\t\tif(currentTime > 0) {\n\t\t\t\t\t\t\t\tif(paused) {\n\t\t\t\t\t\t\t\t\tthis.pause(currentTime);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis.play(currentTime);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._trigger($.jPlayer.event.flashreset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.flash.gate) {\n\t\t\t\tswitch(eventType) {\n\t\t\t\t\tcase $.jPlayer.event.progress:\n\t\t\t\t\t\tthis._getFlashStatus(status);\n\t\t\t\t\t\tthis._updateInterface();\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.timeupdate:\n\t\t\t\t\t\tthis._getFlashStatus(status);\n\t\t\t\t\t\tthis._updateInterface();\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.play:\n\t\t\t\t\t\tthis._seeked();\n\t\t\t\t\t\tthis._updateButtons(true);\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.pause:\n\t\t\t\t\t\tthis._updateButtons(false);\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.ended:\n\t\t\t\t\t\tthis._updateButtons(false);\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.click:\n\t\t\t\t\t\tthis._trigger(eventType); // This could be dealt with by the default\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.error:\n\t\t\t\t\t\tthis.status.waitForLoad = true; // Allows the load operation to try again.\n\t\t\t\t\t\tthis.status.waitForPlay = true; // Reset since a play was captured.\n\t\t\t\t\t\tif(this.status.video) {\n\t\t\t\t\t\t\tthis.internal.flash.jq.css({\'width\':\'0px\', \'height\':\'0px\'});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this._validString(this.status.media.poster)) {\n\t\t\t\t\t\t\tthis.internal.poster.jq.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.css.jq.videoPlay.length && this.status.video) {\n\t\t\t\t\t\t\tthis.css.jq.videoPlay.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(this.status.video) { // Set up for another try. Execute before error event.\n\t\t\t\t\t\t\tthis._flash_setVideo(this.status.media);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._flash_setAudio(this.status.media);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._updateButtons(false);\n\t\t\t\t\t\tthis._error( {\n\t\t\t\t\t\t\ttype: $.jPlayer.error.URL,\n\t\t\t\t\t\t\tcontext:status.src,\n\t\t\t\t\t\t\tmessage: $.jPlayer.errorMsg.URL,\n\t\t\t\t\t\t\thint: $.jPlayer.errorHint.URL\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.seeking:\n\t\t\t\t\t\tthis._seeking();\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.seeked:\n\t\t\t\t\t\tthis._seeked();\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase $.jPlayer.event.ready:\n\t\t\t\t\t\t// The ready event is handled outside the switch statement.\n\t\t\t\t\t\t// Captured here otherwise 2 ready events would be generated if the ready event handler used setMedia.\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis._trigger(eventType);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t_getFlashStatus: function(status) {\n\t\t\tthis.status.seekPercent = status.seekPercent;\n\t\t\tthis.status.currentPercentRelative = status.currentPercentRelative;\n\t\t\tthis.status.currentPercentAbsolute = status.currentPercentAbsolute;\n\t\t\tthis.status.currentTime = status.currentTime;\n\t\t\tthis.status.duration = status.duration;\n\t\t\tthis.status.remaining = status.duration - status.currentTime;\n\n\t\t\tthis.status.videoWidth = status.videoWidth;\n\t\t\tthis.status.videoHeight = status.videoHeight;\n\n\t\t\t// The Flash does not generate this information in this release\n\t\t\tthis.status.readyState = 4; // status.readyState;\n\t\t\tthis.status.networkState = 0; // status.networkState;\n\t\t\tthis.status.playbackRate = 1; // status.playbackRate;\n\t\t\tthis.status.ended = false; // status.ended;\n\t\t},\n\t\t_updateButtons: function(playing) {\n\t\t\tif(playing === undefined) {\n\t\t\t\tplaying = !this.status.paused;\n\t\t\t} else {\n\t\t\t\tthis.status.paused = !playing;\n\t\t\t}\n\t\t\t// Apply the state classes. (For the useStateClassSkin:true option)\n\t\t\tif(playing) {\n\t\t\t\tthis.addStateClass(\'playing\');\n\t\t\t} else {\n\t\t\t\tthis.removeStateClass(\'playing\');\n\t\t\t}\n\t\t\tif(!this.status.noFullWindow && this.options.fullWindow) {\n\t\t\t\tthis.addStateClass(\'fullScreen\');\n\t\t\t} else {\n\t\t\t\tthis.removeStateClass(\'fullScreen\');\n\t\t\t}\n\t\t\tif(this.options.loop) {\n\t\t\t\tthis.addStateClass(\'looped\');\n\t\t\t} else {\n\t\t\t\tthis.removeStateClass(\'looped\');\n\t\t\t}\n\t\t\t// Toggle the GUI element pairs. (For the useStateClassSkin:false option)\n\t\t\tif(this.css.jq.play.length && this.css.jq.pause.length) {\n\t\t\t\tif(playing) {\n\t\t\t\t\tthis.css.jq.play.hide();\n\t\t\t\t\tthis.css.jq.pause.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.play.show();\n\t\t\t\t\tthis.css.jq.pause.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.css.jq.restoreScreen.length && this.css.jq.fullScreen.length) {\n\t\t\t\tif(this.status.noFullWindow) {\n\t\t\t\t\tthis.css.jq.fullScreen.hide();\n\t\t\t\t\tthis.css.jq.restoreScreen.hide();\n\t\t\t\t} else if(this.options.fullWindow) {\n\t\t\t\t\tthis.css.jq.fullScreen.hide();\n\t\t\t\t\tthis.css.jq.restoreScreen.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.fullScreen.show();\n\t\t\t\t\tthis.css.jq.restoreScreen.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.css.jq.repeat.length && this.css.jq.repeatOff.length) {\n\t\t\t\tif(this.options.loop) {\n\t\t\t\t\tthis.css.jq.repeat.hide();\n\t\t\t\t\tthis.css.jq.repeatOff.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.repeat.show();\n\t\t\t\t\tthis.css.jq.repeatOff.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_updateInterface: function() {\n\t\t\tif(this.css.jq.seekBar.length) {\n\t\t\t\tthis.css.jq.seekBar.width(this.status.seekPercent+"%");\n\t\t\t}\n\t\t\tif(this.css.jq.playBar.length) {\n\t\t\t\tif(this.options.smoothPlayBar) {\n\t\t\t\t\tthis.css.jq.playBar.stop().animate({\n\t\t\t\t\t\twidth: this.status.currentPercentAbsolute+"%"\n\t\t\t\t\t}, 250, "linear");\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.playBar.width(this.status.currentPercentRelative+"%");\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar currentTimeText = \'\';\n\t\t\tif(this.css.jq.currentTime.length) {\n\t\t\t\tcurrentTimeText = this._convertTime(this.status.currentTime);\n\t\t\t\tif(currentTimeText !== this.css.jq.currentTime.text()) {\n\t\t\t\t\tthis.css.jq.currentTime.text(this._convertTime(this.status.currentTime));\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar durationText = \'\',\n\t\t\t\tduration = this.status.duration,\n\t\t\t\tremaining = this.status.remaining;\n\t\t\tif(this.css.jq.duration.length) {\n\t\t\t\tif(typeof this.status.media.duration === \'string\') {\n\t\t\t\t\tdurationText = this.status.media.duration;\n\t\t\t\t} else {\n\t\t\t\t\tif(typeof this.status.media.duration === \'number\') {\n\t\t\t\t\t\tduration = this.status.media.duration;\n\t\t\t\t\t\tremaining = duration - this.status.currentTime;\n\t\t\t\t\t}\n\t\t\t\t\tif(this.options.remainingDuration) {\n\t\t\t\t\t\tdurationText = (remaining > 0 ? \'-\' : \'\') + this._convertTime(remaining);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdurationText = this._convertTime(duration);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(durationText !== this.css.jq.duration.text()) {\n\t\t\t\t\tthis.css.jq.duration.text(durationText);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_convertTime: ConvertTime.prototype.time,\n\t\t_seeking: function() {\n\t\t\tif(this.css.jq.seekBar.length) {\n\t\t\t\tthis.css.jq.seekBar.addClass("jp-seeking-bg");\n\t\t\t}\n\t\t\tthis.addStateClass(\'seeking\');\n\t\t},\n\t\t_seeked: function() {\n\t\t\tif(this.css.jq.seekBar.length) {\n\t\t\t\tthis.css.jq.seekBar.removeClass("jp-seeking-bg");\n\t\t\t}\n\t\t\tthis.removeStateClass(\'seeking\');\n\t\t},\n\t\t_resetGate: function() {\n\t\t\tthis.html.audio.gate = false;\n\t\t\tthis.html.video.gate = false;\n\t\t\tthis.aurora.gate = false;\n\t\t\tthis.flash.gate = false;\n\t\t},\n\t\t_resetActive: function() {\n\t\t\tthis.html.active = false;\n\t\t\tthis.aurora.active = false;\n\t\t\tthis.flash.active = false;\n\t\t},\n\t\t_escapeHtml: function(s) {\n\t\t\treturn s.split(\'&\').join(\'&amp;\').split(\'<\').join(\'&lt;\').split(\'>\').join(\'&gt;\').split(\'"\').join(\'&quot;\');\n\t\t},\n\t\t_qualifyURL: function(url) {\n\t\t\tvar el = document.createElement(\'div\');\n\t\t\tel.innerHTML= \'<a href="\' + this._escapeHtml(url) + \'">x</a>\';\n\t\t\treturn el.firstChild.href;\n\t\t},\n\t\t_absoluteMediaUrls: function(media) {\n\t\t\tvar self = this;\n\t\t\t$.each(media, function(type, url) {\n\t\t\t\tif(url && self.format[type] && url.substr(0, 5) !== "data:") {\n\t\t\t\t\tmedia[type] = self._qualifyURL(url);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn media;\n\t\t},\n\t\taddStateClass: function(state) {\n\t\t\tif(this.ancestorJq.length) {\n\t\t\t\tthis.ancestorJq.addClass(this.options.stateClass[state]);\n\t\t\t}\n\t\t},\n\t\tremoveStateClass: function(state) {\n\t\t\tif(this.ancestorJq.length) {\n\t\t\t\tthis.ancestorJq.removeClass(this.options.stateClass[state]);\n\t\t\t}\n\t\t},\n\t\tsetMedia: function(media) {\n\t\t\n\t\t\t/*\tmedia[format] = String: URL of format. Must contain all of the supplied option\'s video or audio formats.\n\t\t\t *\tmedia.poster = String: Video poster URL.\n\t\t\t *\tmedia.track = Array: Of objects defining the track element: kind, src, srclang, label, def.\n\t\t\t *\tmedia.stream = Boolean: * NOT IMPLEMENTED * Designating actual media streams. ie., "false/undefined" for files. Plan to refresh the flash every so often.\n\t\t\t */\n\n\t\t\tvar\tself = this,\n\t\t\t\tsupported = false,\n\t\t\t\tposterChanged = this.status.media.poster !== media.poster; // Compare before reset. Important for OSX Safari as this.htmlElement.poster.src is absolute, even if original poster URL was relative.\n\n\t\t\tthis._resetMedia();\n\t\t\tthis._resetGate();\n\t\t\tthis._resetActive();\n\n\t\t\t// Clear the Android Fix.\n\t\t\tthis.androidFix.setMedia = false;\n\t\t\tthis.androidFix.play = false;\n\t\t\tthis.androidFix.pause = false;\n\n\t\t\t// Convert all media URLs to absolute URLs.\n\t\t\tmedia = this._absoluteMediaUrls(media);\n\n\t\t\t$.each(this.formats, function(formatPriority, format) {\n\t\t\t\tvar isVideo = self.format[format].media === \'video\';\n\t\t\t\t$.each(self.solutions, function(solutionPriority, solution) {\n\t\t\t\t\tif(self[solution].support[format] && self._validString(media[format])) { // Format supported in solution and url given for format.\n\t\t\t\t\t\tvar isHtml = solution === \'html\';\n\t\t\t\t\t\tvar isAurora = solution === \'aurora\';\n\n\t\t\t\t\t\tif(isVideo) {\n\t\t\t\t\t\t\tif(isHtml) {\n\t\t\t\t\t\t\t\tself.html.video.gate = true;\n\t\t\t\t\t\t\t\tself._html_setVideo(media);\n\t\t\t\t\t\t\t\tself.html.active = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.flash.gate = true;\n\t\t\t\t\t\t\t\tself._flash_setVideo(media);\n\t\t\t\t\t\t\t\tself.flash.active = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(self.css.jq.videoPlay.length) {\n\t\t\t\t\t\t\t\tself.css.jq.videoPlay.show();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.status.video = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif(isHtml) {\n\t\t\t\t\t\t\t\tself.html.audio.gate = true;\n\t\t\t\t\t\t\t\tself._html_setAudio(media);\n\t\t\t\t\t\t\t\tself.html.active = true;\n\n\t\t\t\t\t\t\t\t// Setup the Android Fix - Only for HTML audio.\n\t\t\t\t\t\t\t\tif($.jPlayer.platform.android) {\n\t\t\t\t\t\t\t\t\tself.androidFix.setMedia = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if(isAurora) {\n\t\t\t\t\t\t\t\tself.aurora.gate = true;\n\t\t\t\t\t\t\t\tself._aurora_setAudio(media);\n\t\t\t\t\t\t\t\tself.aurora.active = true;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tself.flash.gate = true;\n\t\t\t\t\t\t\t\tself._flash_setAudio(media);\n\t\t\t\t\t\t\t\tself.flash.active = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(self.css.jq.videoPlay.length) {\n\t\t\t\t\t\t\t\tself.css.jq.videoPlay.hide();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.status.video = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tsupported = true;\n\t\t\t\t\t\treturn false; // Exit $.each\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(supported) {\n\t\t\t\t\treturn false; // Exit $.each\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(supported) {\n\t\t\t\tif(!(this.status.nativeVideoControls && this.html.video.gate)) {\n\t\t\t\t\t// Set poster IMG if native video controls are not being used\n\t\t\t\t\t// Note: With IE the IMG onload event occurs immediately when cached.\n\t\t\t\t\t// Note: Poster hidden by default in _resetMedia()\n\t\t\t\t\tif(this._validString(media.poster)) {\n\t\t\t\t\t\tif(posterChanged) { // Since some browsers do not generate img onload event.\n\t\t\t\t\t\t\tthis.htmlElement.poster.src = media.poster;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.internal.poster.jq.show();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(typeof media.title === \'string\') {\n\t\t\t\t\tif(this.css.jq.title.length) {\n\t\t\t\t\t\tthis.css.jq.title.html(media.title);\n\t\t\t\t\t}\n\t\t\t\t\tif(this.htmlElement.audio) {\n\t\t\t\t\t\tthis.htmlElement.audio.setAttribute(\'title\', media.title);\n\t\t\t\t\t}\n\t\t\t\t\tif(this.htmlElement.video) {\n\t\t\t\t\t\tthis.htmlElement.video.setAttribute(\'title\', media.title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.status.srcSet = true;\n\t\t\t\tthis.status.media = $.extend({}, media);\n\t\t\t\tthis._updateButtons(false);\n\t\t\t\tthis._updateInterface();\n\t\t\t\tthis._trigger($.jPlayer.event.setmedia);\n\t\t\t} else { // jPlayer cannot support any formats provided in this browser\n\t\t\t\t// Send an error event\n\t\t\t\tthis._error( {\n\t\t\t\t\ttype: $.jPlayer.error.NO_SUPPORT,\n\t\t\t\t\tcontext: "{supplied:\'" + this.options.supplied + "\'}",\n\t\t\t\t\tmessage: $.jPlayer.errorMsg.NO_SUPPORT,\n\t\t\t\t\thint: $.jPlayer.errorHint.NO_SUPPORT\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t_resetMedia: function() {\n\t\t\tthis._resetStatus();\n\t\t\tthis._updateButtons(false);\n\t\t\tthis._updateInterface();\n\t\t\tthis._seeked();\n\t\t\tthis.internal.poster.jq.hide();\n\n\t\t\tclearTimeout(this.internal.htmlDlyCmdId);\n\n\t\t\tif(this.html.active) {\n\t\t\t\tthis._html_resetMedia();\n\t\t\t} else if(this.aurora.active) {\n\t\t\t\tthis._aurora_resetMedia();\n\t\t\t} else if(this.flash.active) {\n\t\t\t\tthis._flash_resetMedia();\n\t\t\t}\n\t\t},\n\t\tclearMedia: function() {\n\t\t\tthis._resetMedia();\n\n\t\t\tif(this.html.active) {\n\t\t\t\tthis._html_clearMedia();\n\t\t\t} else if(this.aurora.active) {\n\t\t\t\tthis._aurora_clearMedia();\n\t\t\t} else if(this.flash.active) {\n\t\t\t\tthis._flash_clearMedia();\n\t\t\t}\n\n\t\t\tthis._resetGate();\n\t\t\tthis._resetActive();\n\t\t},\n\t\tload: function() {\n\t\t\tif(this.status.srcSet) {\n\t\t\t\tif(this.html.active) {\n\t\t\t\t\tthis._html_load();\n\t\t\t\t} else if(this.aurora.active) {\n\t\t\t\t\tthis._aurora_load();\n\t\t\t\t} else if(this.flash.active) {\n\t\t\t\t\tthis._flash_load();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._urlNotSetError("load");\n\t\t\t}\n\t\t},\n\t\tfocus: function() {\n\t\t\tif(this.options.keyEnabled) {\n\t\t\t\t$.jPlayer.focus = this;\n\t\t\t}\n\t\t},\n\t\tplay: function(time) {\n\t\t\tvar guiAction = typeof time === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI.\n\t\t\tif(guiAction && this.options.useStateClassSkin && !this.status.paused) {\n\t\t\t\tthis.pause(time); // The time would be the click event, but passing it over so info is not lost.\n\t\t\t} else {\n\t\t\t\ttime = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler\n\t\t\t\tif(this.status.srcSet) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\tif(this.html.active) {\n\t\t\t\t\t\tthis._html_play(time);\n\t\t\t\t\t} else if(this.aurora.active) {\n\t\t\t\t\t\tthis._aurora_play(time);\n\t\t\t\t\t} else if(this.flash.active) {\n\t\t\t\t\t\tthis._flash_play(time);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._urlNotSetError("play");\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tvideoPlay: function() { // Handles clicks on the play button over the video poster\n\t\t\tthis.play();\n\t\t},\n\t\tpause: function(time) {\n\t\t\ttime = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler\n\t\t\tif(this.status.srcSet) {\n\t\t\t\tif(this.html.active) {\n\t\t\t\t\tthis._html_pause(time);\n\t\t\t\t} else if(this.aurora.active) {\n\t\t\t\t\tthis._aurora_pause(time);\n\t\t\t\t} else if(this.flash.active) {\n\t\t\t\t\tthis._flash_pause(time);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._urlNotSetError("pause");\n\t\t\t}\n\t\t},\n\t\ttellOthers: function(command, conditions) {\n\t\t\tvar self = this,\n\t\t\t\thasConditions = typeof conditions === \'function\',\n\t\t\t\targs = Array.prototype.slice.call(arguments); // Convert arguments to an Array.\n\n\t\t\tif(typeof command !== \'string\') { // Ignore, since no command.\n\t\t\t\treturn; // Return undefined to maintain chaining.\n\t\t\t}\n\t\t\tif(hasConditions) {\n\t\t\t\targs.splice(1, 1); // Remove the conditions from the arguments\n\t\t\t}\n\n\t\t\t$.jPlayer.prototype.destroyRemoved();\n\t\t\t$.each(this.instances, function() {\n\t\t\t\t// Remember that "this" is the instance\'s "element" in the $.each() loop.\n\t\t\t\tif(self.element !== this) { // Do not tell my instance.\n\t\t\t\t\tif(!hasConditions || conditions.call(this.data("jPlayer"), self)) {\n\t\t\t\t\t\tthis.jPlayer.apply(this, args);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tpauseOthers: function(time) {\n\t\t\tthis.tellOthers("pause", function() {\n\t\t\t\t// In the conditions function, the "this" context is the other instance\'s jPlayer object.\n\t\t\t\treturn this.status.srcSet;\n\t\t\t}, time);\n\t\t},\n\t\tstop: function() {\n\t\t\tif(this.status.srcSet) {\n\t\t\t\tif(this.html.active) {\n\t\t\t\t\tthis._html_pause(0);\n\t\t\t\t} else if(this.aurora.active) {\n\t\t\t\t\tthis._aurora_pause(0);\n\t\t\t\t} else if(this.flash.active) {\n\t\t\t\t\tthis._flash_pause(0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._urlNotSetError("stop");\n\t\t\t}\n\t\t},\n\t\tplayHead: function(p) {\n\t\t\tp = this._limitValue(p, 0, 100);\n\t\t\tif(this.status.srcSet) {\n\t\t\t\tif(this.html.active) {\n\t\t\t\t\tthis._html_playHead(p);\n\t\t\t\t} else if(this.aurora.active) {\n\t\t\t\t\tthis._aurora_playHead(p);\n\t\t\t\t} else if(this.flash.active) {\n\t\t\t\t\tthis._flash_playHead(p);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._urlNotSetError("playHead");\n\t\t\t}\n\t\t},\n\t\t_muted: function(muted) {\n\t\t\tthis.mutedWorker(muted);\n\t\t\tif(this.options.globalVolume) {\n\t\t\t\tthis.tellOthers("mutedWorker", function() {\n\t\t\t\t\t// Check the other instance has global volume enabled.\n\t\t\t\t\treturn this.options.globalVolume;\n\t\t\t\t}, muted);\n\t\t\t}\n\t\t},\n\t\tmutedWorker: function(muted) {\n\t\t\tthis.options.muted = muted;\n\t\t\tif(this.html.used) {\n\t\t\t\tthis._html_setProperty(\'muted\', muted);\n\t\t\t}\n\t\t\tif(this.aurora.used) {\n\t\t\t\tthis._aurora_mute(muted);\n\t\t\t}\n\t\t\tif(this.flash.used) {\n\t\t\t\tthis._flash_mute(muted);\n\t\t\t}\n\n\t\t\t// The HTML solution generates this event from the media element itself.\n\t\t\tif(!this.html.video.gate && !this.html.audio.gate) {\n\t\t\t\tthis._updateMute(muted);\n\t\t\t\tthis._updateVolume(this.options.volume);\n\t\t\t\tthis._trigger($.jPlayer.event.volumechange);\n\t\t\t}\n\t\t},\n\t\tmute: function(mute) { // mute is either: undefined (true), an event object (true) or a boolean (muted).\n\t\t\tvar guiAction = typeof mute === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI.\n\t\t\tif(guiAction && this.options.useStateClassSkin && this.options.muted) {\n\t\t\t\tthis._muted(false);\n\t\t\t} else {\n\t\t\t\tmute = mute === undefined ? true : !!mute;\n\t\t\t\tthis._muted(mute);\n\t\t\t}\n\t\t},\n\t\tunmute: function(unmute) { // unmute is either: undefined (true), an event object (true) or a boolean (!muted).\n\t\t\tunmute = unmute === undefined ? true : !!unmute;\n\t\t\tthis._muted(!unmute);\n\t\t},\n\t\t_updateMute: function(mute) {\n\t\t\tif(mute === undefined) {\n\t\t\t\tmute = this.options.muted;\n\t\t\t}\n\t\t\tif(mute) {\n\t\t\t\tthis.addStateClass(\'muted\');\n\t\t\t} else {\n\t\t\t\tthis.removeStateClass(\'muted\');\n\t\t\t}\n\t\t\tif(this.css.jq.mute.length && this.css.jq.unmute.length) {\n\t\t\t\tif(this.status.noVolume) {\n\t\t\t\t\tthis.css.jq.mute.hide();\n\t\t\t\t\tthis.css.jq.unmute.hide();\n\t\t\t\t} else if(mute) {\n\t\t\t\t\tthis.css.jq.mute.hide();\n\t\t\t\t\tthis.css.jq.unmute.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.mute.show();\n\t\t\t\t\tthis.css.jq.unmute.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tvolume: function(v) {\n\t\t\tthis.volumeWorker(v);\n\t\t\tif(this.options.globalVolume) {\n\t\t\t\tthis.tellOthers("volumeWorker", function() {\n\t\t\t\t\t// Check the other instance has global volume enabled.\n\t\t\t\t\treturn this.options.globalVolume;\n\t\t\t\t}, v);\n\t\t\t}\n\t\t},\n\t\tvolumeWorker: function(v) {\n\t\t\tv = this._limitValue(v, 0, 1);\n\t\t\tthis.options.volume = v;\n\n\t\t\tif(this.html.used) {\n\t\t\t\tthis._html_setProperty(\'volume\', v);\n\t\t\t}\n\t\t\tif(this.aurora.used) {\n\t\t\t\tthis._aurora_volume(v);\n\t\t\t}\n\t\t\tif(this.flash.used) {\n\t\t\t\tthis._flash_volume(v);\n\t\t\t}\n\n\t\t\t// The HTML solution generates this event from the media element itself.\n\t\t\tif(!this.html.video.gate && !this.html.audio.gate) {\n\t\t\t\tthis._updateVolume(v);\n\t\t\t\tthis._trigger($.jPlayer.event.volumechange);\n\t\t\t}\n\t\t},\n\t\tvolumeBar: function(e) { // Handles clicks on the volumeBar\n\t\t\tif(this.css.jq.volumeBar.length) {\n\t\t\t\t// Using $(e.currentTarget) to enable multiple volume bars\n\t\t\t\tvar $bar = $(e.currentTarget),\n\t\t\t\t\toffset = $bar.offset(),\n\t\t\t\t\tx = e.pageX - offset.left,\n\t\t\t\t\tw = $bar.width(),\n\t\t\t\t\ty = $bar.height() - e.pageY + offset.top,\n\t\t\t\t\th = $bar.height();\n\t\t\t\tif(this.options.verticalVolume) {\n\t\t\t\t\tthis.volume(y/h);\n\t\t\t\t} else {\n\t\t\t\t\tthis.volume(x/w);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(this.options.muted) {\n\t\t\t\tthis._muted(false);\n\t\t\t}\n\t\t},\n\t\t_updateVolume: function(v) {\n\t\t\tif(v === undefined) {\n\t\t\t\tv = this.options.volume;\n\t\t\t}\n\t\t\tv = this.options.muted ? 0 : v;\n\n\t\t\tif(this.status.noVolume) {\n\t\t\t\tthis.addStateClass(\'noVolume\');\n\t\t\t\tif(this.css.jq.volumeBar.length) {\n\t\t\t\t\tthis.css.jq.volumeBar.hide();\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.volumeBarValue.length) {\n\t\t\t\t\tthis.css.jq.volumeBarValue.hide();\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.volumeMax.length) {\n\t\t\t\t\tthis.css.jq.volumeMax.hide();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.removeStateClass(\'noVolume\');\n\t\t\t\tif(this.css.jq.volumeBar.length) {\n\t\t\t\t\tthis.css.jq.volumeBar.show();\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.volumeBarValue.length) {\n\t\t\t\t\tthis.css.jq.volumeBarValue.show();\n\t\t\t\t\tthis.css.jq.volumeBarValue[this.options.verticalVolume ? "height" : "width"]((v*100)+"%");\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.volumeMax.length) {\n\t\t\t\t\tthis.css.jq.volumeMax.show();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tvolumeMax: function() { // Handles clicks on the volume max\n\t\t\tthis.volume(1);\n\t\t\tif(this.options.muted) {\n\t\t\t\tthis._muted(false);\n\t\t\t}\n\t\t},\n\t\t_cssSelectorAncestor: function(ancestor) {\n\t\t\tvar self = this;\n\t\t\tthis.options.cssSelectorAncestor = ancestor;\n\t\t\tthis._removeUiClass();\n\t\t\tthis.ancestorJq = ancestor ? $(ancestor) : []; // Would use $() instead of [], but it is only 1.4+\n\t\t\tif(ancestor && this.ancestorJq.length !== 1) { // So empty strings do not generate the warning.\n\t\t\t\tthis._warning( {\n\t\t\t\t\ttype: $.jPlayer.warning.CSS_SELECTOR_COUNT,\n\t\t\t\t\tcontext: ancestor,\n\t\t\t\t\tmessage: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.ancestorJq.length + " found for cssSelectorAncestor.",\n\t\t\t\t\thint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._addUiClass();\n\t\t\t$.each(this.options.cssSelector, function(fn, cssSel) {\n\t\t\t\tself._cssSelector(fn, cssSel);\n\t\t\t});\n\n\t\t\t// Set the GUI to the current state.\n\t\t\tthis._updateInterface();\n\t\t\tthis._updateButtons();\n\t\t\tthis._updateAutohide();\n\t\t\tthis._updateVolume();\n\t\t\tthis._updateMute();\n\t\t},\n\t\t_cssSelector: function(fn, cssSel) {\n\t\t\tvar self = this;\n\t\t\tif(typeof cssSel === \'string\') {\n\t\t\t\tif($.jPlayer.prototype.options.cssSelector[fn]) {\n\t\t\t\t\tif(this.css.jq[fn] && this.css.jq[fn].length) {\n\t\t\t\t\t\tthis.css.jq[fn].unbind(".jPlayer");\n\t\t\t\t\t}\n\t\t\t\t\tthis.options.cssSelector[fn] = cssSel;\n\t\t\t\t\tthis.css.cs[fn] = this.options.cssSelectorAncestor + " " + cssSel;\n\n\t\t\t\t\tif(cssSel) { // Checks for empty string\n\t\t\t\t\t\tthis.css.jq[fn] = $(this.css.cs[fn]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.css.jq[fn] = []; // To comply with the css.jq[fn].length check before its use. As of jQuery 1.4 could have used $() for an empty set. \n\t\t\t\t\t}\n\n\t\t\t\t\tif(this.css.jq[fn].length && this[fn]) {\n\t\t\t\t\t\tvar handler = function(e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tself[fn](e);\n\t\t\t\t\t\t\tif(self.options.autoBlur) {\n\t\t\t\t\t\t\t\t$(this).blur();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$(this).focus(); // Force focus for ARIA.\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.css.jq[fn].bind("click.jPlayer", handler); // Using jPlayer namespace\n\t\t\t\t\t}\n\n\t\t\t\t\tif(cssSel && this.css.jq[fn].length !== 1) { // So empty strings do not generate the warning. ie., they just remove the old one.\n\t\t\t\t\t\tthis._warning( {\n\t\t\t\t\t\t\ttype: $.jPlayer.warning.CSS_SELECTOR_COUNT,\n\t\t\t\t\t\t\tcontext: this.css.cs[fn],\n\t\t\t\t\t\t\tmessage: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.css.jq[fn].length + " found for " + fn + " method.",\n\t\t\t\t\t\t\thint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis._warning( {\n\t\t\t\t\t\ttype: $.jPlayer.warning.CSS_SELECTOR_METHOD,\n\t\t\t\t\t\tcontext: fn,\n\t\t\t\t\t\tmessage: $.jPlayer.warningMsg.CSS_SELECTOR_METHOD,\n\t\t\t\t\t\thint: $.jPlayer.warningHint.CSS_SELECTOR_METHOD\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._warning( {\n\t\t\t\t\ttype: $.jPlayer.warning.CSS_SELECTOR_STRING,\n\t\t\t\t\tcontext: cssSel,\n\t\t\t\t\tmessage: $.jPlayer.warningMsg.CSS_SELECTOR_STRING,\n\t\t\t\t\thint: $.jPlayer.warningHint.CSS_SELECTOR_STRING\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tduration: function(e) {\n\t\t\tif(this.options.toggleDuration) {\n\t\t\t\tif(this.options.captureDuration) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis._setOption("remainingDuration", !this.options.remainingDuration);\n\t\t\t}\n\t\t},\n\t\tseekBar: function(e) { // Handles clicks on the seekBar\n\t\t\tif(this.css.jq.seekBar.length) {\n\t\t\t\t// Using $(e.currentTarget) to enable multiple seek bars\n\t\t\t\tvar $bar = $(e.currentTarget),\n\t\t\t\t\toffset = $bar.offset(),\n\t\t\t\t\tx = e.pageX - offset.left,\n\t\t\t\t\tw = $bar.width(),\n\t\t\t\t\tp = 100 * x / w;\n\t\t\t\tthis.playHead(p);\n\t\t\t}\n\t\t},\n\t\tplaybackRate: function(pbr) {\n\t\t\tthis._setOption("playbackRate", pbr);\n\t\t},\n\t\tplaybackRateBar: function(e) { // Handles clicks on the playbackRateBar\n\t\t\tif(this.css.jq.playbackRateBar.length) {\n\t\t\t\t// Using $(e.currentTarget) to enable multiple playbackRate bars\n\t\t\t\tvar $bar = $(e.currentTarget),\n\t\t\t\t\toffset = $bar.offset(),\n\t\t\t\t\tx = e.pageX - offset.left,\n\t\t\t\t\tw = $bar.width(),\n\t\t\t\t\ty = $bar.height() - e.pageY + offset.top,\n\t\t\t\t\th = $bar.height(),\n\t\t\t\t\tratio, pbr;\n\t\t\t\tif(this.options.verticalPlaybackRate) {\n\t\t\t\t\tratio = y/h;\n\t\t\t\t} else {\n\t\t\t\t\tratio = x/w;\n\t\t\t\t}\n\t\t\t\tpbr = ratio * (this.options.maxPlaybackRate - this.options.minPlaybackRate) + this.options.minPlaybackRate;\n\t\t\t\tthis.playbackRate(pbr);\n\t\t\t}\n\t\t},\n\t\t_updatePlaybackRate: function() {\n\t\t\tvar pbr = this.options.playbackRate,\n\t\t\t\tratio = (pbr - this.options.minPlaybackRate) / (this.options.maxPlaybackRate - this.options.minPlaybackRate);\n\t\t\tif(this.status.playbackRateEnabled) {\n\t\t\t\tif(this.css.jq.playbackRateBar.length) {\n\t\t\t\t\tthis.css.jq.playbackRateBar.show();\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.playbackRateBarValue.length) {\n\t\t\t\t\tthis.css.jq.playbackRateBarValue.show();\n\t\t\t\t\tthis.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate ? "height" : "width"]((ratio*100)+"%");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(this.css.jq.playbackRateBar.length) {\n\t\t\t\t\tthis.css.jq.playbackRateBar.hide();\n\t\t\t\t}\n\t\t\t\tif(this.css.jq.playbackRateBarValue.length) {\n\t\t\t\t\tthis.css.jq.playbackRateBarValue.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trepeat: function(event) { // Handle clicks on the repeat button\n\t\t\tvar guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI.\n\t\t\tif(guiAction && this.options.useStateClassSkin && this.options.loop) {\n\t\t\t\tthis._loop(false);\n\t\t\t} else {\n\t\t\t\tthis._loop(true);\n\t\t\t}\n\t\t},\n\t\trepeatOff: function() { // Handle clicks on the repeatOff button\n\t\t\tthis._loop(false);\n\t\t},\n\t\t_loop: function(loop) {\n\t\t\tif(this.options.loop !== loop) {\n\t\t\t\tthis.options.loop = loop;\n\t\t\t\tthis._updateButtons();\n\t\t\t\tthis._trigger($.jPlayer.event.repeat);\n\t\t\t}\n\t\t},\n\n\t\t// Options code adapted from ui.widget.js (1.8.7). Made changes so the key can use dot notation. To match previous getData solution in jPlayer 1.\n\t\toption: function(key, value) {\n\t\t\tvar options = key;\n\n\t\t\t // Enables use: options(). Returns a copy of options object\n\t\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn $.extend( true, {}, this.options );\n\t\t\t}\n\n\t\t\tif(typeof key === "string") {\n\t\t\t\tvar keys = key.split(".");\n\n\t\t\t\t // Enables use: options("someOption") Returns a copy of the option. Supports dot notation.\n\t\t\t\tif(value === undefined) {\n\n\t\t\t\t\tvar opt = $.extend(true, {}, this.options);\n\t\t\t\t\tfor(var i = 0; i < keys.length; i++) {\n\t\t\t\t\t\tif(opt[keys[i]] !== undefined) {\n\t\t\t\t\t\t\topt = opt[keys[i]];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._warning( {\n\t\t\t\t\t\t\t\ttype: $.jPlayer.warning.OPTION_KEY,\n\t\t\t\t\t\t\t\tcontext: key,\n\t\t\t\t\t\t\t\tmessage: $.jPlayer.warningMsg.OPTION_KEY,\n\t\t\t\t\t\t\t\thint: $.jPlayer.warningHint.OPTION_KEY\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn opt;\n\t\t\t\t}\n\n\t\t\t\t // Enables use: options("someOptionObject", someObject}). Creates: {someOptionObject:someObject}\n\t\t\t\t // Enables use: options("someOption", someValue). Creates: {someOption:someValue}\n\t\t\t\t // Enables use: options("someOptionObject.someOption", someValue). Creates: {someOptionObject:{someOption:someValue}}\n\n\t\t\t\toptions = {};\n\t\t\t\tvar opts = options;\n\n\t\t\t\tfor(var j = 0; j < keys.length; j++) {\n\t\t\t\t\tif(j < keys.length - 1) {\n\t\t\t\t\t\topts[keys[j]] = {};\n\t\t\t\t\t\topts = opts[keys[j]];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topts[keys[j]] = value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t // Otherwise enables use: options(optionObject). Uses original object (the key)\n\n\t\t\tthis._setOptions(options);\n\n\t\t\treturn this;\n\t\t},\n\t\t_setOptions: function(options) {\n\t\t\tvar self = this;\n\t\t\t$.each(options, function(key, value) { // This supports the 2 level depth that the options of jPlayer has. Would review if we ever need more depth.\n\t\t\t\tself._setOption(key, value);\n\t\t\t});\n\n\t\t\treturn this;\n\t\t},\n\t\t_setOption: function(key, value) {\n\t\t\tvar self = this;\n\n\t\t\t// The ability to set options is limited at this time.\n\n\t\t\tswitch(key) {\n\t\t\t\tcase "volume" :\n\t\t\t\t\tthis.volume(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase "muted" :\n\t\t\t\t\tthis._muted(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase "globalVolume" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase "cssSelectorAncestor" :\n\t\t\t\t\tthis._cssSelectorAncestor(value); // Set and refresh all associations for the new ancestor.\n\t\t\t\t\tbreak;\n\t\t\t\tcase "cssSelector" :\n\t\t\t\t\t$.each(value, function(fn, cssSel) {\n\t\t\t\t\t\tself._cssSelector(fn, cssSel); // NB: The option is set inside this function, after further validity checks.\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase "playbackRate" :\n\t\t\t\t\tthis.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate);\n\t\t\t\t\tif(this.html.used) {\n\t\t\t\t\t\tthis._html_setProperty(\'playbackRate\', value);\n\t\t\t\t\t}\n\t\t\t\t\tthis._updatePlaybackRate();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "defaultPlaybackRate" :\n\t\t\t\t\tthis.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate);\n\t\t\t\t\tif(this.html.used) {\n\t\t\t\t\t\tthis._html_setProperty(\'defaultPlaybackRate\', value);\n\t\t\t\t\t}\n\t\t\t\t\tthis._updatePlaybackRate();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "minPlaybackRate" :\n\t\t\t\t\tthis.options[key] = value = this._limitValue(value, 0.1, this.options.maxPlaybackRate - 0.1);\n\t\t\t\t\tthis._updatePlaybackRate();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "maxPlaybackRate" :\n\t\t\t\t\tthis.options[key] = value = this._limitValue(value, this.options.minPlaybackRate + 0.1, 16);\n\t\t\t\t\tthis._updatePlaybackRate();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "fullScreen" :\n\t\t\t\t\tif(this.options[key] !== value) { // if changed\n\t\t\t\t\t\tvar wkv = $.jPlayer.nativeFeatures.fullscreen.used.webkitVideo;\n\t\t\t\t\t\tif(!wkv || wkv && !this.status.waitForPlay) {\n\t\t\t\t\t\t\tif(!wkv) { // No sensible way to unset option on these devices.\n\t\t\t\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(value) {\n\t\t\t\t\t\t\t\tthis._requestFullscreen();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._exitFullscreen();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(!wkv) {\n\t\t\t\t\t\t\t\tthis._setOption("fullWindow", value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase "fullWindow" :\n\t\t\t\t\tif(this.options[key] !== value) { // if changed\n\t\t\t\t\t\tthis._removeUiClass();\n\t\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\t\tthis._refreshSize();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase "size" :\n\t\t\t\t\tif(!this.options.fullWindow && this.options[key].cssClass !== value.cssClass) {\n\t\t\t\t\t\tthis._removeUiClass();\n\t\t\t\t\t}\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis._refreshSize();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "sizeFull" :\n\t\t\t\t\tif(this.options.fullWindow && this.options[key].cssClass !== value.cssClass) {\n\t\t\t\t\t\tthis._removeUiClass();\n\t\t\t\t\t}\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis._refreshSize();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "autohide" :\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis._updateAutohide();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "loop" :\n\t\t\t\t\tthis._loop(value);\n\t\t\t\t\tbreak;\n\t\t\t\tcase "remainingDuration" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tthis._updateInterface();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "toggleDuration" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase "nativeVideoControls" :\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls);\n\t\t\t\t\tthis._restrictNativeVideoControls();\n\t\t\t\t\tthis._updateNativeVideoControls();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "noFullWindow" :\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); // Need to check again as noFullWindow can depend on this flag and the restrict() can override it.\n\t\t\t\t\tthis.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow);\n\t\t\t\t\tthis._restrictNativeVideoControls();\n\t\t\t\t\tthis._updateButtons();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "noVolume" :\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tthis.status.noVolume = this._uaBlocklist(this.options.noVolume);\n\t\t\t\t\tthis._updateVolume();\n\t\t\t\t\tthis._updateMute();\n\t\t\t\t\tbreak;\n\t\t\t\tcase "emulateHtml" :\n\t\t\t\t\tif(this.options[key] !== value) { // To avoid multiple event handlers being created, if true already.\n\t\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\t\tif(value) {\n\t\t\t\t\t\t\tthis._emulateHtmlBridge();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._destroyHtmlBridge();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase "timeFormat" :\n\t\t\t\t\tthis.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed.\n\t\t\t\t\tbreak;\n\t\t\t\tcase "keyEnabled" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tif(!value && this === $.jPlayer.focus) {\n\t\t\t\t\t\t$.jPlayer.focus = null;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase "keyBindings" :\n\t\t\t\t\tthis.options[key] = $.extend(true, {}, this.options[key], value); // store a merged DEEP copy of it, incase not all properties changed.\n\t\t\t\t\tbreak;\n\t\t\t\tcase "audioFullScreen" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tbreak;\n\t\t\t\tcase "autoBlur" :\n\t\t\t\t\tthis.options[key] = value;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\t\t// End of: (Options code adapted from ui.widget.js)\n\n\t\t_refreshSize: function() {\n\t\t\tthis._setSize(); // update status and jPlayer element size\n\t\t\tthis._addUiClass(); // update the ui class\n\t\t\tthis._updateSize(); // update internal sizes\n\t\t\tthis._updateButtons();\n\t\t\tthis._updateAutohide();\n\t\t\tthis._trigger($.jPlayer.event.resize);\n\t\t},\n\t\t_setSize: function() {\n\t\t\t// Determine the current size from the options\n\t\t\tif(this.options.fullWindow) {\n\t\t\t\tthis.status.width = this.options.sizeFull.width;\n\t\t\t\tthis.status.height = this.options.sizeFull.height;\n\t\t\t\tthis.status.cssClass = this.options.sizeFull.cssClass;\n\t\t\t} else {\n\t\t\t\tthis.status.width = this.options.size.width;\n\t\t\t\tthis.status.height = this.options.size.height;\n\t\t\t\tthis.status.cssClass = this.options.size.cssClass;\n\t\t\t}\n\n\t\t\t// Set the size of the jPlayer area.\n\t\t\tthis.element.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t},\n\t\t_addUiClass: function() {\n\t\t\tif(this.ancestorJq.length) {\n\t\t\t\tthis.ancestorJq.addClass(this.status.cssClass);\n\t\t\t}\n\t\t},\n\t\t_removeUiClass: function() {\n\t\t\tif(this.ancestorJq.length) {\n\t\t\t\tthis.ancestorJq.removeClass(this.status.cssClass);\n\t\t\t}\n\t\t},\n\t\t_updateSize: function() {\n\t\t\t// The poster uses show/hide so can simply resize it.\n\t\t\tthis.internal.poster.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\n\t\t\t// Video html or flash resized if necessary at this time, or if native video controls being used.\n\t\t\tif(!this.status.waitForPlay && this.html.active && this.status.video || this.html.video.available && this.html.used && this.status.nativeVideoControls) {\n\t\t\t\tthis.internal.video.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t}\n\t\t\telse if(!this.status.waitForPlay && this.flash.active && this.status.video) {\n\t\t\t\tthis.internal.flash.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t}\n\t\t},\n\t\t_updateAutohide: function() {\n\t\t\tvar\tself = this,\n\t\t\t\tevent = "mousemove.jPlayer",\n\t\t\t\tnamespace = ".jPlayerAutohide",\n\t\t\t\teventType = event + namespace,\n\t\t\t\thandler = function(event) {\n\t\t\t\t\tvar moved = false,\n\t\t\t\t\t\tdeltaX, deltaY;\n\t\t\t\t\tif(typeof self.internal.mouse !== "undefined") {\n\t\t\t\t\t\t//get the change from last position to this position\n\t\t\t\t\t\tdeltaX = self.internal.mouse.x - event.pageX;\n\t\t\t\t\t\tdeltaY = self.internal.mouse.y - event.pageY;\n\t\t\t\t\t\tmoved = (Math.floor(deltaX) > 0) || (Math.floor(deltaY)>0); \n\t\t\t\t\t} else {\n\t\t\t\t\t\tmoved = true;\n\t\t\t\t\t}\n\t\t\t\t\t// store current position for next method execution\n\t\t\t\t\tself.internal.mouse = {\n\t\t\t\t\t\t\tx : event.pageX,\n\t\t\t\t\t\t\ty : event.pageY\n\t\t\t\t\t};\n\t\t\t\t\t// if mouse has been actually moved, do the gui fadeIn/fadeOut\n\t\t\t\t\tif (moved) {\n\t\t\t\t\t\tself.css.jq.gui.fadeIn(self.options.autohide.fadeIn, function() {\n\t\t\t\t\t\t\tclearTimeout(self.internal.autohideId);\n\t\t\t\t\t\t\tself.internal.autohideId = setTimeout( function() {\n\t\t\t\t\t\t\t\tself.css.jq.gui.fadeOut(self.options.autohide.fadeOut);\n\t\t\t\t\t\t\t}, self.options.autohide.hold);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tif(this.css.jq.gui.length) {\n\n\t\t\t\t// End animations first so that its callback is executed now.\n\t\t\t\t// Otherwise an in progress fadeIn animation still has the callback to fadeOut again.\n\t\t\t\tthis.css.jq.gui.stop(true, true);\n\n\t\t\t\t// Removes the fadeOut operation from the fadeIn callback.\n\t\t\t\tclearTimeout(this.internal.autohideId);\n\t\t\t\t// undefine mouse\n\t\t\t\tdelete this.internal.mouse;\n\n\t\t\t\tthis.element.unbind(namespace);\n\t\t\t\tthis.css.jq.gui.unbind(namespace);\n\n\t\t\t\tif(!this.status.nativeVideoControls) {\n\t\t\t\t\tif(this.options.fullWindow && this.options.autohide.full || !this.options.fullWindow && this.options.autohide.restored) {\n\t\t\t\t\t\tthis.element.bind(eventType, handler);\n\t\t\t\t\t\tthis.css.jq.gui.bind(eventType, handler);\n\t\t\t\t\t\tthis.css.jq.gui.hide();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.css.jq.gui.show();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.css.jq.gui.hide();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfullScreen: function(event) {\n\t\t\tvar guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI.\n\t\t\tif(guiAction && this.options.useStateClassSkin && this.options.fullScreen) {\n\t\t\t\tthis._setOption("fullScreen", false);\n\t\t\t} else {\n\t\t\t\tthis._setOption("fullScreen", true);\n\t\t\t}\n\t\t},\n\t\trestoreScreen: function() {\n\t\t\tthis._setOption("fullScreen", false);\n\t\t},\n\t\t_fullscreenAddEventListeners: function() {\n\t\t\tvar self = this,\n\t\t\t\tfs = $.jPlayer.nativeFeatures.fullscreen;\n\n\t\t\tif(fs.api.fullscreenEnabled) {\n\t\t\t\tif(fs.event.fullscreenchange) {\n\t\t\t\t\t// Create the event handler function and store it for removal.\n\t\t\t\t\tif(typeof this.internal.fullscreenchangeHandler !== \'function\') {\n\t\t\t\t\t\tthis.internal.fullscreenchangeHandler = function() {\n\t\t\t\t\t\t\tself._fullscreenchange();\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tdocument.addEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false);\n\t\t\t\t}\n\t\t\t\t// No point creating handler for fullscreenerror.\n\t\t\t\t// Either logic avoids fullscreen occurring (w3c/moz), or their is no event on the browser (webkit).\n\t\t\t}\n\t\t},\n\t\t_fullscreenRemoveEventListeners: function() {\n\t\t\tvar fs = $.jPlayer.nativeFeatures.fullscreen;\n\t\t\tif(this.internal.fullscreenchangeHandler) {\n\t\t\t\tdocument.removeEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false);\n\t\t\t}\n\t\t},\n\t\t_fullscreenchange: function() {\n\t\t\t// If nothing is fullscreen, then we cannot be in fullscreen mode.\n\t\t\tif(this.options.fullScreen && !$.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()) {\n\t\t\t\tthis._setOption("fullScreen", false);\n\t\t\t}\n\t\t},\n\t\t_requestFullscreen: function() {\n\t\t\t// Either the container or the jPlayer div\n\t\t\tvar e = this.ancestorJq.length ? this.ancestorJq[0] : this.element[0],\n\t\t\t\tfs = $.jPlayer.nativeFeatures.fullscreen;\n\n\t\t\t// This method needs the video element. For iOS and Android.\n\t\t\tif(fs.used.webkitVideo) {\n\t\t\t\te = this.htmlElement.video;\n\t\t\t}\n\n\t\t\tif(fs.api.fullscreenEnabled) {\n\t\t\t\tfs.api.requestFullscreen(e);\n\t\t\t}\n\t\t},\n\t\t_exitFullscreen: function() {\n\n\t\t\tvar fs = $.jPlayer.nativeFeatures.fullscreen,\n\t\t\t\te;\n\n\t\t\t// This method needs the video element. For iOS and Android.\n\t\t\tif(fs.used.webkitVideo) {\n\t\t\t\te = this.htmlElement.video;\n\t\t\t}\n\n\t\t\tif(fs.api.fullscreenEnabled) {\n\t\t\t\tfs.api.exitFullscreen(e);\n\t\t\t}\n\t\t},\n\t\t_html_initMedia: function(media) {\n\t\t\t// Remove any existing track elements\n\t\t\tvar $media = $(this.htmlElement.media).empty();\n\n\t\t\t// Create any track elements given with the media, as an Array of track Objects.\n\t\t\t$.each(media.track || [], function(i,v) {\n\t\t\t\tvar track = document.createElement(\'track\');\n\t\t\t\ttrack.setAttribute("kind", v.kind ? v.kind : "");\n\t\t\t\ttrack.setAttribute("src", v.src ? v.src : "");\n\t\t\t\ttrack.setAttribute("srclang", v.srclang ? v.srclang : "");\n\t\t\t\ttrack.setAttribute("label", v.label ? v.label : "");\n\t\t\t\tif(v.def) {\n\t\t\t\t\ttrack.setAttribute("default", v.def);\n\t\t\t\t}\n\t\t\t\t$media.append(track);\n\t\t\t});\n\n\t\t\tthis.htmlElement.media.src = this.status.src;\n\n\t\t\tif(this.options.preload !== \'none\') {\n\t\t\t\tthis._html_load(); // See function for comments\n\t\t\t}\n\t\t\tthis._trigger($.jPlayer.event.timeupdate); // The flash generates this event for its solution.\n\t\t},\n\t\t_html_setFormat: function(media) {\n\t\t\tvar self = this;\n\t\t\t// Always finds a format due to checks in setMedia()\n\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\tif(self.html.support[format] && media[format]) {\n\t\t\t\t\tself.status.src = media[format];\n\t\t\t\t\tself.status.format[format] = true;\n\t\t\t\t\tself.status.formatType = format;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\t_html_setAudio: function(media) {\n\t\t\tthis._html_setFormat(media);\n\t\t\tthis.htmlElement.media = this.htmlElement.audio;\n\t\t\tthis._html_initMedia(media);\n\t\t},\n\t\t_html_setVideo: function(media) {\n\t\t\tthis._html_setFormat(media);\n\t\t\tif(this.status.nativeVideoControls) {\n\t\t\t\tthis.htmlElement.video.poster = this._validString(media.poster) ? media.poster : "";\n\t\t\t}\n\t\t\tthis.htmlElement.media = this.htmlElement.video;\n\t\t\tthis._html_initMedia(media);\n\t\t},\n\t\t_html_resetMedia: function() {\n\t\t\tif(this.htmlElement.media) {\n\t\t\t\tif(this.htmlElement.media.id === this.internal.video.id && !this.status.nativeVideoControls) {\n\t\t\t\t\tthis.internal.video.jq.css({\'width\':\'0px\', \'height\':\'0px\'});\n\t\t\t\t}\n\t\t\t\tthis.htmlElement.media.pause();\n\t\t\t}\n\t\t},\n\t\t_html_clearMedia: function() {\n\t\t\tif(this.htmlElement.media) {\n\t\t\t\tthis.htmlElement.media.src = "about:blank";\n\t\t\t\t// The following load() is only required for Firefox 3.6 (PowerMacs).\n\t\t\t\t// Recent HTMl5 browsers only require the src change. Due to changes in W3C spec and load() effect.\n\t\t\t\tthis.htmlElement.media.load(); // Stops an old, "in progress" download from continuing the download. Triggers the loadstart, error and emptied events, due to the empty src. Also an abort event if a download was in progress.\n\t\t\t}\n\t\t},\n\t\t_html_load: function() {\n\t\t\t// This function remains to allow the early HTML5 browsers to work, such as Firefox 3.6\n\t\t\t// A change in the W3C spec for the media.load() command means that this is no longer necessary.\n\t\t\t// This command should be removed and actually causes minor undesirable effects on some browsers. Such as loading the whole file and not only the metadata.\n\t\t\tif(this.status.waitForLoad) {\n\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t\tthis.htmlElement.media.load();\n\t\t\t}\n\t\t\tclearTimeout(this.internal.htmlDlyCmdId);\n\t\t},\n\t\t_html_play: function(time) {\n\t\t\tvar self = this,\n\t\t\t\tmedia = this.htmlElement.media;\n\n\t\t\tthis.androidFix.pause = false; // Cancel the pause fix.\n\n\t\t\tthis._html_load(); // Loads if required and clears any delayed commands.\n\n\t\t\t// Setup the Android Fix.\n\t\t\tif(this.androidFix.setMedia) {\n\t\t\t\tthis.androidFix.play = true;\n\t\t\t\tthis.androidFix.time = time;\n\n\t\t\t} else if(!isNaN(time)) {\n\n\t\t\t\t// Attempt to play it, since iOS has been ignoring commands\n\t\t\t\tif(this.internal.cmdsIgnored) {\n\t\t\t\t\tmedia.play();\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\t// !media.seekable is for old HTML5 browsers, like Firefox 3.6.\n\t\t\t\t\t// Checking seekable.length is important for iOS6 to work with setMedia().play(time)\n\t\t\t\t\tif(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) {\n\t\t\t\t\t\tmedia.currentTime = time;\n\t\t\t\t\t\tmedia.play();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow 1;\n\t\t\t\t\t}\n\t\t\t\t} catch(err) {\n\t\t\t\t\tthis.internal.htmlDlyCmdId = setTimeout(function() {\n\t\t\t\t\t\tself.play(time);\n\t\t\t\t\t}, 250);\n\t\t\t\t\treturn; // Cancel execution and wait for the delayed command.\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmedia.play();\n\t\t\t}\n\t\t\tthis._html_checkWaitForPlay();\n\t\t},\n\t\t_html_pause: function(time) {\n\t\t\tvar self = this,\n\t\t\t\tmedia = this.htmlElement.media;\n\n\t\t\tthis.androidFix.play = false; // Cancel the play fix.\n\n\t\t\tif(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation.\n\t\t\t\tthis._html_load(); // Loads if required and clears any delayed commands.\n\t\t\t} else {\n\t\t\t\tclearTimeout(this.internal.htmlDlyCmdId);\n\t\t\t}\n\n\t\t\t// Order of these commands is important for Safari (Win) and IE9. Pause then change currentTime.\n\t\t\tmedia.pause();\n\n\t\t\t// Setup the Android Fix.\n\t\t\tif(this.androidFix.setMedia) {\n\t\t\t\tthis.androidFix.pause = true;\n\t\t\t\tthis.androidFix.time = time;\n\n\t\t\t} else if(!isNaN(time)) {\n\t\t\t\ttry {\n\t\t\t\t\tif(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) {\n\t\t\t\t\t\tmedia.currentTime = time;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow 1;\n\t\t\t\t\t}\n\t\t\t\t} catch(err) {\n\t\t\t\t\tthis.internal.htmlDlyCmdId = setTimeout(function() {\n\t\t\t\t\t\tself.pause(time);\n\t\t\t\t\t}, 250);\n\t\t\t\t\treturn; // Cancel execution and wait for the delayed command.\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button.\n\t\t\t\tthis._html_checkWaitForPlay();\n\t\t\t}\n\t\t},\n\t\t_html_playHead: function(percent) {\n\t\t\tvar self = this,\n\t\t\t\tmedia = this.htmlElement.media;\n\n\t\t\tthis._html_load(); // Loads if required and clears any delayed commands.\n\n\t\t\t// This playHead() method needs a refactor to apply the android fix.\n\n\t\t\ttry {\n\t\t\t\tif(typeof media.seekable === "object" && media.seekable.length > 0) {\n\t\t\t\t\tmedia.currentTime = percent * media.seekable.end(media.seekable.length-1) / 100;\n\t\t\t\t} else if(media.duration > 0 && !isNaN(media.duration)) {\n\t\t\t\t\tmedia.currentTime = percent * media.duration / 100;\n\t\t\t\t} else {\n\t\t\t\t\tthrow "e";\n\t\t\t\t}\n\t\t\t} catch(err) {\n\t\t\t\tthis.internal.htmlDlyCmdId = setTimeout(function() {\n\t\t\t\t\tself.playHead(percent);\n\t\t\t\t}, 250);\n\t\t\t\treturn; // Cancel execution and wait for the delayed command.\n\t\t\t}\n\t\t\tif(!this.status.waitForLoad) {\n\t\t\t\tthis._html_checkWaitForPlay();\n\t\t\t}\n\t\t},\n\t\t_html_checkWaitForPlay: function() {\n\t\t\tif(this.status.waitForPlay) {\n\t\t\t\tthis.status.waitForPlay = false;\n\t\t\t\tif(this.css.jq.videoPlay.length) {\n\t\t\t\t\tthis.css.jq.videoPlay.hide();\n\t\t\t\t}\n\t\t\t\tif(this.status.video) {\n\t\t\t\t\tthis.internal.poster.jq.hide();\n\t\t\t\t\tthis.internal.video.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_html_setProperty: function(property, value) {\n\t\t\tif(this.html.audio.available) {\n\t\t\t\tthis.htmlElement.audio[property] = value;\n\t\t\t}\n\t\t\tif(this.html.video.available) {\n\t\t\t\tthis.htmlElement.video[property] = value;\n\t\t\t}\n\t\t},\n\t\t_aurora_setAudio: function(media) {\n\t\t\tvar self = this; \n\t\t\t\n\t\t\t// Always finds a format due to checks in setMedia()\n\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\tif(self.aurora.support[format] && media[format]) {\n\t\t\t\t\tself.status.src = media[format];\n\t\t\t\t\tself.status.format[format] = true;\n\t\t\t\t\tself.status.formatType = format;\n\t\t\t\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\t\n\t\t\tthis.aurora.player = new AV.Player.fromURL(this.status.src);\n\t\t\tthis._addAuroraEventListeners(this.aurora.player, this.aurora);\n\n\t\t\tif(this.options.preload === \'auto\') {\n\t\t\t\tthis._aurora_load();\n\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t}\n\t\t},\n\t\t_aurora_resetMedia: function() {\n\t\t\tif (this.aurora.player) {\n\t\t\t\tthis.aurora.player.stop();\n\t\t\t}\n\t\t},\n\t\t_aurora_clearMedia: function() {\n\t\t\t// Nothing to clear.\n\t\t},\n\t\t_aurora_load: function() {\n\t\t\tif(this.status.waitForLoad) {\n\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t\tthis.aurora.player.preload();\n\t\t\t}\n\t\t},\n\t\t_aurora_play: function(time) {\n\t\t\tif (!this.status.waitForLoad) {\n\t\t\t\tif (!isNaN(time)) {\n\t\t\t\t\tthis.aurora.player.seek(time);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.aurora.player.playing) {\n\t\t\t\tthis.aurora.player.play();\n\t\t\t}\n\t\t\tthis.status.waitForLoad = false;\n\t\t\tthis._aurora_checkWaitForPlay();\n\t\t\t\n\t\t\t// No event from the player, update UI now.\n\t\t\tthis._updateButtons(true);\n\t\t\tthis._trigger($.jPlayer.event.play);\n\t\t},\n\t\t_aurora_pause: function(time) {\n\t\t\tif (!isNaN(time)) {\n\t\t\t\tthis.aurora.player.seek(time * 1000);\n\t\t\t}\n\t\t\tthis.aurora.player.pause();\n\t\t\t\n\t\t\tif(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button.\n\t\t\t\tthis._aurora_checkWaitForPlay();\n\t\t\t}\n\t\t\t\n\t\t\t// No event from the player, update UI now.\n\t\t\tthis._updateButtons(false);\n\t\t\tthis._trigger($.jPlayer.event.pause);\n\t\t},\n\t\t_aurora_playHead: function(percent) {\n\t\t\tif(this.aurora.player.duration > 0) {\n\t\t\t\t// The seek() sould be in milliseconds, but the only codec that works with seek (aac.js) uses seconds.\n\t\t\t\tthis.aurora.player.seek(percent * this.aurora.player.duration / 100); // Using seconds\n\t\t\t}\n\t\t\t\t\n\t\t\tif(!this.status.waitForLoad) {\n\t\t\t\tthis._aurora_checkWaitForPlay();\n\t\t\t}\n\t\t},\n\t\t_aurora_checkWaitForPlay: function() {\n\t\t\tif(this.status.waitForPlay) {\n\t\t\t\tthis.status.waitForPlay = false;\n\t\t\t}\n\t\t},\n\t\t_aurora_volume: function(v) {\n\t\t\tthis.aurora.player.volume = v * 100;\n\t\t},\n\t\t_aurora_mute: function(m) {\n\t\t\tif (m) {\n\t\t\t\tthis.aurora.properties.lastvolume = this.aurora.player.volume;\n\t\t\t\tthis.aurora.player.volume = 0;\n\t\t\t} else {\n\t\t\t\tthis.aurora.player.volume = this.aurora.properties.lastvolume;\n\t\t\t}\n\t\t\tthis.aurora.properties.muted = m;\n\t\t},\n\t\t_flash_setAudio: function(media) {\n\t\t\tvar self = this;\n\t\t\ttry {\n\t\t\t\t// Always finds a format due to checks in setMedia()\n\t\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\t\tif(self.flash.support[format] && media[format]) {\n\t\t\t\t\t\tswitch (format) {\n\t\t\t\t\t\t\tcase "m4a" :\n\t\t\t\t\t\t\tcase "fla" :\n\t\t\t\t\t\t\t\tself._getMovie().fl_setAudio_m4a(media[format]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase "mp3" :\n\t\t\t\t\t\t\t\tself._getMovie().fl_setAudio_mp3(media[format]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase "rtmpa":\n\t\t\t\t\t\t\t\tself._getMovie().fl_setAudio_rtmp(media[format]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.status.src = media[format];\n\t\t\t\t\t\tself.status.format[format] = true;\n\t\t\t\t\t\tself.status.formatType = format;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.options.preload === \'auto\') {\n\t\t\t\t\tthis._flash_load();\n\t\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t\t}\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t},\n\t\t_flash_setVideo: function(media) {\n\t\t\tvar self = this;\n\t\t\ttry {\n\t\t\t\t// Always finds a format due to checks in setMedia()\n\t\t\t\t$.each(this.formats, function(priority, format) {\n\t\t\t\t\tif(self.flash.support[format] && media[format]) {\n\t\t\t\t\t\tswitch (format) {\n\t\t\t\t\t\t\tcase "m4v" :\n\t\t\t\t\t\t\tcase "flv" :\n\t\t\t\t\t\t\t\tself._getMovie().fl_setVideo_m4v(media[format]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase "rtmpv":\n\t\t\t\t\t\t\t\tself._getMovie().fl_setVideo_rtmp(media[format]);\n\t\t\t\t\t\t\t\tbreak;\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.status.src = media[format];\n\t\t\t\t\t\tself.status.format[format] = true;\n\t\t\t\t\t\tself.status.formatType = format;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(this.options.preload === \'auto\') {\n\t\t\t\t\tthis._flash_load();\n\t\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t\t}\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t},\n\t\t_flash_resetMedia: function() {\n\t\t\tthis.internal.flash.jq.css({\'width\':\'0px\', \'height\':\'0px\'}); // Must do via CSS as setting attr() to zero causes a jQuery error in IE.\n\t\t\tthis._flash_pause(NaN);\n\t\t},\n\t\t_flash_clearMedia: function() {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_clearMedia();\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t},\n\t\t_flash_load: function() {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_load();\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t\tthis.status.waitForLoad = false;\n\t\t},\n\t\t_flash_play: function(time) {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_play(time);\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t\tthis.status.waitForLoad = false;\n\t\t\tthis._flash_checkWaitForPlay();\n\t\t},\n\t\t_flash_pause: function(time) {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_pause(time);\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t\tif(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button.\n\t\t\t\tthis.status.waitForLoad = false;\n\t\t\t\tthis._flash_checkWaitForPlay();\n\t\t\t}\n\t\t},\n\t\t_flash_playHead: function(p) {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_play_head(p);\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t\tif(!this.status.waitForLoad) {\n\t\t\t\tthis._flash_checkWaitForPlay();\n\t\t\t}\n\t\t},\n\t\t_flash_checkWaitForPlay: function() {\n\t\t\tif(this.status.waitForPlay) {\n\t\t\t\tthis.status.waitForPlay = false;\n\t\t\t\tif(this.css.jq.videoPlay.length) {\n\t\t\t\t\tthis.css.jq.videoPlay.hide();\n\t\t\t\t}\n\t\t\t\tif(this.status.video) {\n\t\t\t\t\tthis.internal.poster.jq.hide();\n\t\t\t\t\tthis.internal.flash.jq.css({\'width\': this.status.width, \'height\': this.status.height});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t_flash_volume: function(v) {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_volume(v);\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t},\n\t\t_flash_mute: function(m) {\n\t\t\ttry {\n\t\t\t\tthis._getMovie().fl_mute(m);\n\t\t\t} catch(err) { this._flashError(err); }\n\t\t},\n\t\t_getMovie: function() {\n\t\t\treturn document[this.internal.flash.id];\n\t\t},\n\t\t_getFlashPluginVersion: function() {\n\n\t\t\t// _getFlashPluginVersion() code influenced by:\n\t\t\t// - FlashReplace 1.01: http://code.google.com/p/flashreplace/\n\t\t\t// - SWFObject 2.2: http://code.google.com/p/swfobject/\n\n\t\t\tvar version = 0,\n\t\t\t\tflash;\n\t\t\tif(window.ActiveXObject) {\n\t\t\t\ttry {\n\t\t\t\t\tflash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");\n\t\t\t\t\tif (flash) { // flash will return null when ActiveX is disabled\n\t\t\t\t\t\tvar v = flash.GetVariable("$version");\n\t\t\t\t\t\tif(v) {\n\t\t\t\t\t\t\tv = v.split(" ")[1].split(",");\n\t\t\t\t\t\t\tversion = parseInt(v[0], 10) + "." + parseInt(v[1], 10);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {}\n\t\t\t}\n\t\t\telse if(navigator.plugins && navigator.mimeTypes.length > 0) {\n\t\t\t\tflash = navigator.plugins["Shockwave Flash"];\n\t\t\t\tif(flash) {\n\t\t\t\t\tversion = navigator.plugins["Shockwave Flash"].description.replace(/.*\\s(\\d+\\.\\d+).*/, "$1");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn version * 1; // Converts to a number\n\t\t},\n\t\t_checkForFlash: function (version) {\n\t\t\tvar flashOk = false;\n\t\t\tif(this._getFlashPluginVersion() >= version) {\n\t\t\t\tflashOk = true;\n\t\t\t}\n\t\t\treturn flashOk;\n\t\t},\n\t\t_validString: function(url) {\n\t\t\treturn (url && typeof url === "string"); // Empty strings return false\n\t\t},\n\t\t_limitValue: function(value, min, max) {\n\t\t\treturn (value < min) ? min : ((value > max) ? max : value);\n\t\t},\n\t\t_urlNotSetError: function(context) {\n\t\t\tthis._error( {\n\t\t\t\ttype: $.jPlayer.error.URL_NOT_SET,\n\t\t\t\tcontext: context,\n\t\t\t\tmessage: $.jPlayer.errorMsg.URL_NOT_SET,\n\t\t\t\thint: $.jPlayer.errorHint.URL_NOT_SET\n\t\t\t});\n\t\t},\n\t\t_flashError: function(error) {\n\t\t\tvar errorType;\n\t\t\tif(!this.internal.ready) {\n\t\t\t\terrorType = "FLASH";\n\t\t\t} else {\n\t\t\t\terrorType = "FLASH_DISABLED";\n\t\t\t}\n\t\t\tthis._error( {\n\t\t\t\ttype: $.jPlayer.error[errorType],\n\t\t\t\tcontext: this.internal.flash.swf,\n\t\t\t\tmessage: $.jPlayer.errorMsg[errorType] + error.message,\n\t\t\t\thint: $.jPlayer.errorHint[errorType]\n\t\t\t});\n\t\t\t// Allow the audio player to recover if display:none and then shown again, or with position:fixed on Firefox.\n\t\t\t// This really only affects audio in a media player, as an audio player could easily move the jPlayer element away from such issues.\n\t\t\tthis.internal.flash.jq.css({\'width\':\'1px\', \'height\':\'1px\'});\n\t\t},\n\t\t_error: function(error) {\n\t\t\tthis._trigger($.jPlayer.event.error, error);\n\t\t\tif(this.options.errorAlerts) {\n\t\t\t\tthis._alert("Error!" + (error.message ? "\\n" + error.message : "") + (error.hint ? "\\n" + error.hint : "") + "\\nContext: " + error.context);\n\t\t\t}\n\t\t},\n\t\t_warning: function(warning) {\n\t\t\tthis._trigger($.jPlayer.event.warning, undefined, warning);\n\t\t\tif(this.options.warningAlerts) {\n\t\t\t\tthis._alert("Warning!" + (warning.message ? "\\n" + warning.message : "") + (warning.hint ? "\\n" + warning.hint : "") + "\\nContext: " + warning.context);\n\t\t\t}\n\t\t},\n\t\t_alert: function(message) {\n\t\t\tvar msg = "jPlayer " + this.version.script + " : id=\'" + this.internal.self.id +"\' : " + message;\n\t\t\tif(!this.options.consoleAlerts) {\n\t\t\t\talert(msg);\n\t\t\t} else if(window.console && window.console.log) {\n\t\t\t\twindow.console.log(msg);\n\t\t\t}\n\t\t},\n\t\t_emulateHtmlBridge: function() {\n\t\t\tvar self = this;\n\n\t\t\t// Emulate methods on jPlayer\'s DOM element.\n\t\t\t$.each( $.jPlayer.emulateMethods.split(/\\s+/g), function(i, name) {\n\t\t\t\tself.internal.domNode[name] = function(arg) {\n\t\t\t\t\tself[name](arg);\n\t\t\t\t};\n\n\t\t\t});\n\n\t\t\t// Bubble jPlayer events to its DOM element.\n\t\t\t$.each($.jPlayer.event, function(eventName,eventType) {\n\t\t\t\tvar nativeEvent = true;\n\t\t\t\t$.each( $.jPlayer.reservedEvent.split(/\\s+/g), function(i, name) {\n\t\t\t\t\tif(name === eventName) {\n\t\t\t\t\t\tnativeEvent = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(nativeEvent) {\n\t\t\t\t\tself.element.bind(eventType + ".jPlayer.jPlayerHtml", function() { // With .jPlayer & .jPlayerHtml namespaces.\n\t\t\t\t\t\tself._emulateHtmlUpdate();\n\t\t\t\t\t\tvar domEvent = document.createEvent("Event");\n\t\t\t\t\t\tdomEvent.initEvent(eventName, false, true);\n\t\t\t\t\t\tself.internal.domNode.dispatchEvent(domEvent);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// The error event would require a special case\n\t\t\t});\n\n\t\t\t// IE9 has a readyState property on all elements. The document should have it, but all (except media) elements inherit it in IE9. This conflicts with Popcorn, which polls the readyState.\n\t\t},\n\t\t_emulateHtmlUpdate: function() {\n\t\t\tvar self = this;\n\n\t\t\t$.each( $.jPlayer.emulateStatus.split(/\\s+/g), function(i, name) {\n\t\t\t\tself.internal.domNode[name] = self.status[name];\n\t\t\t});\n\t\t\t$.each( $.jPlayer.emulateOptions.split(/\\s+/g), function(i, name) {\n\t\t\t\tself.internal.domNode[name] = self.options[name];\n\t\t\t});\n\t\t},\n\t\t_destroyHtmlBridge: function() {\n\t\t\tvar self = this;\n\n\t\t\t// Bridge event handlers are also removed by destroy() through .jPlayer namespace.\n\t\t\tthis.element.unbind(".jPlayerHtml"); // Remove all event handlers created by the jPlayer bridge. So you can change the emulateHtml option.\n\n\t\t\t// Remove the methods and properties\n\t\t\tvar emulated = $.jPlayer.emulateMethods + " " + $.jPlayer.emulateStatus + " " + $.jPlayer.emulateOptions;\n\t\t\t$.each( emulated.split(/\\s+/g), function(i, name) {\n\t\t\t\tdelete self.internal.domNode[name];\n\t\t\t});\n\t\t}\n\t};\n\n\t$.jPlayer.error = {\n\t\tFLASH: "e_flash",\n\t\tFLASH_DISABLED: "e_flash_disabled",\n\t\tNO_SOLUTION: "e_no_solution",\n\t\tNO_SUPPORT: "e_no_support",\n\t\tURL: "e_url",\n\t\tURL_NOT_SET: "e_url_not_set",\n\t\tVERSION: "e_version"\n\t};\n\n\t$.jPlayer.errorMsg = {\n\t\tFLASH: "jPlayer\'s Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ", // Used in: _flashError()\n\t\tFLASH_DISABLED: "jPlayer\'s Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ", // Used in: _flashError()\n\t\tNO_SOLUTION: "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.", // Used in: _init()\n\t\tNO_SUPPORT: "It is not possible to play any media format provided in setMedia() on this browser using your current options.", // Used in: setMedia()\n\t\tURL: "Media URL could not be loaded.", // Used in: jPlayerFlashEvent() and _addHtmlEventListeners()\n\t\tURL_NOT_SET: "Attempt to issue media playback commands, while no media url is set.", // Used in: load(), play(), pause(), stop() and playHead()\n\t\tVERSION: "jPlayer " + $.jPlayer.prototype.version.script + " needs Jplayer.swf version " + $.jPlayer.prototype.version.needFlash + " but found " // Used in: jPlayerReady()\n\t};\n\n\t$.jPlayer.errorHint = {\n\t\tFLASH: "Check your swfPath option and that Jplayer.swf is there.",\n\t\tFLASH_DISABLED: "Check that you have not display:none; the jPlayer entity or any ancestor.",\n\t\tNO_SOLUTION: "Review the jPlayer options: support and supplied.",\n\t\tNO_SUPPORT: "Video or audio formats defined in the supplied option are missing.",\n\t\tURL: "Check media URL is valid.",\n\t\tURL_NOT_SET: "Use setMedia() to set the media URL.",\n\t\tVERSION: "Update jPlayer files."\n\t};\n\n\t$.jPlayer.warning = {\n\t\tCSS_SELECTOR_COUNT: "e_css_selector_count",\n\t\tCSS_SELECTOR_METHOD: "e_css_selector_method",\n\t\tCSS_SELECTOR_STRING: "e_css_selector_string",\n\t\tOPTION_KEY: "e_option_key"\n\t};\n\n\t$.jPlayer.warningMsg = {\n\t\tCSS_SELECTOR_COUNT: "The number of css selectors found did not equal one: ",\n\t\tCSS_SELECTOR_METHOD: "The methodName given in jPlayer(\'cssSelector\') is not a valid jPlayer method.",\n\t\tCSS_SELECTOR_STRING: "The methodCssSelector given in jPlayer(\'cssSelector\') is not a String or is empty.",\n\t\tOPTION_KEY: "The option requested in jPlayer(\'option\') is undefined."\n\t};\n\n\t$.jPlayer.warningHint = {\n\t\tCSS_SELECTOR_COUNT: "Check your css selector and the ancestor.",\n\t\tCSS_SELECTOR_METHOD: "Check your method name.",\n\t\tCSS_SELECTOR_STRING: "Check your css selector is a string.",\n\t\tOPTION_KEY: "Check your option name."\n\t};\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/jplayer/dist/jplayer/jquery.jplayer.js\n ** module id = 592\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./~/jplayer/dist/jplayer/jquery.jplayer.js?'); },,,,,,,,,,,,,,function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="paywall-existing-account">\\n\t<sign-in>\\n\t<h1 class="margin-bottom-normal font-light line-height-very-tight">You already have an account.</h1>\\n\t<div class="font-size-default font-weight-normal margin-bottom-normal line-height-tight sign-in-error hide">\\n\t\t<span class="flex-row align-items-center">\\n\t\t\t<i class="icon icon-alert icon-lg primary-color mrm"></i>\\n\t\t\t<span>You have entered an invalid email and password combination.<br/>Please try again or <a href="/register" class="primary-color" js-target="show-register">register an account.</a></span>\\n\t\t</span>\\n\t</div>\\n\t<div class="font-size-large font-bold margin-bottom-normal line-height-tight register-info">\\n\t\t<span>You have an account registered with <span class="text-gray">\' +\n((__t = (emailAddress)) == null ? \'\' : __t) +\n\'</span>. <br/>Please enter your password.</span>\\n\t</div>\\n\t<form>\\n\t\t<div class="row">\\n\t\t\t<div class="small-12 medium-7 column">\\n\t\t\t\t<div class="field-container">\\n\t\t\t\t\t<input id="emailaddress" type="hidden" name="emailAddress" placeholder="EMAIL" js-target="username-input" value="\' +\n((__t = (emailAddress)) == null ? \'\' : __t) +\n\'">\\n\t\t\t\t\t<input id="password" type="password" name="password" placeholder="PASSWORD" js-target="password-input">\\n\t\t\t\t</div>\\n\t\t\t\t<aside class="login-form-pending pvm small-12 is-centered">\\n\t\t\t\t\t<div class="button--gray expand mbs">Signing In\\n\t\t\t\t\t\t<div class="loading--dark mts is-centered">\\n\t\t\t\t\t\t\t<div class="pie rotation"></div>\\n\t\t\t\t\t\t\t<div class="pie filler"></div>\\n\t\t\t\t\t\t\t<div class="mask"></div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</aside>\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-12 large-6 column">\t\t\t\t\t\t\\n\t\t\t\t\t\t<button class="button alt-tight mbn expand" js-target="submit-sign-in">SIGN IN AND READ</button> \\n\t\t\t\t\t</div>\t\t\t\t\t\\n\t\t\t\t\t<div class="small-12 large-6 column text-center large-text-right margin-top-link">\\n\t\t\t\t\t\t<a href="#" class="link--black font-size-default" js-target="show-forgot-password">Forgot password?</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t</form>\\n\t</sign-in>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/existing-account.html\n ** module id = 606\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/existing-account.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="paywall-forgot-password-success">\\n\t<h1 class="margin-bottom-normal font-light line-height-very-tight">Forgot your password?</h1>\\n\t<div class="font-size-large font-bold margin-bottom-normal line-height-tight">\t\t\t\\n\t\t<span>Instructions to set your password have been sent to <span class="text-gray">\' +\n((__t = (emailAddress)) == null ? \'\' : __t) +\n\'</span><br/><span class="primary-color is-inline" js-target="show-sign-in">Sign in here.</span></span>\t\t\t\\n\t</div>\t\t\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/forgot-password-success.html\n ** module id = 607\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/forgot-password-success.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="paywall-forgot-password">\\n\t<h1 class="margin-bottom-normal font-light line-height-very-tight">Forgot your password?</h1>\\n\t<form>\\n\t\t<div class="row">\\n\t\t\t<div class="small-12 medium-7 column">\\n\t\t\t\t<div class="font-size-large font-bold margin-bottom-normal line-height-tight">\t\t\t\\n\t\t\t\t\t<span>Enter the email address used to create your account to receive a password reset link.</span>\t\t\t\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t\t<div class="row">\\n\t\t\t<div class="small-12 column">\\n\t\t\t\t<div class="font-size-default font-weight-normal margin-bottom-normal line-height-tight hide" js-target="error-box">\\n\t\t\t\t\t<span class="flex-row align-items-center">\\n\t\t\t\t\t\t<i class="icon icon-alert icon-lg primary-color mrm"></i>\\n\t\t\t\t\t\t<span js-target="error-box-message"></span> \\n\t\t\t\t\t</span>\t\t\t\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\\n\t\t<div class="row">\\n\t\t\t<div class="small-12 medium-7 column">\\n\t\t\t\t<div class="field-container"> \\n\t\t\t\t\t<input id="emailAddress" type="text" name="emailAddress" placeholder="EMAIL" required=required>\\n\t\t\t\t</div>\t\t\t\t\t\t\t\t\t\t\t\\n\t\t\t\t<div class="row">\\n\t\t\t\t\t<div class="small-12 large-6 column">\\n\t\t\t\t\t\t<button class="button alt-tight mbn expand" js-target="verify-forgot-password">SEND</button> \t\t\t\t\t\t\t\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div class="small-12 large-6 column text-center large-text-right margin-top-link">\\n\t\t\t\t\t\t<a href="#" class="link--black font-size-default" js-target="show-sign-in">Cancel</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\t\t\t\t\t\\n\t\t\t</div>\t\t\t\\n\t\t</div>\t\t\t\\n\t</form>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/forgot-password.html\n ** module id = 608\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/forgot-password.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="paywall-register">\\n\t\t<h1 class="margin-bottom-normal font-light line-height-very-tight">Subscribe now for unlimited access</h1>\\n\t <div class="small-12 medium-7">\\n\t\t\t<div class="small-12 large-6 left hasmargin">\\n\t\t\t\t<button class="button alt-tight mbn expand" type="button" js-target="send-subscribe">SUBSCRIBE</button>\\n\t\t\t</div>\\n\t\t</div>\\n\t\t<h1 class="margin-bottom-normal font-light line-height-very-tight">Create an account to read this article</h1>\\n\t<div class="font-size-large font-bold margin-bottom-normal">Already registered?<a href="/sign-in" class="primary-color" js-target="show-sign-in"> Sign in.</a></div>\\n\t<form js-target="paywall-register-form">\\n\t\t<div class="font-size-default font-weight-normal margin-bottom-normal line-height-tight hide" js-target="error-box">\\n\t\t\t<span class="flex-row align-items-center">\\n\t\t\t\t<i class="icon icon-alert icon-lg primary-color mrm"></i>\\n\t\t\t\t<span js-target="error-box-message"></span>\\n\t\t\t</span>\\n\t\t</div>\\n\t\t<div class="small-12 medium-7">\\n\t\t\t<div class="field-container">\\n\t\t\t\t<input id="first-name" name="firstName" type="text" placeholder="FIRST NAME" js-target="form-input" required="">\\n\t\t\t\t<input id="last-name" name="lastName" type="text" placeholder="LAST NAME" js-target="form-input" required="">\\n\t\t\t\t<input id="emailaddress" type="text" name="emailAddress" placeholder="EMAIL" js-target="form-input" required="">\\n\t\t\t\t<input id="password" type="password" name="password" placeholder="PASSWORD (MINIMUM OF 8 CHARACTERS)" js-target="form-input" required="">\\n\t\t\t</div>\\n\t\t\t<label class="font-size-small line-height-tight margin-top-normal margin-bottom-normal" js-target="promotional-optin">\\n\t\t\t\t<span class="dom-lang hide">By registering, you agree to receive occasional emails from HBR. You may unsubscribe at any time.</span>\\n\t\t\t\t<span class="intl-lang hide" class="is-inline">\\n\t\t\t\t\t<span class="flex-row">\\n\t\t\t\t\t\t<span>\\n\t\t\t\t\t\t\t<input id="enroll" name="enroll" type="checkbox" class="mrs mbn pbn" value="on" checked="">\\n\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t<span>I agree to receive occasional emails from HBR. I may unsubscribe at any time.</span>\\n\t\t\t\t\t</span>\\n\t\t\t\t</span>\\n\t\t\t</label>\\n\t\t\t<div class="small-12 large-6 left">\\n\t\t\t\t<button class="button alt-tight mbn expand" js-target="register-paywall-user" type="submit">CREATE AN ACCOUNT</button>\\n\t\t\t</div>\\n\t\t\t<div class="small-12 large-6 small-text-center large-text-right right margin-top-link">\\n\t\t\t\t<a href="/corporate/privacy-policy" class="link--black font-size-default">View privacy policy</a>\\n\t\t\t</div>\\n\t\t</div>\\n\t</form>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/register-form.html\n ** module id = 609\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/register-form.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\', __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, \'\') }\nwith (obj) {\n__p += \'<div js-target="paywall-success">\\n\t<div class="success-overlay flex-row justify-center align-items-center width-100pct fixed">\\n\t\t<div class="success-box">\\n\t\t\t<i class="icon icon-times icon-close absolute right" js-target="close-article-paywall"></i>\t\t\\n\t\t\t<div class="success-box-info text-center">\\n\t\t\t\t<svg class="svg-ie icon-success mt-large2"><use xlink:href="/resources/css/images/icons.svg#user-check"></use></svg>\\n\t\t\t\t<h2 class="font-bold \';\n if (user.isSubscriber()) { ;\n__p += \'mbs\';\n } else { ;\n__p += \'mbn\';\n } ;\n__p += \'">Thanks, \' +\n((__t = (user.getFirstName())) == null ? \'\' : __t) +\n\'.</h2>\\n\t\t\t\t\';\n if (user.isSubscriber()) { ;\n__p += \'\\n\t\t\t\t<h2 class="font-light mbl">You\\\'re now registered <br class="show-for-small"> as a subscriber.</h2>\\n\t\t\t\t\';\n } ;\n__p += \'\\n\t\t\t\t<h2 class="font-light mb-large2">Enjoy the article!</h2>\\n\t\t\t</div>\\n\t\t</div>\\n\t</div>\\n</div>\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/registration-success.html\n ** module id = 610\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/registration-success.html?./web_loaders/template.loader.js')},function(module,exports){eval('module.exports = function (obj) {\nobj || (obj = {});\nvar __t, __p = \'\';\nwith (obj) {\n__p += \'<div class="paywall-sign-in">\\n\t<sign-in>\t\\n\t<h1 class="font-light line-height-very-tight mbl">Sign in to read this article</h1>\\n\t<div class="font-size-large font-bold margin-bottom-normal register-info">Don\\\'t have an account yet?<a href="/register" class="primary-color" js-target="show-register"> Register here.</a></div>\\n\t<div class="font-size-default font-weight-normal margin-bottom-normal line-height-tight sign-in-error hide" js-target="error-box">\\n\t\t<span class="flex-row align-items-center">\\n\t\t\t<i class="icon icon-alert icon-lg primary-color mrm"></i>\\n\t\t\t<span>You have entered an invalid email and password combination.<br/>Please try again or <a href="/register" class="primary-color" js-target="show-register">register an account.</a></span> \\n\t\t</span>\t\t\t\\n\t</div>\\n\t<form>\\n\t\t<div class="row">\\n\t\t\t<div class="small-12 medium-7 column">\\n\t\t\t\t<div class="field-container"> \\n\t\t\t\t\t<input id="emailaddress" type="text" name="emailAddress" placeholder="EMAIL" js-target="username-input" value="\' +\n((__t = (emailAddress)) == null ? \'\' : __t) +\n\'">\\n\t\t\t\t\t<input id="password" type="password" name="password" placeholder="PASSWORD" js-target="password-input">\\n\t\t\t\t</div>\\n\t\t\t\t<aside class="login-form-pending pvm small-12 is-centered">\\n\t\t\t\t\t<div class="button--gray expand mbs">Signing In\\n\t\t\t\t\t\t<div class="loading--dark mts is-centered">\\n\t\t\t\t\t\t\t<div class="pie rotation"></div>\\n\t\t\t\t\t\t\t<div class="pie filler"></div>\\n\t\t\t\t\t\t\t<div class="mask"></div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</aside>\\n\t\t\t\t<div class="row mbs">\\n\t\t\t\t\t<div class="small-12 large-6 column">\\n\t\t\t\t\t\t<button class="button alt-tight mbn expand" js-target="submit-sign-in">SIGN IN AND READ</button> \\n\t\t\t\t\t</div>\t\t\t\t\t\\n\t\t\t\t\t<div class="small-12 large-6 column text-center large-text-right margin-top-link">\\n\t\t\t\t\t\t<a href="#" class="link--black font-size-default" js-target="show-forgot-password">Forgot password?</a>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\t\t\t</div>\\n\t\t</div>\t\t\\n\t</form>\\n\t</sign-in>\\n</div>\\n\';\n\n}\nreturn __p\n}\n\n/*****************\n ** WEBPACK FOOTER\n ** ./web_loaders/template.loader.js!./js/components/article-paywall/templates/sign-in-form.html\n ** module id = 611\n ** module chunks = 1\n **/\n//# sourceURL=webpack:///./js/components/article-paywall/templates/sign-in-form.html?./web_loaders/template.loader.js')}]);