text: define("core/core/dataRequirementsChecker", ["utils", "lodash"], function (a, b) {
      "use strict";
      function i(a, b, c) {
          var d = null, e = null;
          return c.dataQuery && (d = a.getDataByQuery(c.dataQuery, b)), c.propertyQuery && (e = a.getDataByQuery(c.propertyQuery, b, "component_properties")), {data: d, properties: e, skin: c.skin, id: c.id}
      }
  
      function j(a, d, g, k) {
          var l = [], m = i(a, g, k), n = b.has(f, k.componentType);
          n && (h[k.componentType] = h[k.componentType] || [], h[k.componentType].push(m));
          var o = e[k.componentType];
          o && (l = l.concat(o(a, m, d)));
          var p = c.getChildrenData(k, a);
          return l = b.reduce(p, function (b, c) {
              return b.concat(j(a, d, g, c))
          }, l)
      }
  
      function k(a, b) {
          if (!b.pageItemId)return[];
          var c = a.pagesData[d], f = c.data.document_data[b.pageItemId];
          if (!f || "PermaLink" !== f.type)return[];
          var g = c.data.document_data[f.dataItemRef.replace(/^#/, "")];
          if (!g)return[];
          var h = c.data.component_properties[f.dataItemRef.replace(/^#/, "")], i = e["Zoom:" + g.type];
          if (i) {
              var j = {data: g, properties: h};
              return i(a, j, b)
          }
          return[]
      }
  
      function l(a, c) {
          var d = [];
          return b.each(h, function (b, e) {
              var g = f[e];
              d = d.concat(g(a, b, c))
          }), d
      }
  
      function m(a, c) {
          var d = [];
          return b.each(g, function (b, e) {
              var f = a.getClientSpecMapEntryByAppDefinitionId(e);
              f && (d = d.concat(b(a, f, c)))
          }), d
      }
  
      function n(a, b) {
          var c = [];
          return h = {}, c = c.concat(j(a, b, d, a.pagesData[d].structure)), c = c.concat(j(a, b, b.pageId, a.pagesData[b.pageId].structure)), c = c.concat(k(a, b)), c = c.concat(l(a, b)), c = c.concat(m(a, b))
      }
  
      function o(a) {
          return[
              {urls: [a.serviceTopology.scriptsLocationMap["santa-versions"] + "/main-r.js"], destination: ["santaBase"], transformFunc: function (b) {
                  b = b.replace(/^.*reactVersions\s*\=\s*\{/m, "{"), b = b.split("}")[0] + "}";
                  var c = JSON.parse(b), d = a.serviceTopology.scriptsDomainUrl || a.serviceTopology.staticServerUrl;
                  return a.santaBase = d + "services/santa/" + c.base + "/", a.santaBase
              }}
          ]
      }
  
      var c = a.dataUtils, d = "masterPage", e = {}, f = {}, g = {}, h = {};
      return{getNeededRequests: function (b, c) {
          var d = [];
          return b.santaBase ? d = b.pagesData[c.pageId] ? d.concat(n(b, c)) : d.concat(a.pageRequests(b, c)) : o(b)
      }, registerCheckerForCompType: function (a, b) {
          e[a] = b
      }, registerCheckerForAllCompsOfType: function (a, b) {
          f[a] = b
      }, registerCheckerForAppDefId: function (a, b) {
          g[a] = b
      }}
  }),
  define("core/siteRender/styleCollector", ["lodash", "utils", "skins"], function (a, b, c) {
      "use strict";
      function f(c, g, h, i, j, k) {
          var n, l = c.styleId && g[c.styleId] && d[g[c.styleId].skin], m = c.skin && d[c.skin];
          n = l ? c.styleId : m ? c.skin : "", n && !i[n] && (i[n] = "s" + a.size(i)), c.componentType && e[c.componentType] && e[c.componentType](c, g, h, i, j);
          var o = b.dataUtils.getChildrenData(c, h, k);
          a.map(o, function (a) {
              a && f(a, g, h, i, j)
          })
      }
  
      function g(a, b) {
          e[a] = b
      }
  
      var d = c.skins, e = {};
      return{collectStyleIdsFromStructure: f, registerClassBasedStyleCollector: g}
  }),
  define("core/fonts/FontRuler", ["react"], function (a) {
      "use strict";
      var b = a.createClass({displayName: "FontRuler", handleFontResize: function () {
          if (!this.triggeredResize) {
              var a = this.refs.content.getDOMNode();
              (a.offsetWidth !== this.contentNodeOrigSize.width || a.offsetHeight !== this.contentNodeOrigSize.height) && (this.triggeredResize = !0, this.contentNodeOrigSize.width = a.offsetWidth, this.contentNodeOrigSize.height = a.offsetHeight, this.props.onLoadCallback())
          }
      }, componentDidMount: function () {
          this.triggeredResize = !1;
          var a = this.refs.wrapper.getDOMNode(), b = this.refs.content.getDOMNode(), c = this.refs.innerContent.getDOMNode(), d = this.refs.innerWrapper.getDOMNode(), e = {width: a.offsetWidth, height: a.offsetHeight};
          a.style.width = e.width - 1 + "px", a.style.height = e.height - 1 + "px", a.scrollLeft = a.scrollWidth - a.clientWidth, a.scrollTop = a.scrollHeight - a.clientHeight, c.style.width = e.width + 1 + "px", c.style.height = e.height + 1 + "px", d.scrollLeft = d.scrollWidth - d.clientWidth, d.scrollTop = d.scrollHeight - d.clientHeight, this.contentNodeOrigSize = {width: b.offsetWidth, height: b.offsetHeight}, b.style.fontFamily = this.props.fontFamily + ", serif"
      }, render: function () {
          var b = a.DOM.div({ref: "innerContent", refInParent: "innerContent"}), c = a.DOM.div({ref: "innerWrapper", refInParent: "innerWrapper", onScroll: this.handleFontResize, style: {position: "absolute", width: "100%", height: "100%", overflow: "hidden"}}, b), d = a.DOM.div({ref: "content", refInParent: "content", style: {position: "relative", whiteSpace: "nowrap", fontFamily: "serif"}}, c, "@#$%%^&*~IAO"), e = a.DOM.div({ref: "wrapper", refInParent: "wrapper", onScroll: this.handleFontResize, style: {position: "fixed", overflow: "hidden", fontSize: 120, left: -2e3, visibility: "hidden"}}, d);
          return e
      }});
      return b
  }),
  define("core/fonts/FontRulersContainer", ["react", "lodash", "core/fonts/FontRuler"], function (a, b, c) {
      "use strict";
      var d = a.createFactory(c), e = a.createClass({displayName: "FontRulersContainer", getInitialState: function () {
          return{loadedFonts: []}
      }, render: function () {
          var c = this.props.fontsList, e = [
              {key: "fontRulersContainer"}
          ], f = this.props.onLoadCallback;
          return b.forEach(c, function (a) {
              b.contains(this.state.loadedFonts, a) || e.push(d({key: a, fontFamily: a, onLoadCallback: function () {
                  var b = this.state.loadedFonts.concat(a);
                  this.setState({loadedFonts: b}), f()
              }.bind(this)}))
          }, this), a.DOM.div.apply(void 0, e)
      }});
      return e
  }),
  define("core/fonts/fontsLoader", ["lodash", "react", "fonts", "core/fonts/FontRulersContainer"], function (a, b, c, d) {
      "use strict";
      function f(a, b) {
          return e({fontsList: a, onLoadCallback: b})
      }
  
      function g(b, d) {
          var e = c.fontUtils.getPageUsedFontsList(b, b.getCurrentPageId()), f = c.fontUtils.getPageUsedFontsList(b, "masterPage");
          return this.getRulersNode(a.union(e, f), d)
      }
  
      var e = b.createFactory(d);
      return{getRulersNode: f, getFontsLoaderNode: g}
  }),
  define("core/siteRender/WixThemeReact", ["zepto", "lodash", "react", "skins", "fonts", "utils", "core/fonts/fontsLoader"], function (a, b, c, d, e, f, g) {
      "use strict";
      function m(a) {
          var b = window.cssfolder + "/mobileIEFix.css";
          return[c.DOM.link({rel: "stylesheet", type: "text/css", href: b})]
      }
  
      function n(a, d, e) {
          return e && (d = b.map(d.trim().split("\n"),function (a) {
              var c = a.split("{"), d = c[0].split(",");
              return c[0] = b.map(d, function (a) {
                  return e + " " + a
              }), c.join("{")
          }, this).join("\n")), c.DOM.style({type: "text/css", key: a, dangerouslySetInnerHTML: {__html: d || ""}})
      }
  
      function o(a, b, c) {
          var d = "";
          d = f.stringUtils.startsWith(a, "#") ? c + ":" + a + ";" : c + ":rgba(" + a + ");";
          var e = "." + b + " {" + d + "}";
          return e
      }
  
      function p(a, c) {
          var d = b.map(a.THEME_DATA.font, function (b, d) {
              var e = ".font_" + d + " {font:" + j.fontToCSSWithColor(b, a.THEME_DATA) + "}";
              return n("font" + d, e, c)
          }), e = n("color", b.map(a.THEME_DATA.color,function (a, b) {
              return o(a, "color_" + b, "color") + "\n" + o(a, "backcolor_" + b, "background-color")
          }).join("\n"), c);
          return d.push(e), d
      }
  
      function q(a, b, c, d, e, f) {
          var g = d && d.style && d.style.properties || {}, h = k.createSkinCss(b, g, a.THEME_DATA, c, e);
          return n(c, h, f)
      }
  
      function r(a, c, d, e) {
          var f = [];
          return b.forEach(b.keys(c), function (b) {
              var g = c[b], h = a[b], i = l[h ? h.skin : b];
              i && f.push(q(a, i, g, h, d, e))
          }, this), f.push(q(a, l["wysiwyg.viewer.skins.wixadsskins.WixAdsWebSkin"], "wixAds", null, d, e)), f.push(q(a, l["skins.viewer.deadcomp.DeadCompPublicSkin"], "deadComp", null, d, e)), f.push(q(a, l["wysiwyg.viewer.skins.siteBackgroundSkin"], "siteBackground", null, d, e)), f.push(q(a, l["wysiwyg.viewer.skins.PasswordLoginSkin"], "loginDialog", null, d, e)), f
      }
  
      function s(a, b) {
          var d = (b ? b + " " : "") + "." + h + " {position:absolute; display: none; z-index: " + a + "}";
          return[c.DOM.style({type: "text/css", key: "testStyle"}, d), c.DOM.div({ref: h, className: h})]
      }
  
      var h = "testStyles", i = e.fontUtils, j = e.fontCss, k = d.skinsRenderer, l = d.skins;
      return c.createClass({displayName: "WixThemeReact", getInitialState: function () {
          return this.testNodeIndex = 0, this.waitingForStylesReady = !1, this.registeredUsedFonts = [], null
      }, render: function () {
          this.testNodeIndex = (this.testNodeIndex + 1) % 100;
          var a = [
              {key: "theme"}
          ], b = this.props.themeData, d = this.props.siteData, e = this.props.masterPage.data.document_data.SITE_STRUCTURE;
          return b.THEME_DATA && b.THEME_DATA.font && (this.registerSkinsFontsUsage(), a = a.concat(d.isMobileView() ? null : m(d), p(b, this.props.styleRoot), r(b, this.props.loadedStyles, this.props.siteData.mobile, this.props.styleRoot), s(this.testNodeIndex, this.props.styleRoot), this.getFontsCssLinks(d, e), g.getFontsLoaderNode(d, this.waitForStylesReady))), c.DOM.div.apply(void 0, a)
      }, componentWillUnmount: function () {
          this.afterStylesReadyCallback = null, this.waitingForStylesReady = !1
      }, registerStylesReadyCallback: function (a) {
          this.afterStylesReadyCallback = a
      }, initWaitForStylesReady: function () {
          this.waitingForStylesReady || this.waitForStylesReady()
      }, waitForStylesReady: function () {
          if (this.isMounted()) {
              var b = this.refs[h].getDOMNode();
              this.waitingForStylesReady = !0;
              var c = "function" == typeof this.afterStylesReadyCallback;
              a(b).css("z-index") == this.testNodeIndex && c ? (this.waitingForStylesReady = !1, this.afterStylesReadyCallback()) : f.animationFrame.request(this.waitForStylesReady)
          }
      }, getFontsCssLinks: function () {
          var a = [], d = this.props.siteData;
          "WixSite" === d.rendererModel.siteInfo.documentType && a.push(c.DOM.link({rel: "stylesheet", key: "fontFace", type: "text/css", href: d.serviceTopology.publicStaticsUrl + "/css/Helvetica/fontFace.css"}));
          var e = i.getWixStoredFontsCssUrlsWithParams(d.santaBase, this.getCharacterSets());
          return b.forEach(e, function (b) {
              a.push(c.DOM.link({rel: "stylesheet", type: "text/css", href: b, key: b}))
          }), a = a.concat(this.getGoogleFontsLinks())
      }, getGoogleFontsLinks: function () {
          this.loadedGoogleFontsLinks = this.loadedGoogleFontsLinks || [], this.loadedGoogleFonts = this.loadedGoogleFonts || [];
          var a = this.props.siteData, d = b(i.getPageFontsMetaData(a, a.getCurrentPageId())).union(i.getPageFontsMetaData(a, "masterPage")).union(i.getMetadata(this.skinsFonts)).filter({provider: "google"}), e = d.difference(this.loadedGoogleFonts).valueOf();
          this.loadedGoogleFonts = d.union(this.loadedGoogleFonts).valueOf();
          var f = i.getGoogleFontsUrl(e, this.getCharacterSets());
          return f && this.loadedGoogleFontsLinks.push(c.DOM.link({key: "gf_" + this.loadedGoogleFontsLinks.length, rel: "stylesheet", type: "text/css", href: f})), this.loadedGoogleFontsLinks
      }, registerSkinFontsUsage: function (a, c, d) {
          if (this.registerInnerSkinFontsUsage(a, c, d), c.params) {
              var e = b.keys(b.omit(c.params, function (a) {
                  return"FONT" !== a
              }));
              d && d.style && d.style.propertiesSource && b.forEach(e, function (b) {
                  var c = "", e = d.style.propertiesSource[b], f = d.style.properties[b];
                  "value" === e ? c = i.parseFontStr(f).family.toLowerCase() : "theme" === e && (c = i.getFontFamilyByStyleId(a, f)), c && this.registerSkinFontUsage(c)
              }, this)
          }
      }, registerInnerSkinFontsUsage: function (a, c, d) {
          c.exports && b.each(c.exports, function (b) {
              b.skin && l[b.skin] && this.registerSkinFontsUsage(a, l[b.skin], d)
          }, this)
      }, registerSkinsFontsUsage: function () {
          var a = this.props.themeData;
          b.forEach(b.keys(this.props.loadedStyles), function (b) {
              var c = a[b], d = l[c ? c.skin : b];
              d && this.registerSkinFontsUsage(a.THEME_DATA, d, c)
          }, this)
      }, registerSkinFontUsage: function (a) {
          this.skinsFonts = b.union(this.skinsFonts, [a])
      }, getCharacterSets: function () {
          return this.props.masterPage.data.document_data.SITE_STRUCTURE.characterSets || ["latin"]
      }})
  }),
  define("core/siteRender/compFactory", ["react"], function (a) {
      "use strict";
      var b = {}, c = {};
      return{getCompClass: function (d) {
          var e = c[d];
          if (e)return e;
          var f = b[d];
          if (!f)return void console.error("Component not implemented: [" + d + "]");
          var g = a.createClass(f);
          return e = a.createFactory(g), c[d] = e, e
      }, invalidate: function (a) {
          delete c[a]
      }, extend: function (a, c) {
          if (!b.hasOwnProperty(a))return void console.error("Trying to extend component [" + a + "] but the component is not defined");
          var d = b[a];
          d.mixins = [c].concat(d.mixins || [])
      }, register: function (a, c) {
          return b[a] = c, this
      }}
  }), define("core/util/extraPageStructureRegistry", [], function () {
      "use strict";
      var a = {ImageZoom: function (a) {
          return{id: "imageZoomComp", skin: "wysiwyg.viewer.skins.MediaZoomSkin", componentType: "wysiwyg.viewer.components.MediaZoom", styleId: "zoom", dataQuery: "#" + a}
      }};
      return a
  }), define("core/core/componentPropsBuilder", ["lodash", "utils"], function (a, b) {
      "use strict";
      function c(a, b, c) {
          return a && Math.max(b, Math.min(c, a))
      }
  
      function d(a, b) {
          return a.styleId && b.getAllTheme()[a.styleId] ? b.getAllTheme()[a.styleId].skin : a.skin
      }
  
      function e(d) {
          var e = d.layout, f = {position: e && e.position || "absolute"};
          if (e) {
              if (e.fixedPosition && (f.position = "fixed"), e.rotationInDegrees) {
                  var g = b.style.getPrefixedTransform();
                  f[g] = "rotate(" + e.rotationInDegrees + "deg) translateZ(0)"
              }
              a.extend(f, {top: e.y, height: c(e.height, b.siteConstants.COMP_SIZE.MIN_HEIGHT, b.siteConstants.COMP_SIZE.MAX_HEIGHT), width: c(e.width, b.siteConstants.COMP_SIZE.MIN_WIDTH, b.siteConstants.COMP_SIZE.MAX_WIDTH), left: e.x})
          }
          return f
      }
  
      function f(a, b, c, d) {
          b.dataQuery && (a.compData = c.getDataByQuery(b.dataQuery, d, "document_data")), b.propertyQuery && (a.compProp = c.getDataByQuery(b.propertyQuery, d, "component_properties")), a.compProp = a.compProp || {}
      }
  
      function g(a, b) {
          var c;
          return b && (c = a.styleId && b[a.styleId] || a.skin && b[a.skin]), c || a.styleId
      }
  
      function h(a, b, c, h) {
          var i = b.getSiteData(), j = c || "masterPage", k = i.pagesData[j], l = {structure: a, pageData: k, siteData: i, siteAPI: b, id: a.id, key: a.id, ref: a.id, refInParent: a.id, pageId: j, currentPage: b.getCurrentPageId(), loadedStyles: h};
          return l.styleId = g(a, h), l.skin = d(a, i), l.style = e(a), f(l, a, i, j), l
      }
  
      return{getCompProps: h, getStyle: e}
  }), define("core/components/animatableMixin", ["lodash"], function (a) {
      "use strict";
      return{isAnimatable: !0, shouldChildrenUpdate: !0, componentWillMount: function () {
          this._animatableMixin = {animationsCounter: 0, deferredStates: []}
      }, componentDidMount: function () {
          this._animatableMixin.setStateOrig = this.setState
      }, componentWillUnmount: function () {
          this._animatableMixin.updateOnAnimationEnded = !1
      }, animationStarted: function () {
          1 === ++this._animatableMixin.animationsCounter && (this.setState = this.setStateDeferred), this.shouldChildrenUpdate || a.forEach(this.refs, function (a) {
              a.isAnimatable && a.animationStarted()
          })
      }, animationEnded: function (b) {
          b = b !== !1, this.shouldChildrenUpdate || a.forEach(this.refs, function (a) {
              a.isAnimatable && a.animationEnded(!1)
          });
          var c = this._animatableMixin;
          if (c.animationsCounter && 0 === --c.animationsCounter && (this.setState = c.setStateOrig), b)if (c.deferredStates.length) {
              for (var d = c.deferredStates, e = 0; e < d.length; e += 2)c.setStateOrig.call(this, d[e], d[e + 1]);
              d.length = 0
          } else c.updateOnAnimationEnded && this.forceUpdate();
          this._updateOnAnimationEnded = !1
      }, setStateDeferred: function (b, c) {
          var d = this._animatableMixin.deferredStates, e = d.length;
          0 === e || d[e - 1] || c ? (d.push(b), d.push(c)) : (a.assign(d[e - 2], b), d[e - 1] = c)
      }, shouldComponentUpdateAnimatable: function () {
          var a = 0 === this._animatableMixin.animationsCounter;
          return a || (this._animatableMixin.updateOnAnimationEnded = !0), a
      }}
  }), define("core/components/baseCompMixin", ["lodash", "core/components/animatableMixin"], function (a, b) {
      "use strict";
      var c = {mixins: [b], registerReLayout: function () {
          this.props.siteAPI && this.props.siteAPI.registerReLayoutPending && this.props.siteAPI.registerReLayoutPending()
      }, componentDidUpdate: function () {
          this.props.siteAPI && this.props.siteAPI.reLayoutIfPending && this.props.siteAPI.reLayoutIfPending()
      }, isComponentActive: function (a) {
          return"masterPage" === a.pageId || a.pageId === a.currentPage
      }, shouldComponentUpdate: function (a, b) {
          var c = !this.shouldComponentUpdateAnimatable || this.shouldComponentUpdateAnimatable(a, b), d = this.isComponentActive(a), e = this.shouldComponentUpdatePage && this.shouldComponentUpdatePage(a, b);
          return c && (e || d)
      }};
      return c
  }), define("core/components/util/animationsQueueHandler", ["lodash", "animations"], function (a, b) {
      "use strict";
      function c(b) {
          var c = b.comp;
          return a.uniq(a.compact(a.flatten(a.map(b.animations, function (a) {
              var b = [];
              return"object" == typeof a.refNames ? (b = h(c, a.refNames.sourceRefs), a.refNames.destRefs && (b = b.concat(h(c, a.refNames.destRefs)))) : b = h(c, a.refNames), b
          }))))
      }
  
      function d(c, d, e) {
          return a.forEach(c.animations, function (c) {
              var f = c.params || {};
              f = "function" == typeof f ? c.params() : a.cloneDeep(f);
              var g, h, j;
              a.isPlainObject(c.refNames) ? (g = i(d, c.refNames.sourceRefs), h = c.refNames.destRefs && i(d, c.refNames.destRefs)) : g = i(d, c.refNames), h ? (j = b.transition(c.animationName, g, h, c.duration, c.delay, f), j && e.add(j, c.position)) : (j = b.animate(c.animationName, g, c.duration, c.delay, f), j && e.add(j, c.position))
          }), e.get()
      }
  
      function e(e, h) {
          for (var i, j, k, l; e.length;) {
              l = e.pop(), j = l.comp, i = {}, l.callbacks = l.callbacks || {};
              var m = c(l);
              i.onStart = g.bind(null, m, l.callbacks.onStart), i.onComplete = f.bind(null, m, l.callbacks.onComplete, h, l.id), i.onInterrupt = f.bind(null, m, l.callbacks.onInterrupt, h, l.id), k = l.params || {}, k = "function" == typeof k ? l.params() : a.cloneDeep(k), k.callbacks = i, h[l.id] = d(l, j, b.sequence(k))
          }
      }
  
      function f(b, c, d, e) {
          delete d[e], a.each(b, function (a) {
              a.animationEnded && a.animationEnded()
          }), c && c()
      }
  
      function g(b, c) {
          a.each(b, function (a) {
              a.animationStarted && a.animationStarted()
          }), c && c()
      }
  
      function h(b, c) {
          return c = "string" == typeof c ? [c] : c, a.map(c, function (a) {
              return b.refs[a]
          })
      }
  
      function i(b, c) {
          return c = "string" == typeof c ? [c] : c, a.map(c, function (a) {
              return b.refs[a].getDOMNode()
          })
      }
  
      return{flushQueue: e, getElementsByRefs: i}
  }), define("core/components/animationsMixin", ["zepto", "lodash", "animations", "core/components/util/animationsQueueHandler"], function (a, b, c, d) {
      "use strict";
      function e(a) {
          this.comp = a, this.animations = [], this.callbacks = {}, this.id = b.uniqueId("seq_")
      }
  
      return e.prototype.add = function (a, b, c, d, e, f) {
          return this.animations.push({refNames: a, animationName: b, duration: c, delay: d, params: e, position: f}), this
      }, e.prototype.onCompleteAll = function (a) {
          return this.callbacks.onComplete = a, this
      }, e.prototype.onInterruptAll = function (a) {
          return this.callbacks.onInterrupt = a, this
      }, e.prototype.onStartAll = function (a) {
          return this.callbacks.onStart = a, this
      }, e.prototype.execute = function (a) {
          return this.comp.executeAnimationsWhenPossible(this.comp, this.id, this.animations, this.callbacks, a), this.id
      }, e.prototype.getId = function () {
          return this.id
      }, e.prototype.hasAnimations = function () {
          return!b.isEmpty(this.animations)
      }, {getInitialState: function () {
          return this._animationsQueue = [], this._liveSequences = {}, this._isBusy = !0, null
      }, executeAnimationsWhenPossible: function (a, c, e, f, g) {
          b.isEmpty(this._liveSequences) && (this._liveSequences = {}), b.isEmpty(this._animationsQueue) && (this._animationsQueue = []), this._animationsQueue.push({comp: a, id: c, animations: e, callbacks: f, params: g}), this.isBusy() || d.flushQueue(this._animationsQueue, this._liveSequences)
      }, componentWillUpdate: function () {
          this._isBusy = !0
      }, componentDidUpdate: function () {
          this._isBusy = !1, this.isBusy() || d.flushQueue(this._animationsQueue, this._liveSequences)
      }, componentDidMount: function () {
          this._isBusy = !1
      }, componentDidLayoutAnimations: function () {
          d.flushQueue(this._animationsQueue, this._liveSequences)
      }, componentWillUnmount: function () {
          this._isBusy = !0, this.clearAnimationsQueue(!1)
      }, clearAnimationsQueue: function (a) {
          b.forEach(this._liveSequences, function (b) {
              c.kill(b, a ? 1 : void 0)
          }), this._liveSequences = {}, this._animationsQueue = []
      }, isBusy: function () {
          return!this.isMounted() || this._isBusy || this.props.siteAPI.isSiteBusy()
      }, animate: function (a, b, c, d, e, f) {
          var g = this.sequence(a, b, c, d, e);
          return f = f || {}, f.onStart && g.onStartAll(f.onStart), f.onInterrupt && g.onInterruptAll(f.onInterrupt), f.onComplete && g.onCompleteAll(f.onComplete), g.execute()
      }, transition: function (a, b, c, d, e, f, g) {
          return this.animate({sourceRefs: a, destRefs: b}, c, d, e, f, g)
      }, sequence: function (a, b, c, d, f) {
          var g = new e(this);
          return arguments.length && g.add.apply(g, arguments), g
      }, getSequence: function (a) {
          return a ? this._liveSequences[a] : null
      }, stopSequence: function (a, b) {
          var d = this.getSequence(a);
          d && (c.kill(d, b), delete this._liveSequences[a])
      }, easeStartSequence: function (a, b, d, e) {
          var f = this.getSequence(a);
          f && c.animateTimeScale(f, b, 0, 1, d, e)
      }, easeStopSequence: function (a, b, d, e) {
          var g, f = this.getSequence(a);
          f && (e = e || {}, g = e.onComplete || function () {
          }, e.onComplete = function () {
              g(), this.stopSequence(a)
          }.bind(this), f.paused() ? this.stopSequence(a) : c.animateTimeScale(f, b, 1, 0, d, e))
      }, getAnimationProperties: function (a) {
          return c.getProperties(a)
      }}
  }), define("core/siteRender/WixPageReact", ["lodash", "react", "core/siteRender/compFactory", "utils", "core/util/extraPageStructureRegistry", "core/core/componentPropsBuilder", "core/components/baseCompMixin", "core/components/animationsMixin"], function (a, b, c, d, e, f, g, h) {
      "use strict";
      function k(b, c, e, f) {
          a.each(d.dataUtils.getChildrenData(f, b), function (a) {
              k(b, c, e, a)
          });
          var g = f && f.behaviors;
          g && c.registerBehaviors(f.id, e, g)
      }
  
      function l(b, c, d) {
          var e = f.getCompProps(c, b.props.siteAPI, b.props.pageId, b.props.loadedStyles);
          d && (e.style = a.merge(e.style || {}, d)), a.contains(["Page", "Document"], c.type) && (e.style = e.style || {}, e.style.width = b.props.siteData.getSiteWidth(), b.state.stub && (e.style.overflow = "hidden", e.style.maxHeight = 0), e.pageStub = !!b.state.stub), m(e, c.id), e.children = q(b, c);
          var g = n(c);
          return g(e)
      }
  
      function m(a, c) {
          o(c) && (a.pageConstructor = b.createFactory(r), a.componentPropsBuilder = f, a.skin = "skins.core.InlineSkin")
      }
  
      function n(a) {
          return a.componentType && c.getCompClass(a.componentType) || b.DOM.div
      }
  
      function o(a) {
          return"SITE_PAGES" === a
      }
  
      function p(b) {
          var c;
          return a.contains(i, b.componentType) ? !0 : (c = d.dataUtils.getChildrenData(b, this.props.siteData), a.any(c, p, this))
      }
  
      function q(b, c) {
          var e = d.dataUtils.getChildrenData(c, b.props.siteData), f = b.props.siteData.isPageLandingPage(b.props.currentPage) && "masterPage" === b.props.pageId;
          return b.state.stub && (e = a.filter(e, p, b)), a.map(e, function (c) {
              var d;
              return f && !a.contains(j, c.componentType) && (d = {display: "none"}), l(b, c, d)
          })
      }
  
      var i = ["wysiwyg.viewer.components.tpapps.TPAGluedWidget", "wysiwyg.viewer.components.tpapps.TPASection", "wysiwyg.viewer.components.tpapps.TPAWidget"], j = ["wysiwyg.viewer.components.PageGroup", "wysiwyg.viewer.components.PagesContainer"], r = b.createClass({displayName: "WixPageReact", mixins: [g, h], getInitialState: function () {
          return a.merge({stub: !1}, this.getStateByProps(this.props))
      }, componentWillReceiveProps: function (a) {
          this.setState(this.getStateByProps(a))
      }, getStateByProps: function (a) {
          var b = {};
          return this.isComponentActive(a) && (b.stub = !1), b
      }, shouldComponentUpdatePage: function (a, b) {
          return this.isComponentActive(a) || b.stub
      }, render: function () {
          return l(this, this.props.structure, {visibility: "hidden"})
      }, componentDidLayout: function () {
          this.getDOMNode().style.visibility = ""
      }, componentDidUpdate: function () {
          var a = this.props.siteAPI.getSiteAspect("actionsAspect");
          a.isPageRegistered(this.props.pageId) || (a.setPageAsRegistered(this.props.pageId), k(this.props.siteData, a, this.props.pageId, this.props.structure))
      }, componentWillMount: function () {
          if (this.props.siteAPI) {
              var a = this.props.siteAPI.getSiteAspect("actionsAspect");
              k(this.props.siteData, a, this.props.pageId, this.props.structure)
          }
      }});
      return r
  }), define("core/siteRender/wixBackgroundInstantiator", ["core/siteRender/compFactory", "core/core/componentPropsBuilder"], function (a, b) {
      "use strict";
      var c = "wysiwyg.viewer.components.SiteBackground", d = {id: "SITE_BACKGROUND", skin: "wysiwyg.viewer.skins.siteBackgroundSkin", componentType: c, styleId: "siteBackground"};
      return{getWixBgStructure: function () {
          return d
      }, getWixBgComponent: function (e) {
          var f = b.getCompProps(d, e), g = a.getCompClass(c);
          return g(f)
      }}
  }), define("core/bi/errors.json", [], function () {
      return{JAVASCRIPT_ERROR: {errorName: "JAVASCRIPT_ERROR", errorCode: 111022, severity: "fatal", params: {p1: "errorMsg", p2: "url", p3: "line", p4: "column"}}, CONSOLE_ERROR: {errorName: "CONSOLE_ERROR", errorCode: 111023, severity: "error", params: {p1: "errorMsg"}}, REQUIREJS_ERROR: {errorName: "REQUIREJS_ERROR", errorCode: 111024, severity: "fatal", params: {p1: "errorMsg", p2: "modules"}}, REQUIREJS_RETRY_ERROR: {errorName: "REQUIREJS_RETRY_ERROR", errorCode: 111025, severity: "recoverable", params: {p1: "errorMsg", p2: "modules"}}, NULL_SITE_ERROR: {errorName: "NULL_SITE_ERROR", errorCode: 112e3, severity: "error", params: {p1: "errorMsg", p2: "modules"}}, MISSING_DESKTOP_BACKGROUND_ITEM: {errorName: "MISSING_DESKTOP_BACKGROUND_ITEM", errorCode: 112001, severity: "recoverable", params: {p1: "errorMsg", p2: "modules"}}, MISSING_DESKTOP_BACKGROUND_ITEM: {errorName: "MISSING_MOBILE_BACKGROUND_ITEM", errorCode: 112002, severity: "recoverable", params: {p1: "errorMsg", p2: "modules"}}}
  }), define("core/bi/errors", ["core/bi/errors.json", "lodash", "utils"], function (a, b, c) {
      "use strict";
      var d = c.logger;
      return b.forEach(a, function (a, b) {
          a.errorName = b
      }), d.register("core", "error", a), a
  }), define("core/siteRender/SiteAPI", ["utils", "zepto", "lodash", "core/bi/errors"], function (a, b, c, d) {
      "use strict";
      function f(a, b) {
          !a && arguments.length && "undefined" != typeof window && (b = b || "unknown", window.wixBiSession ? window.wixBiSession.sendError(d.NULL_SITE_ERROR, b) : console.error("Null site", b)), this._site = a
      }
  
      var e = a.logger;
      return f.prototype = {reLayout: function () {
          this._site.reLayout()
      }, registerReLayoutPending: function () {
          this._site.registerReLayoutPending()
      }, reLayoutIfPending: function () {
          this._site.reLayoutIfPending()
      }, getSiteAspect: function (a) {
          return this._site.siteAspects[a]
      }, getSiteData: function () {
          return this._site.props.siteData
      }, setBiParam: function (a, b) {
          var c = this.getSiteData();
          c && c.wixBiSession && void 0 === c.wixBiSession[a] && (c.wixBiSession[a] = b)
      }, setBiMarker: function (a) {
          this.setBiParam(a, c.now())
      }, onSiteUnmount: function () {
          setTimeout(function () {
              delete this._site
          }.bind(this))
      }, isZoomOpened: function () {
          return!!this._site.props.urlInfo.pageItemId
      }, openPopup: function (a, b, c) {
          window.open(a, b, c)
      }, getCurrentPageId: function () {
          return this.getSiteData().currentPageInfo.pageId
      }, isPageLandingPage: function (a) {
          return this.getSiteData().isPageLandingPage(a)
      }, scrollToAnchor: function (a) {
          return this._site.scrollToAnchor(a)
      }, navigateToPage: function (a) {
          this._site.tryToNavigate(a)
      }, runDataRequirementsChecker: function (a, b) {
          this._site.runDataRequirementsChecker(a, b)
      }, getComponentsByPageId: function (a) {
          var b = this._site, c = b.refs.masterPage.refs.SITE_PAGES.refs[a], d = c && c.refs;
          return d || null
      }, getPageUrl: function (a) {
          return this.getPageUrlFor(this.getCurrentPageId(), a)
      }, getCurrentPageData: function () {
          var a = this.getSiteData().getDataByQuery(this.getCurrentPageId());
          return a.siteTitle = this.getSiteData().getCurrentPageTitle(), a
      }, getPageUrlFor: function (b, c) {
          var d = this.getSiteData().getDataByQuery(b);
          if (!d)return"";
          var e = a.wixUrlParser.getUrl(this.getSiteData(), {pageId: b, title: d.pageUriSEO}, c);
          return e
      }, initFacebookRemarketing: function () {
          e.initFacebookRemarketingPixel(this.getSiteData())
      }, initGoogleRemarketing: function () {
          e.initGoogleRemarketingPixel(this.getSiteData())
      }, fireGoogleRemarketing: function () {
          e.fireGoogleRemarketingPixel()
      }, reportBI: function (a, b) {
          e.reportBI(this._site.props.siteData, a, b)
      }, reportPageEvent: function (a) {
          e.reportPageEvent(this._site.props.siteData, a)
      }, reportBeatEvent: function (a, b) {
          e.reportBeatEvent(this._site.props.siteData, a, b)
      }, reportBeatStart: function (a) {
          this.reportBeatEvent("start", a)
      }, reportBeatFinish: function (a) {
          this.reportBeatEvent("finish", a)
      }, reportPageBI: function () {
          e.reportBI(this._site.props.siteData)
      }, getUserSession: function () {
          return this._site.props.siteData.getSvSession()
      }, isSiteBusy: function () {
          return this._site.isBusy
      }, enterFullScreenMode: function () {
          return"undefined" == typeof window ? void console.warn("SiteAPI.enterFullScreenMode should only be called from client specific code!") : void b("body").addClass("fullScreenMode")
      }, exitFullScreenMode: function () {
          return"undefined" == typeof window ? void console.warn("SiteAPI.exitFullScreenMode should only be called from client specific code!") : void b("body").removeClass("fullScreenMode")
      }, passClickEvent: function (a) {
          this._site.clickHandler(a)
      }}, f
  }), define("core/core/siteAspectsRegistry", [], function () {
      "use strict";
      var a = {};
      return{registerSiteAspect: function (b, c) {
          a[b] = c
      }, getAllAspectConstructors: function () {
          return a
      }, getSiteAspectConstructor: function (b) {
          return a[b]
      }}
  }), define("core/siteRender/SiteAspectsSiteAPI", ["lodash", "core/siteRender/SiteAPI"], function (a, b) {
      "use strict";
      function c(a) {
          b.call(this, a, "Site Aspect")
      }
  
      return c.prototype = new b, c.prototype.getComponentById = function (b) {
          var d, c = this._site.refs[this._site.props.pageId];
          if (c && (d = c.refs[b]), !d) {
              var e = this._site.getCurrentPage();
              e && (d = e.refs[b])
          }
          return d || (d = this._site.getAspectsContainer().refs[b]), !d && c && c.refs.SITE_PAGES && a.find(c.refs.SITE_PAGES.refs, function (a) {
              return a.refs && a.refs[b] ? (d = a.refs[b], !0) : !1
          }), d || ("SITE_BACKGROUND" === b || "WIX_ADS" === b) && (d = this._site.refs[b]), d || null
      }, c.prototype.getCurrentPage = function () {
          return this._site.getCurrentPage()
      }, c.prototype.getMasterPage = function () {
          return this._site.refs[this._site.props.pageId]
      }, c.prototype.getSiteRoot = function () {
          return this._site
      }, c.prototype.registerToMessage = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.message, a)
      }, c.prototype.registerToSiteReady = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.siteReady, a)
      }, c.prototype.registerToScroll = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.scroll, a)
      }, c.prototype.registerToResize = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.resize, a)
      }, c.prototype.registerToComponentDidMount = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.mount, a)
      }, c.prototype.registerToDidLayout = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.didLayout, a)
      }, c.prototype.unRegisterFromDidLayout = function (a) {
          this._site.unregisterAspectFromEvent(this._site.supportedEvents.didLayout, a)
      }, c.prototype.registerToWillUnmount = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.unmount, a)
      }, c.prototype.registerToPageChange = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.pageChange, a)
      }, c.prototype.registerToKeyDown = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.keydown, a)
      }, c.prototype.registerToWindowTouchEvent = function (a, b) {
          this._site.registerAspectToEvent(this._site.supportedEvents[a.toLowerCase()], b)
      }, c.prototype.registerToFocusEvents = function (a, b) {
          this._site.registerAspectToEvent(this._site.supportedEvents[a], b)
      }, c.prototype.registerToOrientationChange = function (a) {
          this._site.registerAspectToEvent(this._site.supportedEvents.orientationchange, a)
      }, c.prototype.getPageItemInfo = function () {
          return this._site.props.urlInfo
      }, c.prototype.getSiteAPI = function () {
          return this._site.siteAPI
      }, c.prototype.getSiteContainer = function () {
          return this._site.props.getSiteContainer()
      }, c.prototype.scrollSiteBy = function (a, b) {
          this.getSiteContainer().scrollBy(a, b)
      }, c.prototype.scrollSiteTo = function (a, b) {
          this.getSiteContainer().scrollTo(a, b)
      }, c.prototype.getSiteScroll = function () {
          var a = this.getSiteContainer();
          return{x: a.pageXOffset, y: a.pageYOffset}
      }, c.prototype.forceUpdate = function (a) {
          this._site.forceUpdate(a)
      }, c.prototype.getAspectComponentByRef = function (a) {
          var b = this._site.refs.siteAspectsContainer;
          return b.refs[a]
      }, c
  }), define("core/siteRender/siteAspectsMixin", ["lodash", "zepto", "core/core/siteAspectsRegistry", "core/siteRender/SiteAspectsSiteAPI"], function (a, b, c, d) {
      "use strict";
      function f(b, c, d) {
          return a.map(b, function (b) {
              var f = b[c];
              return a.isFunction(f) ? f.apply(b, d) || e : e
          })
      }
  
      function j() {
          this.timeout = window.setTimeout(this.notifyAspects.bind(this, h.resize), 300)
      }
  
      var e = [], g = {mount: "mount", unmount: "unmount", pageChange: "pageChange", didLayout: "didLayout", siteReady: "siteReady"}, h = {scroll: "scroll", resize: "resize", focus: "focus", blur: "blur", message: "message", keydown: "keydown", touchstart: "touchstart", touchend: "touchend", touchmove: "touchmove", touchcancel: "touchcancel", orientationchange: "orientationchange"}, i = a.assign(a.clone(g), h);
      return{supportedEvents: i, getAllSiteAspects: function () {
          return this._addMissingAspects(), this.siteAspects
      }, getInitialState: function () {
          this._aspectsSiteAPI = new d(this), this.siteAspects = {}, this._siteAspectsEventsRegistry = {}, this._listenersOnWindow = [], this._addMissingAspects()
      }, _addMissingAspects: function () {
          a.forEach(c.getAllAspectConstructors(), function (a, b) {
              this.siteAspects[b] || (this.siteAspects[b] = new a(this._aspectsSiteAPI))
          }, this)
      }, getAspectsContainer: function () {
          return this.refs.siteAspectsContainer
      }, getAspectsReactComponents: function () {
          return a.flatten(f(this.siteAspects, "getReactComponents", [this.loadedStyles]))
      }, getAspectsComponentStructures: function () {
          return a.flatten(f(this.siteAspects, "getComponentStructures"))
      }, componentDidMount: function () {
          var d, c = b(window);
          a.forEach(h, function (a) {
              d = {eventName: a, listener: this.notifyAspects.bind(this, a)}, this._listenersOnWindow.push(d), c.on(a, d.listener)
          }, this), d = {eventName: h.orientationchange, listener: j.bind(this)}, this._listenersOnWindow.push(d), c.on(d.eventName, d.listener), this.notifyAspects("mount")
      }, componentDidUpdate: function () {
          this.isChangingPage && this.notifyAspects("pageChange")
      }, componentWillUnmount: function () {
          var c = b(window);
          a.forEach(this._listenersOnWindow, function (a) {
              c.off(a.eventName, a.listener)
          }), window.clearTimeout(this.timeout), this._aspectsSiteAPI.onSiteUnmount(), this.notifyAspects("unmount")
      }, notifyAspects: function (b) {
          var c = this._siteAspectsEventsRegistry[b];
          if (c && c.length) {
              var d = c.slice();
              a.invoke(d, "apply", void 0, a.rest(arguments))
          }
      }, registerAspectToEvent: function (a, b) {
          return a === g.siteReady && this.siteIsReady ? void b() : i[a] ? (this._siteAspectsEventsRegistry[a] = this._siteAspectsEventsRegistry[a] || [], void this._siteAspectsEventsRegistry[a].push(b)) : void console.error("this event isn't supported by site " + a)
      }, unregisterAspectFromEvent: function (a, b) {
          var c = this._siteAspectsEventsRegistry[a];
          if (c) {
              var d = c.indexOf(b);
              -1 !== d && c.splice(d, 1)
          }
      }}
  }), define("core/siteRender/siteAspectsDomContainer", ["react"], function (a) {
      "use strict";
      return a.createClass({displayName: "siteAspectsDomContainer", render: function () {
          return a.DOM.div(null, this.props.aspectsCompsFunc())
      }})
  }), define("core/siteRender/extraSiteHeight", ["react"], function (a) {
      "use strict";
      return a.createClass({displayName: "extraSiteHeight", render: function () {
          return a.DOM.div({style: {height: this.props.siteData.renderFlags.extraSiteHeight, position: "relative"}})
      }})
  }), define("core/siteRender/wixAdsInstatiator", ["core/siteRender/compFactory", "core/core/componentPropsBuilder", "lodash"], function (a, b, c) {
      "use strict";
      var d = {mobile: {footerLabel: "7c3dbd_67131d7bd570478689be752141d4e28a.jpg", adUrl: "http://www.wix.com/"}, desktop: {topLabel: '', adUrl: "http://www.wix.com/lpviral/en900viral?utm_campaign=vir_wixad_live"}};
      return{getStructure: function (a) {
          var b = a.isMobileView(), c = b ? "wysiwyg.viewer.components.WixAdsMobile" : "wysiwyg.viewer.components.WixAdsDesktop", d = "wysiwyg.viewer.skins.wixadsskins.WixAdsWebSkin";
          return{id: a.WIX_ADS_ID, skin: d, componentType: c, styleId: "wixAds", layout: {position: b ? "static" : "absolute"}}
      }, getWixAdsComponent: function (e) {
          var h, f = e.getSiteData(), g = f.isMobileView();
          h = g ? f.mobileAdData && !c.isEmpty(f.mobileAdData.adUrl) ? f.mobileAdData : d.mobile : f.adData && !c.isEmpty(f.adData.adUrl) ? f.adData : d.desktop;
          var n, i = this.getStructure(f), j = i.componentType, k = a.getCompClass(j), l = b.getCompProps(i, e), m = c.contains(l.siteData.rendererModel.premiumFeatures, "NoAdsInSocialSites");
          n = l.siteData.isFacebookSite() ? j.toLowerCase().indexOf("desktop") > -1 && !m ? 40 : 0 : j.toLowerCase().indexOf("desktop") > -1 ? 40 : 0, l.adData = h;
          var o = k(l);
          return{component: o, pageBottomMargin: n}
      }}
  }), define("core/bi/events.json", [], function () {
      return{SITE_MEMBER_LOGIN_SUCCESS: {eventId: 520, adapter: "hed", params: {c1: "userName"}}, PAGE_PERFORMANCE_DATA: {eventId: 350, adapter: "ugc-viewer", params: {c1: "preClient", c2: "client", c3: "santaVersion", i1: "timeoutSeconds", is_premium: "isPremium", is_wixsite: "isWixSite", dns_time: "dnsTime", response_time: "responseTime"}, sampleRatio: 0}, LOAD_IMAGES_DATA: {eventId: 341, adapter: "mlt", params: {c1: "imagePerf"}, sampleRatio: 10}}
  }), define("core/bi/events", ["core/bi/events.json", "lodash", "utils"], function (a, b, c) {
      "use strict";
      var d = c.logger;
      return d.register("core", "event", a), a
  }), define("core/core/siteBI", ["lodash", "zepto", "utils", "core/bi/events"], function (a, b, c, d) {
      "use strict";
      function m(b, c) {
          function i(a, b) {
              return"number" != typeof b ? b : b ? b - a : void 0
          }
  
          if (!(f || c > l)) {
              "lastTimeStamp"in b.wixBiSession && (l = c);
              var j = b.isPremiumDomain(), m = "WixSite" === b.rendererModel.siteInfo.documentType, n = a.pick(k, g);
              n.initialTimestamp = b.wixBiSession.initialTimestamp, n = a.mapValues(n, i.bind(null, n.navigationStart || n.initialTimestamp));
              var o = a.omit(b.wixBiSession, function (a, b) {
                  return"number" != typeof a || "et" === b
              });
              o = a.assign(o, a.pick(k, h));
              var p = window.performance;
              if (p && p.getEntries) {
                  var q = p.getEntries().filter(function (a) {
                      return-1 !== a.name.search(/.min.js$/)
                  });
                  if (q.length) {
                      var r = k.navigationStart || 0, s = q.filter(function (a) {
                          return-1 !== a.name.indexOf("skins")
                      })[0];
                      s && (o.skinsStart = Math.round(r + s.startTime), o.skinsEnd = Math.round(o.skinsStart + s.duration)), o.packagesEnd = 0, q.forEach(function (a) {
                          o.packagesEnd = Math.max(o.packagesEnd, a.startTime + a.duration)
                      }), o.packagesEnd = Math.round(r + o.packagesEnd)
                  }
              }
              o = a.mapValues(o, i.bind(null, o.initialTimestamp || 0));
              var t = b.santaBase.match(/([\d\.]+)\/?$/);
              t = t && t[1] || "unknown";
              var u = {isPremium: j ? 1 : 0, isWixSite: m ? 1 : 0, preClient: JSON.stringify(n), client: JSON.stringify(o), santaVersion: t, timeoutSeconds: c}, v = n.domainLookupEnd - n.domainLookupStart;
              isNaN(v) || (u.dnsTime = v);
              var w = n.responseEnd - n.connectStart;
              isNaN(w) || (u.responseTime = w), e.reportBI(b, d.PAGE_PERFORMANCE_DATA, u)
          }
      }
  
      function n(b) {
          function h(b, c) {
              var d = {url: b.src, hadError: !1, width: b.width, height: b.height, size: b.width * b.height}, e = c ? c.startTime : 0, f = c ? c.duration : 0;
              return a.defaults(d, {hadError: !c, start: Math.round(e), end: Math.round(e + f), speed: Math.round(d.size / (f + .01) * 100) / 100}), d
          }
  
          function i(a, b) {
              c[b]++, g[b].length < j && g[b].push(a)
          }
  
          if (!f) {
              for (var c = {_100k: 0, _200k: 0, _300k: 0, _400k: 0, _500k: 0, _over500k: 0}, g = {_100k: [], _200k: [], _300k: [], _400k: [], _500k: [], _over500k: []}, k = window.performance, l = 0, m = 0, n = document.getElementsByTagName("img"), o = 0; o < n.length; ++o) {
                  var p = n[o];
                  if (p.complete) {
                      var q = k.getEntriesByName(p.src), r = h(p, q[0]);
                      if (r.hadError)++m; else {
                          var s = r.size;
                          1e5 > s ? i(r, "_100k") : 2e5 > s ? i(r, "_200k") : 3e5 > s ? i(r, "_300k") : 4e5 > s ? i(r, "_400k") : 5e5 > s ? i(r, "_500k") : i(r, "_over500k")
                      }
                  } else++l
              }
              var t = {loading: l, imagesBySize: c, imagesSamples: g, errors: m};
              e.reportBI(b, d.LOAD_IMAGES_DATA, {imagePerf: JSON.stringify(t)})
          }
      }
  
      var e = c.logger;
      if ("undefined" == typeof window)return{init: function () {
      }, send: function () {
      }};
      var l, f = window.queryUtil && window.queryUtil.isParameterTrue("isEdited"), g = ["navigationStart", "fetchStart", "domainLookupStart", "domainLookupEnd", "connectStart", "secureConnectionStart", "requestStart", "responseStart", "responseEnd"], h = ["domInteractive", "domComplete"], i = [5, 15, 30], j = 3, k = a.clone(window.performance && window.performance.timing || {}), o = a.now();
      return{init: function (b) {
          l = 1 / 0, o = a.now(), a.forEach(i, function (a) {
              setTimeout(m.bind(null, b, a), 1e3 * a)
          }), window.performance && window.performance.getEntriesByName && setTimeout(n.bind(null, b), 10500)
      }, send: function (b) {
          setTimeout(function () {
              m(b, Math.round((a.now() - o) / 1e3))
          }, 300)
      }}
  }),
      define("core/siteRender/WixSiteReact", ["zepto", "lodash", "react", "core/siteRender/styleCollector", "core/siteRender/WixThemeReact", "core/siteRender/WixPageReact", "core/siteRender/wixBackgroundInstantiator", "layout", "utils", "core/siteRender/SiteAPI", "core/siteRender/siteAspectsMixin", "animations", "core/siteRender/siteAspectsDomContainer", "core/siteRender/extraSiteHeight", "core/core/componentPropsBuilder", "core/siteRender/wixAdsInstatiator", "mousetrap", "core/core/siteBI"], function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) {
      "use strict";
      function y(a, c) {
          var d = this.props.siteData.getPageData(this.props.pageId).structure;
          b.merge(d, {layout: {position: this.props.siteRootPosition}});
          var e = o.getCompProps(d, a, this.props.pageId, c);
          return e.ref = this.props.pageId, e.refInParent = e.ref, e.className = "SITE_ROOT", e.firstPage = !0, delete e.id, e.style = {width: this.props.siteData.getSiteWidth()}, e.key = (a.getSiteData().isMobileView() ? "mobile_" : "desktop_") + "siteRoot", e
      }
  
      function z() {
          var a = this;
          return b.throttle(function () {
              a.dead || a.reLayout()
          }, 500, {leading: !1, trailing: !0})
      }
  
      function A() {
          var a = this.props.siteData, c = a.baseVersion || "could not retrieve version!";
          q.bind("ctrl+alt+shift+v", function () {
              window.alert("You are running React!\nVersion: " + c)
          });
          var d = b.find(a.currentUrl.query, function (a, b) {
              return"alertversion" === b.toLowerCase()
          });
          d && (a.isMobileDevice() || a.isTabletDevice()) && window.alert("You are running React!\nVersion: " + c)
      }
  
      function B(a) {
          a.componentDidLayout && a.componentDidLayout.call(a), a.componentDidLayoutAnimations && a.componentDidLayoutAnimations.call(a), b.forOwn(a.refs, B)
      }
  
      function C(a) {
          b.forEach(a, B)
      }
  
      function D(a) {
          var c = b.clone(a.getMasterPageData().structure);
          return["children", "mobileComponents"].forEach(function (a) {
              var d = b.chain(c[a]).find({id: "PAGES_CONTAINER"}).cloneDeep().value();
              E(d), c[a] = [d]
          }), c
      }
  
      function E(a) {
          for (; a.layout.anchors.length;)a.layout.anchors.pop();
          var b = {distance: 0, locked: !0, originalValue: a.layout.height, targetComponent: "SITE_STRUCTURE", topToTop: a.layout.height, type: "BOTTOM_PARENT"};
          a.layout.anchors.push(b), a.layout.y = 0
      }
  
      function F(a) {
          var b = a.rendererModel.siteInfo.documentType, c = "Template" === b && !a.rendererModel.previewMode;
          return a.renderFlags.isWixAdsAllowed && !a.isAdFreePremiumUser() && "WixSite" !== b && !c
      }
  
      function G() {
          var a = this.getAspectsComponentStructures(), c = b.transform(a, function (a, b) {
              a[b.id] = {structure: b, getDomNodeFunc: x.bind(null, this.refs.siteAspectsContainer)}
          }, {}, this);
          c.inner = {structure: this.props.siteData.pagesData[this.props.currentPage].structure, pageId: this.props.currentPage, getDomNodeFunc: x.bind(null, this.getCurrentPage())}, c.outer = {structure: this.props.siteData.getMasterPageData().structure, getDomNodeFunc: x.bind(null, this.refs[this.props.pageId])}, this.props.siteData.isPageLandingPage(this.props.currentPage) && (c.outer.structure = D(this.props.siteData)), c.siteBackground = {structure: g.getWixBgStructure(), getDomNodeFunc: x.bind(null, this)};
          var d = this.props.siteData;
          if (F(d)) {
              var e = p.getStructure(d);
              c.wixAds = {structure: e, getDomNodeFunc: x.bind(null, this)}
          }
          return c
      }
  
      function H(b) {
          var c = a(".hiddenTillReady");
          b.isMobileDevice() ? (a(".wix-menu-enabled").removeClass("wix-menu-enabled"), c.css({display: "none"})) : c.removeClass("hiddenTillReady")
      }
  
      function I(a) {
          var b = i.anchorUtils.calcAnchorPosition(a, this.props.siteData);
          l.animate("BaseScroll", this.props.getSiteContainer(), 1, 0, {y: b.y})
      }
  
      function J() {
          l.animate("BaseScroll", this.props.getSiteContainer(), 1, 0, {y: 0})
      }
  
      function K(a) {
          a.stopPropagation(), a.preventDefault()
      }
  
      function L(c, d) {
          var e = {};
          e[i.style.getPrefixedTransform()] = "", b.assign(e, d), c.hasOwnProperty("getRootStyle") && b.assign(e, c.getRootStyle(e)), a(c.getDOMNode()).css(e)
      }
  
      function M(a) {
          return a.toLowerCase() !== a && a.toUpperCase() === a
      }
  
      function N(a) {
          for (var b = "", c = 0; c < a.length; c++)M(a[c]) && (b += "-"), b += a[c].toLowerCase();
          return b
      }
  
      var s = c.createFactory(e), t = c.createFactory(f), u = c.createFactory(m), v = c.createFactory(n), w = i.dataUtils, x = function (a, b, c, d, e, f, g) {
          return a = a && b ? a.refs[b] : a, a = a && c ? a.refs[c] : a, a = a && d ? a.refs[d] : a, a = a && e ? a.refs[e] : a, a = a && f ? a.refs[f] : a, a = a && g ? a.refs[g] : a, a && a.getDOMNode()
      };
      return c.createClass({displayName: "WixSite", mixins: [k], getCurrentPage: function () {
          var a = this.refs[this.props.pageId];
          return"masterPage" === this.props.pageId && a && (a = a.refs.SITE_PAGES.refs[this.props.currentPage]), a
      }, getMasterPage: function () {
          var a = this.refs[this.props.pageId];
          return a
      }, updateSingleComp: function (a, c, d) {
          function u() {
              s && (g.componentWillUpdate = s), t && (g.componentDidUpdate = t), this.noEnforceAnchors = c, b.forEach(r, function (a) {
                  a()
              });
              var d = [a].concat(q);
              if (h.length > 1) {
                  var e = h[h.length - 2];
                  "wysiwyg.viewer.components.Group" === e.componentType && d.push(e.id)
              }
              this.lockedCompIds = d, this.reLayout()
          }
  
          this.tempMeasureMap = this.props.siteData.measureMap, delete this.props.siteData.measureMap;
          var e = this.getMasterPage().refs[a] ? this.getMasterPage() : this.getCurrentPage(), f = e.props.pageId, g = e.refs[a], h = w.findHierarchyInStructure(a, this.props.siteData, this.props.siteData.pagesData[f].structure), j = b.last(h), k = o.getCompProps(j, this.siteAPI, f, this.loadedStyles), l = b.isEmpty(b.without(d, "components.layout.update", "components.layout.updateAndAdjustLayout", "siteSegments.layout.update"));
          l = l && k.style.position === g.props.style.position, l = l && (!b.has(g, "lastScale") || j.layout.scale === g.lastScale), l = l && b.isEqual(k.compProp, g.props.compProp);
          var m = i.style.getPrefixedTransform(), n = N(m);
          k.style[n] = k.style[m], this.invokedMethodNames = b.union(this.invokedMethodNames || [], d);
          var p = w.getChildrenData(j, this.props.siteData), q = b.pluck(p, "id"), r = [], s = null, t = null;
          if (l)L(g, k.style), this.componentsUpdatedBySingleCompUpdateBehindReactsBack[a] = this.componentsUpdatedBySingleCompUpdateBehindReactsBack[a] || b.clone(g.props.style), b.forEach(p, function (a) {
              L(e.refs[a.id], o.getStyle(a))
          }), u.apply(this); else {
              this.componentsUpdatedBySingleCompUpdateBehindReactsBack[a] && (L(g, this.componentsUpdatedBySingleCompUpdateBehindReactsBack[a]), delete this.componentsUpdatedBySingleCompUpdateBehindReactsBack[a]);
              var v = {};
              if (g.componentWillReceiveProps) {
                  var x = g.setState;
                  g.setState = function (a, c) {
                      b.assign(v, a), c && r.push(c)
                  }, g.componentWillReceiveProps(k, g.state), g.setState = x
              }
              if (g.componentWillUpdate && (s = g.componentWillUpdate, g.componentWillUpdate = function (a, b) {
                  s.call(g, k, b)
              }), g.componentDidUpdate) {
                  t = g.componentDidUpdate;
                  var y = b.clone(g.props);
                  b.forEach(["compProp", "compData", "style"], function (a) {
                      y[a] = b.clone(y[a])
                  }), g.componentDidUpdate = function (a, b) {
                      t.call(g, y, b)
                  }
              }
              b.forEach(["compProp", "compData", "style"], function (a) {
                  g.props[a] = b.assign(g.props[a] || {}, k[a])
              }), g.setState(v, u.bind(this))
          }
      }, scrollToAnchor: I, getInitialState: function () {
          return this.loadedStyles = this.loadedStyles || {}, this.reLayoutPending = !1, this.siteAPI = new j(this), this.isBusy = !0, this.isChangingPage = !0, this.noEnforceAnchors = !1, this.siteAPI.reportBeatEvent(7, this.props.currentPage), this.componentsUpdatedBySingleCompUpdateBehindReactsBack = {}, {}
      }, getDefaultProps: function () {
          return{siteRootPosition: "static", scopedRoot: null}
      }, _addSiteStylesToLoaded: function (a) {
          var c = a.getAllTheme(), e = this.getAspectsComponentStructures();
          e = e.concat([a.getMasterPageData().structure, a.pagesData[this.props.currentPage].structure]), b.forEach(e, function (b) {
              var e = b.id === this.props.currentPage ? this.props.currentPage : "masterPage";
              d.collectStyleIdsFromStructure(b, c, a, this.loadedStyles, e)
          }, this)
      }, componentWillMount: function () {
          this.props.siteData.isTouchDevice() && c.initializeTouchEvents(!0)
      }, componentWillReceiveProps: function (a) {
          a.methodNames ? this.invokedMethodNames = b.union(this.invokedMethodNames || [], a.methodNames) : this.invokedMethodNames = b.union(this.invokedMethodNames || [], ["*"]), a.noEnforceAnchors && a.noEnforceAnchors !== this.props.noEnforceAnchors && (this.noEnforceAnchors = !0), a.forceUpdateIndex !== this.props.forceUpdateIndex && (this.tempMeasureMap = this.props.siteData.measureMap, this.lockedCompIds = a.lockedCompIds, delete this.props.siteData.measureMap)
      }, componentWillUpdate: function (a) {
          this.isBusy = !0, this.isChangingPage = a.currentPage !== this.props.currentPage, b.forEach(this.componentsUpdatedBySingleCompUpdateBehindReactsBack, function (a, b) {
              var c = this.getMasterPage().refs[b] ? this.getMasterPage() : this.getCurrentPage(), d = c.refs[b];
              d && L(d, a)
          }, this), this.componentsUpdatedBySingleCompUpdateBehindReactsBack = {}
      }, render: function () {
          var b, a = this.props.siteData;
          b = F(a) ? p.getWixAdsComponent(this.siteAPI) : {};
          var d = [s({themeData: a.getAllTheme(), siteData: a, masterPage: a.getMasterPageData(), loadedStyles: this.loadedStyles, styleRoot: this.props.scopedRoot ? "#" + this.props.scopedRoot : null, ref: "theme"}), b.component, u({ref: "siteAspectsContainer", key: "siteAspectsContainer", aspectsCompsFunc: this.getAspectsReactComponents})];
          a.renderFlags.extraSiteHeight > 0 && !a.isMobileView() && d.push(v({siteData: a}));
          var e = this.siteAPI.getSiteAspect("siteMembers").isPageAllowed(this.props.urlInfo);
          if (e) {
              var f = y.call(this, this.siteAPI, this.loadedStyles), h = {width: this.props.siteData.getSiteWidth(), paddingBottom: (b.pageBottomMargin || 0) + a.onlyForEyesBottomAdditionalMargin()}, i = g.getWixBgComponent(this.siteAPI);
              d.splice(2, 0, i, c.DOM.div({className: "SITE_ROOT", key: "SITE_ROOT", id: this.props.scopedRoot ? null : "SITE_ROOT", style: h}, t(f)))
          } else this.siteAPI.getSiteAspect("siteMembers").showDialogOnNextRender(this.props.urlInfo);
          return this._addSiteStylesToLoaded(a), c.DOM.div({id: this.props.scopedRoot ? this.props.scopedRoot : null, onClick: this.clickHandler, children: d})
      }, onPopState: function () {
          var a = location.href, b = i.wixUrlParser.parseUrl(this.props.siteData, a);
          b && this.tryToNavigate(b, !0)
      }, clickHandler: function (c) {
          var d = "a" === c.target.tagName.toLowerCase() ? a(c.target) : a(c.target).parents("a"), e = d.attr("href"), f = d.attr("data-anchor"), g = i.wixUrlParser.parseUrl(this.props.siteData, e);
          if (d.attr("data-mobile")) {
              var h = "true" === d.attr("data-mobile");
              this.props.siteData.setMobileView(h), i.mobileViewportFixer.fixViewportTag(this.props.siteData)
          }
          return e && i.stringUtils.startsWith(e, i.linkRenderer.CONSTS.LOGIN_TO_WIX_FORM_URL, !0) ? (this.siteAPI.getSiteAspect("LoginToWix").openLoginToWixForm(e), K(c)) : !this.props.siteData.renderFlags.isExternalNavigationAllowed && i.linkRenderer.isExternalLink(this.props.siteData, e) && "_self" === d.attr("target") ? K(c) : g && "_blank" !== d.attr("target") ? (b.extend(g, {pageItemAdditionalData: d.attr("data-page-item-context"), anchorData: f}), g.pageId === this.props.siteData.currentPageInfo.pageId ? ("#" !== e && this.props.navigateMethod(this, e, g, !0), f ? I.call(this, f) : this._isZoomURL(e) || J.call(this)) : this.tryToNavigate(g, !1), K(c)) : void 0
      }, isPageExists: function (a) {
          return b.contains(this.props.siteData.getAllPageIds(), a)
      }, runDataRequirementsChecker: function (a, b) {
          this.props.runDataRequirementsChecker(this, a, b)
      }, tryToNavigate: function (a, c) {
          if (this.isPageExists(a.pageId))if (this.siteAPI.getSiteAspect("siteMembers").isPageAllowed(a)) {
              this.siteAPI.getSiteAspect("siteMembers").forceCloseDialog();
              var d = this.siteAPI.getSiteData().getDataByQuery(a.pageId);
              if (!d)return;
              var e = b.clone(a);
              e.title = a.title || d.pageUriSEO;
              var f = i.wixUrlParser.getUrl(this.siteAPI.getSiteData(), e);
              this.props.navigateMethod(this, f, e, !c)
          } else this.siteAPI.getSiteAspect("siteMembers").showDialogOnNextRender(a), this.forceUpdate()
      }, _isZoomURL: function (a) {
          var b = i.urlUtils.parseUrl(a).hash, c = b.split("/").reverse();
          return c && "zoom" === c[2]
      }, renderCompsAfterLayout: function (a) {
          this.props.siteData.componentsToRender = b.union(this.props.siteData.componentsToRender, a), b.isEmpty(a) || this.forceUpdate(function () {
              this.props.siteData.componentsToRender = []
          })
      }, reLayout: function () {
          var a, b = this.lockedCompIds;
          if (a = this.siteAPI.getSiteAspect("siteMembers").isPageAllowed(this.props.urlInfo)) {
              this.updateBodyNodeStyle(this.props.siteData);
              var c = G.call(this);
              if (!this._isComponentDragMode) {
                  var d = h.reLayout(c, this.props.siteData, this.noEnforceAnchors, b, b && this.tempMeasureMap);
                  delete this.tempMeasureMap, delete this.lockedCompIds, this.reLayoutPending = !1, this.noEnforceAnchors = !1, this.renderCompsAfterLayout(d), this.isBusy = !1;
                  var e = this.refs[this.props.pageId];
                  C([e, this.getCurrentPage(), this.refs.siteAspectsContainer])
              }
          } else this.siteAPI.getSiteAspect("siteMembers").showDialogOnNextRender(this.props.urlInfo), C([this.refs.siteAspectsContainer]);
          this.isBusy = !1;
          var f = this.invokedMethodNames || [];
          this.invokedMethodNames = [], this.notifyAspects("didLayout", f), this.siteIsReady || (this.siteIsReady = !0, this.siteAPI && this.siteAPI.setBiMarker && this.siteAPI.setBiMarker("lastTimeStamp"), this.notifyAspects("siteReady"))
      }, registerReLayoutPending: function () {
          this.reLayoutPending = !0
      }, reLayoutIfPending: function () {
          this.reLayoutPending && (this.reLayoutPending = !1, this.reLayout())
      }, updateBodyNodeStyle: function (b) {
          var c = a("body");
          this.props.siteData.isMobileView() ? c.addClass("device-mobile-optimized") : b.isMobileDevice() || b.isTabletDevice() ? c.addClass("device-mobile-non-optimized") : c.removeClass("device-mobile-optimized").removeClass("device-mobile-non-optimized");
          var d = c.css("overflow"), e = b.renderFlags.allowSiteOverflow ? null : "hidden";
          d !== e && c.css("overflow", e)
      }, componentDidMount: function () {
          this.siteAPI.reportPageEvent(this.props.siteData.currentUrl.full), this.siteAPI.initFacebookRemarketing(), this.siteAPI.initGoogleRemarketing(), this.siteAPI.setBiMarker("renderEnd"), this.registerAspectToEvent("siteReady", function () {
              this.siteAPI.reportBeatFinish(this.props.currentPage), r.send(this.siteAPI.getSiteData()), H(this.props.siteData)
          }.bind(this)), this.registerAspectToEvent("resize", z.call(this)), A.call(this), this.updateTitleAndMetaTags(), this.refs.theme.registerStylesReadyCallback(this.reLayout), this.siteAPI.reportBeatEvent(8, this.props.currentPage), this.refs.theme.initWaitForStylesReady()
      }, componentDidUpdate: function () {
          this.tempMeasureMap && !this.props.siteData.measureMap && (this.props.siteData.measureMap = this.tempMeasureMap, delete this.tempMeasureMap), this.isChangingPage && (this.siteAPI.setBiMarker("renderEnd"), this.siteAPI.reportBeatFinish(this.props.currentPage), this.siteAPI.reportPageEvent(this.props.siteData.currentUrl.full), this.siteAPI.fireGoogleRemarketing()), this.refs.theme.initWaitForStylesReady()
      }, updateTitleAndMetaTags: function () {
          this.props.updateHeadMethod && this.props.updateHeadMethod(this.props.siteData, this.props.pageId)
      }, componentWillUnmount: function () {
          this.dead = !0, this.siteAPI.onSiteUnmount()
      }, enterComponentDragMode: function () {
          this._isComponentDragMode = !0
      }, exitComponentDragMode: function () {
          this._isComponentDragMode = !1
      }})
  }), define("core/siteRender/WixSiteHeadRenderer", ["lodash"], function (a) {
      "use strict";
      function b() {
          this.blankFavicons = null
      }
  
      function c(b) {
          return a.contains(b.rendererModel.premiumFeatures, "AdsFree")
      }
  
      return b.prototype = {getFavicons: function (a) {
          return a.isPremiumUser && a.isPremiumUser() && c(a) ? this._getPremiumUserFavicon(a) : this._getDefaultWixFavicon()
      }, createBlankFavicons: function () {
          return null === this.blankFavicons && (this.blankFavicons = this._createEmptyFaviconElements()), this.blankFavicons
      }, getPageMetaTags: function (a, b) {
          return this._getMetaTagsForPage(a, b)
      }, _getPremiumUserFavicon: function (a) {
          var b = a.getFavicon();
          if (b) {
              var c = this._getFaviconMimeType(b);
              return b = a.getMediaFullStaticUrl(b) + b, this._createFaviconLinkElements(b, c)
          }
          return this._createEmptyFaviconElements()
      }, _getDefaultWixFavicon: function () {
          var a = "http://www.wix.com/favicon.ico", b = this._getFaviconMimeType(a);
          return this._createFaviconLinkElements(a, b)
      }, _createEmptyFaviconElements: function () {
          return this._createFaviconLinkElements(null, null)
      }, _createFaviconLinkElements: function (a, b) {
          var c = [];
          return a && b && (c.push('<link rel="shortcut icon" href="' + a + '" ' + b + ">"), c.push('<link rel="apple-touch-icon" href="' + a + '" ' + b + ">")), c
      }, _getStaticMediaUrl: function (a) {
          return a.serviceTopology.mediaRootUrl
      }, _getFaviconMimeType: function (a) {
          var b = null;
          return a && (this._isExtension(a, "png") ? b = 'type="image/png"' : this._isExtension(a, "gif") ? b = 'type="image/gif"' : this._isExtension(a, "ico") || this._isExtension(a, "icon") ? b = 'type="image/x-icon"' : this._isExtension(a, "jpg") && (b = 'type="image/jpg"')), b
      }, _isExtension: function (a, b) {
          return this._getExtension(a).toLowerCase() === b
      }, _getExtension: function (a) {
          if (a) {
              var b = a.lastIndexOf(".");
              if (b >= 0)return a.substr(b + 1)
          }
          return""
      }, _getMetaTagsForPage: function (a, b) {
          var c = a.getPageSEOMetaData(b), d = [];
          return d = d.concat(this._getDescriptionSEOMetaTag(c)), d = d.concat(this._getKeywordsSEOMetaTag(c))
      }, _getDescriptionSEOMetaTag: function (a) {
          if (a && a.description) {
              var b = a.description;
              return['<meta name="description" content="' + b + '">', '<meta property="og:description" content="' + b + '">']
          }
      }, getGoogleTagManagerScript: function () {
          var a = "(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-MDD5C4');";
          return"<script async>" + a + "</script>"
      }, _getKeywordsSEOMetaTag: function (a) {
          if (a && a.keywords) {
              var b = a.keywords;
              return['<meta name="keywords" content="' + b + '">', '<meta property="og:keywords" content="' + b + '">']
          }
      }}, new b
  }), define("core/core/site", ["react", "lodash", "zepto", "utils", "core/core/dataRequirementsChecker", "core/siteRender/WixSiteReact", "core/siteRender/WixSiteHeadRenderer", "core/core/siteBI"], function (a, b, c, d, e, f, g, h) {
      "use strict";
      function k(a, b, c) {
          window && window.history && window.history.pushState && c && window.history.pushState(null, b, a)
      }
  
      function m(a, c, d, f) {
          f && d();
          var g = e.getNeededRequests(a, c);
          0 !== g.length || f ? a.store.loadBatch(g, m.bind(void 0, a, c, d)) : (a.wixBiSession["dataLoaded" + l++] = b.now(), d())
      }
  
      function n(a, b, c) {
          m(a.props.siteData, b, c)
      }
  
      function o(a, b, c, d) {
          if (a.props.currentPage !== c.pageId && (a.siteAPI.reportBeatStart(c.pageId), c.anchorData)) {
              var e = a.siteAPI.getSiteAspect("actionsAspect");
              e.registerNextAnchorScroll(c.anchorData)
          }
          var f = a.props.siteData, g = !0;
          return m(f, c, function () {
              g ? (g = !1, 0 === b.indexOf("#") ? f.currentUrl.hash = b : f.currentUrl = i.parseUrl(b), f.currentPageInfo = c, a.setProps({urlInfo: c, currentPage: c.pageId, pageId: "masterPage"}), k(b, c.title, d), s(f, c.pageId)) : a.forceUpdate()
          }), !0
      }
  
      function p(a) {
          return j({urlInfo: a.currentPageInfo, siteData: a, currentPage: a.currentPageInfo.pageId, pageId: "masterPage", navigateMethod: o, runDataRequirementsChecker: n, updateHeadMethod: r, getSiteContainer: q})
      }
  
      function q() {
          return window
      }
  
      function r(a, b) {
          s(a, b), v(a), "WixSite" === a.rendererModel.siteInfo.documentType && c(x()).append(g.getGoogleTagManagerScript())
      }
  
      function s(a, b) {
          y(a), u(), t(a, b)
      }
  
      function t(a, b) {
          var c = g.getPageMetaTags(a, b);
          w(c)
      }
  
      function u() {
          var a = x();
          c("[name=description]", a).remove(), c("[property='og:description']", a).remove(), c("[name=keywords]", a).remove()
      }
  
      function w(a) {
          var d = x();
          b.forEach(a, function (a) {
              c(d).append(a)
          })
      }
  
      function x() {
          return window.document.head
      }
  
      function y(a) {
          window.document.title = a.getCurrentPageTitle()
      }
  
      function z(a, b, c) {
          var e = new d.SiteData(a, b), f = d.wixUrlParser.parseUrl(e, e.currentUrl.full);
          return e.currentPageInfo = f, d.logger.reportBeatEvent(e, 6, f.pageId), h.init(e), m(e, f, function () {
              d.mobileViewportFixer.fixViewportTag(e), c(p(e))
          }), e
      }
  
      var i = d.urlUtils, j = a.createFactory(f), l = 0, v = b.once(function (a) {
          var d = x(), e = g.getFavicons(a);
          e && !b.isEmpty(e) && (c('[rel="shortcut icon"]', d).remove(), c('[rel="apple-touch-icon"]', d).remove(), w(e))
      });
      return{renderSite: z, waitForAllDataToBeLoaded: m, WixSiteReact: f}
  }), define("core/util/transitions", ["lodash", "react", "utils", "zepto"], function (a, b, c, d) {
      "use strict";
      var e = c.tween, f = {componentWillEnter: function (a) {
          this.killTween();
          var b = d(this.getDOMNode());
          b.css({position: "relative", top: "0px", left: "0px", opacity: "0.0", visibility: "visible"}), this._tween = new e.Tween(this.getDOMNode(), this._transitionDuration, {opacity: 1, ease: "strong_easeIn", onComplete: a})
      }, componentWillLeave: function (a) {
          this.killTween();
          var b = d(this.getDOMNode());
          b.css({position: "absolute", opacity: "1.0", visibility: "visible"}), this._tween = new e.Tween(this.getDOMNode(), this._transitionDuration, {opacity: 0, ease: "strong_easeOut", onComplete: a})
      }}, g = {componentWillMount: function () {
          this._transition = "outIn", this._transitionDuration = .1
      }, killTween: function () {
          this._tween && (e.killTween(this._tween), this._tween = null)
      }, componentWillUnmount: function () {
          this.killTween()
      }}, h = b.createClass(a.extend(f, {mixins: [g], render: function () {
          return b.DOM.div(null, this.props.childFunc())
      }})), i = b.createClass({displayName: "transitionsGroup", render: function () {
          return this.transferPropsTo(b.addons.TransitionGroup({component: h, children: this.props.children}))
      }});
      return{transitionsPseudoMixin: f, transitionMixin: g, transitionsGroup: i, transitionDomDiv: h}
  }), define("core/components/dataAccess", [], function () {
      "use strict";
      return{getDataByQuery: function (a, b) {
          return this.props.getDataByQuery ? this.props.getDataByQuery(a, b) : this.props.siteData.getDataByQuery(a, this.props.pageId, b)
      }, getData: function () {
          return this.props.compData
      }}
  }), define("core/components/gallerySizeScaling", ["skins", "lodash"], function (a, b) {
      "use strict";
      var c = a.skins;
      return{getSizeAfterScaling: function (a, b) {
          var d = this.props.compProp.imageMode || "clipImage", e = c[this.props.skin], f = e.exports && e.exports.bottomGap || 0, g = a.itemHeight - f, h = this.getDisplayerWidthDiff(a), i = this.getDisplayerHeightDiff(a, b), j = {clipImage: this.getClipImage, flexibleHeight: this.getFlexibleHeight, flexibleWidth: this.getFlexibleWidth, flexibleWidthFixed: this.getFlexibleWidth};
          return j[d].call(this, a.itemWidth, g, h, i, a.displayerData, d)
      }, getClipImage: function (a, b, c, d) {
          return{displayerSize: {width: a, height: b}, imageWrapperSize: this.getWrapperSize(a - c, b - d)}
      }, getFlexibleHeight: function (a, b, c, d, e) {
          var f = a - c, g = Math.floor(f / this.getAspectRatio(e));
          return{displayerSize: {width: a, height: g}, imageWrapperSize: this.getWrapperSize(f, g - d)}
      }, getFlexibleWidth: function (a, b, c, d, e, f) {
          var g = "flexibleWidth" === f, h = 0, i = 0, j = b - d, k = j * this.getAspectRatio(e);
          if (!g && k > a - c && k > a - c) {
              var l = (a - c) / k;
              k = a - c, j = l * j
          }
          return g || (h = Math.floor((a - k - c) / 2), i = Math.floor((b - j - d) / 2)), {displayerSize: {width: g ? k : a, height: b}, imageWrapperSize: this.getWrapperSize(k, j, h, i)}
      }, getAspectRatio: function (a) {
          return a.width / a.height
      }, getWrapperSize: function (a, b, c, d) {
          var e = 0 > b ? 0 : b, f = 0 > a ? 0 : a;
          return{imageWrapperHeight: e, imageWrapperWidth: f, imageWrapperMarginLeft: c || 0, imageWrapperMarginRight: c || 0, imageWrapperMarginTop: d || 0, imageWrapperMarginBottom: d || 0}
      }, getDisplayerHeightDiff: function (a, c) {
          var d = 0, e = parseInt(c.imgHeightDiff && c.imgHeightDiff.value, 10) || 0, f = parseInt(c.topPadding && c.topPadding.value, 10) || 0;
          return e || f ? d = e + f : a.displayerSkinObj && a.displayerSkinObj.exports && (d = "mobileView" === this.state.$displayDevice && b.isNumber(a.displayerSkinObj.exports.m_heightDiff) ? a.displayerSkinObj.exports.m_heightDiff : a.displayerSkinObj.exports.heightDiff || 0), d
      }, getDisplayerWidthDiff: function (a) {
          var c = 0;
          return a.displayerSkinObj && a.displayerSkinObj.exports && (c = "mobileView" === this.state.$displayDevice && b.isNumber(a.displayerSkinObj.exports.m_widthDiff) ? a.displayerSkinObj.exports.m_widthDiff : a.displayerSkinObj.exports.widthDiff || 0), c
      }}
  }), define("core/core/Touchy", ["lodash"], function (a) {
      "use strict";
      function e() {
          this.data = {}
      }
  
      var b = {touched: !1, moved: !1, startCoords: {x: 0, y: 0}, deltaCoords: {x: 0, y: 0}, evObj: {}}, c = ["onSwipeLeft", "onSwipeRight", "onSwipeUp", "onSwipeDown", "onTap"], d = {left: "onSwipeLeft", right: "onSwipeRight", up: "onSwipeUp", down: "onSwipeDown"};
      return e.prototype = {getCoords: function (a) {
          if (a.touches && a.touches.length) {
              var b = a.touches[0];
              return{x: b.pageX, y: b.pageY}
          }
      }, onTouchStart: function (c) {
          this.initParams(), this.data = a.clone(b), this.data.touched = !0, this.data.numOfTouches = c.touches.length, this.data.startCoords = this.getCoords(c), this.data.startTime = Date.now(), this.data.evObj = c
      }, onTouchMove: function (a) {
          var b = this.getCoords(a), c = this.data.startCoords.x - b.x, d = this.data.startCoords.y - b.y;
          this.data.moved = !0, this.data.deltaCoords = {x: c, y: d}
      }, onTouchEnd: function (b) {
          var c, e;
          this.data.endTime = Date.now(), a.isEmpty(b) || (this.isValidSwipe() ? (c = this.getSwipeDirection(this.data.deltaCoords.x, this.data.deltaCoords.y), e = d[c], b[e] && b[e](this.data.evObj)) : this.isValidTap() && b.onTap && b.onTap(this.data.evObj))
      }, registerTouchEvents: function (b) {
          if (a.isObject(b)) {
              var d = {};
              a.forEach(c, function (a) {
                  b[a] && (d[a] = b[a])
              }, this), a.isEmpty(d) || (b.onTouchStart = this.onTouchStart.bind(this), b.onTouchMove = this.onTouchMove.bind(this), b.onTouchEnd = this.onTouchEnd.bind(this, d))
          }
      }, isValidSwipe: function () {
          var a = this.data.endTime - this.data.startTime;
          return this.data.moved && 1 === this.data.numOfTouches && 200 > a && Math.abs(this.data.deltaCoords.x) > 100
      }, isValidTap: function () {
          return this.data.touched && !this.data.moved && 1 === this.data.numOfTouches
      }, getSwipeDirection: function (a, b) {
          var c;
          return c = Math.abs(a) > Math.abs(b) ? a > 0 ? "left" : "right" : b > 0 ? "up" : "down"
      }, initParams: function () {
          this.data.touched = !1, this.data.moved = !1
      }}, e
  }), define("core/components/skinBasedComp", ["lodash", "skins", "react", "utils", "core/siteRender/compFactory", "core/components/baseCompMixin", "core/core/Touchy"], function (a, b, c, d, e, f, g) {
      "use strict";
      function j() {
          var b;
          if (a.isFunction(this.getTransformedCssStates)) {
              var c = this.getTransformedCssStates();
              b = void 0 !== c ? c : this.state
          } else b = this.state;
          if (!b)return{};
          var d = {}, e = [];
          return a.forOwn(b, function (a, b) {
              0 === b.lastIndexOf("$", 0) && e.push(a)
          }), a.isEmpty(e) && b.hasOwnProperty("cssState") && (e = a.values(b.cssState)), a.isEmpty(e) || (d["data-state"] = e.join(" ")), d
      }
  
      function k(b, c) {
          return b ? a.defaults(b, c) : b = c, b
      }
  
      function l(a) {
          var b = a.props.skin, c = i[b];
          return!c && a.getDefaultSkinName && (b = a.getDefaultSkinName(), c = i[b]), c
      }
  
      function m(b) {
          var c = this.getSkinProperties();
          a.isFunction(this.transformRefData) && this.transformRefData(c), this.props.transformSkinProperties && (c = this.props.transformSkinProperties(c)), c[""] || (c[""] = {}), c[""].style = k(c[""].style, this.props.style), c[""].className = this.props.className, a.assign(c[""], j.call(this)), b.react && 0 !== b.react.length || (c[""] = a.defaults(c[""], c.inlineContent));
          var d = this.props.structure && this.props.structure.layout && this.props.structure.layout.rotationInDegrees;
          return d && (c[""]["data-angle"] = d), c
      }
  
      var h = b.skinsRenderer, i = b.skins, n = {mixins: [f], render: function () {
          var b;
          try {
              var d = l(this);
              if (!d) {
                  var e = this.props.structure && this.props.structure.componentType || "";
                  return console.error("Skin [" + this.props.skin + "] not found for comp [" + e + "]"), c.DOM.div()
              }
              var f = m.call(this, d);
              if (this.props.siteData.isTouchDevice()) {
                  var j = new g;
                  a.forEach(f, function (a) {
                      j.registerTouchEvents(a)
                  })
              }
              return h.renderSkinHTML.call(this, d.react, f, this.props.styleId, this.props.id, this.props.structure, this.props, this.state)
          } catch (n) {
              if (this.props.siteData.isDebugMode())throw n;
              return console.error("Cannot render component", this.constructor.displayName, this.props.id, n), b = {"": {style: k({}, this.props.style), "data-dead-comp": !0}}, h.renderSkinHTML.call(this, i["skins.viewer.deadcomp.DeadCompPublicSkin"].react, b, "deadComp", this.props.id, this.props.structure, this.props, this.state)
          }
      }, getSkinExports: function () {
          var a = l(this);
          return a && a.exports
      }, classSet: function (b) {
          return d.classNames(a.reduce(b, function (a, b, c) {
              return a[this.styleId + "_" + c] = b, a
          }, {}, this.props))
      }, componentWillUpdate: function () {
          this.props.onComponentWillUpdate && this.props.onComponentWillUpdate()
      }, createChildComponent: function (b, c, d, f) {
          var g = "string" == typeof d ? {skin: this.getSkinExports()[d].skin, styleId: this.props.styleId + d} : d, h = a.merge({siteData: this.props.siteData, siteAPI: this.props.siteAPI, pageData: this.props.pageData, compProp: this.props.compProp, loadedStyles: this.props.loadedStyles, compData: b, id: this.props.id + b.id, ref: b.id, refInParent: b.id || "", skin: g.skin, styleId: g.styleId, pageId: this.props.pageId, currentPage: this.props.currentPage}, f);
          return h.structure = {componentType: c, styleId: this.props.structure ? this.props.structure.styleId : "", skinPart: f && f.skinPart || h.ref}, e.getCompClass(c)(h)
      }};
      return{skinBasedComp: n, _testsGetCompCssStates: j, _testsGetCompInlineStyles: k}
  }), define("core/components/fixedPositionContainerMixin", ["lodash"], function (a) {
      "use strict";
      function b(a) {
          return a.style && "fixed" === a.style.position
      }
  
      function c(a) {
          return b(a) && !a.siteData.isMobileView() ? {$fixed: "fixedPosition"} : {$fixed: ""}
      }
  
      function d(a) {
          return a.siteData.isMobileView() ? {$mobile: "mobileView"} : {$mobile: ""}
      }
  
      function e(b) {
          return a.merge(d(b), c(b))
      }
  
      return{getRootStyle: function (a) {
          return this.getRootPosition ? {position: this.getRootPosition(a)} : {}
      }, getInitialState: function () {
          return e(this.props)
      }, componentWillReceiveProps: function (b) {
          var c = e(this.props), d = e(b);
          a.isEqual(c, d) || this.setState(d)
      }}
  }), define("core/components/galleryAutoPlay", [], function () {
      "use strict";
      return{getInitialState: function () {
          return{shouldAutoPlay: this.canAutoPlay(), $slideshow: this.canAutoPlay() && !this.props.siteAPI.isZoomOpened() && this.props.siteData.renderFlags.isPlayingAllowed ? "autoplayOn" : "autoplayOff"}
      }, canAutoPlay: function () {
          return this.hasItems() && this.props.compProp.autoplay
      }, shouldShowAutoPlay: function () {
          return this.hasItems() && this.props.compProp.showAutoplay
      }, hasItems: function () {
          return this.props.compData.items.length > 0
      }, toggleAutoPlay: function () {
          if (this.hasItems()) {
              var a = "autoplayOff";
              if ("autoplayOff" === this.state.$slideshow) {
                  if (!this.props.siteData.renderFlags.isPlayingAllowed)return;
                  a = "autoplayOn"
              }
              this.setState({shouldAutoPlay: !this.state.shouldAutoPlay, $slideshow: a}, this.updateAutoplayState)
          }
      }, componentWillReceiveProps: function () {
          var a = this.state.shouldAutoPlay && !this.props.siteAPI.isZoomOpened() && this.props.siteData.renderFlags.isPlayingAllowed ? "autoplayOn" : "autoplayOff";
          a !== this.state.$slideshow && this.setState({$slideshow: a}, this.updateAutoplayState)
      }, updateAutoplayState: function () {
          this.clearTimeoutNamed(this.props.id), "autoplayOn" === this.state.$slideshow && this.setTimeoutNamed(this.props.id, this.autoplayCallback, this.getAutoplayInterval())
      }, autoplayCallback: function () {
          this.props.siteAPI.isZoomOpened() || ("LTR" === this.props.compProp.autoPlayDirection ? this.prev() : this.next())
      }, getAutoplayInterval: function () {
          var a = this.props.compProp.autoplayInterval;
          return Math.floor(1e3 * a)
      }}
  }), define("core/components/optionInput", ["lodash", "core/components/skinBasedComp"], function (a, b) {
      "use strict";
      var c = "toolTip";
      return{mixins: [b.skinBasedComp], getInitialState: function () {
          return this.getCssState(this.props)
      }, componentWillReceiveProps: function (a) {
          this.setState(this.getCssState(a))
      }, getCssState: function (a) {
          return{$enabledState: a.compData.enabled ? "enabled" : "disabled", $selectState: a.selected ? "selected" : "unselected"}
      }, onMouseEnter: function () {
          this.refs[c].showToolTip({}, {source: this})
      }, onMouseLeave: function () {
          this.refs[c].closeToolTip()
      }, createInfoTipChildComponent: function () {
          return this.createChildComponent({content: this.props.compData.description, id: c}, "wysiwyg.common.components.InfoTip", {skin: "wixapps.integration.skins.ecommerce.options.InfoTipSkin", styleId: this.props.loadedStyles["wixapps.integration.skins.ecommerce.options.InfoTipSkin"]}, {ref: c, className: this.props.styleId + "tooltip"})
      }}
  }), define("core/components/skinInfo", ["skins", "lodash"], function (a, b) {
      "use strict";
      return{getStatics: function (a) {
          var c = {};
          return b.forEach(a, function (a) {
              c[a] = this.getStatic(a)
          }, this), c
      }, getStatic: function (b, c) {
          var d = a.skins[this.props.skin];
          return d.statics ? d.statics[b] : c
      }, getParams: function (a, c) {
          var d = {};
          return b.forEach(a, function (a) {
              d[a] = this.getParamFromDefaultSkin(a, c)
          }, this), d
      }, getParamFromDefaultSkin: function (a, b) {
          return this.getParamFromSkin(a, b || this.props.skin)
      }, getParamFromSkin: function (c, d) {
          var e = this.props.siteData.getAllTheme(), f = e[this.props.structure.styleId], g = f && f.style && f.style.properties || {}, h = e.THEME_DATA, i = a.skins[d], j = g[c] || i.paramsDefaults && i.paramsDefaults[c];
          return b.isArray(j) && j.length > 1 && (g = b.clone(g), g[c] = this.getSumParamValue(c, d)), a.params.renderParam(c, i, g, h)
      }, getSumParamValue: function (c, d) {
          var e = this.getSkinExports(), f = 0, g = a.skins[d].paramsDefaults, h = g && g[c];
          if (!h) {
              var i = e[c];
              return f + (i ? Math.abs(parseInt(i, 10)) || 0 : 0)
          }
          return h instanceof Array ? (b.map(h, function (a) {
              f += Math.abs(parseInt(this.getParamFromSkin(a, d).value, 10))
          }.bind(this)), f) : f + (Math.abs(parseInt(h, 10)) || 0)
      }, getFromExports: function (a) {
          var b = this.getSkinExports();
          return b && b[a] || 0
      }, getStyleData: function (a) {
          var b = this.props.siteData, c = a || this.props.structure.styleId;
          c && (c = c.replace("#", ""));
          var d = b.getAllTheme()[c].style;
          return d && d.properties || {}
      }}
  }), define("core/components/siteAspects/loginToWixAspect", ["react", "zepto", "utils", "core/core/siteAspectsRegistry"], function (a, b, c, d) {
      "use strict";
      function f(a) {
          return"//" + a.currentUrl.host + "/signin?renderMode=iframe"
      }
  
      function g() {
          if (!this.iframeFactory) {
              var b = a.createClass({displayName: "LoginToWixIframe", render: function () {
                  return a.DOM.iframe({src: f(this.props.siteData), ref: "iframe", style: {position: "fixed", top: "0px", left: "0px", width: "100%", height: "100%", display: "block", zIndex: 1e4}})
              }});
              this.iframeFactory = a.createFactory(b)
          }
          return this.iframeFactory
      }
  
      function h() {
          var a = this.aspectSiteApi.getSiteAPI().getSiteData(), b = g.call(this);
          return b({siteData: a, displayForm: this.isLoginToWixShown})
      }
  
      function i() {
          if ("undefined" == typeof this.isWixSite) {
              var a = this.aspectSiteApi.getSiteAPI().getSiteData();
              this.isWixSite = "WixSite" === a.rendererModel.siteInfo.documentType
          }
          return this.isWixSite
      }
  
      function j(a) {
          this.aspectSiteApi = a, this.isLoginToWixShown = !1, this.registeredToMessage = !1, this.iframeFactory = null
      }
  
      var e = {postLogin: "http://www.wix.com/my-account", postSignUp: "http://www.wix.com/new/account"};
      return j.prototype = {getReactComponents: function () {
          return this.isLoginToWixShown && i.call(this) ? [h.call(this)] : null
      }, openLoginToWixForm: function (a) {
          if (!this.isLoginToWixShown) {
              this.isWixSite = !0, this.registeredToMessage || (this.aspectSiteApi.registerToMessage(this.handlePostMessage.bind(this)), this.registeredToMessage = !0);
              var b = c.urlUtils.parseUrl(a).query;
              this.postLoginUrl = b.postLogin || e.postLogin, this.postSignupUrl = b.postSignUp || e.postSignUp, this.isLoginToWixShown = !0, this.aspectSiteApi.scrollSiteTo(0, 0), this.aspectSiteApi.forceUpdate()
          }
      }, handlePostMessage: function (a) {
          a = a.data ? a : a.originalEvent;
          var b = this.aspectSiteApi;
          switch (a.data) {
              case"onLoad":
                  break;
              case"onPostLogin":
                  location.href = this.postLoginUrl;
                  break;
              case"onPostSignUp":
                  location.href = this.postSignupUrl;
                  break;
              case"onClose":
                  this.isLoginToWixShown = !1, setTimeout(function () {
                      b.forceUpdate()
                  }, 1e3)
          }
      }}, d.registerSiteAspect("LoginToWix", j), j
  }), define("core/components/siteAspects/parentFrameAspect", ["core/core/siteAspectsRegistry"], function (a) {
      "use strict";
      function b() {
          var a = this.aspectSiteApi.getSiteAPI().getSiteData().measureMap, b = a && a.height && a.height.SITE_STRUCTURE || 0;
          if (b && b !== this.storedHeight) {
              this.storedHeight = b;
              var c;
              parent.postMessage ? c = parent : parent.document.postMessage && (c = parent.document), c && "undefined" != typeof c && c.postMessage(b, "*")
          }
      }
  
      function c(a) {
          this.aspectSiteApi = a, this.storedHeight = 0, a.registerToDidLayout(b.bind(this))
      }
  
      return a.registerSiteAspect("parentFrame", c), c
  }), define("core/components/siteAspects/vkPostMessageAspect", ["core/core/siteAspectsRegistry", "lodash"], function (a, b) {
      "use strict";
      function c(a) {
          var b;
          try {
              b = JSON.parse(a.data)
          } catch (c) {
              return
          }
          d.call(this, b.id, b)
      }
  
      function d(a, c) {
          b.forEach(this._registeredCompIds, function (b) {
              if (a === b) {
                  var d = this._siteAPI.getComponentById(b);
                  if (!d)return void delete this._registeredCompIds[b];
                  d.onVKPostMessage && d.onVKPostMessage(c)
              }
          }, this)
      }
  
      var e = function (a) {
          a.registerToMessage(c.bind(this)), this._siteAPI = a, this._registeredCompIds = {}
      };
      e.prototype = {registerToPostMessage: function (a) {
          this._registeredCompIds[a.props.id] = a.props.id
      }, unRegisterToPostMessage: function (a) {
          delete this._registeredCompIds[a.props.id]
      }}, a.registerSiteAspect("vkPostMessage", e)
  }), define("core/components/siteAspects/packagePickerAspect", ["core/core/siteAspectsRegistry"], function (a) {
      "use strict";
      function b(a) {
          for (var b = document.getElementsByTagName("iframe"), c = 0, d = b.length; d > c; c++)if (0 === b[c].src.indexOf(a.origin))return b[c];
          return null
      }
  
      function c(a) {
          var c = b(a);
          null !== c ? c.contentWindow.postMessage(location.hash, "*") : console.error("Unable to find premium packagePicker iframe source")
      }
  
      function d(a) {
          switch (a = a.data ? a : a.originalEvent, a.data) {
              case"openUserLoginMessage":
                  this.siteAPI.getSiteAspect("LoginToWix").openLoginToWixForm("https://users.wix.com/wix-users/login/form?postLogin=/upgrade/website");
                  break;
              case"sendHashDataToPremium":
                  c(a)
          }
      }
  
      function e(a) {
          this.siteAPI = a, a.registerToMessage(d.bind(this))
      }
  
      e.prototype = {setSelected: function (a) {
          this.selectedPackagePickerId = a.props.id, this.siteAPI.forceUpdate()
      }, isPackagePickerSelected: function (a) {
          return this.selectedPackagePickerId && a.props.id === this.selectedPackagePickerId
      }}, a.registerSiteAspect("PackagePickerAspect", e)
  }), define("core/core/pageItemRegistry", [], function () {
      "use strict";
      var a = {Image: function (a, b, c) {
          var d = {id: "imageZoomComp", key: "imageZoomComp", styleId: "zoom", dataQuery: "#" + a.id, skin: "wysiwyg.skins.ImageZoomSkin", componentType: "wysiwyg.components.imageZoom"};
          return c.isMobileView() ? d.skin = "wysiwyg.skins.MobileImageZoomSkin" : (c.isMobileDevice() || c.isTabletDevice()) && (d.skin = "wysiwyg.skins.NonOptimizedImageZoomSkin"), d
      }, PermaLink: function (a, b, c) {
          var d = {id: "appPartZoomComp", key: "appPartZoomComp", styleId: "zoom", dataQuery: "#" + a.id, skin: "wysiwyg.skins.AppPartZoomSkin", componentType: "wixapps.integration.components.AppPartZoom"};
          return c.isMobileView() && (d.skin = "wysiwyg.skins.MobileAppPartZoomSkin"), d
      }};
      return{registerPageItem: function (b, c) {
          return a[b] ? void console.error("page item already registered " + b) : void(a[b] = c)
      }, getCompStructure: function (b, c, d, e) {
          return a[b] ? a[b](c, d, e) : null
      }, clear: function () {
          a = {}
      }}
  }), define("core/core/pageItemAspect", ["core/core/pageItemRegistry", "core/core/componentPropsBuilder", "core/siteRender/compFactory", "core/core/siteAspectsRegistry"], function (a, b, c, d) {
      "use strict";
      function e(a, d, e, f) {
          var g = b.getCompProps(a, e, null, f);
          g.pageItemAdditionalData = d;
          var h = c.getCompClass(a.componentType);
          return h(g)
      }
  
      function f(b, c) {
          if (!b.pageItemId)return null;
          var d = c.getDataByQuery(b.pageItemId);
          if (!d)return null;
          var e = a.getCompStructure(d.type, d, b, c);
          return e ? e : null
      }
  
      function g(a) {
          this._aspectSiteAPI = a
      }
  
      g.prototype = {getReactComponents: function (a) {
          var b = this._aspectSiteAPI.getPageItemInfo(), c = f(b, this._aspectSiteAPI.getSiteData());
          return c ? [e(c, b.pageItemAdditionalData, this._aspectSiteAPI.getSiteAPI(), a)] : null
      }, getComponentStructures: function () {
          var a = this._aspectSiteAPI.getPageItemInfo(), b = f(a, this._aspectSiteAPI.getSiteData());
          return b ? [b] : null
      }}, d.registerSiteAspect("pageItem", g)
  }), define("core/components/siteAspects/scriptClass", ["react"], function (a) {
      "use strict";
      function b(a) {
          return window.loadedScripts && window.loadedScripts[a.NAME]
      }
  
      function c(a) {
          return'window.loadedScripts = window.loadedScripts || {}; window.loadedScripts["' + a.NAME + '"] = true;'
      }
  
      var d = a.createClass({displayName: "scriptClass", loaded: !1, componentDidMount: function () {
          var d, e, f, a = this.props.scriptData, c = b(a.script);
          c && !this.loaded ? this.fireCallbacks(a, !0) : (f = this, c = document.createElement("script"), d = function () {
              f.fireCallbacks(a, !1), f.loaded = !0, c.removeEventListener("load", d)
          }, c.addEventListener("load", d), c.src = a.script.SRC, e = this.getDOMNode(), e.replaceChild(c, e.children[0]))
      }, fireCallbacks: function (a, b) {
          a.callbacks.forEach(function (a) {
              var c = a.context;
              c ? a.callback.call(c, {fromCache: b}) : a.callback({fromCache: b})
          }), a.callbacks.length = 0
      }, render: function () {
          var b = this.props.scriptData.script, d = "script-" + b.NAME;
          return a.DOM.div(null, a.DOM.script({id: d, src: b.SRC}), a.DOM.script({dangerouslySetInnerHTML: {__html: c(b)}}))
      }});
      return d
  }), define("core/components/siteAspects/externalScriptLoaderAspect", ["react", "lodash", "core/core/siteAspectsRegistry", "core/components/siteAspects/scriptClass"], function (a, b, c, d) {
      "use strict";
      function e(a) {
          this.siteAPI = a, this.loadedScripts = {}
      }
  
      e.prototype = {getReactComponents: function () {
          return b.map(this.loadedScripts, this.getNewScript, this)
      }, loadScript: function (a, b, c) {
          var e, d = this.loadedScripts[a];
          b && (e = {callback: b, context: c}), d && e ? d.callbacks.push(e) : this.loadedScripts[a] = {script: this.getScriptDescription(a), callbacks: e ? [e] : []}
      }, unsubscribe: function (a, b) {
          var d, c = this.loadedScripts[a];
          c && (d = c.callbacks, d.some(function (a, c) {
              var e = a.callback === b;
              return e ? (d.splice(c, 1), e) : void 0
          }))
      }, getNewScript: function (b, c) {
          return a.createElement(d, {key: c, ref: c, scriptData: b})
      }, getScriptDescription: function (a) {
          switch (a) {
              case"FACEBOOK":
                  return{NAME: "FacebookSDK", SRC: "//connect.facebook.net/" + this.getFacebookSdkLanguage() + "/sdk.js#xfbml=1&appId=304553036307597&version=v2.3"};
              case"GOOGLE":
                  return{NAME: "GoogleApi", SRC: "//apis.google.com/js/plusone.js"}
          }
      }, getFacebookSdkLanguage: function () {
          var a = {en: "en_US", es: "es_ES", pt: "pt_BR", ru: "ru_RU", fr: "fr_FR", de: "de_DE", ja: "ja_JP", ko: "ko_KR", it: "it_IT", pl: "pl_PL", tr: "tr_TR", nl: "nl_NL", sv: "sv_SE", no: "nn_NO"}, b = navigator && (navigator.language || navigator.browserLanguage);
          return b = b.indexOf("-") > -1 ? b.replace("-", "_") : a[b] || "en_US"
      }}, c.registerSiteAspect("externalScriptLoader", e)
  }), define("core/core/SiteMembersAPI", ["utils", "lodash"], function (a, b) {
      "use strict";
      function k(i, j, k, l, m, n) {
          var o = a.ajaxLibrary, p = e + i;
          j = b.merge(j || {}, {collectionId: d, metaSiteId: f});
          var q = {url: p, type: "GET", dataType: "jsonp", data: j, complete: this.onJsonpComplete, context: this};
          m && (b.merge(q.data, {svSession: m, appUrl: c}), n && (q.data.initiator = n)), g = l, h = k, o.temp_jsonp(q)
      }
  
      var c, d, e, f, g, h, i = {login: "/api/member/login", register: "/api/member/register", apply: "/api/member/apply", sendForgotPasswordMail: "/api/member/sendForgotPasswordMail", resetMemberPassword: "/api/member/changePasswordWithMailToken", getMemberDetails: "/api/member"}, j = {};
      return j.initializeData = function (a) {
          f = a.getMetaSiteId();
          var b = a.getClientSpecMapEntriesByType("sitemembers")[0];
          d = b && b.smcollectionId, e = a.serviceTopology.siteMembersUrl, c = a.currentUrl.full
      }, j.onJsonpComplete = function (a, c) {
          if (c && !c.errorCode)b.isFunction(h) && h(c); else {
              var d = c && c.errorCode || "General_Err";
              b.isFunction(g) && g(d)
          }
          h = null, g = null
      }, j.login = function (a, b, c, d, e) {
          k.call(this, i.login, a, b, c, d, e)
      }, j.register = function (a, b, c, d, e) {
          k.call(this, i.register, a, b, c, d, e)
      }, j.apply = function (a, b, c, d, e) {
          k.call(this, i.apply, a, b, c, d, e)
      }, j.sendForgotPasswordMail = function (a, b, c, d) {
          k.call(this, i.sendForgotPasswordMail, {email: a, returnUrl: b}, c, d)
      }, j.resetMemberPassword = function (a, b, c) {
          k.call(this, i.resetMemberPassword, a, b, c)
      }, j.getMemberDetails = function (a, b, c) {
          k.call(this, i.getMemberDetails + "/" + a, null, b, c)
      }, j
  }), define("core/util/translations/siteMembersTranslations", [], function () {
      "use strict";
      return{de: {SMApply_Success1: "Vielen Dank! Ihre Anfrage zur Mitgliederanmeldung wurde versandt und wartet auf Bestätigung.", SMApply_Success2: "Der Administrator der Website wird Sie per E-Mail informieren, ( {0} ) sobald Ihre Anfrage bestätigt wurde. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Bitte prüfen Sie Ihren Posteingang.", SMResetPassMail_confirmation_msg: "Wir haben Ihnen eine E-Mail mit einem Link geschickt, der es Ihnen ermöglicht Ihr Passwort zurückzusetzen.", SMResetPass_Continue: "Fortfahren", SMResetPass_Reset_Succ: "Sie haben Ihr Passwort erfolgreich zurückgesetzt.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Beim Abmelden ist etwas schiefgelaufen. Bitte versuchen Sie es noch einmal.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Abmelden nicht erfolgreich", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Sie sind der Besitzer dieser Website und bei Wix.com angemeldet. Bitte melden Sie sich bei Wix.com ab, um die Mitgliederanmeldung zu testen.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Fehler beim Abmelden"}, en: {SMApply_Success2: "The site administrator will notify you via email( {0} ) once your request has been approved ", SMApply_Success1: "Success! Your member login request has been sent and is awaiting approval.", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Please check your email", SMResetPassMail_confirmation_msg: "We’ve sent you an email with a link that will allow you to reset your password", SMResetPass_Reset_Succ: "You’ve successfully reset your password.", SMResetPass_Continue: "Continue", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Something went wrong with that logout. Please give it another go.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Logout Unsuccessful", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "You are the owner of this website, and are logged in on Wix.com. Please log out of Wix.com to test the Site Members feature.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Logout failure"}, es: {SMApply_Success1: "¡Enhorabuena! Tu solicitud de login de miembros fue enviada y su aprobación está pendiente. ", SMApply_Success2: "El administrador de la página web te notificará a través de un email ({0}) una vez que tu solicitud sea aprobada. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Por favor revisa tu correo", SMResetPassMail_confirmation_msg: "Te hemos enviado un email con un enlace que te permitirá restablecer tu contraseña.", SMResetPass_Continue: "Continuar", SMResetPass_Reset_Succ: "¡Has restablecido tu contraseña exitosamente!", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Algo falló en el cierre de sesión. Por favor inténtalo de nuevo.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "No se pudo cerrar sesión", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Tú eres el dueño de esta página web e iniciaste sesión con Wix.com. Por favor cierra tu sesión en Wix.com para que puedas probar la función Miembros del Sitio.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "El cierre de sesión falló"}, fr: {SMApply_Success1: "Bravo ! Votre demande de connexion membre a été envoyée et est actuellement en attente d'approbation. ", SMApply_Success2: "L'administrateur du site vous informera par email ({0}) lorsque votre demande aura été approuvée. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Veuillez vérifier vos emails", SMResetPassMail_confirmation_msg: "Un email avec un lien pour réinitialiser votre mot de passe vous a été envoyé", SMResetPass_Continue: "Continuer", SMResetPass_Reset_Succ: "Vous avez réinitialisé votre mot de passe avec succès ", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Un problème est survenu lors de la déconnexion. Veuillez réessayer.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Échec Déconnexion", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Vous êtes le propriétaire de ce site internet et vous êtes connecté à Wix.com. Veuillez vous déconnecter de Wix.com afin de tester la fonctionnalité Membres du Site.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Échec déconnexion"}, it: {SMApply_Success1: "Successo! La tua richiesta di login membro è stata inviata ed è in attesa di approvazione.", SMApply_Success2: "L'amministratore del sito ti notificherà via email( {0} ) una volta che la tua richiesta è stata accettata ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Ti preghiamo di controllare la tua email", SMResetPassMail_confirmation_msg: "Ti abbiamo inviato un'email con un link che ti permetterà di ripristinare la tua password", SMResetPass_Continue: "Continua", SMResetPass_Reset_Succ: "Hai ripristinato con successo la tua password.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Qualcosa è andato storto durante il logout. Ti preghiamo di riprovare.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Logout Non Riuscito", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Sei il proprietario di questo sito web e hai effettuato l'accesso a Wix.com. Esci da Wix.com per testare la funzionalità Membri del Sito.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Fallimento Logout"}, ja: {SMApply_Success1: "会員登録リクエストが送信されました。", SMApply_Success2: "会員登録が承認されると、サイト管理者からお知らせメールが （{0}） 宛に送信されます。 ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "パスワードリセットのご案内メールを<br/>送信しました", SMResetPassMail_confirmation_msg: "メールに添付されたリンクをクリックしてパスワードをリセットしてください。", SMResetPass_Continue: "続行", SMResetPass_Reset_Succ: "パスワードがリセットされました！", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "ログアウトに問題が発生しました。再試行してください。", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "不成功したログアウト", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "あなたはこのサイトのオーナーとして、Wix.com にログインしています。サイト会員機能をテストするには、一度 Wix.com からログアウトしてください。", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "ログアウト失敗"}, ko: {SMApply_Success1: "성공적으로 회원가입 요청이 이루어졌습니다! 현재 회원가입 승인을 기다리고  있습니다.", SMApply_Success2: "회원가입이 승인되면 이메일로 알려드립니다. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "이메일을 확인해 주세요.", SMResetPassMail_confirmation_msg: "비밀번호 재설정 링크가 이메일로 발송되었습니다.", SMResetPass_Continue: "계속", SMResetPass_Reset_Succ: "비밀번호가 성공적으로 변경되었습니다.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "로그아웃에 문제가 발생했습니다. 다시 시도해 주세요.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "로그아웃에 실패했습니다.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "사용자님은 이 사이트 소유자이며 Wix.com에 로그인되어 있습니다. 사이트 회원 기능을 테스트하려면 Wix.com에서 로그아웃해 주세요.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "로그아웃 실패"}, pl: {SMApply_Success1: "Gratulujemy! Twoja prośba o członkostwo została wysłana i czeka na zatwierdzenie.", SMApply_Success2: "Administrator powiadomi cię w emailu,( {0} ) gdy twoja prośba zostanie zatwierdzona ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Sprawdź swój email", SMResetPassMail_confirmation_msg: "Wysłaliśmy email z linkiem, który umożliwi ci zresetowanie hasła", SMResetPass_Continue: "Kontynuuj", SMResetPass_Reset_Succ: "Zresetowanie hasła powiodło się.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Coś poszło nie tak przy próbie wylogowania. Spróbuj jeszcze raz.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Wylogowanie Nie Powiodło Się", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Jesteś właścicielem tej witryny i jesteś obecnie zalogowany na Wix.com. Wyloguj się z Wix.com, aby przetestować funkcję Login Członka.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Wylogowanie nie powiodło się"}, ru: {SMApply_Success1: "Поздравляем! Ваш запрос на регистрацию был отправлен на подтверждение.", SMApply_Success2: "Администратор сайта пришлет вам письмо( {0} ), как только ваш запрос будет подтвержден ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Пожалуйста, проверьте ваш email", SMResetPassMail_confirmation_msg: "Мы отправили вам на почту письмо со ссылкой для сброса пароля.", SMResetPass_Continue: "Продолжить", SMResetPass_Reset_Succ: "Вы успешно установили новый пароль.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Что-то так с выходом с сайта. Попробуйте еще раз.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Не получилось выйти", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Вы являетесь владельцем сайта и вы вошли на Wix.com. Пожалуйста, выйдите с Wix.com, чтобы протестировать функцию Пользователи.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Не удалось выйти"}, nl: {SMApply_Success1: "Gefeliciteerd! Uw inlogverzoek is verzonden en moet nu worden goedgekeurd.", SMApply_Success2: "De beheerder van de website stuurt u een e-mail ({0}) als uw verzoek is goedgekeurd. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Controleer uw e-mail", SMResetPassMail_confirmation_msg: "We hebben een e-mail verzonden met instructies over hoe u uw wachtwoord opnieuw kunt instellen.", SMResetPass_Continue: "Doorgaan", SMResetPass_Reset_Succ: "Uw wachtwoord is opnieuw ingesteld.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Er ging iets mis bij het uitloggen. Probeer het opnieuw.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Uitloggen mislukt", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "U bent de eigenaar van deze website en u bent ingelogd op Wix.com. Log uit op Wix.com om de functie Websiteleden te testen.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Fout bij uitloggen"}, tr: {SMApply_Success1: "Başarılı! Üye girişi talebiniz gönderildi ve onay bekliyor.", SMApply_Success2: "Talebiniz onaylandığında site yöneticisi size e-posta( {0} ) yoluyla bildirecektir ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Lütfen e-postanızı kontrol edin", SMResetPassMail_confirmation_msg: "Size şifrenizi sıfırlamanızı sağlayacak bir bağlantı içeren bir e-posta gönderdik.", SMResetPass_Continue: "Devam", SMResetPass_Reset_Succ: "Şifrenizi yeniden ayarlama başarılı.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Bu oturum kapatma işlemiyle ilgili bir hata oluştu. Lütfen daha sonra deneyin.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Oturum Kapatma Başarısız", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Bu web sitesinin sahibisiniz ve Wix.com'daki oturumuz açık. Lütfen Site Üyelik özelliğini test etmek için Wix.com oturumunuzu kapatın.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Oturum Kapatma hatası"}, sv: {SMApply_Success1: "Klart! Begäran om medlemsinloggning har skickats, och väntar på godkännande.", SMApply_Success2: "Webbplatsadministratören meddelar dig via e-post ({0}) när din begäran har godkänts ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Kolla din e-post", SMResetPassMail_confirmation_msg: "Vi har skickat en länk via e-post, genom vilken du kan återställa lösenordet", SMResetPass_Continue: "Fortsätt", SMResetPass_Reset_Succ: "Du har nu återställt lösenordet.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Något gick fel med utloggningen. Gör ett nytt försök.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Det gick inte att logga ut", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Du äger den här hemsidan, och är inloggad på Wix.com. Logga ut från Wix.com för att testa funktionen sidmedlemmar.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Utloggningsfel"}, pt: {SMApply_Success1: "Sucesso! Seu pedido de login foi enviado e aguarda aprovação.", SMApply_Success2: "O administrador do site irá enviar-lhe uma notificação via e-mail( {0} ) assim que o pedido for aprovado ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Por favor, verifique seu e-mail", SMResetPassMail_confirmation_msg: "Enviamos um e-mail com um link que lhe permitirá redefinir sua senha", SMResetPass_Continue: "Continuar", SMResetPass_Reset_Succ: "Você redefiniu sua senha com sucesso.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Algo deu errado com este logout. Por favor, tente novamente.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Falha no Logout", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Você é o proprietário deste site, e fez login em Wix.com. Por favor, faça logout do Wix.com para testar o recurso de Membros do Site.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Falha no logout"}, no: {SMApply_Success1: "Fullført! Forespørselen om medlemspålogging ble sendt, og avventer godkjenning.", SMApply_Success2: "Nettstedets administrator vil sende deg en e-post ( {0} ) så snart forespørselen har blitt godkjent ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Sjekk e-posten din", SMResetPassMail_confirmation_msg: "Vi har sendt deg en e-post med en lenke for tilbakestilling av passordet.", SMResetPass_Continue: "Fortsett", SMResetPass_Reset_Succ: "Passordet ditt ble tilbakestilt.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Noe gikk galt da du logget ut. Prøv en gang til.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Kunne ikke logge av", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Du eier denne hjemmesiden, og er logget på Wix.com. Logg av fra Wix.com for å teste funksjonen for Medlemspålogging.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Avloggingsfeil"}, da: {SMApply_Success1: "Succes! Din medlems login anmodning er sendt og afventer godkendelse.", SMApply_Success2: "Hjemmeside administratoren vil give dig besked via email( {0} ) når din anmodning er blevet godkendt. ", SMContainer_OK: "OK", SMResetPassMail_confirmation_title: "Venligst check din email", SMResetPassMail_confirmation_msg: "Vi har sendt dig en email med et link, som giver dig mulighed for at nulstille din adgangskode", SMResetPass_Continue: "Fortsæt", SMResetPass_Reset_Succ: "Du har med succes nulstillet din adgangskode.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_IN_PROGRESS: "Noget gik galt ved dit log ud. Venligst prøv igen.", SITEMEMBERMANGAGER_LOGOUT_MESSAGES_TITLE: "Log ud Mislykket", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE: "Du er ejeren af denne hjemmeside, og er logget ind på Wix.com Venligst log ud af Wix.com for at teste medlem af hjemmeside funktionen.", SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE: "Log ud fejl"}}
  }), define("core/siteRender/SiteMembersAspect", ["lodash", "utils", "core/core/siteAspectsRegistry", "core/core/componentPropsBuilder", "core/siteRender/compFactory", "core/core/SiteMembersAPI", "core/bi/events", "core/util/translations/siteMembersTranslations"], function (a, b, c, d, e, f, g, h) {
      "use strict";
      function o(a, b, c) {
          return{componentType: a, type: "Component", id: b, key: b, skin: c}
      }
  
      function p() {
          return o("wysiwyg.viewer.components.dialogs.CreditsDialog", "creditsDialog", "wysiwyg.viewer.skins.dialogs.creditsDialogSkin")
      }
  
      function q() {
          return o("wysiwyg.viewer.components.dialogs.NotificationDialog", "notificationDialog", "wysiwyg.viewer.skins.dialogs.notificationDialogSkin")
      }
  
      function r() {
          return o("wysiwyg.viewer.components.dialogs.siteMemberDialogs.MemberLoginDialog", "memberLoginDialog", "wysiwyg.viewer.skins.dialogs.siteMembersDialogs.memberLoginDialogSkin")
      }
  
      function s() {
          return o("wysiwyg.viewer.components.dialogs.siteMemberDialogs.SignUpDialog", "signUpDialog", "wysiwyg.viewer.skins.dialogs.siteMembersDialogs.signUpDialogSkin")
      }
  
      function t() {
          return o("wysiwyg.viewer.components.dialogs.siteMemberDialogs.RequestPasswordResetDialog", "requestResetPasswordDialog", "wysiwyg.viewer.skins.dialogs.siteMembersDialogs.requestPasswordResetDialogSkin")
      }
  
      function u() {
          return o("wysiwyg.viewer.components.dialogs.siteMemberDialogs.ResetPasswordDialog", "resetPasswordDialog", "wysiwyg.viewer.skins.dialogs.siteMembersDialogs.resetPasswordDialogSkin")
      }
  
      function v() {
          return o("wysiwyg.viewer.components.dialogs.EnterPasswordDialog", "enterPasswordDialog", "wysiwyg.viewer.skins.dialogs.enterPasswordDialogSkin")
      }
  
      function w(a, b, c, d) {
          var e = c(), f = y.call(this, e, a, b);
          return d.call(this, f), x.call(this, e, f)
      }
  
      function x(a, b) {
          b.notClosable = this.notClosable;
          var c = e.getCompClass(a.componentType);
          return c(b)
      }
  
      function y(a, b, c) {
          var e = d.getCompProps(a, b, null, c), f = this.dialogToDisplay;
          return e.language = Z[f] && Z[f].language || Z[this.siteData.siteId].language, e.onCloseDialogCallback = S.bind(this), e
      }
  
      function z(b) {
          b.onSubmitCallback = K.bind(this);
          var c = Z[l.SignUp] && Z[l.SignUp].language || null;
          b.onSwitchDialogLinkClick = I.bind(this, l.SignUp, a.noop, c),
              b.onForgetYourPasswordClick = I.bind(this, l.ResetPasswordEmail, a.noop, c), b.needLoginMessage = this._showDialogMessage
      }
  
      function A(b) {
          b.onSubmitCallback = L.bind(this);
          var c = Z[l.SignUp] && Z[l.SignUp].language || null;
          b.onSwitchDialogLinkClick = I.bind(this, l.Login, a.noop, c), b.needLoginMessage = this._showDialogMessage
      }
  
      function B(b) {
          var c = Z[l.SignUp] && Z[l.SignUp].language || null;
          b.onSwitchDialogLinkClick = I.bind(this, l.Login, a.noop, c), b.onSubmitCallback = M.bind(this)
      }
  
      function C(a, b, c) {
          var e = d.getCompProps(a, b, null, c);
          return e.onSubmitCallback = O.bind(this), e.notClosable = !0, x.call(this, a, e)
      }
  
      function D(a) {
          var b = a.language;
          switch (this.notifcationToDisplay) {
              case l.SignUp:
                  var c = Z[this.siteData.siteId].siteMember, d = c.details.email;
                  a.title = "", a.description = ca(b, "SMApply_Success1") + " " + ca(b, "SMApply_Success2").replace("{0}", d), a.buttonText = ca(b, "SMContainer_OK");
                  break;
              case l.ResetPasswordEmail:
                  a.title = ca(b, "SMResetPassMail_confirmation_title"), a.description = ca(b, "SMResetPassMail_confirmation_msg"), a.buttonText = ca(b, "SMContainer_OK");
                  break;
              case l.ResetPasswordNewPassword:
                  a.title = ca(b, "SMResetPass_Reset_Succ"), a.description = "", a.buttonText = ca(b, "SMResetPass_Continue"), a.onButtonClick = I.bind(this, l.Login);
                  break;
              case"siteowner":
                  a.title = ca(b, "SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_TITLE"), a.description = ca(b, "SITEMEMBERMANGAGER_OWNER_LOGOUT_ACTION_MESSAGE"), a.buttonText = ca(b, "SMContainer_OK")
          }
      }
  
      function E(a) {
          a.onSubmitCallback = P.bind(this)
      }
  
      function F(a) {
          a.onSubmitCallback = Q.bind(this)
      }
  
      function G(a) {
          return i.SHA256.b64_sha256(a)
      }
  
      function H(a, b) {
          var c = a.cookieName || n.SM_SESSION, d = a.sessionToken, e = a.rememberMe ? a.expirationDate : 0;
          j.setCookie(c, d, e, b.currentUrl.hostname, b.currentUrl.path, !1)
      }
  
      function I(a, b, c) {
          b && (this.dialogProcessSuccessCallback = b), c && (Z[a] = {language: c}), this.dialogToDisplay = a, this.aspectSiteApi.forceUpdate()
      }
  
      function J(a, b) {
          this.notifcationToDisplay = a, this.dialogToDisplay = l.Notification, b && (Z[l.Notification] = {language: b}), this.aspectSiteApi.forceUpdate()
      }
  
      function K(a, b) {
          delete this.dialogToDisplay;
          var c = j.getCookie(n.SV_SESSION), d = null;
          f.login(a, U.bind(this, b), b.setErrorMessageByCode, c, d)
      }
  
      function L(b, c) {
          var d = this.siteData.rendererModel.clientSpecMap, e = a.find(d, {type: "sitemembers"}), g = e.collectionType;
          "Open" === g ? f.register(b, V.bind(this, c), c.setErrorMessageByCode) : "ApplyForMembership" === g && f.apply(b, W.bind(this), c.setErrorMessageByCode)
      }
  
      function M(a, b) {
          var c = this.siteData.currentUrl.full;
          f.sendForgotPasswordMail(a.email, c, J.bind(this, m.ResetPasswordEmail), b.setErrorMessageByCode)
      }
  
      function N() {
          delete this.siteData.currentUrl.query.forgotPasswordToken, J.call(this, m.ResetPasswordNewPassword)
      }
  
      function O(a, b) {
          f.resetMemberPassword(a, N.bind(this), b.setErrorMessageByCode)
      }
  
      function P(a, b) {
          a.password && G(a.password) === this._passwordDigest ? (S.call(this, b, !0), aa.call(this, this.nextPageInfo.pageId), this.aspectSiteApi.navigateToPage(this.nextPageInfo), this._passwordDigest = null) : b.setErrorMessage("PasswordLogin_Wrong_Password")
      }
  
      function Q(b, c) {
          var d = this.siteData.getUserId();
          k.loginByGuid(d, b.password, function (b, d) {
              d.success ? (a.isFunction(this.dialogProcessSuccessCallback) && (this.dialogProcessSuccessCallback(), this.dialogProcessSuccessCallback = null), S.call(this, c)) : c.setGeneralErrorMessage()
          }.bind(this))
      }
  
      function R(b) {
          if (a.has(this.siteData.currentUrl.query, "forgotPasswordToken"))return{isAllowed: !1, defaultDialog: l.ResetPasswordNewPassword};
          var c = this.siteData.getDataByQuery(b.pageId).pageSecurity;
          return c ? c.passwordDigest && !_.call(this, b.pageId) ? {isAllowed: !1, defaultDialog: l.PasswordProtected, pageSecurity: c} : c.requireLogin && !this.isLoggedIn() ? {isAllowed: !1, defaultDialog: l.SignUp, pageSecurity: c} : {isAllowed: !0, defaultDialog: null} : {isAllowed: !0, defaultDialog: null}
      }
  
      function S(a, b) {
          this.currentDialog = null, this.dialogToDisplay = null, a.performCloseDialog(function () {
              this._showDialogMessage = !1, b ? this.nextPageInfo ? this.aspectSiteApi.navigateToPage(this.nextPageInfo) : this.aspectSiteApi.forceUpdate() : this.nextPageInfo && this.nextPageInfo.pageId === this.siteData.currentPageInfo.pageId ? (T.call(this), this.aspectSiteApi.navigateToPage({pageId: this.siteData.getMainPageId()})) : this.aspectSiteApi.forceUpdate()
          }.bind(this))
      }
  
      function T() {
          this.dontShowDialog = !0
      }
  
      function U(b, c) {
          H(c.payload, this.siteData), X.call(this, function () {
              var d = Z[this.siteData.siteId].siteMember;
              d.details = c.payload.siteMemberDto, a.isFunction(this.dialogProcessSuccessCallback) && (this.dialogProcessSuccessCallback(d.details), this.dialogProcessSuccessCallback = null), S.call(this, b, !0), this.aspectSiteApi.reportBI(g.SITE_MEMBER_LOGIN_SUCCESS, {userName: d.details.attribute && d.details.attribute.name || d.details.email})
          }.bind(this))
      }
  
      function V(b, c) {
          H(c.payload, this.siteData), X.call(this, function () {
              this.nextPageInfo && this.aspectSiteApi.navigateToPage(this.nextPageInfo);
              var d = Z[this.siteData.siteId].siteMember;
              d.details = c.payload.siteMemberDto, a.isFunction(this.dialogProcessSuccessCallback) && (this.dialogProcessSuccessCallback(d.details), this.dialogProcessSuccessCallback = null), S.call(this, b, !0)
          }.bind(this))
      }
  
      function W(b) {
          var c = Z[this.siteData.siteId].siteMember;
          c.details = b.payload, a.isFunction(this.dialogProcessSuccessCallback) && (this.dialogProcessSuccessCallback(c.details), this.dialogProcessSuccessCallback = null), J.call(this, m.SignUp)
      }
  
      function X(a) {
          var b = this.aspectSiteApi.getSiteAspect("dynamicClientSpecMap");
          b.reloadClientSpecMap(a, !0)
      }
  
      function Y(a, b, c) {
          this._showDialogMessage = !0, this.nextPageInfo = a, c && c.passwordDigest && (this._passwordDigest = c.passwordDigest), this.dialogToDisplay = b, c && (c.dialogLanguage && (Z[b] = {language: c.dialogLanguage}), Z[this.siteData.siteId].language = "en")
      }
  
      function $(a) {
          Z[a.siteId] = {approvedPasswordPages: [], siteMember: {details: null}, language: "en"}
      }
  
      function _(b) {
          return a.contains(Z[this.siteData.siteId].approvedPasswordPages, b)
      }
  
      function aa(a) {
          Z[this.siteData.siteId].approvedPasswordPages.push(a)
      }
  
      function ba(a) {
          this.aspectSiteApi = a, this.siteData = a.getSiteData(), this.dialogProcessSuccessCallback = null, $(this.siteData), f.initializeData(this.siteData)
      }
  
      function ca(a, b) {
          return h[a] ? h[a][b] : h.en[b]
      }
  
      var i = b.hashUtils, j = b.cookieUtils, k = b.wixUserApi, l = {Login: "login", SignUp: "register", ResetPasswordEmail: "resetPasswordEmail", ResetPasswordNewPassword: "resetPasswordNewPassword", Notification: "notification", Credits: "credits", PasswordProtected: "enterPassword", AdminLogin: "adminLogin"}, m = {SiteOwner: "siteowner", SignUp: "register", ResetPasswordEmail: "resetPasswordEmail", ResetPasswordNewPassword: "resetPasswordNewPassword"}, n = {SV_SESSION: "svSession", SM_SESSION: "smSession", WIX_CLIENT: "wixClient"}, Z = {};
      ba.prototype = {dialogToDisplay: null, notifcationToDisplay: null, nextPageInfo: null, _passwordDigest: null, _showDialogMessage: !1, getComponentStructures: function () {
          switch (this.dialogToDisplay) {
              case l.Login:
                  return[r()];
              case l.SignUp:
                  return[s()];
              case l.ResetPasswordEmail:
                  return[t()];
              case l.ResetPasswordNewPassword:
                  return[u()];
              case l.Notification:
                  return[q()];
              case l.Credits:
                  return[p()];
              case l.PasswordProtected:
                  return[v()];
              case l.AdminLogin:
                  return[v()];
              default:
                  return null
          }
      }, getReactComponents: function (b) {
          if (this.dontShowDialog)return this.dontShowDialog = !1, null;
          var d, e, c = this.aspectSiteApi.getSiteAPI();
          switch (this.dialogToDisplay) {
              case l.Login:
                  d = z, e = r;
                  break;
              case l.SignUp:
                  d = A, e = s;
                  break;
              case l.ResetPasswordEmail:
                  d = B, e = t;
                  break;
              case l.ResetPasswordNewPassword:
                  var f = u();
                  return C.call(this, f, c, b);
              case l.Notification:
                  d = D.bind(this), e = q;
                  break;
              case l.Credits:
                  d = a.noop, e = p;
                  break;
              case l.PasswordProtected:
                  d = E, e = v;
                  break;
              case l.AdminLogin:
                  d = F, e = v
          }
          return this.currentDialog = e && w.call(this, c, b, e, d), this.currentDialog
      }, isLoggedIn: function () {
          return!!this.siteData.getSMToken()
      }, showSignUpDialog: function (a, b) {
          I.call(this, l.SignUp, a, b)
      }, showCreditsDialog: function () {
          I.call(this, l.Credits)
      }, showAdminLoginDialog: function (a) {
          I.call(this, l.AdminLogin, a)
      }, getMemberDetails: function (a) {
          var b = Z[this.siteData.siteId].siteMember;
          return this.isLoggedIn() && !b.details ? (f.getMemberDetails(this.siteData.getSMToken(), function (c) {
              b.details = c.payload, a && a(b.details), this.aspectSiteApi.forceUpdate()
          }.bind(this), function () {
          }), null) : (a && a(b.details), b.details)
      }, isPageAllowed: function (a) {
          if (this.siteData.renderFlags.isPageProtectionEnabled) {
              var b = R.call(this, a);
              return b.isAllowed
          }
          return!0
      }, showDialogOnNextRender: function (a) {
          var b = R.call(this, a);
          this.dialogToDisplay || b.isAllowed || (this.notClosable = a.pageId === this.siteData.currentPageInfo.pageId && a.pageId === this.siteData.getMainPageId(), Y.call(this, a, b.defaultDialog, b.pageSecurity))
      }, logout: function (a) {
          var b = Z[this.siteData.siteId].siteMember;
          j.getCookie(n.WIX_CLIENT) && b.details && b.details.owner ? J.call(this, m.SiteOwner, a) : (j.deleteCookie(n.SM_SESSION, this.siteData.currentUrl.hostname, this.siteData.currentUrl.path), j.deleteCookie(n.SV_SESSION, this.siteData.currentUrl.hostname, this.siteData.currentUrl.path), X.call(this, function () {
              b.details = null, this.notifcationToDisplay = null, this.aspectSiteApi.forceUpdate()
          }.bind(this)))
      }, forceCloseDialog: function () {
          T.call(this)
      }}, c.registerSiteAspect("siteMembers", ba)
  }), define("core/components/siteAspects/windowFocusEventsAspect", ["lodash", "core/core/siteAspectsRegistry", "utils"], function (a, b, c) {
      "use strict";
      var d = c.stringUtils, e = ["focus", "blur"], f = function (a) {
          this._aspectSiteAPI = a, this._registerToFocusEvents()
      };
      f.prototype = {_registerToFocusEvents: function () {
          this._compsRegistry = {}, a.forEach(e, function (a) {
              this._compsRegistry[a] = {}, this._aspectSiteAPI.registerToFocusEvents(a, this.propagateFocusEvent.bind(this, a))
          }, this)
      }, registerToFocusEvent: function (a, b) {
          this._compsRegistry[a][b.props.id] = b.props.id
      }, unregisterFromFocusEvent: function (a, b) {
          delete this._compsRegistry[a][b.props.id]
      }, propagateFocusEvent: function (b) {
          var f, c = this._compsRegistry[b], e = "on" + d.capitalize(b);
          a.forEach(c, function (a) {
              f = this._aspectSiteAPI.getComponentById(a), f ? f[e] && f[e]() : delete this._compsRegistry[b][a]
          }, this)
      }}, b.registerSiteAspect("windowFocusEvents", f)
  }), define("core/components/siteAspects/windowScrollEventAspect", ["lodash", "core/core/siteAspectsRegistry"], function (a, b) {
      "use strict";
      function c(a) {
          this._aspectSiteAPI = a, this._registeredCompIds = {}, this._aspectSiteAPI.registerToScroll(this.propagateScrollEvent.bind(this))
      }
  
      c.prototype = {registerToScroll: function (a) {
          this._registeredCompIds[a.props.id] = a.props.id
      }, unregisterToScroll: function (a) {
          delete this._registeredCompIds[a.props.id]
      }, propagateScrollEvent: function () {
          var b = {x: window.pageXOffset || document.body.scrollLeft, y: window.pageYOffset || document.body.scrollTop};
          a.forEach(this._registeredCompIds, function (a) {
              var c = this._aspectSiteAPI.getComponentById(a);
              c ? c.onScroll && c.onScroll(b) : delete this._registeredCompIds[a]
          }, this)
      }}, b.registerSiteAspect("windowScrollEvent", c)
  }), define("core/components/siteAspects/windowResizeEventAspect", ["lodash", "core/core/siteAspectsRegistry"], function (a, b) {
      "use strict";
      function c(a) {
          this._aspectSiteAPI = a, this._registeredCompIds = {}, this._aspectSiteAPI.registerToResize(this.propagateResizeEvent.bind(this))
      }
  
      c.prototype = {registerToResize: function (a) {
          this._registeredCompIds[a.props.id] = a.props.id
      }, unregisterToResize: function (a) {
          delete this._registeredCompIds[a.props.id]
      }, propagateResizeEvent: function () {
          a.forEach(this._registeredCompIds, function (a) {
              var b = this._aspectSiteAPI.getComponentById(a);
              b ? b.onResize && b.onResize() : delete this._registeredCompIds[a]
          }, this)
      }}, b.registerSiteAspect("windowResizeEvent", c)
  }), define("core/components/siteAspects/windowKeyboardEventAspect", ["lodash", "core/core/siteAspectsRegistry"], function (a, b) {
      "use strict";
      function d(a) {
          this._aspectSiteAPI = a, this._aspectSiteAPI.registerToKeyDown(this.propagateKeyboardEvent.bind(this)), this._registeredCompIds = {Escape: [], ArrowRight: [], ArrowLeft: []}
      }
  
      var c = {39: "ArrowRight", 37: "ArrowLeft", 27: "Escape"};
      d.prototype = {registerToEscapeKey: function (a) {
          this._registeredCompIds.Escape.push(a.props.id)
      }, registerToArrowRightKey: function (a) {
          this._registeredCompIds.ArrowRight.push(a.props.id)
      }, registerToArrowLeftKey: function (a) {
          this._registeredCompIds.ArrowLeft.push(a.props.id)
      }, unRegisterKeys: function (b) {
          a.forEach(this._registeredCompIds, function (c, d) {
              this._registeredCompIds[d] = a.without(this._registeredCompIds[d], b.props.id)
          }, this)
      }, propagateKeyboardEvent: function (b) {
          var d = c[b.keyCode || b.which];
          if (!a.isEmpty(this._registeredCompIds[d])) {
              var e = a.last(this._registeredCompIds[d]), f = this._aspectSiteAPI.getComponentById(e), g = "on" + d + "Key";
              f ? f[g] && (b.preventDefault(), f[g]()) : this._registeredCompIds[d] = a.without(this._registeredCompIds[d], e)
          }
      }}, b.registerSiteAspect("windowKeyboardEvent", d)
  }), define("core/components/siteAspects/MobileActionsMenuAspect", ["core/core/siteAspectsRegistry", "core/core/componentPropsBuilder", "core/siteRender/compFactory"], function (a, b, c) {
      "use strict";
      function d(a) {
          if (!a.isMobileDevice())return null;
          var b = a.getSiteMetaData();
          return b && b.quickActions && b.quickActions.configuration.quickActionsMenuEnabled ? {id: "MOBILE_ACTIONS_MENU", skin: "wysiwyg.viewer.skins.mobile.MobileActionsMenuSkin", componentType: "wysiwyg.viewer.components.MobileActionsMenu", styleId: "mobileActionsMenu", layout: {position: "static"}} : null
      }
  
      function e(a) {
          this._siteAspectsSiteAPI = a
      }
  
      e.prototype = {getReactComponents: function (a) {
          var e = this._siteAspectsSiteAPI.getSiteData(), f = d(e);
          if (!f)return null;
          var g = b.getCompProps(f, this._siteAspectsSiteAPI.getSiteAPI(), null, a);
          g.userColorScheme = e.rendererModel.siteMetaData.quickActions.colorScheme;
          var h = c.getCompClass(f.componentType);
          return[h(g)]
      }, getComponentStructures: function () {
          var a = d(this._siteAspectsSiteAPI.getSiteData());
          return a ? [a] : null
      }}, a.registerSiteAspect("mobileActionsMenu", e)
  }), define("core/components/siteAspects/addComponentAspect", ["core/core/siteAspectsRegistry", "lodash", "core/core/componentPropsBuilder", "core/siteRender/compFactory"], function (a, b, c, d) {
      "use strict";
      function e(a) {
          this._aspectSiteAPI = a, this._componentsToRender = {}
      }
  
      e.prototype = {addComponent: function (a, b, c) {
          this._componentsToRender[a] = {structure: b, props: c}, this._aspectSiteAPI.forceUpdate()
      }, deleteComponent: function (a) {
          delete this._componentsToRender[a], this._aspectSiteAPI.forceUpdate()
      }, getComponentStructures: function () {
          return b.pluck(this._componentsToRender, "structure")
      }, getReactComponents: function (a) {
          return b.map(this._componentsToRender, function (e) {
              var f = c.getCompProps(e.structure, this._aspectSiteAPI.getSiteAPI(), null, a);
              b.assign(f, e.props);
              var g = d.getCompClass(e.structure.componentType);
              return g(f)
          }, this)
      }}, a.registerSiteAspect("addComponent", e)
  }), define("core/components/siteAspects/PinterestWidgetPostMessageAspect", ["core/core/siteAspectsRegistry"], function (a) {
      "use strict";
      var b = function (a) {
          a.registerToMessage(this.handlePostMessage.bind(this)), this.siteAPI = a, this.dimensions = {}, this.shouldShowError = {}
      };
      return b.prototype = {handlePostMessage: function (a) {
          var b;
          try {
              if (b = JSON.parse(a.data), "pinterest" !== b.type)return;
              if (b.showError)return this.shouldShowError[b.compId] = "error", void this.siteAPI.forceUpdate();
              this.shouldShowError[b.compId] = "noError", this.dimensions[b.compId] = {height: b.height, width: b.width}, this.siteAPI.forceUpdate()
          } catch (c) {
              return
          }
      }, getIframeDimensions: function (a) {
          return this.dimensions[a]
      }, shouldPresentErrorMessage: function (a) {
          return this.shouldShowError[a]
      }}, a.registerSiteAspect("PinterestWidgetPostMessageAspect", b), b
  }), define("core/components/siteAspects/AudioAspect", ["require", "utils", "core/core/siteAspectsRegistry"], function (a, b, c) {
      "use strict";
      function h() {
          e = d
      }
  
      function i(a) {
          var c = a.siteAPI.getSiteData().santaBase;
          return c + (b.stringUtils.endsWith(c, "/") ? "" : "/") + "js/vendor/soundmanager2/"
      }
  
      function m(a) {
          this.siteAPI = a, this.nowPlayingComp = null, this.soundManagerReady = !1, this.soundManager = null, this.shouldForceHTML5Audio = l(a.getSiteData())
      }
  
      var d = 10, e = d, f = 1.5, g = 1e4, j = function (a) {
          var b = {url: i(a), flashVersion: 9, useHTML5Audio: !0, html5PollingInterval: 100, onready: function () {
              a.soundManagerReady = !0, console.log("Setup sound manager done")
          }};
          a.shouldForceHTML5Audio && (b.preferFlash = !1), a.soundManager.setup(b), setTimeout(function () {
              k(a)
          }, e)
      }, k = function (b) {
          null === b.soundManager ? a(["SoundManager"], function (a) {
              b.soundManager = a, k(b)
          }) : b.soundManagerReady ? (b.siteAPI.forceUpdate(), h()) : g > e ? (j(b), e *= f) : (h(), console.log("Failed to setup SoundManager."))
      }, l = function (a) {
          var b = a.browser;
          return b && b.safari === !0
      };
      return m.prototype = {loadSoundManagerAPI: function () {
          k(this)
      }, isSoundManagerReady: function () {
          return this.soundManagerReady
      }, createAudioObj: function (a) {
          return this.soundManagerReady ? (a.id && this.soundManager.getSoundById(a.id) && this.soundManager.destroySound(a.id), this.soundManager.createSound(a)) : (this.loadSoundManagerAPI(), !1)
      }, isCompPlaying: function (a) {
          return this.nowPlayingComp === a.props.id
      }, updatePlayingComp: function (a) {
          this.soundManagerReady || this.loadSoundManagerAPI(), this.nowPlayingComp = a.props.id, this.siteAPI.forceUpdate()
      }, updatePausingComp: function () {
          this.nowPlayingComp = "", this.soundManagerReady && this.siteAPI.forceUpdate()
      }}, c.registerSiteAspect("AudioAspect", m), m
  }), define("core/components/actionsAspectActions/triggerTypesConsts", [], function () {
      "use strict";
      return{DID_LAYOUT: "didLayout", SCROLL: "scroll", RESIZE: "resize"}
  }), define("core/components/actionsAspectActions/screenInAction", ["lodash", "animations", "utils", "core/components/actionsAspectActions/triggerTypesConsts"], function (a, b, c, d) {
      "use strict";
      function g(b, c, d) {
          var e = a.filter(b, function (b) {
              return!a.contains(d, b.sourceId) && "screenIn" === b.action && (b.pageId === c || "masterPage" === b.pageId)
          });
          return a.indexBy(e, "sourceId")
      }
  
      function h(c, d) {
          a.forEach(d, function (a, d) {
              var e = "masterPage" === a.pageId ? c.getMasterPage() : c.getCurrentPage();
              if (b.getProperties(a.name).hideOnStart) {
                  var f = e.refs[d].getDOMNode();
                  f.style.visibility = "hidden"
              }
          })
      }
  
      function i(c, d) {
          a.forEach(d, function (a, d) {
              var e = "masterPage" === a.pageId ? c.getMasterPage() : c.getCurrentPage();
              if (b.getProperties(a.name).hideOnStart) {
                  var f = e.refs[d].getDOMNode();
                  f.style.visibility = ""
              }
          })
      }
  
      function j(a, b) {
          var c = a.getSiteScroll(), d = a.getSiteData().measureMap.height.screen, e = .15, f = a.getSiteData().measureMap.absoluteTop, g = a.getSiteData().measureMap.height, h = Math.max(f[b.targetId] + g[b.targetId] * e, 0), i = Math.max(f[b.targetId] + g[b.targetId] * (1 - e), 0), j = c.y < h && h < c.y + d, k = c.y < i && i < c.y + d, l = h < c.y && i > c.y + d;
          return j || k || l
      }
  
      function k(a, b, c, d) {
          var e = null;
          return(l(a, c, b.targetId) || j(a, b)) && (d.add(b.targetId, b.name, b.duration, b.delay, b.params, 0), e = b.targetId), e
      }
  
      function l(a, b, c) {
          var d = !1, e = a.getSiteData().measureMap.custom.SITE_FOOTER;
          if ("masterPage" === b && e && e.isFixedPosition) {
              var f = a.getMasterPage().refs.SITE_FOOTER;
              d = m(f.props.structure, c)
          }
          return d
      }
  
      function m(b, c) {
          return b.components ? a.some(b.components, function (a) {
              return a.id === c ? !0 : m(a, c)
          }) : !1
      }
  
      function n(a) {
          this._aspectSiteAPI = a, this._siteData = a.getSiteData(), this._behaviors = [], this._isEnabled = !1, this._lastVisitedPageId = null, this._pageSequenceIds = [], this._masterPageSequenceIds = [], this._playOnceList = [], this._animateOnNextTick = !1, this._delayActionByTransitionDuration = 0, this._currentPageBehaviorsByIds = {}
      }
  
      var e = [d.DID_LAYOUT, d.SCROLL, d.RESIZE], f = .2;
      return n.prototype = {shouldEnable: function () {
          var a = "undefined" != typeof window, b = this._siteData.isTabletDevice(), c = this._siteData.isMobileDevice();
          return a && !b && !c
      }, enableAction: function () {
          this._isEnabled || (this._currentPageBehaviorsByIds = g(this._behaviors, this._aspectSiteAPI.getCurrentPageId(), this._playOnceList), h(this._aspectSiteAPI, this._currentPageBehaviorsByIds), this._tickerCallback = this._executeActionOnTick.bind(this), b.addTickerEvent(this._tickerCallback), this._isEnabled = !0)
      }, disableAction: function () {
          this._isEnabled && (this._animateOnNextTick = !1, b.removeTickerEvent(this._tickerCallback), this._tickerCallback = null, this.stopAndClearAnimations(), i(this._aspectSiteAPI, this._currentPageBehaviorsByIds), this._currentPageBehaviorsByIds = {}, this._playOnceList = [], this._lastVisitedPageId = null, this._isEnabled = !1)
      }, executeAction: function () {
          a.isEmpty(this._currentPageBehaviorsByIds) || (this._playPageAnimations(this._aspectSiteAPI.getMasterPage(), this._masterPageSequenceIds), this._playPageAnimations(this._aspectSiteAPI.getCurrentPage(), this._pageSequenceIds))
      }, stopAndClearAnimations: function () {
          var b = this._aspectSiteAPI.getCurrentPage(), c = this._aspectSiteAPI.getMasterPage();
          a.forEach(this._masterPageSequenceIds, function (a) {
              c.stopSequence(a, 1)
          }), a.forEach(this._pageSequenceIds, function (a) {
              b.stopSequence(a, 1)
          }), this._masterPageSequenceIds = [], this._pageSequenceIds = []
      }, handleTrigger: function (b) {
          if (this._isEnabled && a.contains(e, b)) {
              var c = this._aspectSiteAPI.getCurrentPageId(), i = this._aspectSiteAPI.getPageItemInfo(), j = this._aspectSiteAPI.getSiteAspect("siteMembers").isPageAllowed(i);
              switch (b) {
                  case d.DID_LAYOUT:
                      if (j && this._lastVisitedPageId !== c) {
                          this._currentPageBehaviorsByIds = g(this._behaviors, this._aspectSiteAPI.getCurrentPageId(), this._playOnceList), h(this._aspectSiteAPI, this._currentPageBehaviorsByIds), this._lastVisitedPageId = c;
                          var k = 1e3 * Math.max(this._delayActionByTransitionDuration - f, 0);
                          a.delay(function () {
                              this._animateOnNextTick = !0, this._delayActionByTransitionDuration = 0
                          }.bind(this), k)
                      }
                      break;
                  case d.SCROLL:
                  case d.RESIZE:
                      this._lastVisitedPageId && this._lastVisitedPageId !== c || 0 === this._delayActionByTransitionDuration && (this._animateOnNextTick = !0)
              }
          }
      }, registerPageTransitionDuration: function (a) {
          this._delayActionByTransitionDuration = a
      }, handleBehaviorsUpdate: function (a) {
          this._behaviors = a
      }, _executeActionOnTick: function () {
          this._animateOnNextTick && (this.executeAction(), this._animateOnNextTick = !1)
      }, _playPageAnimations: function (b, c) {
          var d = b.props.refInParent, e = b.sequence(), f = [];
          a.forEach(this._currentPageBehaviorsByIds, function (a) {
              a.pageId === d && f.push(k(this._aspectSiteAPI, a, d, e))
          }.bind(this)), e.hasAnimations() && (f = a.compact(f), a.forEach(f, function (a) {
              var c = b.refs[a].props.structure, d = c && c.layout && c.layout.rotationInDegrees, f = "clip,opacity" + (d ? "" : ",transform");
              e.add(a, "BaseClear", 0, 0, {props: f, immediateRender: !1})
          }), c.push(e.getId()), e.execute(), this._playOnceList = this._playOnceList.concat(a.filter(f, function (a) {
              return this._currentPageBehaviorsByIds[a].playOnce || "masterPage" === d
          }.bind(this))), this._currentPageBehaviorsByIds = a.omit(this._currentPageBehaviorsByIds, function (b, c) {
              return a.contains(f, c)
          }))
      }}, n
  }), define("core/components/actionsAspectActions/pageTransitionAction", ["lodash", "animations", "utils", "core/components/actionsAspectActions/triggerTypesConsts"], function (a, b, c, d) {
      "use strict";
      function f(a, b) {
          this._aspectSiteAPI = a, this._siteData = a.getSiteData(), this._behaviors = b, this._isEnabled = !1, this._nextPageTransition = {}, this._nextPageBGTransition = {}, this._nextPageInitialScrollData = null, this._lastVisitedPageId = null
      }
  
      function g(a, b) {
          b = b || {};
          var c = 1.2, d = a;
          return b.width ? d = a * b.width / b.siteWidth : b.height && (d = a * (Math.max(b.height, b.screenHeight) / b.screenHeight)), Math.min(d, c)
      }
  
      function h(d, e, f, h) {
          var k, l, i = "function" == typeof e.params ? e.params() : e.params, j = g(e.duration || 0, i);
          if (!a.isEmpty(e)) {
              k = e.comp.sequence(), l = e.callbacks || {}, l.onStart && k.onStartAll(l.onStart), l.onInterrupt && k.onInterruptAll(l.onInterrupt), l.onComplete && k.onCompleteAll(l.onComplete);
              var m = {sourceRefs: e.previousRef, destRefs: e.currentRef};
              k.add(m, e.transitionName, j, e.delay, i).add([e.previousRef, e.currentRef], "BaseClear", 0, 0, {props: "opacity,x,y", immediateRender: !1}).execute()
          }
          a.isEmpty(f) || f.comp.transition(f.previousRef, f.currentRef, e.transitionName, j, e.delay, i, f.callbacks);
          var n = d.getSiteData(), o = c.anchorUtils.calcAnchorPosition(h, n);
          b.animate("BaseScroll", d.getSiteContainer(), j, e.delay, {x: o.x || 0, y: o.y || 0})
      }
  
      var e = [d.DID_LAYOUT];
      return f.prototype.shouldEnable = function () {
          var a = "undefined" != typeof window, b = this._siteData.isTabletDevice(), c = this._siteData.isMobileDevice(), d = this._siteData.isMobileView();
          return a && !b && !c && !d
      }, f.prototype.enableAction = function () {
          this._isEnabled = !0, this._lastVisitedPageId = this._aspectSiteAPI.getCurrentPageId()
      }, f.prototype.disableAction = function () {
          this._isEnabled = !1
      }, f.prototype.executeAction = function () {
          h(this._aspectSiteAPI, this._nextPageTransition, this._nextPageBGTransition, this._nextPageInitialScrollData), this._nextPageTransition = {}, this._nextPageBGTransition = {}, this._nextPageInitialScrollData = null, this._lastVisitedPageId = this._aspectSiteAPI.getCurrentPageId()
      }, f.prototype.handleTrigger = function (b) {
          if (a.contains(e, b))switch (this._isEnabled || a.isEmpty(this._nextPageTransition) || (this._nextPageTransition.duration = 0, this._nextPageTransition.transitionName = "NoTransition"), b) {
              case d.DID_LAYOUT:
                  var c = this._aspectSiteAPI.getCurrentPageId(), f = this._aspectSiteAPI.getPageItemInfo(), g = this._lastVisitedPageId !== c, h = this._aspectSiteAPI.getSiteAspect("siteMembers").isPageAllowed(f);
                  g && h && this.executeAction()
          }
      }, f.prototype.handleBehaviorsUpdate = function (a) {
          this._behaviors = a
      }, f.prototype.registerNextPageTransition = function (a, b, c, d, e, f, g, h) {
          this._nextPageTransition = {comp: a, previousRef: b, currentRef: c, transitionName: d, duration: e, delay: f, params: g, callbacks: h}
      }, f.prototype.registerNextBGPageTransition = function (a, b, c, d) {
          this._nextPageBGTransition = {comp: a, previousRef: b, currentRef: c, callbacks: d}
      }, f.prototype.registerNextAnchorScroll = function (a) {
          this._nextPageInitialScrollData = a
      }, f
  }), define("core/components/siteAspects/actionsAspect", ["lodash", "core/core/siteAspectsRegistry", "core/components/actionsAspectActions/screenInAction", "core/components/actionsAspectActions/pageTransitionAction", "core/components/actionsAspectActions/triggerTypesConsts"], function (a, b, c, d, e) {
      "use strict";
      function f(a) {
          this._aspectSiteAPI = a, this._siteData = a.getSiteData(), this._behaviors = [], this._pageTransitionComplete = [], this._actions = {}, this._previouslyRegisteredPages = [], this.registerAction("screenIn", c), this.registerAction("pageTransition", d), this.enableAction("screenIn"), this.enableAction("pageTransition"), this._registerTriggers()
      }
  
      f.prototype.previewAnimation = function (b, c, d, e, f) {
          var g, h, i;
          return g = "masterPage" === c ? this._aspectSiteAPI.getMasterPage() : this._aspectSiteAPI.getCurrentPage(), g ? (h = g.sequence(), i = {props: "clip,opacity,transform,transform-origin", immediateRender: !1}, a.isEmpty(e) || (i.propsToRestore = e), h.add(b, d.name, d.duration, d.delay, d.params), h.add(b, "BaseClear", 0, 0, i), f && h.onCompleteAll(f), h.execute()) : void 0
      }, f.prototype.willUnmount = function () {
          a.forEach(this._actions, function (a) {
              a.disableAction()
          }, this)
      }, f.prototype.stopPreviewAnimation = function (a, b) {
          var c;
          c = "masterPage" === a ? this._aspectSiteAPI.getMasterPage() : this._aspectSiteAPI.getCurrentPage(), c && c.stopSequence(b, 1)
      }, f.prototype.enableAction = function (a) {
          this._actions[a] && this._actions[a].shouldEnable() && this._actions[a].enableAction()
      }, f.prototype.disableAction = function (a) {
          this._actions[a] && this._actions[a].disableAction()
      }, f.prototype.executeAction = function (a, b) {
          this._actions[a] && this._actions[a].executeAction(b)
      }, f.prototype.isPageRegistered = function (b) {
          return a.contains(this._previouslyRegisteredPages, b)
      }, f.prototype.setPageAsRegistered = function (a) {
          this.isPageRegistered(a) || this._previouslyRegisteredPages.push(a)
      }, f.prototype.registerBehaviors = function (b, c, d) {
          d = a.isString(d) ? JSON.parse(d) : d, d = a.map(d, function (d) {
              return d.targetId = d.targetId || b, a.extend(d, {pageId: c, sourceId: b})
          }), this._behaviors = a.reject(this._behaviors, {sourceId: b}), this._behaviors = this._behaviors.concat(d), this._propagateBehaviorsUpdate(this._behaviors)
      }, f.prototype.resetBehaviorsRegistration = function () {
          this._previouslyRegisteredPages = [], this._behaviors = [], this._propagateBehaviorsUpdate(this._behaviors)
      }, f.prototype.registerNextPageTransition = function (a, b, c, d, e, f, g, h) {
          this._actions.pageTransition.registerNextPageTransition(a, b, c, d, e, f, g, h), this._actions.screenIn.registerPageTransitionDuration(e)
      }, f.prototype.registerPageTransitionComplete = function (b) {
          a.isFunction(b) && this._pageTransitionComplete.push(b)
      }, f.prototype.handlePageTransitionComplete = function (b, c) {
          a.forEach(this._pageTransitionComplete, function (a) {
              a(b, c)
          }), this._pageTransitionComplete = []
      }, f.prototype.registerNextBGPageTransition = function (a, b, c, d) {
          this._actions.pageTransition.registerNextBGPageTransition(a, b, c, d)
      }, f.prototype.registerNextAnchorScroll = function (a) {
          this._actions.pageTransition.registerNextAnchorScroll(a)
      }, f.prototype.registerAction = function (a, b) {
          if (this._actions[a])throw new Error("Action " + a + " already registered");
          this._actions[a] = new b(this._aspectSiteAPI)
      }, f.prototype._propagateTrigger = function (b) {
          a.forEach(this._actions, function (a) {
              a.handleTrigger(b)
          })
      }, f.prototype._propagateBehaviorsUpdate = function (b) {
          a.forEach(this._actions, function (c) {
              c.handleBehaviorsUpdate(a.cloneDeep(b))
          })
      }, f.prototype._registerTriggers = function () {
          this._aspectSiteAPI.registerToDidLayout(this._propagateTrigger.bind(this, e.DID_LAYOUT)), this._aspectSiteAPI.registerToScroll(this._propagateTrigger.bind(this, e.SCROLL)), this._aspectSiteAPI.registerToResize(this._propagateTrigger.bind(this, e.RESIZE)), this._aspectSiteAPI.registerToWillUnmount(this.willUnmount.bind(this))
      }, b.registerSiteAspect("actionsAspect", f)
  }), define("core/components/siteAspects/DynamicClientSpecMapAspect", ["lodash", "utils", "core/core/siteAspectsRegistry"], function (a, b, c) {
      "use strict";
      function e(a) {
          var b = a.replace(/\/$/, "");
          return d && (b = b.replace(/^[^:]+:/, window.location.protocol)), b
      }
  
      function g(a, b, c) {
          var d = "error", g = {url: e(a.getExternalBaseUrl()), destination: ["dynamicClientSpecMapLoaded"], force: c, cache: f, syncCache: !0, transformFunc: function () {
              return!0
          }, callback: function (c, e) {
              d = "success", e.clientSpecMap && (a.rendererModel.clientSpecMap = e.clientSpecMap), e.svSession && a.pubSvSession(e.svSession), e.hs && (a.hs = e.hs), e.ctToken && (a.ctToken = e.ctToken), b && b(e)
          }};
          a.store.loadBatch([g], function () {
              "error" === d && b({status: d})
          }), f = !1
      }
  
      function h(a) {
          var b = a.getSiteData();
          if (this.reloadClientSpecMap = function (a, c) {
              b && b.isViewerMode() && g(b, a, c)
          }, d) {
              var c = !1;
              this.reloadClientSpecMap(function (d) {
                  b.dynamicModelState = "error" === d.status ? "error" : "success", c && a.forceUpdate()
              }, !0), c = !0
          }
      }
  
      var d = "undefined" != typeof window, f = !0;
      c.registerSiteAspect("dynamicClientSpecMap", h)
  }), define("core/components/siteAspects/VideoBackgroundAspect", ["lodash", "core/core/siteAspectsRegistry"], function (a, b) {
      "use strict";
      function c(a) {
          return a.getComponentById("SITE_BACKGROUND")
      }
  
      function d(a) {
          return a && a.isVideo && a.isVideo()
      }
  
      function e(a) {
          this.siteAPI = a, this.lastVisitedPageId = null, this.isEnabled = !0, this.callbacks = [], a.registerToDidLayout(this.playOnPageChange.bind(this))
      }
  
      return e.prototype.enableVideoPlayback = function (a) {
          this.isEnabled = !0, a || this.playCurrent()
      }, e.prototype.disableVideoPlayback = function (a) {
          this.isEnabled = !1, a || (this.pauseCurrent(), this.loadCurrent())
      }, e.prototype.playOnPageChange = function () {
          var a = this.siteAPI.getCurrentPageId();
          if (this.isEnabled && this.lastVisitedPageId !== a) {
              var b = this.siteAPI.getPageItemInfo(), c = this.siteAPI.getSiteAspect("siteMembers").isPageAllowed(b);
              c && (this.playCurrent(), this.lastVisitedPageId = a)
          }
      }, e.prototype.isPlaying = function () {
          var a = c(this.siteAPI);
          return d(a) ? a.refs.currentVideo.isPlaying() : null
      }, e.prototype.registerToPlayingChange = function (a) {
          this.callbacks.push(a)
      }, e.prototype.unregisterToPlayingChange = function (b) {
          this.callbacks = a.without(this.callbacks, b)
      }, e.prototype.notifyPlayingChanged = function () {
          a.forEach(this.callbacks, function (a) {
              a(this.isPlaying())
          }, this)
      }, e.prototype.loadCurrent = function () {
          var a = c(this.siteAPI);
          d(a) && a.refs.currentVideo.load()
      }, e.prototype.playCurrent = function () {
          var a = c(this.siteAPI);
          d(a) && a.refs.currentVideo.play()
      }, e.prototype.playPrevious = function () {
          var a = c(this.siteAPI);
          d(a) && a.refs.previousVideo.play()
      }, e.prototype.pauseCurrent = function () {
          var a = c(this.siteAPI);
          d(a) && a.refs.currentVideo.pause()
      }, e.prototype.pausePrevious = function () {
          var a = c(this.siteAPI);
          d(a) && a.refs.previousVideo.pause()
      }, b.registerSiteAspect("VideoBackgroundAspect", e), e
  }), define("core/components/siteAspects/touchEventsAspect", ["lodash", "core/core/siteAspectsRegistry", "utils"], function (a, b, c) {
      "use strict";
      function h(a) {
          g = a, i()
      }
  
      function i() {
          f.forEach(function (a) {
              e[a] = {}, g.registerToWindowTouchEvent(a, j)
          }, this)
      }
  
      function j(b) {
          var j, c = b.type.slice("touch".length), f = "WindowTouch" + d.capitalize(c), h = e[b.type], i = "on" + f;
          a.forEach(h, function (a) {
              j = g.getComponentById(a), j ? j[i] && j[i](b) : delete h[a]
          }, this)
      }
  
      var g, d = c.stringUtils, e = {}, f = ["touchstart", "touchmove", "touchend", "touchcancel"];
      h.prototype = {registerToWindowTouchEvent: function (a, b) {
          e[a.toLowerCase()][b.props.id] = b.props.id;
      }, unregisterFromWindowTouchEvent: function (a, b) {
          delete e[a.toLowerCase()][b.props.id]
      }}, b.registerSiteAspect("windowTouchEvents", h)
  }), define("core/components/siteAspects/aspectsCollector", ["core/components/siteAspects/loginToWixAspect", "core/components/siteAspects/parentFrameAspect", "core/components/siteAspects/vkPostMessageAspect", "core/components/siteAspects/packagePickerAspect", "core/core/pageItemAspect", "core/components/siteAspects/externalScriptLoaderAspect", "core/siteRender/SiteMembersAspect", "core/components/siteAspects/windowFocusEventsAspect", "core/components/siteAspects/windowScrollEventAspect", "core/components/siteAspects/windowResizeEventAspect", "core/components/siteAspects/windowKeyboardEventAspect", "core/components/siteAspects/MobileActionsMenuAspect", "core/components/siteAspects/addComponentAspect", "core/components/siteAspects/PinterestWidgetPostMessageAspect", "core/components/siteAspects/AudioAspect", "core/components/siteAspects/actionsAspect", "core/components/siteAspects/DynamicClientSpecMapAspect", "core/components/siteAspects/VideoBackgroundAspect", "core/components/siteAspects/touchEventsAspect"], function () {
      "use strict"
  }), define("core/components/audioMixin", ["lodash"], function (a) {
      "use strict";
      return{getInitialState: function () {
          this.audioAspect = this.props.siteAPI.getSiteAspect("AudioAspect"), this.audioObj = null, this.isAudioPlaying = !1, this.trackPosition = 0, this.isPlayingAllowed = this.props.siteData.renderFlags.isPlayingAllowed
      }, componentWillReceiveProps: function (a) {
          this.props.compData.uri !== a.compData.uri && this.clearAudioObject();
          var b = this.audioAspect.isCompPlaying(this);
          b ? this.setState({$playerState: "playing"}) : this.isAudioPlaying && this.setState({$playerState: "pausing"})
      }, componentDidUpdate: function () {
          var a = this.audioAspect.isCompPlaying(this);
          if ("mobile" !== this.getDeviceState() && this.props.siteData.renderFlags.isPlayingAllowed) {
              if (this.props.siteData.renderFlags.isPlayingAllowed !== this.isPlayingAllowed) {
                  this.isPlayingAllowed = this.props.siteData.renderFlags.isPlayingAllowed;
                  var b = this.props.compProp.autoplay || this.props.compData.autoPlay;
                  b && this.initiatePlay()
              }
          } else this.isPlayingAllowed = this.props.siteData.renderFlags.isPlayingAllowed, !this.isPlayingAllowed && a && this.initiatePause()
      }, componentDidMount: function () {
          "mobile" !== this.getDeviceState() && this.autoplay && this.isPlayingAllowed && this.initiatePlay()
      }, componentWillUnmount: function () {
          this.clearAudioObject()
      }, getOrCreateAudioObject: function () {
          return this.audioObj || this.createAudioObject()
      }, createAudioObject: function () {
          var a = this;
          if (!a.props.compData.uri)return!1;
          var b = {id: a.props.id, url: this.props.siteData.serviceTopology.staticAudioUrl + "/" + a.props.compData.uri, autoPlay: !1, stream: !0, multiShot: !0, multiShotEvents: !0, autoLoad: !a.props.siteData.isMobileView() || !this.isPlayingAllowed, usePolicyFile: !1, whileloading: function () {
              "function" == typeof a.whileLoadingHandler && a.whileLoadingHandler(this.duration)
          }, onfailure: function () {
              a.failedToLoadAudioFile()
          }, onfinish: function () {
              a.finishedPlayingAudio(this.id)
          }, onsuspend: function () {
              a.audioLoadingSuspended(this.id)
          }};
          return this.audioAspect.createAudioObj(b)
      }, clearAudioObject: function () {
          this.audioObj && (this.audioObj.pause(), this.audioObj = null, this.trackPosition = 0)
      }, failedToLoadAudioFile: function (a) {
          var b = "Failed to load audio file " + a, c = "color: #ff9494; font-size: 24px;";
          console.log("%c" + b, c), console.error(b)
      }, audioLoadingSuspended: function (a) {
          var b = "Browser has chosen to stop downloading audio file " + a, c = "color: #ff9494; font-size: 24px;";
          console.log("%c" + b, c)
      }, playAudio: function () {
          var a = this, b = {volume: a.audioVolume, position: a.trackPosition, whileplaying: function () {
              a.trackPosition = this.position, "function" == typeof a.whilePlayingHandler && a.whilePlayingHandler(this.position)
          }};
          this.setVolume(this.audioVolume), this.audioObj.play(b)
      }, updateAudioObject: function () {
          this.audioObj = this.getOrCreateAudioObject(), this.audioObj && (this.isAudioPlaying || "playing" !== this.state.$playerState ? this.isAudioPlaying && "pausing" === this.state.$playerState ? (this.isAudioPlaying = !1, this.audioObj.pause()) : "repeat" === this.state.$playerState && (this.isAudioPlaying = !1) : (this.isAudioPlaying = !0, this.playAudio()))
      }, getDeviceState: function () {
          return this.props.siteData._isMobileView ? "mobile" : "desktop"
      }, initiatePlay: function () {
          a.isEmpty(this.props.compData.uri) || "" === this.props.compData.uri || this.audioAspect.updatePlayingComp(this)
      }, initiatePause: function () {
          this.audioAspect.updatePausingComp(), this.setState({$playerState: "pausing"})
      }, getAudioDuration: function () {
          return this.audioObj.duration
      }, seekAudio: function (a) {
          this.trackPosition = a, this.isAudioPlaying ? this.audioObj.setPosition(a) : this.initiatePlay()
      }, setVolume: function (a) {
          this.audioVolume = a, this.isAudioPlaying && this.audioObj.setVolume(a)
      }, muteAudio: function () {
          this.audioObj.mute()
      }, unmuteAudio: function () {
          this.audioObj.unmute()
      }}
  }), define("core/components/facebookComponentMixin", ["lodash"], function (a) {
      "use strict";
      function b(a, b) {
          return a && a.height && a.width && b && b.height && b.width ? a.height !== b.height || a.width !== b.width : !1
      }
  
      return{getInitialState: function () {
          this.loadScript(), this._lastHref = this.getHref(this.props)
      }, loadScript: function () {
          if (!window.FB) {
              var a = this.props.siteAPI.getSiteAspect("externalScriptLoader");
              a.loadScript("FACEBOOK")
          }
      }, parseFacebookPluginDomNode: function () {
          window.FB && window.FB.XFBML && window.FB.XFBML.parse && window.FB.XFBML.parse(this.getDOMNode())
      }, componentDidMount: function () {
          this.parseFacebookPluginDomNode()
      }, componentDidUpdate: function (c) {
          var d = this.getHref(this.props);
          a.isEqual(c.compData, this.props.compData) && a.isEqual(c.compProp, this.props.compProp) && !b(c.style, this.props.style) && d === this._lastHref || this.parseFacebookPluginDomNode(), this._lastHref = d
      }}
  }), define("core/components/util/galleryPagingCalculations", ["lodash", "utils"], function (a, b) {
      "use strict";
      var c = b.matrixCalculations, d = {getNumberOfDisplayedRows: function (a, b, d, e) {
          return a || e && b * d > e ? b : c.getAvailableRowsNumber(b, d, e)
      }, getItemsPerPage: function (a, b, c) {
          return a * this.getNumberOfDisplayedRows(null, b, a, c)
      }, getTotalPageCount: function (a, b, c) {
          var d = this.getItemsPerPage(a, b, c), e = Math.floor(c / d);
          return c % d > 0 && e++, e
      }, getNextPageItemIndex: function (a, b, c, d) {
          var e = a + this.getItemsPerPage(b, c, d);
          return e >= d && (e = 0), e
      }, getPrevPageItemIndex: function (a, b, c, d) {
          var e = this.getItemsPerPage(b, c, d), f = a - e;
          return 0 > f && (f = (this.getTotalPageCount(b, c, d) - 1) * e), f
      }, getCounterText: function (a, b, c, d) {
          var e = Math.floor(a / this.getItemsPerPage(b, c, d)), f = this.getTotalPageCount(b, c, d);
          return f || (f = 1), String(e + 1) + "/" + String(f)
      }, getPageItems: function (a, b, c, d) {
          return this.getPageItemsByStartIndex(a, b, this.getItemsPerPage(c, d, a.length))
      }, getPageItemsByStartIndex: function (a, b, c) {
          var d = [];
          if (c < a.length) {
              for (var e = this.getLastItemIndex(a, b, c), f = b; e >= f; f++)d.push(a[f]);
              return d
          }
          return a
      }, getLastItemIndex: function (a, b, c) {
          return Math.min(a.length - 1, b + c - 1)
      }};
      return d
  }), define("core/components/util/galleriesHelperFunctions", ["skins", "utils", "lodash"], function (a, b, c) {
      "use strict";
      function e(a) {
          var b = d[a].exports;
          return b && b.heightDiff || 0
      }
  
      function f(a) {
          var b = d[a].exports;
          return b && b.widthDiff || 0
      }
  
      function g(a, c, d, e, f) {
          var g = d, h = this.getSkinHeightDiff(e), i = b.matrixCalculations, j = i.getItemHeight(d, f, a, h);
          return Math.floor(c * j + (c - 1) * g) + h
      }
  
      function h(a, b, d) {
          var e = 0, f = parseInt(b.imgHeightDiff && b.imgHeightDiff.value, 10) || 0, g = parseInt(b.topPadding && b.topPadding.value, 10) || 0;
          return f || g ? e = f + g : a && a.exports && (e = "mobileView" === d && c.isNumber(a.exports.m_heightDiff) ? a.exports.m_heightDiff : a.exports.heightDiff || 0), e
      }
  
      function i(a, b) {
          var d = 0;
          return a && a.exports && (d = "mobileView" === b && c.isNumber(a.exports.m_widthDiff) ? a.exports.m_widthDiff : a.exports.widthDiff || 0), d
      }
  
      var d = a.skins;
      return{getSkinHeightDiff: e, getSkinWidthDiff: f, getGalleryHeight: g, getDisplayerHeightDiff: h, getDisplayerWidthDiff: i}
  }), define("core/components/textCompMixin", ["lodash", "core/components/skinBasedComp"], function (a, b) {
      "use strict";
      return{mixins: [b.skinBasedComp], componentWillMount: function () {
          this.convertCompDataTextToHTML(this.props)
      }, componentWillReceiveProps: function (a) {
          this.convertCompDataTextToHTML(a)
      }, getRootStyle: function (b) {
          var c = a.clone(b || {});
          return"hidden" !== (c["overflow-y"] || c.overflowY) && (c.height = "auto"), c
      }, getSkinProperties: function () {
          this.lastScale = this.props.structure && this.props.structure.layout && this.props.structure.layout.scale || 1;
          var c, a = this.props.skin, b = {"": {style: this.getRootStyle(this.props.style)}};
          return c = "wysiwyg.viewer.skins.WRichTextSkin" === a || "wysiwyg.viewer.skins.WRichTextClickableSkin" === a ? b.richTextContainer = {} : b[""], c.dangerouslySetInnerHTML = {__html: this._componentHtml || ""}, this.props.title && (b[""].title = this.props.title), b
      }}
  }), define("core/components/mediaZoomWrapperMixin", ["lodash", "react", "core/core/componentPropsBuilder", "core/siteRender/compFactory", "core/components/skinBasedComp"], function (a, b, c, d, e) {
      "use strict";
      return{mixins: [e.skinBasedComp], componentWillMount: function () {
          var a = this.props.siteAPI.getSiteAspect("windowKeyboardEvent");
          a.registerToEscapeKey(this);
          var b = this.props.siteAPI.getSiteAspect("windowTouchEvents");
          b.registerToWindowTouchEvent("touchMove", this);
          var c = this.getPrevAndNextState();
          c.next && a.registerToArrowRightKey(this), c.prev && a.registerToArrowLeftKey(this)
      }, componentWillUnmount: function () {
          this.props.siteAPI.getSiteAspect("windowKeyboardEvent").unRegisterKeys(this), this.props.siteAPI.getSiteAspect("windowTouchEvents").unregisterFromWindowTouchEvent("touchMove", this)
      }, getSkinProperties: function () {
          var a = this.getChildZoomComponentType(), b = "wysiwyg.viewer.components.MobileMediaZoom" === a;
          return{"": {children: this.createChildComponent(this.props.compData, a, "mediaZoom", {ref: this.props.compData.id, actualNavigateToItemFunc: this.actualNavigateToItem, getBoxDimensionsFunc: this.getBoxDimensions, getChildCompFunc: this.getChildComp, getPrevAndNextStateFunc: this.getPrevAndNextState, isDataChangedFunc: this.isDataChanged, closeFunction: this.props.closeFunction, enableInnerScrolling: this.enableInnerScrolling || !1}), style: {width: "100%", height: "100%", position: b ? "static" : "absolute"}}}
      }, onEscapeKey: function () {
          this.refs[this.props.compData.id].closeMediaZoom()
      }, onArrowLeftKey: function () {
          this.refs[this.props.compData.id].clickOnPreviousButton()
      }, onArrowRightKey: function () {
          this.refs[this.props.compData.id].clickOnNextButton()
      }, onWindowTouchMove: function (a) {
          this.enableInnerScrolling || (a.preventDefault(), a.stopPropagation())
      }}
  }), define("core/components/buttonMixin", ["lodash", "fonts", "skins", "utils"], function (a, b, c, d) {
      "use strict";
      function f(a) {
          var b = {};
          if ("center" !== a.compProp.align) {
              var c = "margin" + (a.compProp.align ? d.stringUtils.capitalize(a.compProp.align) : ""), e = a.siteData.measureMap && a.siteData.measureMap.custom[a.id + "label"];
              b[c] = e ? e[c] : a.compProp.margin
          }
          return b
      }
  
      function g(a) {
          var b = {};
          if (a.siteData.isMobileView()) {
              var c = h(a);
              c && (b.fontSize = i(c, a) + "px")
          }
          return b
      }
  
      function h(a) {
          var b = a.structure.styleId, d = a.siteData.getAllTheme()[b], f = d ? d.style.properties.fnt : c.skins[a.skin].paramsDefaults.fnt;
          if (f) {
              var g = a.siteData.getFont(f) || f;
              return parseInt(e.parseFontStr(g).size, 10)
          }
      }
  
      function i(a, b) {
          var c = b.structure.layout.scale;
          return b.siteData.mobile.convertFontSizeToMobile(a, c)
      }
  
      var e = b.fontUtils, j = {getLabelStyle: function () {
          return a.merge(f(this.props), g(this.props))
      }};
      return j
  }), define("core/components/util/matrixAnimationManipulation", ["lodash"], function (a) {
      "use strict";
      function b() {
          return.1
      }
  
      var c = {getDefultAnimationValues: function (a, b, c, d) {
          return{sourceNodesArrSorted: [a], destNodesArrSorted: [b], stagger: 0, timingFunctionIndex: c, transName: d, sporadicallyRandom: !1}
      }, getUpdatedTimingFunctionIndex: function (a, b) {
          return b > a.length - 1 && (b = 0), b
      }, getCrossFadePossibleTransitionByName: function (a) {
          switch (a) {
              case"crossFadeHorizWave":
                  return this.sortMatrixByRows;
              case"crossFadeVertWave":
                  return this.sortMatrixByCols;
              case"seq_crossFade_Diagonal":
                  return this.convertMatrixToDiagonal
          }
      }, convertArrayToMatrix: function (b, c, d) {
          var e = 0, f = new Array(c);
          return a.times(c, function (c) {
              f[c] || (f[c] = []), a.times(d, function (a) {
                  e < b.length ? (f[c][a] = b[e], e++) : f[c][a] = -1
              })
          }), f
      }, sortMatrixByRows: function (a) {
          return[a]
      }, sortMatrixByCols: function (b, c, d) {
          var e = this.convertArrayToMatrix(b, c, d), f = [], g = 0;
          return a.times(d, function (b) {
              a.times(c, function (a) {
                  -1 !== e[a][b] && (f[g] = e[a][b], g++)
              })
          }), [f]
      }, reverseMatrix: function (b) {
          return a(b).reverse().value()
      }, convertMatrixToDiagonal: function (b, c, d) {
          var e = this.convertArrayToMatrix(b, c, d), f = [], g = 0;
          return a.times(c + d, function (b) {
              var h = Math.max(0, b - c), i = Math.min(d - h, b, c);
              a.times(i, function (a) {
                  var d = e[Math.min(c, b) - a - 1][h + a];
                  -1 !== d && (f[g] = d, g++)
              })
          }), [f]
      }, convertMatrixToReverseDiagonal: function (a, b, c) {
          var d = this.convertMatrixToDiagonal(a, b, c);
          return this.reverseMatrix(d)
      }, getMatrixByRows: function (b, c, d) {
          var e = 0, f = new Array(c);
          return a.times(c, function (c) {
              f[c] || (f[c] = []), a.times(d, function (a) {
                  e < b.length && (f[c][a] = b[e], e++)
              })
          }), f
      }, getMatrixByRowsReverse: function (a, b, c) {
          var d = this.getMatrixByRows(a, b, c);
          return this.reverseMatrix(d)
      }, getMatrixByColsReverse: function (a, b, c) {
          var d = this.getMatrixByCols(a, b, c);
          return this.reverseMatrix(d)
      }, getMatrixByCols: function (b, c, d) {
          var e = this.getMatrixByRows(b, c, d), f = new Array(d);
          return a.times(d, function (b) {
              f[b] || (f[b] = []), a.times(c, function (a) {
                  e[a][b] && (f[b][a] = e[a][b])
              })
          }), f
      }}, d = {getSortedArrayAndStagger: function (a, d, e, f, g, h) {
          switch (a) {
              case"none":
                  return{sourceNodesArrSorted: [d], destNodesArrSorted: [e], stagger: 0, transName: "NoTransition"};
              case"seq_shrink_All":
              case"seq_crossFade_All":
                  var i = [c.sortMatrixByRows, c.sortMatrixByCols, c.reverseMatrix, c.convertMatrixToDiagonal, c.convertMatrixToReverseDiagonal, c.sortMatrixByRows];
                  h = c.getUpdatedTimingFunctionIndex(i, h);
                  var j = i[h];
                  return{sourceNodesArrSorted: j.call(c, d, f, g), destNodesArrSorted: j.call(c, e, f, g), stagger: h === i.length - 1 || d.length !== e.length ? 0 : .1, timingFunctionIndex: h, transName: "seq_shrink_All" === a ? "Shrink" : "CrossFade"};
              case"swipe_horiz_All":
                  var k = [c.getMatrixByRows, c.getMatrixByRowsReverse];
                  h = c.getUpdatedTimingFunctionIndex(k, h);
                  var l = k[h];
                  return{sourceNodesArrSorted: l.call(c, d, f, g), destNodesArrSorted: l.call(c, e, f, g), stagger: b(), timingFunctionIndex: h, transName: "SlideHorizontal", sporadicallyRandom: f > 1};
              case"swipe_vert_All":
                  var m = [c.getMatrixByCols, c.getMatrixByColsReverse];
                  h = c.getUpdatedTimingFunctionIndex(m, h);
                  var n = m[h];
                  return{sourceNodesArrSorted: n.call(c, d, f, g), destNodesArrSorted: n.call(c, e, f, g), stagger: b(), timingFunctionIndex: h, transName: "SlideVertical", sporadicallyRandom: g > 1};
              case"seq_random":
                  var o = ["seq_shrink_All", "seq_crossFade_All", "swipe_horiz_All", "swipe_vert_All"], p = o[Math.floor(Math.random() * o.length)];
                  return this.getSortedArrayAndStagger(p, d, e, f, g, h);
              case"horizSwipeAllAtOnce":
                  return c.getDefultAnimationValues(d, e, h, "SlideHorizontal");
              case"vertSwipeAllAtOnce":
                  return c.getDefultAnimationValues(d, e, h, "SlideVertical");
              case"crossFadeAllAtOnce":
                  return c.getDefultAnimationValues(d, e, h, "CrossFade");
              case"crossFadeHorizWave":
              case"crossFadeVertWave":
              case"seq_crossFade_Diagonal":
                  var q = c.getCrossFadePossibleTransitionByName(a);
                  return{sourceNodesArrSorted: q.call(c, d, f, g), destNodesArrSorted: q.call(c, e, f, g), stagger: .1, timingFunctionIndex: h, transName: "CrossFade"};
              case"seq_swipe_alternate":
                  var r = [c.getMatrixByRows, c.getMatrixByCols];
                  return h = c.getUpdatedTimingFunctionIndex(r, h), {sourceNodesArrSorted: d, destNodesArrSorted: e, stagger: b(), timingFunctionIndex: h, transName: 0 === h ? "SlideHorizontal" : "SlideVertical"}
          }
      }};
      return d
  }), define("core/activities/activity", ["utils"], function (a) {
      "use strict";
      var b = function () {
          return{additionalInfoUrl: null, summary: ""}
      }, c = function (a) {
          return a.currentUrl.full
      }, d = function () {
          return a.guidUtils.getUniqueId()
      }, e = function (a, b, c) {
          this._siteData = a, this._fields = b, this._type = c || ""
      };
      return e.prototype = {getParams: function () {
          return{hs: this._siteData.getHubSecurityToken(), "activity-id": d(), "metasite-id": this._siteData.getMetaSiteId(), svSession: this._siteData.getSvSession(), version: "1.0.0"}
      }, getPayload: function () {
          return{activityDetails: b(), activityInfo: "activityInfo", activityLocationUrl: c(this._siteData), activityType: "activityType", contactUpdate: {}, createdAt: (new Date).toISOString()}
      }}, e
  }), define("core/activities/tpaActivity", ["lodash", "core/activities/activity"], function (a, b) {
      "use strict";
      var c = function (a, c, d) {
          b.call(this, a, c, d)
      };
      return c.prototype = new b, c.prototype.getParams = function (c) {
          var d = b.prototype.getParams.call(this, c), e = {"application-id": this._fields.appDefinitionId, instance: this._fields.instance};
          return e = a.assign(d, e)
      }, c.prototype.getPayload = function (c) {
          var d = b.prototype.getPayload.call(this, c), e = {contactUpdate: this._fields.contactUpdate, activityInfo: this._fields.info, activityType: this._fields.type, activityDetails: this._fields.url || null};
          return e = a.assign(d, e)
      }, c
  }), define("core/activities/contactFormActivity", ["lodash", "core/activities/activity"], function (a, b) {
      "use strict";
      var c = 29, d = function (a) {
          var b = "No message was received";
          return(a.subject || a.message) && (b = "<strong>" + a.subject + "</strong>" || "", b += b && a.message ? "<br>" : "", b += a.message || ""), {additionalInfoUrl: null, summary: b}
      }, e = {name: {first: "", last: ""}, emails: [
          {tag: "main", email: ""}
      ], phones: [
          {tag: "main", phone: ""}
      ], addresses: [
          {tag: "main", address: ""}
      ]}, f = {name: "name", email: "emails", phone: "phones", address: "addresses"}, g = function (a) {
          var b = {fields: []};
          return Object.keys(a).forEach(function (c) {
              b.fields.push({name: c, value: a[c]})
          }), b
      }, h = function (b) {
          var c = a.map(b, function (a, b) {
              return f[b]
          }, this), d = a.pick(e, c);
          return j(d, b), i(d, b), a.forEach(b, function (b, c) {
              var e = d[f[c]];
              a.isArray(e) && (a.first(e)[c] = b)
          }, this), d
      }, i = function (a, b) {
          b.phone || (b.phone = ""), b.phone = b.phone.substring(0, c)
      }, j = function (a, b) {
          b.name || (b.name = "");
          var c = b.name.split(" ");
          a.name && (a.name.first = c[0], a.name.last = c[1])
      }, k = function (a, c, d) {
          b.call(this, a, c, d)
      };
      return k.prototype = new b, k.prototype.getParams = function (c) {
          var d = b.prototype.getParams.call(this, c), e = {"component-name": "ContactForm"};
          return e = a.assign(d, e)
      }, k.prototype.getPayload = function (c) {
          var e = b.prototype.getPayload.call(this, c), f = {contactUpdate: h(this._fields), activityInfo: g(this._fields), activityDetails: d(this._fields), activityType: "contact/contact-form"};
          return f = a.assign(e, f)
      }, k
  }), define("core/activities/subscribeFormActivity", ["lodash", "core/activities/activity"], function (a, b) {
      "use strict";
      var c = function (b) {
          var c = {fields: []};
          return Object.keys(b).forEach(function (a) {
              c.fields.push({name: a, value: b[a]})
          }), c.email = b.email, (b.first || b.last) && (c.name = a.pick({first: b.first, last: b.last}, a.identity)), b.phone && (c.phone = b.phone), c
      }, d = function (a) {
          return{name: {first: a.first || "", last: a.last || ""}, emails: [
              {tag: "main", email: a.email || ""}
          ], phones: a.phone ? [
              {tag: "main", phone: a.phone || ""}
          ] : [], emailSubscriptionPolicy: "RECURRING"}
      }, e = function (a, c, d) {
          b.call(this, a, c, d)
      };
      return e.prototype = new b, e.prototype.getParams = function (c) {
          var d = b.prototype.getParams.call(this, c), e = {"component-name": "subscribeForm"};
          return e = a.assign(d, e)
      }, e.prototype.getPayload = function (e) {
          var f = b.prototype.getPayload.call(this, e), g = {contactUpdate: d(this._fields), activityInfo: c(this._fields), activityType: "contact/subscription-form"};
          return g = a.assign(f, g)
      }, e
  }), define("core/activities/activityTypes", ["core/activities/tpaActivity", "core/activities/contactFormActivity", "core/activities/subscribeFormActivity"], function (a, b, c) {
      "use strict";
      return{TPAActivity: a, ContactFormActivity: b, SubscribeFormActivity: c}
  }), define("core/activities/activityService", ["utils"], function (a) {
      "use strict";
      var b = a.urlUtils, c = a.ajaxLibrary, d = "/_api/app-integration-bus-web/v1/activities", e = "http://wix.com", f = function (a) {
          this._host = a
      };
      return f.prototype.reportActivity = function (a, f, g) {
          var h = a.getParams(), i = a.getPayload(), j = "?" + b.toQueryString(h), k = this._host ? "http://" + this._host : e;
          k += d + j, c.ajax({type: "POST", url: k, data: i, dataType: "json", contentType: "application/json", success: f, error: g})
      }, f
  }),
  define("core", ["utils", "core/core/site", "core/siteRender/compFactory", "core/util/transitions", "core/siteRender/styleCollector", "core/core/dataRequirementsChecker", "core/core/siteAspectsRegistry", "core/components/animationsMixin", "core/components/dataAccess", "core/components/gallerySizeScaling", "core/components/baseCompMixin", "core/components/skinBasedComp", "core/components/fixedPositionContainerMixin", "core/components/galleryAutoPlay", "core/components/optionInput", "core/components/skinInfo", "core/core/componentPropsBuilder", "core/components/siteAspects/aspectsCollector", "core/siteRender/SiteAPI", "core/components/siteAspects/PinterestWidgetPostMessageAspect", "core/components/siteAspects/AudioAspect", "core/components/audioMixin", "core/components/facebookComponentMixin", "core/components/util/galleryPagingCalculations", "core/components/util/galleriesHelperFunctions", "core/components/textCompMixin", "core/components/mediaZoomWrapperMixin", "core/components/buttonMixin", "core/components/util/matrixAnimationManipulation", "core/siteRender/WixSiteHeadRenderer", "core/activities/activityTypes", "core/activities/activityService", "core/bi/events"], function (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G) {
      "use strict";
      return{SiteData: a.SiteData, SiteAPI: s, MobileDeviceAnalyzer: a.MobileDeviceAnalyzer, renderer: b, WixSiteHeadRenderer: D, compFactory: c, transitions: d, styleCollector: e, dataRequirementsChecker: f, siteAspectsRegistry: g, componentPropsBuilder: q, compMixins: {intervalsMixin: a.timerMixins.intervalsMixin, timeoutsMixin: a.timerMixins.timeoutsMixin, fixedPositionContainerMixin: m, skinBasedComp: l.skinBasedComp, animationsMixin: h, dataAccess: i, galleryAutoPlay: n, optionInput: o, skinInfo: p, audioMixin: v, facebookComponentMixin: w, textCompMixin: z, mediaZoomWrapperMixin: A, buttonMixin: B, baseCompMixin: k}, componentUtils: {galleryPagingCalculations: x, matrixAnimationManipulation: C, galleriesHelperFunctions: y}, activityTypes: E, ActivityService: F, biEvents: G}
  });