(function(factory){
if(typeof define==='function'&&define.amd){
define(['jquery'], factory);
}else if(typeof module==='object'&&typeof module.exports==='object'){
module.exports=factory(require('jquery'));
}else{
factory(jQuery);
}} (function($){
var menuTrees=[],
mouse=false,
touchEvents='ontouchstart' in window,
mouseDetectionEnabled=false,
requestAnimationFrame=window.requestAnimationFrame||function(callback){ return setTimeout(callback, 1000 / 60); },
cancelAnimationFrame=window.cancelAnimationFrame||function(id){ clearTimeout(id); },
canAnimate = !!$.fn.animate;
function initMouseDetection(disable){
var eNS='.smartmenus_mouse';
if(!mouseDetectionEnabled&&!disable){
var firstTime=true,
lastMove=null,
events={
'mousemove': function(e){
var thisMove={ x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
if(lastMove){
var deltaX=Math.abs(lastMove.x - thisMove.x),
deltaY=Math.abs(lastMove.y - thisMove.y);
if((deltaX > 0||deltaY > 0)&&deltaX <=4&&deltaY <=4&&thisMove.timeStamp - lastMove.timeStamp <=300){
mouse=true;
if(firstTime){
var $a=$(e.target).closest('a');
if($a.is('a')){
$.each(menuTrees, function(){
if($.contains(this.$root[0], $a[0])){
this.itemEnter({ currentTarget: $a[0] });
return false;
}});
}
firstTime=false;
}}
}
lastMove=thisMove;
}};
events[touchEvents ? 'touchstart':'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut']=function(e){
if(isTouchEvent(e.originalEvent)){
mouse=false;
}};
$(document).on(getEventsNS(events, eNS));
mouseDetectionEnabled=true;
}else if(mouseDetectionEnabled&&disable){
$(document).off(eNS);
mouseDetectionEnabled=false;
}}
function isTouchEvent(e){
return !/^(4|mouse)$/.test(e.pointerType);
}
function getEventsNS(events, eNS){
if(!eNS){
eNS='';
}
var eventsNS={};
for (var i in events){
eventsNS[i.split(' ').join(eNS + ' ') + eNS]=events[i];
}
return eventsNS;
}
$.SmartMenus=function(elm, options){
this.$root=$(elm);
this.opts=options;
this.rootId='';
this.accessIdPrefix='';
this.$subArrow=null;
this.activatedItems=[];
this.visibleSubMenus=[];
this.showTimeout=0;
this.hideTimeout=0;
this.scrollTimeout=0;
this.clickActivated=false;
this.focusActivated=false;
this.zIndexInc=0;
this.idInc=0;
this.$firstLink=null;
this.$firstSub=null;
this.disabled=false;
this.$disableOverlay=null;
this.$touchScrollingSub=null;
this.cssTransforms3d='perspective' in elm.style||'webkitPerspective' in elm.style;
this.wasCollapsible=false;
this.init();
};
$.extend($.SmartMenus, {
hideAll: function(){
$.each(menuTrees, function(){
this.menuHideAll();
});
},
destroy: function(){
while (menuTrees.length){
menuTrees[0].destroy();
}
initMouseDetection(true);
},
prototype: {
init: function(refresh){
var self=this;
if(!refresh){
menuTrees.push(this);
this.rootId=(new Date().getTime() + Math.random() + '').replace(/\D/g, '');
this.accessIdPrefix='sm-' + this.rootId + '-';
if(this.$root.hasClass('sm-rtl')){
this.opts.rightToLeftSubMenus=true;
}
var eNS='.smartmenus';
this.$root
.data('smartmenus', this)
.attr('data-smartmenus-id', this.rootId)
.dataSM('level', 1)
.on(getEventsNS({
'mouseover focusin': $.proxy(this.rootOver, this),
'mouseout focusout': $.proxy(this.rootOut, this),
'keydown': $.proxy(this.rootKeyDown, this)
}, eNS))
.on(getEventsNS({
'mouseenter': $.proxy(this.itemEnter, this),
'mouseleave': $.proxy(this.itemLeave, this),
'mousedown': $.proxy(this.itemDown, this),
'focus': $.proxy(this.itemFocus, this),
'blur': $.proxy(this.itemBlur, this),
'click': $.proxy(this.itemClick, this)
}, eNS), 'a');
eNS +=this.rootId;
if(this.opts.hideOnClick){
$(document).on(getEventsNS({
'touchstart': $.proxy(this.docTouchStart, this),
'touchmove': $.proxy(this.docTouchMove, this),
'touchend': $.proxy(this.docTouchEnd, this),
'click': $.proxy(this.docClick, this)
}, eNS));
}
$(window).on(getEventsNS({ 'resize orientationchange': $.proxy(this.winResize, this) }, eNS));
if(this.opts.subIndicators){
this.$subArrow=$('<span/>').addClass('sub-arrow');
if(this.opts.subIndicatorsText){
this.$subArrow.html(this.opts.subIndicatorsText);
}}
initMouseDetection();
}
this.$firstSub=this.$root.find('ul').each(function(){ self.menuInit($(this)); }).eq(0);
this.$firstLink=this.$root.find('a').eq(0);
if(this.opts.markCurrentItem){
var reDefaultDoc=/(index|default)\.[^#\?\/]*/i,
reHash=/#.*/,
locHref=window.location.href.replace(reDefaultDoc, ''),
locHrefNoHash=locHref.replace(reHash, '');
this.$root.find('a:not(.mega-menu a)').each(function(){
var href=this.href.replace(reDefaultDoc, ''),
$this=$(this);
if(href==locHref||href==locHrefNoHash){
$this.addClass('current');
if(self.opts.markCurrentTree){
$this.parentsUntil('[data-smartmenus-id]', 'ul').each(function(){
$(this).dataSM('parent-a').addClass('current');
});
}}
});
}
this.wasCollapsible=this.isCollapsible();
},
destroy: function(refresh){
if(!refresh){
var eNS='.smartmenus';
this.$root
.removeData('smartmenus')
.removeAttr('data-smartmenus-id')
.removeDataSM('level')
.off(eNS);
eNS +=this.rootId;
$(document).off(eNS);
$(window).off(eNS);
if(this.opts.subIndicators){
this.$subArrow=null;
}}
this.menuHideAll();
var self=this;
this.$root.find('ul').each(function(){
var $this=$(this);
if($this.dataSM('scroll-arrows')){
$this.dataSM('scroll-arrows').remove();
}
if($this.dataSM('shown-before')){
if(self.opts.subMenusMinWidth||self.opts.subMenusMaxWidth){
$this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
}
if($this.dataSM('scroll-arrows')){
$this.dataSM('scroll-arrows').remove();
}
$this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
}
if(($this.attr('id')||'').indexOf(self.accessIdPrefix)==0){
$this.removeAttr('id');
}})
.removeDataSM('in-mega')
.removeDataSM('shown-before')
.removeDataSM('scroll-arrows')
.removeDataSM('parent-a')
.removeDataSM('level')
.removeDataSM('beforefirstshowfired')
.removeAttr('role')
.removeAttr('aria-hidden')
.removeAttr('aria-labelledby')
.removeAttr('aria-expanded');
this.$root.find('a.has-submenu').each(function(){
var $this=$(this);
if($this.attr('id').indexOf(self.accessIdPrefix)==0){
$this.removeAttr('id');
}})
.removeClass('has-submenu')
.removeDataSM('sub')
.removeAttr('aria-haspopup')
.removeAttr('aria-controls')
.removeAttr('aria-expanded')
.closest('li').removeDataSM('sub');
if(this.opts.subIndicators){
this.$root.find('span.sub-arrow').remove();
}
if(this.opts.markCurrentItem){
this.$root.find('a.current').removeClass('current');
}
if(!refresh){
this.$root=null;
this.$firstLink=null;
this.$firstSub=null;
if(this.$disableOverlay){
this.$disableOverlay.remove();
this.$disableOverlay=null;
}
menuTrees.splice($.inArray(this, menuTrees), 1);
}},
disable: function(noOverlay){
if(!this.disabled){
this.menuHideAll();
if(!noOverlay&&!this.opts.isPopup&&this.$root.is(':visible')){
var pos=this.$root.offset();
this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({
position: 'absolute',
top: pos.top,
left: pos.left,
width: this.$root.outerWidth(),
height: this.$root.outerHeight(),
zIndex: this.getStartZIndex(true),
opacity: 0
}).appendTo(document.body);
}
this.disabled=true;
}},
docClick: function(e){
if(this.$touchScrollingSub){
this.$touchScrollingSub=null;
return;
}
if(this.visibleSubMenus.length&&!$.contains(this.$root[0], e.target)||$(e.target).closest('a').length){
this.menuHideAll();
}},
docTouchEnd: function(e){
if(!this.lastTouch){
return;
}
if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!$.contains(this.$root[0], this.lastTouch.target))){
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
var self=this;
this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, 350);
}
this.lastTouch=null;
},
docTouchMove: function(e){
if(!this.lastTouch){
return;
}
var touchPoint=e.originalEvent.touches[0];
this.lastTouch.x2=touchPoint.pageX;
this.lastTouch.y2=touchPoint.pageY;
},
docTouchStart: function(e){
var touchPoint=e.originalEvent.touches[0];
this.lastTouch={ x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };},
enable: function(){
if(this.disabled){
if(this.$disableOverlay){
this.$disableOverlay.remove();
this.$disableOverlay=null;
}
this.disabled=false;
}},
getClosestMenu: function(elm){
var $closestMenu=$(elm).closest('ul');
while ($closestMenu.dataSM('in-mega')){
$closestMenu=$closestMenu.parent().closest('ul');
}
return $closestMenu[0]||null;
},
getHeight: function($elm){
return this.getOffset($elm, true);
},
getOffset: function($elm, height){
var old;
if($elm.css('display')=='none'){
old={ position: $elm[0].style.position, visibility: $elm[0].style.visibility };
$elm.css({ position: 'absolute', visibility: 'hidden' }).show();
}
var box=$elm[0].getBoundingClientRect&&$elm[0].getBoundingClientRect(),
val=box&&(height ? box.height||box.bottom - box.top:box.width||box.right - box.left);
if(!val&&val!==0){
val=height ? $elm[0].offsetHeight:$elm[0].offsetWidth;
}
if(old){
$elm.hide().css(old);
}
return val;
},
getStartZIndex: function(root){
var zIndex=parseInt(this[root ? '$root':'$firstSub'].css('z-index'));
if(!root&&isNaN(zIndex)){
zIndex=parseInt(this.$root.css('z-index'));
}
return !isNaN(zIndex) ? zIndex:1;
},
getTouchPoint: function(e){
return e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0]||e;
},
getViewport: function(height){
var name=height ? 'Height':'Width',
val=document.documentElement['client' + name],
val2=window['inner' + name];
if(val2){
val=Math.min(val, val2);
}
return val;
},
getViewportHeight: function(){
return this.getViewport(true);
},
getViewportWidth: function(){
return this.getViewport();
},
getWidth: function($elm){
return this.getOffset($elm);
},
handleEvents: function(){
return !this.disabled&&this.isCSSOn();
},
handleItemEvents: function($a){
return this.handleEvents()&&!this.isLinkInMegaMenu($a);
},
isCollapsible: function(){
return this.$firstSub.css('position')=='static';
},
isCSSOn: function(){
return this.$firstLink.css('display')!='inline';
},
isFixed: function(){
var isFixed=this.$root.css('position')=='fixed';
if(!isFixed){
this.$root.parentsUntil('body').each(function(){
if($(this).css('position')=='fixed'){
isFixed=true;
return false;
}});
}
return isFixed;
},
isLinkInMegaMenu: function($a){
return $(this.getClosestMenu($a[0])).hasClass('mega-menu');
},
isTouchMode: function(){
return !mouse||this.opts.noMouseOver||this.isCollapsible();
},
itemActivate: function($a, hideDeeperSubs){
var $ul=$a.closest('ul'),
level=$ul.dataSM('level');
if(level > 1&&(!this.activatedItems[level - 2]||this.activatedItems[level - 2][0]!=$ul.dataSM('parent-a')[0])){
var self=this;
$($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function(){
self.itemActivate($(this).dataSM('parent-a'));
});
}
if(!this.isCollapsible()||hideDeeperSubs){
this.menuHideSubMenus(!this.activatedItems[level - 1]||this.activatedItems[level - 1][0]!=$a[0] ? level - 1:level);
}
this.activatedItems[level - 1]=$a;
if(this.$root.triggerHandler('activate.smapi', $a[0])===false){
return;
}
var $sub=$a.dataSM('sub');
if($sub&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){
this.menuShow($sub);
}},
itemBlur: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
this.$root.triggerHandler('blur.smapi', $a[0]);
},
itemClick: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==$a.closest('ul')[0]){
this.$touchScrollingSub=null;
e.stopPropagation();
return false;
}
if(this.$root.triggerHandler('click.smapi', $a[0])===false){
return false;
}
var $sub=$a.dataSM('sub'),
firstLevelSub=$sub ? $sub.dataSM('level')==2:false;
if($sub){
var subArrowClicked=$(e.target).is('.sub-arrow'),
collapsible=this.isCollapsible(),
behaviorToggle=/toggle$/.test(this.opts.collapsibleBehavior),
behaviorLink=/link$/.test(this.opts.collapsibleBehavior),
behaviorAccordion=/^accordion/.test(this.opts.collapsibleBehavior);
if(!$sub.is(':visible')){
if(!behaviorLink||!collapsible||subArrowClicked){
if(!collapsible&&this.opts.showOnClick&&firstLevelSub){
this.clickActivated=true;
}
this.itemActivate($a, behaviorAccordion);
if($sub.is(':visible')){
this.focusActivated=true;
return false;
}}
}else if(!collapsible&&this.opts.showOnClick&&firstLevelSub){
this.menuHide($sub);
this.clickActivated=false;
this.focusActivated=false;
return false;
}else if(collapsible&&(behaviorToggle||subArrowClicked)){
this.itemActivate($a, behaviorAccordion);
this.menuHide($sub);
return false;
}}
if(!collapsible&&this.opts.showOnClick&&firstLevelSub||$a.hasClass('disabled')||this.$root.triggerHandler('select.smapi', $a[0])===false){
return false;
}},
itemDown: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
$a.dataSM('mousedown', true);
},
itemEnter: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(!this.isTouchMode()){
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}
var self=this;
this.showTimeout=setTimeout(function(){ self.itemActivate($a); }, this.opts.showOnClick&&$a.closest('ul').dataSM('level')==1 ? 1:this.opts.showTimeout);
}
this.$root.triggerHandler('mouseenter.smapi', $a[0]);
},
itemFocus: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(this.focusActivated&&(!this.isTouchMode()||!$a.dataSM('mousedown'))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length - 1][0]!=$a[0])){
this.itemActivate($a, true);
}
this.$root.triggerHandler('focus.smapi', $a[0]);
},
itemLeave: function(e){
var $a=$(e.currentTarget);
if(!this.handleItemEvents($a)){
return;
}
if(!this.isTouchMode()){
$a[0].blur();
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}}
$a.removeDataSM('mousedown');
this.$root.triggerHandler('mouseleave.smapi', $a[0]);
},
menuHide: function($sub){
if(this.$root.triggerHandler('beforehide.smapi', $sub[0])===false){
return;
}
if(canAnimate){
$sub.stop(true, true);
}
if($sub.css('display')!='none'){
var complete=function(){
$sub.css('z-index', '');
};
if(this.isCollapsible()){
if(canAnimate&&this.opts.collapsibleHideFunction){
this.opts.collapsibleHideFunction.call(this, $sub, complete);
}else{
$sub.hide(this.opts.collapsibleHideDuration, complete);
}}else{
if(canAnimate&&this.opts.hideFunction){
this.opts.hideFunction.call(this, $sub, complete);
}else{
$sub.hide(this.opts.hideDuration, complete);
}}
if($sub.dataSM('scroll')){
this.menuScrollStop($sub);
$sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' })
.off('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
}
$sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false');
$sub.attr({
'aria-expanded': 'false',
'aria-hidden': 'true'
});
var level=$sub.dataSM('level');
this.activatedItems.splice(level - 1, 1);
this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1);
this.$root.triggerHandler('hide.smapi', $sub[0]);
}},
menuHideAll: function(){
if(this.showTimeout){
clearTimeout(this.showTimeout);
this.showTimeout=0;
}
var level=this.opts.isPopup ? 1:0;
for (var i=this.visibleSubMenus.length - 1; i >=level; i--){
this.menuHide(this.visibleSubMenus[i]);
}
if(this.opts.isPopup){
if(canAnimate){
this.$root.stop(true, true);
}
if(this.$root.is(':visible')){
if(canAnimate&&this.opts.hideFunction){
this.opts.hideFunction.call(this, this.$root);
}else{
this.$root.hide(this.opts.hideDuration);
}}
}
this.activatedItems=[];
this.visibleSubMenus=[];
this.clickActivated=false;
this.focusActivated=false;
this.zIndexInc=0;
this.$root.triggerHandler('hideAll.smapi');
},
menuHideSubMenus: function(level){
for (var i=this.activatedItems.length - 1; i >=level; i--){
var $sub=this.activatedItems[i].dataSM('sub');
if($sub){
this.menuHide($sub);
}}
},
menuInit: function($ul){
if(!$ul.dataSM('in-mega')){
if($ul.hasClass('mega-menu')){
$ul.find('ul').dataSM('in-mega', true);
}
var level=2,
par=$ul[0];
while ((par=par.parentNode.parentNode)!=this.$root[0]){
level++;
}
var $a=$ul.prevAll('a').eq(-1);
if(!$a.length){
$a=$ul.prevAll().find('a').eq(-1);
}
$a.addClass('has-submenu').dataSM('sub', $ul);
$ul.dataSM('parent-a', $a)
.dataSM('level', level)
.parent().dataSM('sub', $ul);
var aId=$a.attr('id')||this.accessIdPrefix + (++this.idInc),
ulId=$ul.attr('id')||this.accessIdPrefix + (++this.idInc);
$a.attr({
id: aId,
'aria-haspopup': 'true',
'aria-controls': ulId,
'aria-expanded': 'false'
});
$ul.attr({
id: ulId,
'role': 'group',
'aria-hidden': 'true',
'aria-labelledby': aId,
'aria-expanded': 'false'
});
if(this.opts.subIndicators){
$a[this.opts.subIndicatorsPos](this.$subArrow.clone());
}}
},
menuPosition: function($sub){
var $a=$sub.dataSM('parent-a'),
$li=$a.closest('li'),
$ul=$li.parent(),
level=$sub.dataSM('level'),
subW=this.getWidth($sub),
subH=this.getHeight($sub),
itemOffset=$a.offset(),
itemX=itemOffset.left,
itemY=itemOffset.top,
itemW=this.getWidth($a),
itemH=this.getHeight($a),
$win=$(window),
winX=$win.scrollLeft(),
winY=$win.scrollTop(),
winW=this.getViewportWidth(),
winH=this.getViewportHeight(),
horizontalParent=$ul.parent().is('[data-sm-horizontal-sub]')||level==2&&!$ul.hasClass('sm-vertical'),
rightToLeft=this.opts.rightToLeftSubMenus&&!$li.is('[data-sm-reverse]')||!this.opts.rightToLeftSubMenus&&$li.is('[data-sm-reverse]'),
subOffsetX=level==2 ? this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,
subOffsetY=level==2 ? this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,
x, y;
if(horizontalParent){
x=rightToLeft ? itemW - subW - subOffsetX:subOffsetX;
y=this.opts.bottomToTopSubMenus ? -subH - subOffsetY:itemH + subOffsetY;
}else{
x=rightToLeft ? subOffsetX - subW:itemW - subOffsetX;
y=this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH:subOffsetY;
}
if(this.opts.keepInViewport){
var absX=itemX + x,
absY=itemY + y;
if(rightToLeft&&absX < winX){
x=horizontalParent ? winX - absX + x:itemW - subOffsetX;
}else if(!rightToLeft&&absX + subW > winX + winW){
x=horizontalParent ? winX + winW - subW - absX + x:subOffsetX - subW;
}
if(!horizontalParent){
if(subH < winH&&absY + subH > winY + winH){
y +=winY + winH - subH - absY;
}else if(subH >=winH||absY < winY){
y +=winY - absY;
}}
if(horizontalParent&&(absY + subH > winY + winH + 0.49||absY < winY)||!horizontalParent&&subH > winH + 0.49){
var self=this;
if(!$sub.dataSM('scroll-arrows')){
$sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
.on({
mouseenter: function(){
$sub.dataSM('scroll').up=$(this).hasClass('scroll-up');
self.menuScroll($sub);
},
mouseleave: function(e){
self.menuScrollStop($sub);
self.menuScrollOut($sub, e);
},
'mousewheel DOMMouseScroll': function(e){ e.preventDefault(); }})
.insertAfter($sub)
);
}
var eNS='.smartmenus_scroll';
$sub.dataSM('scroll', {
y: this.cssTransforms3d ? 0:y - itemH,
step: 1,
itemH: itemH,
subH: subH,
arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1))
})
.on(getEventsNS({
'mouseover': function(e){ self.menuScrollOver($sub, e); },
'mouseout': function(e){ self.menuScrollOut($sub, e); },
'mousewheel DOMMouseScroll': function(e){ self.menuScrollMousewheel($sub, e); }}, eNS))
.dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width'))||0), width: subW - (parseInt($sub.css('border-left-width'))||0) - (parseInt($sub.css('border-right-width'))||0), zIndex: $sub.css('z-index') })
.eq(horizontalParent&&this.opts.bottomToTopSubMenus ? 0:1).show();
if(this.isFixed()){
var events={};
events[touchEvents ? 'touchstart touchmove touchend':'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp']=function(e){
self.menuScrollTouch($sub, e);
};
$sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' }).on(getEventsNS(events, eNS));
}}
}
$sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH });
},
menuScroll: function($sub, once, step){
var data=$sub.dataSM('scroll'),
$arrows=$sub.dataSM('scroll-arrows'),
end=data.up ? data.upEnd:data.downEnd,
diff;
if(!once&&data.momentum){
data.momentum *=0.92;
diff=data.momentum;
if(diff < 0.5){
this.menuScrollStop($sub);
return;
}}else{
diff=step||(once||!this.opts.scrollAccelerate ? this.opts.scrollStep:Math.floor(data.step));
}
var level=$sub.dataSM('level');
if(this.activatedItems[level - 1]&&this.activatedItems[level - 1].dataSM('sub')&&this.activatedItems[level - 1].dataSM('sub').is(':visible')){
this.menuHideSubMenus(level - 1);
}
data.y=data.up&&end <=data.y||!data.up&&end >=data.y ? data.y:(Math.abs(end - data.y) > diff ? data.y + (data.up ? diff:-diff):end);
$sub.css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' }:{ marginTop: data.y });
if(mouse&&(data.up&&data.y > data.downEnd||!data.up&&data.y < data.upEnd)){
$arrows.eq(data.up ? 1:0).show();
}
if(data.y==end){
if(mouse){
$arrows.eq(data.up ? 0:1).hide();
}
this.menuScrollStop($sub);
}else if(!once){
if(this.opts.scrollAccelerate&&data.step < this.opts.scrollStep){
data.step +=0.2;
}
var self=this;
this.scrollTimeout=requestAnimationFrame(function(){ self.menuScroll($sub); });
}},
menuScrollMousewheel: function($sub, e){
if(this.getClosestMenu(e.target)==$sub[0]){
e=e.originalEvent;
var up=(e.wheelDelta||-e.detail) > 0;
if($sub.dataSM('scroll-arrows').eq(up ? 0:1).is(':visible')){
$sub.dataSM('scroll').up=up;
this.menuScroll($sub, true);
}}
e.preventDefault();
},
menuScrollOut: function($sub, e){
if(mouse){
if(!/^scroll-(up|down)/.test((e.relatedTarget||'').className)&&($sub[0]!=e.relatedTarget&&!$.contains($sub[0], e.relatedTarget)||this.getClosestMenu(e.relatedTarget)!=$sub[0])){
$sub.dataSM('scroll-arrows').css('visibility', 'hidden');
}}
},
menuScrollOver: function($sub, e){
if(mouse){
if(!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==$sub[0]){
this.menuScrollRefreshData($sub);
var data=$sub.dataSM('scroll'),
upEnd=$(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
$sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end()
.eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end()
.css('visibility', 'visible');
}}
},
menuScrollRefreshData: function($sub){
var data=$sub.dataSM('scroll'),
upEnd=$(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
if(this.cssTransforms3d){
upEnd=-(parseFloat($sub.css('margin-top')) - upEnd);
}
$.extend(data, {
upEnd: upEnd,
downEnd: upEnd + this.getViewportHeight() - data.subH
});
},
menuScrollStop: function($sub){
if(this.scrollTimeout){
cancelAnimationFrame(this.scrollTimeout);
this.scrollTimeout=0;
$sub.dataSM('scroll').step=1;
return true;
}},
menuScrollTouch: function($sub, e){
e=e.originalEvent;
if(isTouchEvent(e)){
var touchPoint=this.getTouchPoint(e);
if(this.getClosestMenu(touchPoint.target)==$sub[0]){
var data=$sub.dataSM('scroll');
if(/(start|down)$/i.test(e.type)){
if(this.menuScrollStop($sub)){
e.preventDefault();
this.$touchScrollingSub=$sub;
}else{
this.$touchScrollingSub=null;
}
this.menuScrollRefreshData($sub);
$.extend(data, {
touchStartY: touchPoint.pageY,
touchStartTime: e.timeStamp
});
}else if(/move$/i.test(e.type)){
var prevY=data.touchY!==undefined ? data.touchY:data.touchStartY;
if(prevY!==undefined&&prevY!=touchPoint.pageY){
this.$touchScrollingSub=$sub;
var up=prevY < touchPoint.pageY;
if(data.up!==undefined&&data.up!=up){
$.extend(data, {
touchStartY: touchPoint.pageY,
touchStartTime: e.timeStamp
});
}
$.extend(data, {
up: up,
touchY: touchPoint.pageY
});
this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY));
}
e.preventDefault();
}else{
if(data.touchY!==undefined){
if(data.momentum=Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15){
this.menuScrollStop($sub);
this.menuScroll($sub);
e.preventDefault();
}
delete data.touchY;
}}
}}
},
menuShow: function($sub){
if(!$sub.dataSM('beforefirstshowfired')){
$sub.dataSM('beforefirstshowfired', true);
if(this.$root.triggerHandler('beforefirstshow.smapi', $sub[0])===false){
return;
}}
if(this.$root.triggerHandler('beforeshow.smapi', $sub[0])===false){
return;
}
$sub.dataSM('shown-before', true);
if(canAnimate){
$sub.stop(true, true);
}
if(!$sub.is(':visible')){
var $a=$sub.dataSM('parent-a'),
collapsible=this.isCollapsible();
if(this.opts.keepHighlighted||collapsible){
$a.addClass('highlighted');
}
if(collapsible){
$sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' });
}else{
$sub.css('z-index', this.zIndexInc=(this.zIndexInc||this.getStartZIndex()) + 1);
if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){
$sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
if(this.opts.subMenusMinWidth){
$sub.css('min-width', this.opts.subMenusMinWidth);
}
if(this.opts.subMenusMaxWidth){
var noMaxWidth=this.getWidth($sub);
$sub.css('max-width', this.opts.subMenusMaxWidth);
if(noMaxWidth > this.getWidth($sub)){
$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
}}
}
this.menuPosition($sub);
}
var complete=function(){
$sub.css('overflow', '');
};
if(collapsible){
if(canAnimate&&this.opts.collapsibleShowFunction){
this.opts.collapsibleShowFunction.call(this, $sub, complete);
}else{
$sub.show(this.opts.collapsibleShowDuration, complete);
}}else{
if(canAnimate&&this.opts.showFunction){
this.opts.showFunction.call(this, $sub, complete);
}else{
$sub.show(this.opts.showDuration, complete);
}}
$a.attr('aria-expanded', 'true');
$sub.attr({
'aria-expanded': 'true',
'aria-hidden': 'false'
});
this.visibleSubMenus.push($sub);
this.$root.triggerHandler('show.smapi', $sub[0]);
}},
popupHide: function(noHideTimeout){
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
var self=this;
this.hideTimeout=setTimeout(function(){
self.menuHideAll();
}, noHideTimeout ? 1:this.opts.hideTimeout);
},
popupShow: function(left, top){
if(!this.opts.isPopup){
alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
this.$root.dataSM('shown-before', true);
if(canAnimate){
this.$root.stop(true, true);
}
if(!this.$root.is(':visible')){
this.$root.css({ left: left, top: top });
var self=this,
complete=function(){
self.$root.css('overflow', '');
};
if(canAnimate&&this.opts.showFunction){
this.opts.showFunction.call(this, this.$root, complete);
}else{
this.$root.show(this.opts.showDuration, complete);
}
this.visibleSubMenus[0]=this.$root;
}},
refresh: function(){
this.destroy(true);
this.init(true);
},
rootKeyDown: function(e){
if(!this.handleEvents()){
return;
}
switch (e.keyCode){
case 27:
var $activeTopItem=this.activatedItems[0];
if($activeTopItem){
this.menuHideAll();
$activeTopItem[0].focus();
var $sub=$activeTopItem.dataSM('sub');
if($sub){
this.menuHide($sub);
}}
break;
case 32:
var $target=$(e.target);
if($target.is('a')&&this.handleItemEvents($target)){
var $sub=$target.dataSM('sub');
if($sub&&!$sub.is(':visible')){
this.itemClick({ currentTarget: e.target });
e.preventDefault();
}}
break;
}},
rootOut: function(e){
if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}
if(!this.opts.showOnClick||!this.opts.hideOnClick){
var self=this;
this.hideTimeout=setTimeout(function(){ self.menuHideAll(); }, this.opts.hideTimeout);
}},
rootOver: function(e){
if(!this.handleEvents()||this.isTouchMode()||e.target==this.$root[0]){
return;
}
if(this.hideTimeout){
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
}},
winResize: function(e){
if(!this.handleEvents()){
if(this.$disableOverlay){
var pos=this.$root.offset();
this.$disableOverlay.css({
top: pos.top,
left: pos.left,
width: this.$root.outerWidth(),
height: this.$root.outerHeight()
});
}
return;
}
if(!('onorientationchange' in window)||e.type=='orientationchange'){
var collapsible=this.isCollapsible();
if(!(this.wasCollapsible&&collapsible)){
if(this.activatedItems.length){
this.activatedItems[this.activatedItems.length - 1][0].blur();
}
this.menuHideAll();
}
this.wasCollapsible=collapsible;
}}
}});
$.fn.dataSM=function(key, val){
if(val){
return this.data(key + '_smartmenus', val);
}
return this.data(key + '_smartmenus');
};
$.fn.removeDataSM=function(key){
return this.removeData(key + '_smartmenus');
};
$.fn.smartmenus=function(options){
if(typeof options=='string'){
var args=arguments,
method=options;
Array.prototype.shift.call(args);
return this.each(function(){
var smartmenus=$(this).data('smartmenus');
if(smartmenus&&smartmenus[method]){
smartmenus[method].apply(smartmenus, args);
}});
}
return this.each(function(){
var dataOpts=$(this).data('sm-options')||null;
if(dataOpts&&typeof dataOpts!='object'){
dataOpts=null;
alert('ERROR\n\nSmartMenus jQuery init:\nThe value of the "data-sm-options" attribute must be valid JSON.');
}
if(dataOpts){
$.each(['showFunction', 'hideFunction', 'collapsibleShowFunction', 'collapsibleHideFunction'], function(){
if(this in dataOpts){
delete dataOpts[this];
}});
}
new $.SmartMenus(this, $.extend({}, $.fn.smartmenus.defaults, options, dataOpts));
});
};
$.fn.smartmenus.defaults={
isPopup:		false,
mainMenuSubOffsetX:	0,
mainMenuSubOffsetY:	0,
subMenusSubOffsetX:	0,
subMenusSubOffsetY:	0,
subMenusMinWidth:	'10em',
subMenusMaxWidth:	'20em',
subIndicators: 		true,
subIndicatorsPos: 	'append',
subIndicatorsText:	'',
scrollStep: 		30,
scrollAccelerate:	true,
showTimeout:		250,
hideTimeout:		500,
showDuration:		0,
showFunction:		null,
hideDuration:		0,
hideFunction:		function($ul, complete){ $ul.fadeOut(200, complete); },
collapsibleShowDuration:0,
collapsibleShowFunction:function($ul, complete){ $ul.slideDown(200, complete); },
collapsibleHideDuration:0,
collapsibleHideFunction:function($ul, complete){ $ul.slideUp(200, complete); },
showOnClick:		false,
hideOnClick:		true,
noMouseOver:		false,
keepInViewport:		true,
keepHighlighted:	true,
markCurrentItem:	false,
markCurrentTree:	true,
rightToLeftSubMenus:	false,
bottomToTopSubMenus:	false,
collapsibleBehavior:	'default'
};
return $;
}));
(function (global, factory){
typeof exports==='object'&&typeof module!=='undefined' ? module.exports=factory() :
typeof define==='function'&&define.amd ? define(factory) :
(global=typeof globalThis!=='undefined' ? globalThis:global||self, global.Swiper=factory());
})(this, (function (){ 'use strict';
function isObject$1(obj){
return obj!==null&&typeof obj==='object'&&'constructor' in obj&&obj.constructor===Object;
}
function extend$1(target, src){
if(target===void 0){
target={};}
if(src===void 0){
src={};}
Object.keys(src).forEach(key=> {
if(typeof target[key]==='undefined') target[key]=src[key];else if(isObject$1(src[key])&&isObject$1(target[key])&&Object.keys(src[key]).length > 0){
extend$1(target[key], src[key]);
}});
}
const ssrDocument={
body: {},
addEventListener(){},
removeEventListener(){},
activeElement: {
blur(){},
nodeName: ''
},
querySelector(){
return null;
},
querySelectorAll(){
return [];
},
getElementById(){
return null;
},
createEvent(){
return {
initEvent(){}};},
createElement(){
return {
children: [],
childNodes: [],
style: {},
setAttribute(){},
getElementsByTagName(){
return [];
}};},
createElementNS(){
return {};},
importNode(){
return null;
},
location: {
hash: '',
host: '',
hostname: '',
href: '',
origin: '',
pathname: '',
protocol: '',
search: ''
}};
function getDocument(){
const doc=typeof document!=='undefined' ? document:{};
extend$1(doc, ssrDocument);
return doc;
}
const ssrWindow={
document: ssrDocument,
navigator: {
userAgent: ''
},
location: {
hash: '',
host: '',
hostname: '',
href: '',
origin: '',
pathname: '',
protocol: '',
search: ''
},
history: {
replaceState(){},
pushState(){},
go(){},
back(){}},
CustomEvent: function CustomEvent(){
return this;
},
addEventListener(){},
removeEventListener(){},
getComputedStyle(){
return {
getPropertyValue(){
return '';
}};},
Image(){},
Date(){},
screen: {},
setTimeout(){},
clearTimeout(){},
matchMedia(){
return {};},
requestAnimationFrame(callback){
if(typeof setTimeout==='undefined'){
callback();
return null;
}
return setTimeout(callback, 0);
},
cancelAnimationFrame(id){
if(typeof setTimeout==='undefined'){
return;
}
clearTimeout(id);
}};
function getWindow(){
const win=typeof window!=='undefined' ? window:{};
extend$1(win, ssrWindow);
return win;
}
function makeReactive(obj){
const proto=obj.__proto__;
Object.defineProperty(obj, '__proto__', {
get(){
return proto;
},
set(value){
proto.__proto__=value;
}});
}
class Dom7 extends Array {
constructor(items){
if(typeof items==='number'){
super(items);
}else{
super(...(items||[]));
makeReactive(this);
}}
}
function arrayFlat(arr){
if(arr===void 0){
arr=[];
}
const res=[];
arr.forEach(el=> {
if(Array.isArray(el)){
res.push(...arrayFlat(el));
}else{
res.push(el);
}});
return res;
}
function arrayFilter(arr, callback){
return Array.prototype.filter.call(arr, callback);
}
function arrayUnique(arr){
const uniqueArray=[];
for (let i=0; i < arr.length; i +=1){
if(uniqueArray.indexOf(arr[i])===-1) uniqueArray.push(arr[i]);
}
return uniqueArray;
}
function qsa(selector, context){
if(typeof selector!=='string'){
return [selector];
}
const a=[];
const res=context.querySelectorAll(selector);
for (let i=0; i < res.length; i +=1){
a.push(res[i]);
}
return a;
}
function $(selector, context){
const window=getWindow();
const document=getDocument();
let arr=[];
if(!context&&selector instanceof Dom7){
return selector;
}
if(!selector){
return new Dom7(arr);
}
if(typeof selector==='string'){
const html=selector.trim();
if(html.indexOf('<') >=0&&html.indexOf('>') >=0){
let toCreate='div';
if(html.indexOf('<li')===0) toCreate='ul';
if(html.indexOf('<tr')===0) toCreate='tbody';
if(html.indexOf('<td')===0||html.indexOf('<th')===0) toCreate='tr';
if(html.indexOf('<tbody')===0) toCreate='table';
if(html.indexOf('<option')===0) toCreate='select';
const tempParent=document.createElement(toCreate);
tempParent.innerHTML=html;
for (let i=0; i < tempParent.childNodes.length; i +=1){
arr.push(tempParent.childNodes[i]);
}}else{
arr=qsa(selector.trim(), context||document);
}}else if(selector.nodeType||selector===window||selector===document){
arr.push(selector);
}else if(Array.isArray(selector)){
if(selector instanceof Dom7) return selector;
arr=selector;
}
return new Dom7(arrayUnique(arr));
}
$.fn=Dom7.prototype;
function addClass(){
for (var _len=arguments.length, classes=new Array(_len), _key=0; _key < _len; _key++){
classes[_key]=arguments[_key];
}
const classNames=arrayFlat(classes.map(c=> c.split(' ')));
this.forEach(el=> {
el.classList.add(...classNames);
});
return this;
}
function removeClass(){
for (var _len2=arguments.length, classes=new Array(_len2), _key2=0; _key2 < _len2; _key2++){
classes[_key2]=arguments[_key2];
}
const classNames=arrayFlat(classes.map(c=> c.split(' ')));
this.forEach(el=> {
el.classList.remove(...classNames);
});
return this;
}
function toggleClass(){
for (var _len3=arguments.length, classes=new Array(_len3), _key3=0; _key3 < _len3; _key3++){
classes[_key3]=arguments[_key3];
}
const classNames=arrayFlat(classes.map(c=> c.split(' ')));
this.forEach(el=> {
classNames.forEach(className=> {
el.classList.toggle(className);
});
});
}
function hasClass(){
for (var _len4=arguments.length, classes=new Array(_len4), _key4=0; _key4 < _len4; _key4++){
classes[_key4]=arguments[_key4];
}
const classNames=arrayFlat(classes.map(c=> c.split(' ')));
return arrayFilter(this, el=> {
return classNames.filter(className=> el.classList.contains(className)).length > 0;
}).length > 0;
}
function attr(attrs, value){
if(arguments.length===1&&typeof attrs==='string'){
if(this[0]) return this[0].getAttribute(attrs);
return undefined;
}
for (let i=0; i < this.length; i +=1){
if(arguments.length===2){
this[i].setAttribute(attrs, value);
}else{
for (const attrName in attrs){
this[i][attrName]=attrs[attrName];
this[i].setAttribute(attrName, attrs[attrName]);
}}
}
return this;
}
function removeAttr(attr){
for (let i=0; i < this.length; i +=1){
this[i].removeAttribute(attr);
}
return this;
}
function transform(transform){
for (let i=0; i < this.length; i +=1){
this[i].style.transform=transform;
}
return this;
}
function transition$1(duration){
for (let i=0; i < this.length; i +=1){
this[i].style.transitionDuration=typeof duration!=='string' ? `${duration}ms`:duration;
}
return this;
}
function on(){
for (var _len5=arguments.length, args=new Array(_len5), _key5=0; _key5 < _len5; _key5++){
args[_key5]=arguments[_key5];
}
let [eventType, targetSelector, listener, capture]=args;
if(typeof args[1]==='function'){
[eventType, listener, capture]=args;
targetSelector=undefined;
}
if(!capture) capture=false;
function handleLiveEvent(e){
const target=e.target;
if(!target) return;
const eventData=e.target.dom7EventData||[];
if(eventData.indexOf(e) < 0){
eventData.unshift(e);
}
if($(target).is(targetSelector)) listener.apply(target, eventData);else {
const parents=$(target).parents();
for (let k=0; k < parents.length; k +=1){
if($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);
}}
}
function handleEvent(e){
const eventData=e&&e.target ? e.target.dom7EventData||[]:[];
if(eventData.indexOf(e) < 0){
eventData.unshift(e);
}
listener.apply(this, eventData);
}
const events=eventType.split(' ');
let j;
for (let i=0; i < this.length; i +=1){
const el=this[i];
if(!targetSelector){
for (j=0; j < events.length; j +=1){
const event=events[j];
if(!el.dom7Listeners) el.dom7Listeners={};
if(!el.dom7Listeners[event]) el.dom7Listeners[event]=[];
el.dom7Listeners[event].push({
listener,
proxyListener: handleEvent
});
el.addEventListener(event, handleEvent, capture);
}}else{
for (j=0; j < events.length; j +=1){
const event=events[j];
if(!el.dom7LiveListeners) el.dom7LiveListeners={};
if(!el.dom7LiveListeners[event]) el.dom7LiveListeners[event]=[];
el.dom7LiveListeners[event].push({
listener,
proxyListener: handleLiveEvent
});
el.addEventListener(event, handleLiveEvent, capture);
}}
}
return this;
}
function off(){
for (var _len6=arguments.length, args=new Array(_len6), _key6=0; _key6 < _len6; _key6++){
args[_key6]=arguments[_key6];
}
let [eventType, targetSelector, listener, capture]=args;
if(typeof args[1]==='function'){
[eventType, listener, capture]=args;
targetSelector=undefined;
}
if(!capture) capture=false;
const events=eventType.split(' ');
for (let i=0; i < events.length; i +=1){
const event=events[i];
for (let j=0; j < this.length; j +=1){
const el=this[j];
let handlers;
if(!targetSelector&&el.dom7Listeners){
handlers=el.dom7Listeners[event];
}else if(targetSelector&&el.dom7LiveListeners){
handlers=el.dom7LiveListeners[event];
}
if(handlers&&handlers.length){
for (let k=handlers.length - 1; k >=0; k -=1){
const handler=handlers[k];
if(listener&&handler.listener===listener){
el.removeEventListener(event, handler.proxyListener, capture);
handlers.splice(k, 1);
}else if(listener&&handler.listener&&handler.listener.dom7proxy&&handler.listener.dom7proxy===listener){
el.removeEventListener(event, handler.proxyListener, capture);
handlers.splice(k, 1);
}else if(!listener){
el.removeEventListener(event, handler.proxyListener, capture);
handlers.splice(k, 1);
}}
}}
}
return this;
}
function trigger(){
const window=getWindow();
for (var _len9=arguments.length, args=new Array(_len9), _key9=0; _key9 < _len9; _key9++){
args[_key9]=arguments[_key9];
}
const events=args[0].split(' ');
const eventData=args[1];
for (let i=0; i < events.length; i +=1){
const event=events[i];
for (let j=0; j < this.length; j +=1){
const el=this[j];
if(window.CustomEvent){
const evt=new window.CustomEvent(event, {
detail: eventData,
bubbles: true,
cancelable: true
});
el.dom7EventData=args.filter((data, dataIndex)=> dataIndex > 0);
el.dispatchEvent(evt);
el.dom7EventData=[];
delete el.dom7EventData;
}}
}
return this;
}
function transitionEnd$1(callback){
const dom=this;
function fireCallBack(e){
if(e.target!==this) return;
callback.call(this, e);
dom.off('transitionend', fireCallBack);
}
if(callback){
dom.on('transitionend', fireCallBack);
}
return this;
}
function outerWidth(includeMargins){
if(this.length > 0){
if(includeMargins){
const styles=this.styles();
return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));
}
return this[0].offsetWidth;
}
return null;
}
function outerHeight(includeMargins){
if(this.length > 0){
if(includeMargins){
const styles=this.styles();
return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));
}
return this[0].offsetHeight;
}
return null;
}
function offset(){
if(this.length > 0){
const window=getWindow();
const document=getDocument();
const el=this[0];
const box=el.getBoundingClientRect();
const body=document.body;
const clientTop=el.clientTop||body.clientTop||0;
const clientLeft=el.clientLeft||body.clientLeft||0;
const scrollTop=el===window ? window.scrollY:el.scrollTop;
const scrollLeft=el===window ? window.scrollX:el.scrollLeft;
return {
top: box.top + scrollTop - clientTop,
left: box.left + scrollLeft - clientLeft
};}
return null;
}
function styles(){
const window=getWindow();
if(this[0]) return window.getComputedStyle(this[0], null);
return {};}
function css(props, value){
const window=getWindow();
let i;
if(arguments.length===1){
if(typeof props==='string'){
if(this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
}else{
for (i=0; i < this.length; i +=1){
for (const prop in props){
this[i].style[prop]=props[prop];
}}
return this;
}}
if(arguments.length===2&&typeof props==='string'){
for (i=0; i < this.length; i +=1){
this[i].style[props]=value;
}
return this;
}
return this;
}
function each(callback){
if(!callback) return this;
this.forEach((el, index)=> {
callback.apply(el, [el, index]);
});
return this;
}
function filter(callback){
const result=arrayFilter(this, callback);
return $(result);
}
function html(html){
if(typeof html==='undefined'){
return this[0] ? this[0].innerHTML:null;
}
for (let i=0; i < this.length; i +=1){
this[i].innerHTML=html;
}
return this;
}
function text(text){
if(typeof text==='undefined'){
return this[0] ? this[0].textContent.trim():null;
}
for (let i=0; i < this.length; i +=1){
this[i].textContent=text;
}
return this;
}
function is(selector){
const window=getWindow();
const document=getDocument();
const el=this[0];
let compareWith;
let i;
if(!el||typeof selector==='undefined') return false;
if(typeof selector==='string'){
if(el.matches) return el.matches(selector);
if(el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
if(el.msMatchesSelector) return el.msMatchesSelector(selector);
compareWith=$(selector);
for (i=0; i < compareWith.length; i +=1){
if(compareWith[i]===el) return true;
}
return false;
}
if(selector===document){
return el===document;
}
if(selector===window){
return el===window;
}
if(selector.nodeType||selector instanceof Dom7){
compareWith=selector.nodeType ? [selector]:selector;
for (i=0; i < compareWith.length; i +=1){
if(compareWith[i]===el) return true;
}
return false;
}
return false;
}
function index(){
let child=this[0];
let i;
if(child){
i=0;
while ((child=child.previousSibling)!==null){
if(child.nodeType===1) i +=1;
}
return i;
}
return undefined;
}
function eq(index){
if(typeof index==='undefined') return this;
const length=this.length;
if(index > length - 1){
return $([]);
}
if(index < 0){
const returnIndex=length + index;
if(returnIndex < 0) return $([]);
return $([this[returnIndex]]);
}
return $([this[index]]);
}
function append(){
let newChild;
const document=getDocument();
for (let k=0; k < arguments.length; k +=1){
newChild=k < 0||arguments.length <=k ? undefined:arguments[k];
for (let i=0; i < this.length; i +=1){
if(typeof newChild==='string'){
const tempDiv=document.createElement('div');
tempDiv.innerHTML=newChild;
while (tempDiv.firstChild){
this[i].appendChild(tempDiv.firstChild);
}}else if(newChild instanceof Dom7){
for (let j=0; j < newChild.length; j +=1){
this[i].appendChild(newChild[j]);
}}else{
this[i].appendChild(newChild);
}}
}
return this;
}
function prepend(newChild){
const document=getDocument();
let i;
let j;
for (i=0; i < this.length; i +=1){
if(typeof newChild==='string'){
const tempDiv=document.createElement('div');
tempDiv.innerHTML=newChild;
for (j=tempDiv.childNodes.length - 1; j >=0; j -=1){
this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
}}else if(newChild instanceof Dom7){
for (j=0; j < newChild.length; j +=1){
this[i].insertBefore(newChild[j], this[i].childNodes[0]);
}}else{
this[i].insertBefore(newChild, this[i].childNodes[0]);
}}
return this;
}
function next(selector){
if(this.length > 0){
if(selector){
if(this[0].nextElementSibling&&$(this[0].nextElementSibling).is(selector)){
return $([this[0].nextElementSibling]);
}
return $([]);
}
if(this[0].nextElementSibling) return $([this[0].nextElementSibling]);
return $([]);
}
return $([]);
}
function nextAll(selector){
const nextEls=[];
let el=this[0];
if(!el) return $([]);
while (el.nextElementSibling){
const next=el.nextElementSibling;
if(selector){
if($(next).is(selector)) nextEls.push(next);
} else nextEls.push(next);
el=next;
}
return $(nextEls);
}
function prev(selector){
if(this.length > 0){
const el=this[0];
if(selector){
if(el.previousElementSibling&&$(el.previousElementSibling).is(selector)){
return $([el.previousElementSibling]);
}
return $([]);
}
if(el.previousElementSibling) return $([el.previousElementSibling]);
return $([]);
}
return $([]);
}
function prevAll(selector){
const prevEls=[];
let el=this[0];
if(!el) return $([]);
while (el.previousElementSibling){
const prev=el.previousElementSibling;
if(selector){
if($(prev).is(selector)) prevEls.push(prev);
} else prevEls.push(prev);
el=prev;
}
return $(prevEls);
}
function parent(selector){
const parents=[];
for (let i=0; i < this.length; i +=1){
if(this[i].parentNode!==null){
if(selector){
if($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
}else{
parents.push(this[i].parentNode);
}}
}
return $(parents);
}
function parents(selector){
const parents=[];
for (let i=0; i < this.length; i +=1){
let parent=this[i].parentNode;
while (parent){
if(selector){
if($(parent).is(selector)) parents.push(parent);
}else{
parents.push(parent);
}
parent=parent.parentNode;
}}
return $(parents);
}
function closest(selector){
let closest=this;
if(typeof selector==='undefined'){
return $([]);
}
if(!closest.is(selector)){
closest=closest.parents(selector).eq(0);
}
return closest;
}
function find(selector){
const foundElements=[];
for (let i=0; i < this.length; i +=1){
const found=this[i].querySelectorAll(selector);
for (let j=0; j < found.length; j +=1){
foundElements.push(found[j]);
}}
return $(foundElements);
}
function children(selector){
const children=[];
for (let i=0; i < this.length; i +=1){
const childNodes=this[i].children;
for (let j=0; j < childNodes.length; j +=1){
if(!selector||$(childNodes[j]).is(selector)){
children.push(childNodes[j]);
}}
}
return $(children);
}
function remove(){
for (let i=0; i < this.length; i +=1){
if(this[i].parentNode) this[i].parentNode.removeChild(this[i]);
}
return this;
}
const Methods={
addClass,
removeClass,
hasClass,
toggleClass,
attr,
removeAttr,
transform,
transition: transition$1,
on,
off,
trigger,
transitionEnd: transitionEnd$1,
outerWidth,
outerHeight,
styles,
offset,
css,
each,
html,
text,
is,
index,
eq,
append,
prepend,
next,
nextAll,
prev,
prevAll,
parent,
parents,
closest,
find,
children,
filter,
remove
};
Object.keys(Methods).forEach(methodName=> {
Object.defineProperty($.fn, methodName, {
value: Methods[methodName],
writable: true
});
});
function deleteProps(obj){
const object=obj;
Object.keys(object).forEach(key=> {
try {
object[key]=null;
} catch (e){
}
try {
delete object[key];
} catch (e){
}});
}
function nextTick(callback, delay){
if(delay===void 0){
delay=0;
}
return setTimeout(callback, delay);
}
function now(){
return Date.now();
}
function getComputedStyle$1(el){
const window=getWindow();
let style;
if(window.getComputedStyle){
style=window.getComputedStyle(el, null);
}
if(!style&&el.currentStyle){
style=el.currentStyle;
}
if(!style){
style=el.style;
}
return style;
}
function getTranslate(el, axis){
if(axis===void 0){
axis='x';
}
const window=getWindow();
let matrix;
let curTransform;
let transformMatrix;
const curStyle=getComputedStyle$1(el);
if(window.WebKitCSSMatrix){
curTransform=curStyle.transform||curStyle.webkitTransform;
if(curTransform.split(',').length > 6){
curTransform=curTransform.split(', ').map(a=> a.replace(',', '.')).join(', ');
}
transformMatrix=new window.WebKitCSSMatrix(curTransform==='none' ? '':curTransform);
}else{
transformMatrix=curStyle.MozTransform||curStyle.OTransform||curStyle.MsTransform||curStyle.msTransform||curStyle.transform||curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
matrix=transformMatrix.toString().split(',');
}
if(axis==='x'){
if(window.WebKitCSSMatrix) curTransform=transformMatrix.m41;
else if(matrix.length===16) curTransform=parseFloat(matrix[12]);
else curTransform=parseFloat(matrix[4]);
}
if(axis==='y'){
if(window.WebKitCSSMatrix) curTransform=transformMatrix.m42;
else if(matrix.length===16) curTransform=parseFloat(matrix[13]);
else curTransform=parseFloat(matrix[5]);
}
return curTransform||0;
}
function isObject(o){
return typeof o==='object'&&o!==null&&o.constructor&&Object.prototype.toString.call(o).slice(8, -1)==='Object';
}
function isNode(node){
if(typeof window!=='undefined'&&typeof window.HTMLElement!=='undefined'){
return node instanceof HTMLElement;
}
return node&&(node.nodeType===1||node.nodeType===11);
}
function extend(){
const to=Object(arguments.length <=0 ? undefined:arguments[0]);
const noExtend=['__proto__', 'constructor', 'prototype'];
for (let i=1; i < arguments.length; i +=1){
const nextSource=i < 0||arguments.length <=i ? undefined:arguments[i];
if(nextSource!==undefined&&nextSource!==null&&!isNode(nextSource)){
const keysArray=Object.keys(Object(nextSource)).filter(key=> noExtend.indexOf(key) < 0);
for (let nextIndex=0, len=keysArray.length; nextIndex < len; nextIndex +=1){
const nextKey=keysArray[nextIndex];
const desc=Object.getOwnPropertyDescriptor(nextSource, nextKey);
if(desc!==undefined&&desc.enumerable){
if(isObject(to[nextKey])&&isObject(nextSource[nextKey])){
if(nextSource[nextKey].__swiper__){
to[nextKey]=nextSource[nextKey];
}else{
extend(to[nextKey], nextSource[nextKey]);
}}else if(!isObject(to[nextKey])&&isObject(nextSource[nextKey])){
to[nextKey]={};
if(nextSource[nextKey].__swiper__){
to[nextKey]=nextSource[nextKey];
}else{
extend(to[nextKey], nextSource[nextKey]);
}}else{
to[nextKey]=nextSource[nextKey];
}}
}}
}
return to;
}
function setCSSProperty(el, varName, varValue){
el.style.setProperty(varName, varValue);
}
function animateCSSModeScroll(_ref){
let {
swiper,
targetPosition,
side
}=_ref;
const window=getWindow();
const startPosition=-swiper.translate;
let startTime=null;
let time;
const duration=swiper.params.speed;
swiper.wrapperEl.style.scrollSnapType='none';
window.cancelAnimationFrame(swiper.cssModeFrameID);
const dir=targetPosition > startPosition ? 'next':'prev';
const isOutOfBound=(current, target)=> {
return dir==='next'&&current >=target||dir==='prev'&&current <=target;
};
const animate=()=> {
time=new Date().getTime();
if(startTime===null){
startTime=time;
}
const progress=Math.max(Math.min((time - startTime) / duration, 1), 0);
const easeProgress=0.5 - Math.cos(progress * Math.PI) / 2;
let currentPosition=startPosition + easeProgress * (targetPosition - startPosition);
if(isOutOfBound(currentPosition, targetPosition)){
currentPosition=targetPosition;
}
swiper.wrapperEl.scrollTo({
[side]: currentPosition
});
if(isOutOfBound(currentPosition, targetPosition)){
swiper.wrapperEl.style.overflow='hidden';
swiper.wrapperEl.style.scrollSnapType='';
setTimeout(()=> {
swiper.wrapperEl.style.overflow='';
swiper.wrapperEl.scrollTo({
[side]: currentPosition
});
});
window.cancelAnimationFrame(swiper.cssModeFrameID);
return;
}
swiper.cssModeFrameID=window.requestAnimationFrame(animate);
};
animate();
}
let support;
function calcSupport(){
const window=getWindow();
const document=getDocument();
return {
smoothScroll: document.documentElement&&'scrollBehavior' in document.documentElement.style,
touch: !!('ontouchstart' in window||window.DocumentTouch&&document instanceof window.DocumentTouch),
passiveListener: function checkPassiveListener(){
let supportsPassive=false;
try {
const opts=Object.defineProperty({}, 'passive', {
get(){
supportsPassive=true;
}});
window.addEventListener('testPassiveListener', null, opts);
} catch (e){
}
return supportsPassive;
}(),
gestures: function checkGestures(){
return 'ongesturestart' in window;
}()
};}
function getSupport(){
if(!support){
support=calcSupport();
}
return support;
}
let deviceCached;
function calcDevice(_temp){
let {
userAgent
}=_temp===void 0 ? {}:_temp;
const support=getSupport();
const window=getWindow();
const platform=window.navigator.platform;
const ua=userAgent||window.navigator.userAgent;
const device={
ios: false,
android: false
};
const screenWidth=window.screen.width;
const screenHeight=window.screen.height;
const android=ua.match(/(Android);?[\s\/]+([\d.]+)?/);
let ipad=ua.match(/(iPad).*OS\s([\d_]+)/);
const ipod=ua.match(/(iPod)(.*OS\s([\d_]+))?/);
const iphone = !ipad&&ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
const windows=platform==='Win32';
let macos=platform==='MacIntel';
const iPadScreens=['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
if(!ipad&&macos&&support.touch&&iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >=0){
ipad=ua.match(/(Version)\/([\d.]+)/);
if(!ipad) ipad=[0, 1, '13_0_0'];
macos=false;
}
if(android&&!windows){
device.os='android';
device.android=true;
}
if(ipad||iphone||ipod){
device.os='ios';
device.ios=true;
}
return device;
}
function getDevice(overrides){
if(overrides===void 0){
overrides={};}
if(!deviceCached){
deviceCached=calcDevice(overrides);
}
return deviceCached;
}
let browser;
function calcBrowser(){
const window=getWindow();
function isSafari(){
const ua=window.navigator.userAgent.toLowerCase();
return ua.indexOf('safari') >=0&&ua.indexOf('chrome') < 0&&ua.indexOf('android') < 0;
}
return {
isSafari: isSafari(),
isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
};}
function getBrowser(){
if(!browser){
browser=calcBrowser();
}
return browser;
}
function Resize(_ref){
let {
swiper,
on,
emit
}=_ref;
const window=getWindow();
let observer=null;
let animationFrame=null;
const resizeHandler=()=> {
if(!swiper||swiper.destroyed||!swiper.initialized) return;
emit('beforeResize');
emit('resize');
};
const createObserver=()=> {
if(!swiper||swiper.destroyed||!swiper.initialized) return;
observer=new ResizeObserver(entries=> {
animationFrame=window.requestAnimationFrame(()=> {
const {
width,
height
}=swiper;
let newWidth=width;
let newHeight=height;
entries.forEach(_ref2=> {
let {
contentBoxSize,
contentRect,
target
}=_ref2;
if(target&&target!==swiper.el) return;
newWidth=contentRect ? contentRect.width:(contentBoxSize[0]||contentBoxSize).inlineSize;
newHeight=contentRect ? contentRect.height:(contentBoxSize[0]||contentBoxSize).blockSize;
});
if(newWidth!==width||newHeight!==height){
resizeHandler();
}});
});
observer.observe(swiper.el);
};
const removeObserver=()=> {
if(animationFrame){
window.cancelAnimationFrame(animationFrame);
}
if(observer&&observer.unobserve&&swiper.el){
observer.unobserve(swiper.el);
observer=null;
}};
const orientationChangeHandler=()=> {
if(!swiper||swiper.destroyed||!swiper.initialized) return;
emit('orientationchange');
};
on('init', ()=> {
if(swiper.params.resizeObserver&&typeof window.ResizeObserver!=='undefined'){
createObserver();
return;
}
window.addEventListener('resize', resizeHandler);
window.addEventListener('orientationchange', orientationChangeHandler);
});
on('destroy', ()=> {
removeObserver();
window.removeEventListener('resize', resizeHandler);
window.removeEventListener('orientationchange', orientationChangeHandler);
});
}
function Observer(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const observers=[];
const window=getWindow();
const attach=function (target, options){
if(options===void 0){
options={};}
const ObserverFunc=window.MutationObserver||window.WebkitMutationObserver;
const observer=new ObserverFunc(mutations=> {
if(mutations.length===1){
emit('observerUpdate', mutations[0]);
return;
}
const observerUpdate=function observerUpdate(){
emit('observerUpdate', mutations[0]);
};
if(window.requestAnimationFrame){
window.requestAnimationFrame(observerUpdate);
}else{
window.setTimeout(observerUpdate, 0);
}});
observer.observe(target, {
attributes: typeof options.attributes==='undefined' ? true:options.attributes,
childList: typeof options.childList==='undefined' ? true:options.childList,
characterData: typeof options.characterData==='undefined' ? true:options.characterData
});
observers.push(observer);
};
const init=()=> {
if(!swiper.params.observer) return;
if(swiper.params.observeParents){
const containerParents=swiper.$el.parents();
for (let i=0; i < containerParents.length; i +=1){
attach(containerParents[i]);
}}
attach(swiper.$el[0], {
childList: swiper.params.observeSlideChildren
});
attach(swiper.$wrapperEl[0], {
attributes: false
});
};
const destroy=()=> {
observers.forEach(observer=> {
observer.disconnect();
});
observers.splice(0, observers.length);
};
extendParams({
observer: false,
observeParents: false,
observeSlideChildren: false
});
on('init', init);
on('destroy', destroy);
}
var eventsEmitter={
on(events, handler, priority){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(typeof handler!=='function') return self;
const method=priority ? 'unshift':'push';
events.split(' ').forEach(event=> {
if(!self.eventsListeners[event]) self.eventsListeners[event]=[];
self.eventsListeners[event][method](handler);
});
return self;
},
once(events, handler, priority){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(typeof handler!=='function') return self;
function onceHandler(){
self.off(events, onceHandler);
if(onceHandler.__emitterProxy){
delete onceHandler.__emitterProxy;
}
for (var _len=arguments.length, args=new Array(_len), _key=0; _key < _len; _key++){
args[_key]=arguments[_key];
}
handler.apply(self, args);
}
onceHandler.__emitterProxy=handler;
return self.on(events, onceHandler, priority);
},
onAny(handler, priority){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(typeof handler!=='function') return self;
const method=priority ? 'unshift':'push';
if(self.eventsAnyListeners.indexOf(handler) < 0){
self.eventsAnyListeners[method](handler);
}
return self;
},
offAny(handler){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(!self.eventsAnyListeners) return self;
const index=self.eventsAnyListeners.indexOf(handler);
if(index >=0){
self.eventsAnyListeners.splice(index, 1);
}
return self;
},
off(events, handler){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(!self.eventsListeners) return self;
events.split(' ').forEach(event=> {
if(typeof handler==='undefined'){
self.eventsListeners[event]=[];
}else if(self.eventsListeners[event]){
self.eventsListeners[event].forEach((eventHandler, index)=> {
if(eventHandler===handler||eventHandler.__emitterProxy&&eventHandler.__emitterProxy===handler){
self.eventsListeners[event].splice(index, 1);
}});
}});
return self;
},
emit(){
const self=this;
if(!self.eventsListeners||self.destroyed) return self;
if(!self.eventsListeners) return self;
let events;
let data;
let context;
for (var _len2=arguments.length, args=new Array(_len2), _key2=0; _key2 < _len2; _key2++){
args[_key2]=arguments[_key2];
}
if(typeof args[0]==='string'||Array.isArray(args[0])){
events=args[0];
data=args.slice(1, args.length);
context=self;
}else{
events=args[0].events;
data=args[0].data;
context=args[0].context||self;
}
data.unshift(context);
const eventsArray=Array.isArray(events) ? events:events.split(' ');
eventsArray.forEach(event=> {
if(self.eventsAnyListeners&&self.eventsAnyListeners.length){
self.eventsAnyListeners.forEach(eventHandler=> {
eventHandler.apply(context, [event, ...data]);
});
}
if(self.eventsListeners&&self.eventsListeners[event]){
self.eventsListeners[event].forEach(eventHandler=> {
eventHandler.apply(context, data);
});
}});
return self;
}};
function updateSize(){
const swiper=this;
let width;
let height;
const $el=swiper.$el;
if(typeof swiper.params.width!=='undefined'&&swiper.params.width!==null){
width=swiper.params.width;
}else{
width=$el[0].clientWidth;
}
if(typeof swiper.params.height!=='undefined'&&swiper.params.height!==null){
height=swiper.params.height;
}else{
height=$el[0].clientHeight;
}
if(width===0&&swiper.isHorizontal()||height===0&&swiper.isVertical()){
return;
}
width=width - parseInt($el.css('padding-left')||0, 10) - parseInt($el.css('padding-right')||0, 10);
height=height - parseInt($el.css('padding-top')||0, 10) - parseInt($el.css('padding-bottom')||0, 10);
if(Number.isNaN(width)) width=0;
if(Number.isNaN(height)) height=0;
Object.assign(swiper, {
width,
height,
size: swiper.isHorizontal() ? width:height
});
}
function updateSlides(){
const swiper=this;
function getDirectionLabel(property){
if(swiper.isHorizontal()){
return property;
}
return {
'width': 'height',
'margin-top': 'margin-left',
'margin-bottom ': 'margin-right',
'margin-left': 'margin-top',
'margin-right': 'margin-bottom',
'padding-left': 'padding-top',
'padding-right': 'padding-bottom',
'marginRight': 'marginBottom'
}[property];
}
function getDirectionPropertyValue(node, label){
return parseFloat(node.getPropertyValue(getDirectionLabel(label))||0);
}
const params=swiper.params;
const {
$wrapperEl,
size: swiperSize,
rtlTranslate: rtl,
wrongRTL
}=swiper;
const isVirtual=swiper.virtual&&params.virtual.enabled;
const previousSlidesLength=isVirtual ? swiper.virtual.slides.length:swiper.slides.length;
const slides=$wrapperEl.children(`.${swiper.params.slideClass}`);
const slidesLength=isVirtual ? swiper.virtual.slides.length:slides.length;
let snapGrid=[];
const slidesGrid=[];
const slidesSizesGrid=[];
let offsetBefore=params.slidesOffsetBefore;
if(typeof offsetBefore==='function'){
offsetBefore=params.slidesOffsetBefore.call(swiper);
}
let offsetAfter=params.slidesOffsetAfter;
if(typeof offsetAfter==='function'){
offsetAfter=params.slidesOffsetAfter.call(swiper);
}
const previousSnapGridLength=swiper.snapGrid.length;
const previousSlidesGridLength=swiper.slidesGrid.length;
let spaceBetween=params.spaceBetween;
let slidePosition=-offsetBefore;
let prevSlideSize=0;
let index=0;
if(typeof swiperSize==='undefined'){
return;
}
if(typeof spaceBetween==='string'&&spaceBetween.indexOf('%') >=0){
spaceBetween=parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
}
swiper.virtualSize=-spaceBetween;
if(rtl) slides.css({
marginLeft: '',
marginBottom: '',
marginTop: ''
});else slides.css({
marginRight: '',
marginBottom: '',
marginTop: ''
});
if(params.centeredSlides&&params.cssMode){
setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');
setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');
}
const gridEnabled=params.grid&&params.grid.rows > 1&&swiper.grid;
if(gridEnabled){
swiper.grid.initSlides(slidesLength);
}
let slideSize;
const shouldResetSlideSize=params.slidesPerView==='auto'&&params.breakpoints&&Object.keys(params.breakpoints).filter(key=> {
return typeof params.breakpoints[key].slidesPerView!=='undefined';
}).length > 0;
for (let i=0; i < slidesLength; i +=1){
slideSize=0;
const slide=slides.eq(i);
if(gridEnabled){
swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);
}
if(slide.css('display')==='none') continue;
if(params.slidesPerView==='auto'){
if(shouldResetSlideSize){
slides[i].style[getDirectionLabel('width')]=``;
}
const slideStyles=getComputedStyle(slide[0]);
const currentTransform=slide[0].style.transform;
const currentWebKitTransform=slide[0].style.webkitTransform;
if(currentTransform){
slide[0].style.transform='none';
}
if(currentWebKitTransform){
slide[0].style.webkitTransform='none';
}
if(params.roundLengths){
slideSize=swiper.isHorizontal() ? slide.outerWidth(true):slide.outerHeight(true);
}else{
const width=getDirectionPropertyValue(slideStyles, 'width');
const paddingLeft=getDirectionPropertyValue(slideStyles, 'padding-left');
const paddingRight=getDirectionPropertyValue(slideStyles, 'padding-right');
const marginLeft=getDirectionPropertyValue(slideStyles, 'margin-left');
const marginRight=getDirectionPropertyValue(slideStyles, 'margin-right');
const boxSizing=slideStyles.getPropertyValue('box-sizing');
if(boxSizing&&boxSizing==='border-box'){
slideSize=width + marginLeft + marginRight;
}else{
const {
clientWidth,
offsetWidth
}=slide[0];
slideSize=width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
}}
if(currentTransform){
slide[0].style.transform=currentTransform;
}
if(currentWebKitTransform){
slide[0].style.webkitTransform=currentWebKitTransform;
}
if(params.roundLengths) slideSize=Math.floor(slideSize);
}else{
slideSize=(swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
if(params.roundLengths) slideSize=Math.floor(slideSize);
if(slides[i]){
slides[i].style[getDirectionLabel('width')]=`${slideSize}px`;
}}
if(slides[i]){
slides[i].swiperSlideSize=slideSize;
}
slidesSizesGrid.push(slideSize);
if(params.centeredSlides){
slidePosition=slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
if(prevSlideSize===0&&i!==0) slidePosition=slidePosition - swiperSize / 2 - spaceBetween;
if(i===0) slidePosition=slidePosition - swiperSize / 2 - spaceBetween;
if(Math.abs(slidePosition) < 1 / 1000) slidePosition=0;
if(params.roundLengths) slidePosition=Math.floor(slidePosition);
if(index % params.slidesPerGroup===0) snapGrid.push(slidePosition);
slidesGrid.push(slidePosition);
}else{
if(params.roundLengths) slidePosition=Math.floor(slidePosition);
if((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup===0) snapGrid.push(slidePosition);
slidesGrid.push(slidePosition);
slidePosition=slidePosition + slideSize + spaceBetween;
}
swiper.virtualSize +=slideSize + spaceBetween;
prevSlideSize=slideSize;
index +=1;
}
swiper.virtualSize=Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
if(rtl&&wrongRTL&&(params.effect==='slide'||params.effect==='coverflow')){
$wrapperEl.css({
width: `${swiper.virtualSize + params.spaceBetween}px`
});
}
if(params.setWrapperSize){
$wrapperEl.css({
[getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`
});
}
if(gridEnabled){
swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);
}
if(!params.centeredSlides){
const newSlidesGrid=[];
for (let i=0; i < snapGrid.length; i +=1){
let slidesGridItem=snapGrid[i];
if(params.roundLengths) slidesGridItem=Math.floor(slidesGridItem);
if(snapGrid[i] <=swiper.virtualSize - swiperSize){
newSlidesGrid.push(slidesGridItem);
}}
snapGrid=newSlidesGrid;
if(Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1){
snapGrid.push(swiper.virtualSize - swiperSize);
}}
if(snapGrid.length===0) snapGrid=[0];
if(params.spaceBetween!==0){
const key=swiper.isHorizontal()&&rtl ? 'marginLeft':getDirectionLabel('marginRight');
slides.filter((_, slideIndex)=> {
if(!params.cssMode) return true;
if(slideIndex===slides.length - 1){
return false;
}
return true;
}).css({
[key]: `${spaceBetween}px`
});
}
if(params.centeredSlides&&params.centeredSlidesBounds){
let allSlidesSize=0;
slidesSizesGrid.forEach(slideSizeValue=> {
allSlidesSize +=slideSizeValue + (params.spaceBetween ? params.spaceBetween:0);
});
allSlidesSize -=params.spaceBetween;
const maxSnap=allSlidesSize - swiperSize;
snapGrid=snapGrid.map(snap=> {
if(snap < 0) return -offsetBefore;
if(snap > maxSnap) return maxSnap + offsetAfter;
return snap;
});
}
if(params.centerInsufficientSlides){
let allSlidesSize=0;
slidesSizesGrid.forEach(slideSizeValue=> {
allSlidesSize +=slideSizeValue + (params.spaceBetween ? params.spaceBetween:0);
});
allSlidesSize -=params.spaceBetween;
if(allSlidesSize < swiperSize){
const allSlidesOffset=(swiperSize - allSlidesSize) / 2;
snapGrid.forEach((snap, snapIndex)=> {
snapGrid[snapIndex]=snap - allSlidesOffset;
});
slidesGrid.forEach((snap, snapIndex)=> {
slidesGrid[snapIndex]=snap + allSlidesOffset;
});
}}
Object.assign(swiper, {
slides,
snapGrid,
slidesGrid,
slidesSizesGrid
});
if(params.centeredSlides&&params.cssMode&&!params.centeredSlidesBounds){
setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);
setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
const addToSnapGrid=-swiper.snapGrid[0];
const addToSlidesGrid=-swiper.slidesGrid[0];
swiper.snapGrid=swiper.snapGrid.map(v=> v + addToSnapGrid);
swiper.slidesGrid=swiper.slidesGrid.map(v=> v + addToSlidesGrid);
}
if(slidesLength!==previousSlidesLength){
swiper.emit('slidesLengthChange');
}
if(snapGrid.length!==previousSnapGridLength){
if(swiper.params.watchOverflow) swiper.checkOverflow();
swiper.emit('snapGridLengthChange');
}
if(slidesGrid.length!==previousSlidesGridLength){
swiper.emit('slidesGridLengthChange');
}
if(params.watchSlidesProgress){
swiper.updateSlidesOffset();
}
if(!isVirtual&&!params.cssMode&&(params.effect==='slide'||params.effect==='fade')){
const backFaceHiddenClass=`${params.containerModifierClass}backface-hidden`;
const hasClassBackfaceClassAdded=swiper.$el.hasClass(backFaceHiddenClass);
if(slidesLength <=params.maxBackfaceHiddenSlides){
if(!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);
}else if(hasClassBackfaceClassAdded){
swiper.$el.removeClass(backFaceHiddenClass);
}}
}
function updateAutoHeight(speed){
const swiper=this;
const activeSlides=[];
const isVirtual=swiper.virtual&&swiper.params.virtual.enabled;
let newHeight=0;
let i;
if(typeof speed==='number'){
swiper.setTransition(speed);
}else if(speed===true){
swiper.setTransition(swiper.params.speed);
}
const getSlideByIndex=index=> {
if(isVirtual){
return swiper.slides.filter(el=> parseInt(el.getAttribute('data-swiper-slide-index'), 10)===index)[0];
}
return swiper.slides.eq(index)[0];
};
if(swiper.params.slidesPerView!=='auto'&&swiper.params.slidesPerView > 1){
if(swiper.params.centeredSlides){
(swiper.visibleSlides||$([])).each(slide=> {
activeSlides.push(slide);
});
}else{
for (i=0; i < Math.ceil(swiper.params.slidesPerView); i +=1){
const index=swiper.activeIndex + i;
if(index > swiper.slides.length&&!isVirtual) break;
activeSlides.push(getSlideByIndex(index));
}}
}else{
activeSlides.push(getSlideByIndex(swiper.activeIndex));
}
for (i=0; i < activeSlides.length; i +=1){
if(typeof activeSlides[i]!=='undefined'){
const height=activeSlides[i].offsetHeight;
newHeight=height > newHeight ? height:newHeight;
}}
if(newHeight||newHeight===0) swiper.$wrapperEl.css('height', `${newHeight}px`);
}
function updateSlidesOffset(){
const swiper=this;
const slides=swiper.slides;
for (let i=0; i < slides.length; i +=1){
slides[i].swiperSlideOffset=swiper.isHorizontal() ? slides[i].offsetLeft:slides[i].offsetTop;
}}
function updateSlidesProgress(translate){
if(translate===void 0){
translate=this&&this.translate||0;
}
const swiper=this;
const params=swiper.params;
const {
slides,
rtlTranslate: rtl,
snapGrid
}=swiper;
if(slides.length===0) return;
if(typeof slides[0].swiperSlideOffset==='undefined') swiper.updateSlidesOffset();
let offsetCenter=-translate;
if(rtl) offsetCenter=translate;
slides.removeClass(params.slideVisibleClass);
swiper.visibleSlidesIndexes=[];
swiper.visibleSlides=[];
for (let i=0; i < slides.length; i +=1){
const slide=slides[i];
let slideOffset=slide.swiperSlideOffset;
if(params.cssMode&&params.centeredSlides){
slideOffset -=slides[0].swiperSlideOffset;
}
const slideProgress=(offsetCenter + (params.centeredSlides ? swiper.minTranslate():0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
const originalSlideProgress=(offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate():0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);
const slideBefore=-(offsetCenter - slideOffset);
const slideAfter=slideBefore + swiper.slidesSizesGrid[i];
const isVisible=slideBefore >=0&&slideBefore < swiper.size - 1||slideAfter > 1&&slideAfter <=swiper.size||slideBefore <=0&&slideAfter >=swiper.size;
if(isVisible){
swiper.visibleSlides.push(slide);
swiper.visibleSlidesIndexes.push(i);
slides.eq(i).addClass(params.slideVisibleClass);
}
slide.progress=rtl ? -slideProgress:slideProgress;
slide.originalProgress=rtl ? -originalSlideProgress:originalSlideProgress;
}
swiper.visibleSlides=$(swiper.visibleSlides);
}
function updateProgress(translate){
const swiper=this;
if(typeof translate==='undefined'){
const multiplier=swiper.rtlTranslate ? -1:1;
translate=swiper&&swiper.translate&&swiper.translate * multiplier||0;
}
const params=swiper.params;
const translatesDiff=swiper.maxTranslate() - swiper.minTranslate();
let {
progress,
isBeginning,
isEnd
}=swiper;
const wasBeginning=isBeginning;
const wasEnd=isEnd;
if(translatesDiff===0){
progress=0;
isBeginning=true;
isEnd=true;
}else{
progress=(translate - swiper.minTranslate()) / translatesDiff;
isBeginning=progress <=0;
isEnd=progress >=1;
}
Object.assign(swiper, {
progress,
isBeginning,
isEnd
});
if(params.watchSlidesProgress||params.centeredSlides&&params.autoHeight) swiper.updateSlidesProgress(translate);
if(isBeginning&&!wasBeginning){
swiper.emit('reachBeginning toEdge');
}
if(isEnd&&!wasEnd){
swiper.emit('reachEnd toEdge');
}
if(wasBeginning&&!isBeginning||wasEnd&&!isEnd){
swiper.emit('fromEdge');
}
swiper.emit('progress', progress);
}
function updateSlidesClasses(){
const swiper=this;
const {
slides,
params,
$wrapperEl,
activeIndex,
realIndex
}=swiper;
const isVirtual=swiper.virtual&&params.virtual.enabled;
slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);
let activeSlide;
if(isVirtual){
activeSlide=swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`);
}else{
activeSlide=slides.eq(activeIndex);
}
activeSlide.addClass(params.slideActiveClass);
if(params.loop){
if(activeSlide.hasClass(params.slideDuplicateClass)){
$wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
}else{
$wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass);
}}
let nextSlide=activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);
if(params.loop&&nextSlide.length===0){
nextSlide=slides.eq(0);
nextSlide.addClass(params.slideNextClass);
}
let prevSlide=activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);
if(params.loop&&prevSlide.length===0){
prevSlide=slides.eq(-1);
prevSlide.addClass(params.slidePrevClass);
}
if(params.loop){
if(nextSlide.hasClass(params.slideDuplicateClass)){
$wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
}else{
$wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass);
}
if(prevSlide.hasClass(params.slideDuplicateClass)){
$wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
}else{
$wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass);
}}
swiper.emitSlidesClasses();
}
function updateActiveIndex(newActiveIndex){
const swiper=this;
const translate=swiper.rtlTranslate ? swiper.translate:-swiper.translate;
const {
slidesGrid,
snapGrid,
params,
activeIndex: previousIndex,
realIndex: previousRealIndex,
snapIndex: previousSnapIndex
}=swiper;
let activeIndex=newActiveIndex;
let snapIndex;
if(typeof activeIndex==='undefined'){
for (let i=0; i < slidesGrid.length; i +=1){
if(typeof slidesGrid[i + 1]!=='undefined'){
if(translate >=slidesGrid[i]&&translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2){
activeIndex=i;
}else if(translate >=slidesGrid[i]&&translate < slidesGrid[i + 1]){
activeIndex=i + 1;
}}else if(translate >=slidesGrid[i]){
activeIndex=i;
}}
if(params.normalizeSlideIndex){
if(activeIndex < 0||typeof activeIndex==='undefined') activeIndex=0;
}}
if(snapGrid.indexOf(translate) >=0){
snapIndex=snapGrid.indexOf(translate);
}else{
const skip=Math.min(params.slidesPerGroupSkip, activeIndex);
snapIndex=skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
}
if(snapIndex >=snapGrid.length) snapIndex=snapGrid.length - 1;
if(activeIndex===previousIndex){
if(snapIndex!==previousSnapIndex){
swiper.snapIndex=snapIndex;
swiper.emit('snapIndexChange');
}
return;
}
const realIndex=parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index')||activeIndex, 10);
Object.assign(swiper, {
snapIndex,
realIndex,
previousIndex,
activeIndex
});
swiper.emit('activeIndexChange');
swiper.emit('snapIndexChange');
if(previousRealIndex!==realIndex){
swiper.emit('realIndexChange');
}
if(swiper.initialized||swiper.params.runCallbacksOnInit){
swiper.emit('slideChange');
}}
function updateClickedSlide(e){
const swiper=this;
const params=swiper.params;
const slide=$(e).closest(`.${params.slideClass}`)[0];
let slideFound=false;
let slideIndex;
if(slide){
for (let i=0; i < swiper.slides.length; i +=1){
if(swiper.slides[i]===slide){
slideFound=true;
slideIndex=i;
break;
}}
}
if(slide&&slideFound){
swiper.clickedSlide=slide;
if(swiper.virtual&&swiper.params.virtual.enabled){
swiper.clickedIndex=parseInt($(slide).attr('data-swiper-slide-index'), 10);
}else{
swiper.clickedIndex=slideIndex;
}}else{
swiper.clickedSlide=undefined;
swiper.clickedIndex=undefined;
return;
}
if(params.slideToClickedSlide&&swiper.clickedIndex!==undefined&&swiper.clickedIndex!==swiper.activeIndex){
swiper.slideToClickedSlide();
}}
var update={
updateSize,
updateSlides,
updateAutoHeight,
updateSlidesOffset,
updateSlidesProgress,
updateProgress,
updateSlidesClasses,
updateActiveIndex,
updateClickedSlide
};
function getSwiperTranslate(axis){
if(axis===void 0){
axis=this.isHorizontal() ? 'x':'y';
}
const swiper=this;
const {
params,
rtlTranslate: rtl,
translate,
$wrapperEl
}=swiper;
if(params.virtualTranslate){
return rtl ? -translate:translate;
}
if(params.cssMode){
return translate;
}
let currentTranslate=getTranslate($wrapperEl[0], axis);
if(rtl) currentTranslate=-currentTranslate;
return currentTranslate||0;
}
function setTranslate(translate, byController){
const swiper=this;
const {
rtlTranslate: rtl,
params,
$wrapperEl,
wrapperEl,
progress
}=swiper;
let x=0;
let y=0;
const z=0;
if(swiper.isHorizontal()){
x=rtl ? -translate:translate;
}else{
y=translate;
}
if(params.roundLengths){
x=Math.floor(x);
y=Math.floor(y);
}
if(params.cssMode){
wrapperEl[swiper.isHorizontal() ? 'scrollLeft':'scrollTop']=swiper.isHorizontal() ? -x:-y;
}else if(!params.virtualTranslate){
$wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);
}
swiper.previousTranslate=swiper.translate;
swiper.translate=swiper.isHorizontal() ? x:y;
let newProgress;
const translatesDiff=swiper.maxTranslate() - swiper.minTranslate();
if(translatesDiff===0){
newProgress=0;
}else{
newProgress=(translate - swiper.minTranslate()) / translatesDiff;
}
if(newProgress!==progress){
swiper.updateProgress(translate);
}
swiper.emit('setTranslate', swiper.translate, byController);
}
function minTranslate(){
return -this.snapGrid[0];
}
function maxTranslate(){
return -this.snapGrid[this.snapGrid.length - 1];
}
function translateTo(translate, speed, runCallbacks, translateBounds, internal){
if(translate===void 0){
translate=0;
}
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
if(translateBounds===void 0){
translateBounds=true;
}
const swiper=this;
const {
params,
wrapperEl
}=swiper;
if(swiper.animating&&params.preventInteractionOnTransition){
return false;
}
const minTranslate=swiper.minTranslate();
const maxTranslate=swiper.maxTranslate();
let newTranslate;
if(translateBounds&&translate > minTranslate) newTranslate=minTranslate;else if(translateBounds&&translate < maxTranslate) newTranslate=maxTranslate;else newTranslate=translate;
swiper.updateProgress(newTranslate);
if(params.cssMode){
const isH=swiper.isHorizontal();
if(speed===0){
wrapperEl[isH ? 'scrollLeft':'scrollTop']=-newTranslate;
}else{
if(!swiper.support.smoothScroll){
animateCSSModeScroll({
swiper,
targetPosition: -newTranslate,
side: isH ? 'left':'top'
});
return true;
}
wrapperEl.scrollTo({
[isH ? 'left':'top']: -newTranslate,
behavior: 'smooth'
});
}
return true;
}
if(speed===0){
swiper.setTransition(0);
swiper.setTranslate(newTranslate);
if(runCallbacks){
swiper.emit('beforeTransitionStart', speed, internal);
swiper.emit('transitionEnd');
}}else{
swiper.setTransition(speed);
swiper.setTranslate(newTranslate);
if(runCallbacks){
swiper.emit('beforeTransitionStart', speed, internal);
swiper.emit('transitionStart');
}
if(!swiper.animating){
swiper.animating=true;
if(!swiper.onTranslateToWrapperTransitionEnd){
swiper.onTranslateToWrapperTransitionEnd=function transitionEnd(e){
if(!swiper||swiper.destroyed) return;
if(e.target!==this) return;
swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
swiper.onTranslateToWrapperTransitionEnd=null;
delete swiper.onTranslateToWrapperTransitionEnd;
if(runCallbacks){
swiper.emit('transitionEnd');
}};}
swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
}}
return true;
}
var translate={
getTranslate: getSwiperTranslate,
setTranslate,
minTranslate,
maxTranslate,
translateTo
};
function setTransition(duration, byController){
const swiper=this;
if(!swiper.params.cssMode){
swiper.$wrapperEl.transition(duration);
}
swiper.emit('setTransition', duration, byController);
}
function transitionEmit(_ref){
let {
swiper,
runCallbacks,
direction,
step
}=_ref;
const {
activeIndex,
previousIndex
}=swiper;
let dir=direction;
if(!dir){
if(activeIndex > previousIndex) dir='next';else if(activeIndex < previousIndex) dir='prev';else dir='reset';
}
swiper.emit(`transition${step}`);
if(runCallbacks&&activeIndex!==previousIndex){
if(dir==='reset'){
swiper.emit(`slideResetTransition${step}`);
return;
}
swiper.emit(`slideChangeTransition${step}`);
if(dir==='next'){
swiper.emit(`slideNextTransition${step}`);
}else{
swiper.emit(`slidePrevTransition${step}`);
}}
}
function transitionStart(runCallbacks, direction){
if(runCallbacks===void 0){
runCallbacks=true;
}
const swiper=this;
const {
params
}=swiper;
if(params.cssMode) return;
if(params.autoHeight){
swiper.updateAutoHeight();
}
transitionEmit({
swiper,
runCallbacks,
direction,
step: 'Start'
});
}
function transitionEnd(runCallbacks, direction){
if(runCallbacks===void 0){
runCallbacks=true;
}
const swiper=this;
const {
params
}=swiper;
swiper.animating=false;
if(params.cssMode) return;
swiper.setTransition(0);
transitionEmit({
swiper,
runCallbacks,
direction,
step: 'End'
});
}
var transition={
setTransition,
transitionStart,
transitionEnd
};
function slideTo(index, speed, runCallbacks, internal, initial){
if(index===void 0){
index=0;
}
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
if(typeof index!=='number'&&typeof index!=='string'){
throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);
}
if(typeof index==='string'){
const indexAsNumber=parseInt(index, 10);
const isValidNumber=isFinite(indexAsNumber);
if(!isValidNumber){
throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
}
index=indexAsNumber;
}
const swiper=this;
let slideIndex=index;
if(slideIndex < 0) slideIndex=0;
const {
params,
snapGrid,
slidesGrid,
previousIndex,
activeIndex,
rtlTranslate: rtl,
wrapperEl,
enabled
}=swiper;
if(swiper.animating&&params.preventInteractionOnTransition||!enabled&&!internal&&!initial){
return false;
}
const skip=Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
let snapIndex=skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
if(snapIndex >=snapGrid.length) snapIndex=snapGrid.length - 1;
const translate=-snapGrid[snapIndex];
if(params.normalizeSlideIndex){
for (let i=0; i < slidesGrid.length; i +=1){
const normalizedTranslate=-Math.floor(translate * 100);
const normalizedGrid=Math.floor(slidesGrid[i] * 100);
const normalizedGridNext=Math.floor(slidesGrid[i + 1] * 100);
if(typeof slidesGrid[i + 1]!=='undefined'){
if(normalizedTranslate >=normalizedGrid&&normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2){
slideIndex=i;
}else if(normalizedTranslate >=normalizedGrid&&normalizedTranslate < normalizedGridNext){
slideIndex=i + 1;
}}else if(normalizedTranslate >=normalizedGrid){
slideIndex=i;
}}
}
if(swiper.initialized&&slideIndex!==activeIndex){
if(!swiper.allowSlideNext&&translate < swiper.translate&&translate < swiper.minTranslate()){
return false;
}
if(!swiper.allowSlidePrev&&translate > swiper.translate&&translate > swiper.maxTranslate()){
if((activeIndex||0)!==slideIndex) return false;
}}
if(slideIndex!==(previousIndex||0)&&runCallbacks){
swiper.emit('beforeSlideChangeStart');
}
swiper.updateProgress(translate);
let direction;
if(slideIndex > activeIndex) direction='next';else if(slideIndex < activeIndex) direction='prev';else direction='reset';
if(rtl&&-translate===swiper.translate||!rtl&&translate===swiper.translate){
swiper.updateActiveIndex(slideIndex);
if(params.autoHeight){
swiper.updateAutoHeight();
}
swiper.updateSlidesClasses();
if(params.effect!=='slide'){
swiper.setTranslate(translate);
}
if(direction!=='reset'){
swiper.transitionStart(runCallbacks, direction);
swiper.transitionEnd(runCallbacks, direction);
}
return false;
}
if(params.cssMode){
const isH=swiper.isHorizontal();
const t=rtl ? translate:-translate;
if(speed===0){
const isVirtual=swiper.virtual&&swiper.params.virtual.enabled;
if(isVirtual){
swiper.wrapperEl.style.scrollSnapType='none';
swiper._immediateVirtual=true;
}
wrapperEl[isH ? 'scrollLeft':'scrollTop']=t;
if(isVirtual){
requestAnimationFrame(()=> {
swiper.wrapperEl.style.scrollSnapType='';
swiper._swiperImmediateVirtual=false;
});
}}else{
if(!swiper.support.smoothScroll){
animateCSSModeScroll({
swiper,
targetPosition: t,
side: isH ? 'left':'top'
});
return true;
}
wrapperEl.scrollTo({
[isH ? 'left':'top']: t,
behavior: 'smooth'
});
}
return true;
}
swiper.setTransition(speed);
swiper.setTranslate(translate);
swiper.updateActiveIndex(slideIndex);
swiper.updateSlidesClasses();
swiper.emit('beforeTransitionStart', speed, internal);
swiper.transitionStart(runCallbacks, direction);
if(speed===0){
swiper.transitionEnd(runCallbacks, direction);
}else if(!swiper.animating){
swiper.animating=true;
if(!swiper.onSlideToWrapperTransitionEnd){
swiper.onSlideToWrapperTransitionEnd=function transitionEnd(e){
if(!swiper||swiper.destroyed) return;
if(e.target!==this) return;
swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
swiper.onSlideToWrapperTransitionEnd=null;
delete swiper.onSlideToWrapperTransitionEnd;
swiper.transitionEnd(runCallbacks, direction);
};}
swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
}
return true;
}
function slideToLoop(index, speed, runCallbacks, internal){
if(index===void 0){
index=0;
}
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
if(typeof index==='string'){
const indexAsNumber=parseInt(index, 10);
const isValidNumber=isFinite(indexAsNumber);
if(!isValidNumber){
throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
}
index=indexAsNumber;
}
const swiper=this;
let newIndex=index;
if(swiper.params.loop){
newIndex +=swiper.loopedSlides;
}
return swiper.slideTo(newIndex, speed, runCallbacks, internal);
}
function slideNext(speed, runCallbacks, internal){
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
const swiper=this;
const {
animating,
enabled,
params
}=swiper;
if(!enabled) return swiper;
let perGroup=params.slidesPerGroup;
if(params.slidesPerView==='auto'&&params.slidesPerGroup===1&&params.slidesPerGroupAuto){
perGroup=Math.max(swiper.slidesPerViewDynamic('current', true), 1);
}
const increment=swiper.activeIndex < params.slidesPerGroupSkip ? 1:perGroup;
if(params.loop){
if(animating&&params.loopPreventsSlide) return false;
swiper.loopFix();
swiper._clientLeft=swiper.$wrapperEl[0].clientLeft;
}
if(params.rewind&&swiper.isEnd){
return swiper.slideTo(0, speed, runCallbacks, internal);
}
return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
}
function slidePrev(speed, runCallbacks, internal){
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
const swiper=this;
const {
params,
animating,
snapGrid,
slidesGrid,
rtlTranslate,
enabled
}=swiper;
if(!enabled) return swiper;
if(params.loop){
if(animating&&params.loopPreventsSlide) return false;
swiper.loopFix();
swiper._clientLeft=swiper.$wrapperEl[0].clientLeft;
}
const translate=rtlTranslate ? swiper.translate:-swiper.translate;
function normalize(val){
if(val < 0) return -Math.floor(Math.abs(val));
return Math.floor(val);
}
const normalizedTranslate=normalize(translate);
const normalizedSnapGrid=snapGrid.map(val=> normalize(val));
let prevSnap=snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
if(typeof prevSnap==='undefined'&&params.cssMode){
let prevSnapIndex;
snapGrid.forEach((snap, snapIndex)=> {
if(normalizedTranslate >=snap){
prevSnapIndex=snapIndex;
}});
if(typeof prevSnapIndex!=='undefined'){
prevSnap=snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1:prevSnapIndex];
}}
let prevIndex=0;
if(typeof prevSnap!=='undefined'){
prevIndex=slidesGrid.indexOf(prevSnap);
if(prevIndex < 0) prevIndex=swiper.activeIndex - 1;
if(params.slidesPerView==='auto'&&params.slidesPerGroup===1&&params.slidesPerGroupAuto){
prevIndex=prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;
prevIndex=Math.max(prevIndex, 0);
}}
if(params.rewind&&swiper.isBeginning){
const lastIndex=swiper.params.virtual&&swiper.params.virtual.enabled&&swiper.virtual ? swiper.virtual.slides.length - 1:swiper.slides.length - 1;
return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
}
return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
}
function slideReset(speed, runCallbacks, internal){
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
const swiper=this;
return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
}
function slideToClosest(speed, runCallbacks, internal, threshold){
if(speed===void 0){
speed=this.params.speed;
}
if(runCallbacks===void 0){
runCallbacks=true;
}
if(threshold===void 0){
threshold=0.5;
}
const swiper=this;
let index=swiper.activeIndex;
const skip=Math.min(swiper.params.slidesPerGroupSkip, index);
const snapIndex=skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
const translate=swiper.rtlTranslate ? swiper.translate:-swiper.translate;
if(translate >=swiper.snapGrid[snapIndex]){
const currentSnap=swiper.snapGrid[snapIndex];
const nextSnap=swiper.snapGrid[snapIndex + 1];
if(translate - currentSnap > (nextSnap - currentSnap) * threshold){
index +=swiper.params.slidesPerGroup;
}}else{
const prevSnap=swiper.snapGrid[snapIndex - 1];
const currentSnap=swiper.snapGrid[snapIndex];
if(translate - prevSnap <=(currentSnap - prevSnap) * threshold){
index -=swiper.params.slidesPerGroup;
}}
index=Math.max(index, 0);
index=Math.min(index, swiper.slidesGrid.length - 1);
return swiper.slideTo(index, speed, runCallbacks, internal);
}
function slideToClickedSlide(){
const swiper=this;
const {
params,
$wrapperEl
}=swiper;
const slidesPerView=params.slidesPerView==='auto' ? swiper.slidesPerViewDynamic():params.slidesPerView;
let slideToIndex=swiper.clickedIndex;
let realIndex;
if(params.loop){
if(swiper.animating) return;
realIndex=parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
if(params.centeredSlides){
if(slideToIndex < swiper.loopedSlides - slidesPerView / 2||slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2){
swiper.loopFix();
slideToIndex=$wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
nextTick(()=> {
swiper.slideTo(slideToIndex);
});
}else{
swiper.slideTo(slideToIndex);
}}else if(slideToIndex > swiper.slides.length - slidesPerView){
swiper.loopFix();
slideToIndex=$wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index();
nextTick(()=> {
swiper.slideTo(slideToIndex);
});
}else{
swiper.slideTo(slideToIndex);
}}else{
swiper.slideTo(slideToIndex);
}}
var slide={
slideTo,
slideToLoop,
slideNext,
slidePrev,
slideReset,
slideToClosest,
slideToClickedSlide
};
function loopCreate(){
const swiper=this;
const document=getDocument();
const {
params,
$wrapperEl
}=swiper;
const $selector=$wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode):$wrapperEl;
$selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();
let slides=$selector.children(`.${params.slideClass}`);
if(params.loopFillGroupWithBlank){
const blankSlidesNum=params.slidesPerGroup - slides.length % params.slidesPerGroup;
if(blankSlidesNum!==params.slidesPerGroup){
for (let i=0; i < blankSlidesNum; i +=1){
const blankNode=$(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);
$selector.append(blankNode);
}
slides=$selector.children(`.${params.slideClass}`);
}}
if(params.slidesPerView==='auto'&&!params.loopedSlides) params.loopedSlides=slides.length;
swiper.loopedSlides=Math.ceil(parseFloat(params.loopedSlides||params.slidesPerView, 10));
swiper.loopedSlides +=params.loopAdditionalSlides;
if(swiper.loopedSlides > slides.length&&swiper.params.loopedSlidesLimit){
swiper.loopedSlides=slides.length;
}
const prependSlides=[];
const appendSlides=[];
slides.each((el, index)=> {
const slide=$(el);
slide.attr('data-swiper-slide-index', index);
});
for (let i=0; i < swiper.loopedSlides; i +=1){
const index=i - Math.floor(i / slides.length) * slides.length;
appendSlides.push(slides.eq(index)[0]);
prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
}
for (let i=0; i < appendSlides.length; i +=1){
$selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
}
for (let i=prependSlides.length - 1; i >=0; i -=1){
$selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
}}
function loopFix(){
const swiper=this;
swiper.emit('beforeLoopFix');
const {
activeIndex,
slides,
loopedSlides,
allowSlidePrev,
allowSlideNext,
snapGrid,
rtlTranslate: rtl
}=swiper;
let newIndex;
swiper.allowSlidePrev=true;
swiper.allowSlideNext=true;
const snapTranslate=-snapGrid[activeIndex];
const diff=snapTranslate - swiper.getTranslate();
if(activeIndex < loopedSlides){
newIndex=slides.length - loopedSlides * 3 + activeIndex;
newIndex +=loopedSlides;
const slideChanged=swiper.slideTo(newIndex, 0, false, true);
if(slideChanged&&diff!==0){
swiper.setTranslate((rtl ? -swiper.translate:swiper.translate) - diff);
}}else if(activeIndex >=slides.length - loopedSlides){
newIndex=-slides.length + activeIndex + loopedSlides;
newIndex +=loopedSlides;
const slideChanged=swiper.slideTo(newIndex, 0, false, true);
if(slideChanged&&diff!==0){
swiper.setTranslate((rtl ? -swiper.translate:swiper.translate) - diff);
}}
swiper.allowSlidePrev=allowSlidePrev;
swiper.allowSlideNext=allowSlideNext;
swiper.emit('loopFix');
}
function loopDestroy(){
const swiper=this;
const {
$wrapperEl,
params,
slides
}=swiper;
$wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();
slides.removeAttr('data-swiper-slide-index');
}
var loop={
loopCreate,
loopFix,
loopDestroy
};
function setGrabCursor(moving){
const swiper=this;
if(swiper.support.touch||!swiper.params.simulateTouch||swiper.params.watchOverflow&&swiper.isLocked||swiper.params.cssMode) return;
const el=swiper.params.touchEventsTarget==='container' ? swiper.el:swiper.wrapperEl;
el.style.cursor='move';
el.style.cursor=moving ? 'grabbing':'grab';
}
function unsetGrabCursor(){
const swiper=this;
if(swiper.support.touch||swiper.params.watchOverflow&&swiper.isLocked||swiper.params.cssMode){
return;
}
swiper[swiper.params.touchEventsTarget==='container' ? 'el':'wrapperEl'].style.cursor='';
}
var grabCursor={
setGrabCursor,
unsetGrabCursor
};
function closestElement(selector, base){
if(base===void 0){
base=this;
}
function __closestFrom(el){
if(!el||el===getDocument()||el===getWindow()) return null;
if(el.assignedSlot) el=el.assignedSlot;
const found=el.closest(selector);
if(!found&&!el.getRootNode){
return null;
}
return found||__closestFrom(el.getRootNode().host);
}
return __closestFrom(base);
}
function onTouchStart(event){
const swiper=this;
const document=getDocument();
const window=getWindow();
const data=swiper.touchEventsData;
const {
params,
touches,
enabled
}=swiper;
if(!enabled) return;
if(swiper.animating&&params.preventInteractionOnTransition){
return;
}
if(!swiper.animating&&params.cssMode&&params.loop){
swiper.loopFix();
}
let e=event;
if(e.originalEvent) e=e.originalEvent;
let $targetEl=$(e.target);
if(params.touchEventsTarget==='wrapper'){
if(!$targetEl.closest(swiper.wrapperEl).length) return;
}
data.isTouchEvent=e.type==='touchstart';
if(!data.isTouchEvent&&'which' in e&&e.which===3) return;
if(!data.isTouchEvent&&'button' in e&&e.button > 0) return;
if(data.isTouched&&data.isMoved) return;
const swipingClassHasValue = !!params.noSwipingClass&&params.noSwipingClass!=='';
const eventPath=event.composedPath ? event.composedPath():event.path;
if(swipingClassHasValue&&e.target&&e.target.shadowRoot&&eventPath){
$targetEl=$(eventPath[0]);
}
const noSwipingSelector=params.noSwipingSelector ? params.noSwipingSelector:`.${params.noSwipingClass}`;
const isTargetShadow = !!(e.target&&e.target.shadowRoot);
if(params.noSwiping&&(isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]):$targetEl.closest(noSwipingSelector)[0])){
swiper.allowClick=true;
return;
}
if(params.swipeHandler){
if(!$targetEl.closest(params.swipeHandler)[0]) return;
}
touches.currentX=e.type==='touchstart' ? e.targetTouches[0].pageX:e.pageX;
touches.currentY=e.type==='touchstart' ? e.targetTouches[0].pageY:e.pageY;
const startX=touches.currentX;
const startY=touches.currentY;
const edgeSwipeDetection=params.edgeSwipeDetection||params.iOSEdgeSwipeDetection;
const edgeSwipeThreshold=params.edgeSwipeThreshold||params.iOSEdgeSwipeThreshold;
if(edgeSwipeDetection&&(startX <=edgeSwipeThreshold||startX >=window.innerWidth - edgeSwipeThreshold)){
if(edgeSwipeDetection==='prevent'){
event.preventDefault();
}else{
return;
}}
Object.assign(data, {
isTouched: true,
isMoved: false,
allowTouchCallbacks: true,
isScrolling: undefined,
startMoving: undefined
});
touches.startX=startX;
touches.startY=startY;
data.touchStartTime=now();
swiper.allowClick=true;
swiper.updateSize();
swiper.swipeDirection=undefined;
if(params.threshold > 0) data.allowThresholdMove=false;
if(e.type!=='touchstart'){
let preventDefault=true;
if($targetEl.is(data.focusableElements)){
preventDefault=false;
if($targetEl[0].nodeName==='SELECT'){
data.isTouched=false;
}}
if(document.activeElement&&$(document.activeElement).is(data.focusableElements)&&document.activeElement!==$targetEl[0]){
document.activeElement.blur();
}
const shouldPreventDefault=preventDefault&&swiper.allowTouchMove&&params.touchStartPreventDefault;
if((params.touchStartForcePreventDefault||shouldPreventDefault)&&!$targetEl[0].isContentEditable){
e.preventDefault();
}}
if(swiper.params.freeMode&&swiper.params.freeMode.enabled&&swiper.freeMode&&swiper.animating&&!params.cssMode){
swiper.freeMode.onTouchStart();
}
swiper.emit('touchStart', e);
}
function onTouchMove(event){
const document=getDocument();
const swiper=this;
const data=swiper.touchEventsData;
const {
params,
touches,
rtlTranslate: rtl,
enabled
}=swiper;
if(!enabled) return;
let e=event;
if(e.originalEvent) e=e.originalEvent;
if(!data.isTouched){
if(data.startMoving&&data.isScrolling){
swiper.emit('touchMoveOpposite', e);
}
return;
}
if(data.isTouchEvent&&e.type!=='touchmove') return;
const targetTouch=e.type==='touchmove'&&e.targetTouches&&(e.targetTouches[0]||e.changedTouches[0]);
const pageX=e.type==='touchmove' ? targetTouch.pageX:e.pageX;
const pageY=e.type==='touchmove' ? targetTouch.pageY:e.pageY;
if(e.preventedByNestedSwiper){
touches.startX=pageX;
touches.startY=pageY;
return;
}
if(!swiper.allowTouchMove){
if(!$(e.target).is(data.focusableElements)){
swiper.allowClick=false;
}
if(data.isTouched){
Object.assign(touches, {
startX: pageX,
startY: pageY,
currentX: pageX,
currentY: pageY
});
data.touchStartTime=now();
}
return;
}
if(data.isTouchEvent&&params.touchReleaseOnEdges&&!params.loop){
if(swiper.isVertical()){
if(pageY < touches.startY&&swiper.translate <=swiper.maxTranslate()||pageY > touches.startY&&swiper.translate >=swiper.minTranslate()){
data.isTouched=false;
data.isMoved=false;
return;
}}else if(pageX < touches.startX&&swiper.translate <=swiper.maxTranslate()||pageX > touches.startX&&swiper.translate >=swiper.minTranslate()){
return;
}}
if(data.isTouchEvent&&document.activeElement){
if(e.target===document.activeElement&&$(e.target).is(data.focusableElements)){
data.isMoved=true;
swiper.allowClick=false;
return;
}}
if(data.allowTouchCallbacks){
swiper.emit('touchMove', e);
}
if(e.targetTouches&&e.targetTouches.length > 1) return;
touches.currentX=pageX;
touches.currentY=pageY;
const diffX=touches.currentX - touches.startX;
const diffY=touches.currentY - touches.startY;
if(swiper.params.threshold&&Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
if(typeof data.isScrolling==='undefined'){
let touchAngle;
if(swiper.isHorizontal()&&touches.currentY===touches.startY||swiper.isVertical()&&touches.currentX===touches.startX){
data.isScrolling=false;
}else{
if(diffX * diffX + diffY * diffY >=25){
touchAngle=Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
data.isScrolling=swiper.isHorizontal() ? touchAngle > params.touchAngle:90 - touchAngle > params.touchAngle;
}}
}
if(data.isScrolling){
swiper.emit('touchMoveOpposite', e);
}
if(typeof data.startMoving==='undefined'){
if(touches.currentX!==touches.startX||touches.currentY!==touches.startY){
data.startMoving=true;
}}
if(data.isScrolling){
data.isTouched=false;
return;
}
if(!data.startMoving){
return;
}
swiper.allowClick=false;
if(!params.cssMode&&e.cancelable){
e.preventDefault();
}
if(params.touchMoveStopPropagation&&!params.nested){
e.stopPropagation();
}
if(!data.isMoved){
if(params.loop&&!params.cssMode){
swiper.loopFix();
}
data.startTranslate=swiper.getTranslate();
swiper.setTransition(0);
if(swiper.animating){
swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
}
data.allowMomentumBounce=false;
if(params.grabCursor&&(swiper.allowSlideNext===true||swiper.allowSlidePrev===true)){
swiper.setGrabCursor(true);
}
swiper.emit('sliderFirstMove', e);
}
swiper.emit('sliderMove', e);
data.isMoved=true;
let diff=swiper.isHorizontal() ? diffX:diffY;
touches.diff=diff;
diff *=params.touchRatio;
if(rtl) diff=-diff;
swiper.swipeDirection=diff > 0 ? 'prev':'next';
data.currentTranslate=diff + data.startTranslate;
let disableParentSwiper=true;
let resistanceRatio=params.resistanceRatio;
if(params.touchReleaseOnEdges){
resistanceRatio=0;
}
if(diff > 0&&data.currentTranslate > swiper.minTranslate()){
disableParentSwiper=false;
if(params.resistance) data.currentTranslate=swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
}else if(diff < 0&&data.currentTranslate < swiper.maxTranslate()){
disableParentSwiper=false;
if(params.resistance) data.currentTranslate=swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
}
if(disableParentSwiper){
e.preventedByNestedSwiper=true;
}
if(!swiper.allowSlideNext&&swiper.swipeDirection==='next'&&data.currentTranslate < data.startTranslate){
data.currentTranslate=data.startTranslate;
}
if(!swiper.allowSlidePrev&&swiper.swipeDirection==='prev'&&data.currentTranslate > data.startTranslate){
data.currentTranslate=data.startTranslate;
}
if(!swiper.allowSlidePrev&&!swiper.allowSlideNext){
data.currentTranslate=data.startTranslate;
}
if(params.threshold > 0){
if(Math.abs(diff) > params.threshold||data.allowThresholdMove){
if(!data.allowThresholdMove){
data.allowThresholdMove=true;
touches.startX=touches.currentX;
touches.startY=touches.currentY;
data.currentTranslate=data.startTranslate;
touches.diff=swiper.isHorizontal() ? touches.currentX - touches.startX:touches.currentY - touches.startY;
return;
}}else{
data.currentTranslate=data.startTranslate;
return;
}}
if(!params.followFinger||params.cssMode) return;
if(params.freeMode&&params.freeMode.enabled&&swiper.freeMode||params.watchSlidesProgress){
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}
if(swiper.params.freeMode&&params.freeMode.enabled&&swiper.freeMode){
swiper.freeMode.onTouchMove();
}
swiper.updateProgress(data.currentTranslate);
swiper.setTranslate(data.currentTranslate);
}
function onTouchEnd(event){
const swiper=this;
const data=swiper.touchEventsData;
const {
params,
touches,
rtlTranslate: rtl,
slidesGrid,
enabled
}=swiper;
if(!enabled) return;
let e=event;
if(e.originalEvent) e=e.originalEvent;
if(data.allowTouchCallbacks){
swiper.emit('touchEnd', e);
}
data.allowTouchCallbacks=false;
if(!data.isTouched){
if(data.isMoved&&params.grabCursor){
swiper.setGrabCursor(false);
}
data.isMoved=false;
data.startMoving=false;
return;
}
if(params.grabCursor&&data.isMoved&&data.isTouched&&(swiper.allowSlideNext===true||swiper.allowSlidePrev===true)){
swiper.setGrabCursor(false);
}
const touchEndTime=now();
const timeDiff=touchEndTime - data.touchStartTime;
if(swiper.allowClick){
const pathTree=e.path||e.composedPath&&e.composedPath();
swiper.updateClickedSlide(pathTree&&pathTree[0]||e.target);
swiper.emit('tap click', e);
if(timeDiff < 300&&touchEndTime - data.lastClickTime < 300){
swiper.emit('doubleTap doubleClick', e);
}}
data.lastClickTime=now();
nextTick(()=> {
if(!swiper.destroyed) swiper.allowClick=true;
});
if(!data.isTouched||!data.isMoved||!swiper.swipeDirection||touches.diff===0||data.currentTranslate===data.startTranslate){
data.isTouched=false;
data.isMoved=false;
data.startMoving=false;
return;
}
data.isTouched=false;
data.isMoved=false;
data.startMoving=false;
let currentPos;
if(params.followFinger){
currentPos=rtl ? swiper.translate:-swiper.translate;
}else{
currentPos=-data.currentTranslate;
}
if(params.cssMode){
return;
}
if(swiper.params.freeMode&&params.freeMode.enabled){
swiper.freeMode.onTouchEnd({
currentPos
});
return;
}
let stopIndex=0;
let groupSize=swiper.slidesSizesGrid[0];
for (let i=0; i < slidesGrid.length; i +=i < params.slidesPerGroupSkip ? 1:params.slidesPerGroup){
const increment=i < params.slidesPerGroupSkip - 1 ? 1:params.slidesPerGroup;
if(typeof slidesGrid[i + increment]!=='undefined'){
if(currentPos >=slidesGrid[i]&&currentPos < slidesGrid[i + increment]){
stopIndex=i;
groupSize=slidesGrid[i + increment] - slidesGrid[i];
}}else if(currentPos >=slidesGrid[i]){
stopIndex=i;
groupSize=slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
}}
let rewindFirstIndex=null;
let rewindLastIndex=null;
if(params.rewind){
if(swiper.isBeginning){
rewindLastIndex=swiper.params.virtual&&swiper.params.virtual.enabled&&swiper.virtual ? swiper.virtual.slides.length - 1:swiper.slides.length - 1;
}else if(swiper.isEnd){
rewindFirstIndex=0;
}}
const ratio=(currentPos - slidesGrid[stopIndex]) / groupSize;
const increment=stopIndex < params.slidesPerGroupSkip - 1 ? 1:params.slidesPerGroup;
if(timeDiff > params.longSwipesMs){
if(!params.longSwipes){
swiper.slideTo(swiper.activeIndex);
return;
}
if(swiper.swipeDirection==='next'){
if(ratio >=params.longSwipesRatio) swiper.slideTo(params.rewind&&swiper.isEnd ? rewindFirstIndex:stopIndex + increment);else swiper.slideTo(stopIndex);
}
if(swiper.swipeDirection==='prev'){
if(ratio > 1 - params.longSwipesRatio){
swiper.slideTo(stopIndex + increment);
}else if(rewindLastIndex!==null&&ratio < 0&&Math.abs(ratio) > params.longSwipesRatio){
swiper.slideTo(rewindLastIndex);
}else{
swiper.slideTo(stopIndex);
}}
}else{
if(!params.shortSwipes){
swiper.slideTo(swiper.activeIndex);
return;
}
const isNavButtonTarget=swiper.navigation&&(e.target===swiper.navigation.nextEl||e.target===swiper.navigation.prevEl);
if(!isNavButtonTarget){
if(swiper.swipeDirection==='next'){
swiper.slideTo(rewindFirstIndex!==null ? rewindFirstIndex:stopIndex + increment);
}
if(swiper.swipeDirection==='prev'){
swiper.slideTo(rewindLastIndex!==null ? rewindLastIndex:stopIndex);
}}else if(e.target===swiper.navigation.nextEl){
swiper.slideTo(stopIndex + increment);
}else{
swiper.slideTo(stopIndex);
}}
}
function onResize(){
const swiper=this;
const {
params,
el
}=swiper;
if(el&&el.offsetWidth===0) return;
if(params.breakpoints){
swiper.setBreakpoint();
}
const {
allowSlideNext,
allowSlidePrev,
snapGrid
}=swiper;
swiper.allowSlideNext=true;
swiper.allowSlidePrev=true;
swiper.updateSize();
swiper.updateSlides();
swiper.updateSlidesClasses();
if((params.slidesPerView==='auto'||params.slidesPerView > 1)&&swiper.isEnd&&!swiper.isBeginning&&!swiper.params.centeredSlides){
swiper.slideTo(swiper.slides.length - 1, 0, false, true);
}else{
swiper.slideTo(swiper.activeIndex, 0, false, true);
}
if(swiper.autoplay&&swiper.autoplay.running&&swiper.autoplay.paused){
swiper.autoplay.run();
}
swiper.allowSlidePrev=allowSlidePrev;
swiper.allowSlideNext=allowSlideNext;
if(swiper.params.watchOverflow&&snapGrid!==swiper.snapGrid){
swiper.checkOverflow();
}}
function onClick(e){
const swiper=this;
if(!swiper.enabled) return;
if(!swiper.allowClick){
if(swiper.params.preventClicks) e.preventDefault();
if(swiper.params.preventClicksPropagation&&swiper.animating){
e.stopPropagation();
e.stopImmediatePropagation();
}}
}
function onScroll(){
const swiper=this;
const {
wrapperEl,
rtlTranslate,
enabled
}=swiper;
if(!enabled) return;
swiper.previousTranslate=swiper.translate;
if(swiper.isHorizontal()){
swiper.translate=-wrapperEl.scrollLeft;
}else{
swiper.translate=-wrapperEl.scrollTop;
}
if(swiper.translate===0) swiper.translate=0;
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
let newProgress;
const translatesDiff=swiper.maxTranslate() - swiper.minTranslate();
if(translatesDiff===0){
newProgress=0;
}else{
newProgress=(swiper.translate - swiper.minTranslate()) / translatesDiff;
}
if(newProgress!==swiper.progress){
swiper.updateProgress(rtlTranslate ? -swiper.translate:swiper.translate);
}
swiper.emit('setTranslate', swiper.translate, false);
}
let dummyEventAttached=false;
function dummyEventListener(){}
const events=(swiper, method)=> {
const document=getDocument();
const {
params,
touchEvents,
el,
wrapperEl,
device,
support
}=swiper;
const capture = !!params.nested;
const domMethod=method==='on' ? 'addEventListener':'removeEventListener';
const swiperMethod=method;
if(!support.touch){
el[domMethod](touchEvents.start, swiper.onTouchStart, false);
document[domMethod](touchEvents.move, swiper.onTouchMove, capture);
document[domMethod](touchEvents.end, swiper.onTouchEnd, false);
}else{
const passiveListener=touchEvents.start==='touchstart'&&support.passiveListener&&params.passiveListeners ? {
passive: true,
capture: false
}:false;
el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);
el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
passive: false,
capture
}:capture);
el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);
if(touchEvents.cancel){
el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);
}}
if(params.preventClicks||params.preventClicksPropagation){
el[domMethod]('click', swiper.onClick, true);
}
if(params.cssMode){
wrapperEl[domMethod]('scroll', swiper.onScroll);
}
if(params.updateOnWindowResize){
swiper[swiperMethod](device.ios||device.android ? 'resize orientationchange observerUpdate':'resize observerUpdate', onResize, true);
}else{
swiper[swiperMethod]('observerUpdate', onResize, true);
}};
function attachEvents(){
const swiper=this;
const document=getDocument();
const {
params,
support
}=swiper;
swiper.onTouchStart=onTouchStart.bind(swiper);
swiper.onTouchMove=onTouchMove.bind(swiper);
swiper.onTouchEnd=onTouchEnd.bind(swiper);
if(params.cssMode){
swiper.onScroll=onScroll.bind(swiper);
}
swiper.onClick=onClick.bind(swiper);
if(support.touch&&!dummyEventAttached){
document.addEventListener('touchstart', dummyEventListener);
dummyEventAttached=true;
}
events(swiper, 'on');
}
function detachEvents(){
const swiper=this;
events(swiper, 'off');
}
var events$1={
attachEvents,
detachEvents
};
const isGridEnabled=(swiper, params)=> {
return swiper.grid&&params.grid&&params.grid.rows > 1;
};
function setBreakpoint(){
const swiper=this;
const {
activeIndex,
initialized,
loopedSlides=0,
params,
$el
}=swiper;
const breakpoints=params.breakpoints;
if(!breakpoints||breakpoints&&Object.keys(breakpoints).length===0) return;
const breakpoint=swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
if(!breakpoint||swiper.currentBreakpoint===breakpoint) return;
const breakpointOnlyParams=breakpoint in breakpoints ? breakpoints[breakpoint]:undefined;
const breakpointParams=breakpointOnlyParams||swiper.originalParams;
const wasMultiRow=isGridEnabled(swiper, params);
const isMultiRow=isGridEnabled(swiper, breakpointParams);
const wasEnabled=params.enabled;
if(wasMultiRow&&!isMultiRow){
$el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);
swiper.emitContainerClasses();
}else if(!wasMultiRow&&isMultiRow){
$el.addClass(`${params.containerModifierClass}grid`);
if(breakpointParams.grid.fill&&breakpointParams.grid.fill==='column'||!breakpointParams.grid.fill&&params.grid.fill==='column'){
$el.addClass(`${params.containerModifierClass}grid-column`);
}
swiper.emitContainerClasses();
}
['navigation', 'pagination', 'scrollbar'].forEach(prop=> {
const wasModuleEnabled=params[prop]&&params[prop].enabled;
const isModuleEnabled=breakpointParams[prop]&&breakpointParams[prop].enabled;
if(wasModuleEnabled&&!isModuleEnabled){
swiper[prop].disable();
}
if(!wasModuleEnabled&&isModuleEnabled){
swiper[prop].enable();
}});
const directionChanged=breakpointParams.direction&&breakpointParams.direction!==params.direction;
const needsReLoop=params.loop&&(breakpointParams.slidesPerView!==params.slidesPerView||directionChanged);
if(directionChanged&&initialized){
swiper.changeDirection();
}
extend(swiper.params, breakpointParams);
const isEnabled=swiper.params.enabled;
Object.assign(swiper, {
allowTouchMove: swiper.params.allowTouchMove,
allowSlideNext: swiper.params.allowSlideNext,
allowSlidePrev: swiper.params.allowSlidePrev
});
if(wasEnabled&&!isEnabled){
swiper.disable();
}else if(!wasEnabled&&isEnabled){
swiper.enable();
}
swiper.currentBreakpoint=breakpoint;
swiper.emit('_beforeBreakpoint', breakpointParams);
if(needsReLoop&&initialized){
swiper.loopDestroy();
swiper.loopCreate();
swiper.updateSlides();
swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
}
swiper.emit('breakpoint', breakpointParams);
}
function getBreakpoint(breakpoints, base, containerEl){
if(base===void 0){
base='window';
}
if(!breakpoints||base==='container'&&!containerEl) return undefined;
let breakpoint=false;
const window=getWindow();
const currentHeight=base==='window' ? window.innerHeight:containerEl.clientHeight;
const points=Object.keys(breakpoints).map(point=> {
if(typeof point==='string'&&point.indexOf('@')===0){
const minRatio=parseFloat(point.substr(1));
const value=currentHeight * minRatio;
return {
value,
point
};}
return {
value: point,
point
};});
points.sort((a, b)=> parseInt(a.value, 10) - parseInt(b.value, 10));
for (let i=0; i < points.length; i +=1){
const {
point,
value
}=points[i];
if(base==='window'){
if(window.matchMedia(`(min-width: ${value}px)`).matches){
breakpoint=point;
}}else if(value <=containerEl.clientWidth){
breakpoint=point;
}}
return breakpoint||'max';
}
var breakpoints={
setBreakpoint,
getBreakpoint
};
function prepareClasses(entries, prefix){
const resultClasses=[];
entries.forEach(item=> {
if(typeof item==='object'){
Object.keys(item).forEach(classNames=> {
if(item[classNames]){
resultClasses.push(prefix + classNames);
}});
}else if(typeof item==='string'){
resultClasses.push(prefix + item);
}});
return resultClasses;
}
function addClasses(){
const swiper=this;
const {
classNames,
params,
rtl,
$el,
device,
support
}=swiper;
const suffixes=prepareClasses(['initialized', params.direction, {
'pointer-events': !support.touch
}, {
'free-mode': swiper.params.freeMode&&params.freeMode.enabled
}, {
'autoheight': params.autoHeight
}, {
'rtl': rtl
}, {
'grid': params.grid&&params.grid.rows > 1
}, {
'grid-column': params.grid&&params.grid.rows > 1&&params.grid.fill==='column'
}, {
'android': device.android
}, {
'ios': device.ios
}, {
'css-mode': params.cssMode
}, {
'centered': params.cssMode&&params.centeredSlides
}, {
'watch-progress': params.watchSlidesProgress
}], params.containerModifierClass);
classNames.push(...suffixes);
$el.addClass([...classNames].join(' '));
swiper.emitContainerClasses();
}
function removeClasses(){
const swiper=this;
const {
$el,
classNames
}=swiper;
$el.removeClass(classNames.join(' '));
swiper.emitContainerClasses();
}
var classes={
addClasses,
removeClasses
};
function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback){
const window=getWindow();
let image;
function onReady(){
if(callback) callback();
}
const isPicture=$(imageEl).parent('picture')[0];
if(!isPicture&&(!imageEl.complete||!checkForComplete)){
if(src){
image=new window.Image();
image.onload=onReady;
image.onerror=onReady;
if(sizes){
image.sizes=sizes;
}
if(srcset){
image.srcset=srcset;
}
if(src){
image.src=src;
}}else{
onReady();
}}else{
onReady();
}}
function preloadImages(){
const swiper=this;
swiper.imagesToLoad=swiper.$el.find('img');
function onReady(){
if(typeof swiper==='undefined'||swiper===null||!swiper||swiper.destroyed) return;
if(swiper.imagesLoaded!==undefined) swiper.imagesLoaded +=1;
if(swiper.imagesLoaded===swiper.imagesToLoad.length){
if(swiper.params.updateOnImagesReady) swiper.update();
swiper.emit('imagesReady');
}}
for (let i=0; i < swiper.imagesToLoad.length; i +=1){
const imageEl=swiper.imagesToLoad[i];
swiper.loadImage(imageEl, imageEl.currentSrc||imageEl.getAttribute('src'), imageEl.srcset||imageEl.getAttribute('srcset'), imageEl.sizes||imageEl.getAttribute('sizes'), true, onReady);
}}
var images={
loadImage,
preloadImages
};
function checkOverflow(){
const swiper=this;
const {
isLocked: wasLocked,
params
}=swiper;
const {
slidesOffsetBefore
}=params;
if(slidesOffsetBefore){
const lastSlideIndex=swiper.slides.length - 1;
const lastSlideRightEdge=swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
swiper.isLocked=swiper.size > lastSlideRightEdge;
}else{
swiper.isLocked=swiper.snapGrid.length===1;
}
if(params.allowSlideNext===true){
swiper.allowSlideNext = !swiper.isLocked;
}
if(params.allowSlidePrev===true){
swiper.allowSlidePrev = !swiper.isLocked;
}
if(wasLocked&&wasLocked!==swiper.isLocked){
swiper.isEnd=false;
}
if(wasLocked!==swiper.isLocked){
swiper.emit(swiper.isLocked ? 'lock':'unlock');
}}
var checkOverflow$1={
checkOverflow
};
var defaults={
init: true,
direction: 'horizontal',
touchEventsTarget: 'wrapper',
initialSlide: 0,
speed: 300,
cssMode: false,
updateOnWindowResize: true,
resizeObserver: true,
nested: false,
createElements: false,
enabled: true,
focusableElements: 'input, select, option, textarea, button, video, label',
width: null,
height: null,
preventInteractionOnTransition: false,
userAgent: null,
url: null,
edgeSwipeDetection: false,
edgeSwipeThreshold: 20,
autoHeight: false,
setWrapperSize: false,
virtualTranslate: false,
effect: 'slide',
breakpoints: undefined,
breakpointsBase: 'window',
spaceBetween: 0,
slidesPerView: 1,
slidesPerGroup: 1,
slidesPerGroupSkip: 0,
slidesPerGroupAuto: false,
centeredSlides: false,
centeredSlidesBounds: false,
slidesOffsetBefore: 0,
slidesOffsetAfter: 0,
normalizeSlideIndex: true,
centerInsufficientSlides: false,
watchOverflow: true,
roundLengths: false,
touchRatio: 1,
touchAngle: 45,
simulateTouch: true,
shortSwipes: true,
longSwipes: true,
longSwipesRatio: 0.5,
longSwipesMs: 300,
followFinger: true,
allowTouchMove: true,
threshold: 0,
touchMoveStopPropagation: false,
touchStartPreventDefault: true,
touchStartForcePreventDefault: false,
touchReleaseOnEdges: false,
uniqueNavElements: true,
resistance: true,
resistanceRatio: 0.85,
watchSlidesProgress: false,
grabCursor: false,
preventClicks: true,
preventClicksPropagation: true,
slideToClickedSlide: false,
preloadImages: true,
updateOnImagesReady: true,
loop: false,
loopAdditionalSlides: 0,
loopedSlides: null,
loopedSlidesLimit: true,
loopFillGroupWithBlank: false,
loopPreventsSlide: true,
rewind: false,
allowSlidePrev: true,
allowSlideNext: true,
swipeHandler: null,
noSwiping: true,
noSwipingClass: 'swiper-no-swiping',
noSwipingSelector: null,
passiveListeners: true,
maxBackfaceHiddenSlides: 10,
containerModifierClass: 'swiper-',
slideClass: 'swiper-slide',
slideBlankClass: 'swiper-slide-invisible-blank',
slideActiveClass: 'swiper-slide-active',
slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
slideVisibleClass: 'swiper-slide-visible',
slideDuplicateClass: 'swiper-slide-duplicate',
slideNextClass: 'swiper-slide-next',
slideDuplicateNextClass: 'swiper-slide-duplicate-next',
slidePrevClass: 'swiper-slide-prev',
slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
wrapperClass: 'swiper-wrapper',
runCallbacksOnInit: true,
_emitClasses: false
};
function moduleExtendParams(params, allModulesParams){
return function extendParams(obj){
if(obj===void 0){
obj={};}
const moduleParamName=Object.keys(obj)[0];
const moduleParams=obj[moduleParamName];
if(typeof moduleParams!=='object'||moduleParams===null){
extend(allModulesParams, obj);
return;
}
if(['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >=0&&params[moduleParamName]===true){
params[moduleParamName]={
auto: true
};}
if(!(moduleParamName in params&&'enabled' in moduleParams)){
extend(allModulesParams, obj);
return;
}
if(params[moduleParamName]===true){
params[moduleParamName]={
enabled: true
};}
if(typeof params[moduleParamName]==='object'&&!('enabled' in params[moduleParamName])){
params[moduleParamName].enabled=true;
}
if(!params[moduleParamName]) params[moduleParamName]={
enabled: false
};
extend(allModulesParams, obj);
};}
const prototypes={
eventsEmitter,
update,
translate,
transition,
slide,
loop,
grabCursor,
events: events$1,
breakpoints,
checkOverflow: checkOverflow$1,
classes,
images
};
const extendedDefaults={};
class Swiper {
constructor(){
let el;
let params;
for (var _len=arguments.length, args=new Array(_len), _key=0; _key < _len; _key++){
args[_key]=arguments[_key];
}
if(args.length===1&&args[0].constructor&&Object.prototype.toString.call(args[0]).slice(8, -1)==='Object'){
params=args[0];
}else{
[el, params]=args;
}
if(!params) params={};
params=extend({}, params);
if(el&&!params.el) params.el=el;
if(params.el&&$(params.el).length > 1){
const swipers=[];
$(params.el).each(containerEl=> {
const newParams=extend({}, params, {
el: containerEl
});
swipers.push(new Swiper(newParams));
});
return swipers;
}
const swiper=this;
swiper.__swiper__=true;
swiper.support=getSupport();
swiper.device=getDevice({
userAgent: params.userAgent
});
swiper.browser=getBrowser();
swiper.eventsListeners={};
swiper.eventsAnyListeners=[];
swiper.modules=[...swiper.__modules__];
if(params.modules&&Array.isArray(params.modules)){
swiper.modules.push(...params.modules);
}
const allModulesParams={};
swiper.modules.forEach(mod=> {
mod({
swiper,
extendParams: moduleExtendParams(params, allModulesParams),
on: swiper.on.bind(swiper),
once: swiper.once.bind(swiper),
off: swiper.off.bind(swiper),
emit: swiper.emit.bind(swiper)
});
});
const swiperParams=extend({}, defaults, allModulesParams);
swiper.params=extend({}, swiperParams, extendedDefaults, params);
swiper.originalParams=extend({}, swiper.params);
swiper.passedParams=extend({}, params);
if(swiper.params&&swiper.params.on){
Object.keys(swiper.params.on).forEach(eventName=> {
swiper.on(eventName, swiper.params.on[eventName]);
});
}
if(swiper.params&&swiper.params.onAny){
swiper.onAny(swiper.params.onAny);
}
swiper.$=$;
Object.assign(swiper, {
enabled: swiper.params.enabled,
el,
classNames: [],
slides: $(),
slidesGrid: [],
snapGrid: [],
slidesSizesGrid: [],
isHorizontal(){
return swiper.params.direction==='horizontal';
},
isVertical(){
return swiper.params.direction==='vertical';
},
activeIndex: 0,
realIndex: 0,
isBeginning: true,
isEnd: false,
translate: 0,
previousTranslate: 0,
progress: 0,
velocity: 0,
animating: false,
allowSlideNext: swiper.params.allowSlideNext,
allowSlidePrev: swiper.params.allowSlidePrev,
touchEvents: function touchEvents(){
const touch=['touchstart', 'touchmove', 'touchend', 'touchcancel'];
const desktop=['pointerdown', 'pointermove', 'pointerup'];
swiper.touchEventsTouch={
start: touch[0],
move: touch[1],
end: touch[2],
cancel: touch[3]
};
swiper.touchEventsDesktop={
start: desktop[0],
move: desktop[1],
end: desktop[2]
};
return swiper.support.touch||!swiper.params.simulateTouch ? swiper.touchEventsTouch:swiper.touchEventsDesktop;
}(),
touchEventsData: {
isTouched: undefined,
isMoved: undefined,
allowTouchCallbacks: undefined,
touchStartTime: undefined,
isScrolling: undefined,
currentTranslate: undefined,
startTranslate: undefined,
allowThresholdMove: undefined,
focusableElements: swiper.params.focusableElements,
lastClickTime: now(),
clickTimeout: undefined,
velocities: [],
allowMomentumBounce: undefined,
isTouchEvent: undefined,
startMoving: undefined
},
allowClick: true,
allowTouchMove: swiper.params.allowTouchMove,
touches: {
startX: 0,
startY: 0,
currentX: 0,
currentY: 0,
diff: 0
},
imagesToLoad: [],
imagesLoaded: 0
});
swiper.emit('_swiper');
if(swiper.params.init){
swiper.init();
}
return swiper;
}
enable(){
const swiper=this;
if(swiper.enabled) return;
swiper.enabled=true;
if(swiper.params.grabCursor){
swiper.setGrabCursor();
}
swiper.emit('enable');
}
disable(){
const swiper=this;
if(!swiper.enabled) return;
swiper.enabled=false;
if(swiper.params.grabCursor){
swiper.unsetGrabCursor();
}
swiper.emit('disable');
}
setProgress(progress, speed){
const swiper=this;
progress=Math.min(Math.max(progress, 0), 1);
const min=swiper.minTranslate();
const max=swiper.maxTranslate();
const current=(max - min) * progress + min;
swiper.translateTo(current, typeof speed==='undefined' ? 0:speed);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}
emitContainerClasses(){
const swiper=this;
if(!swiper.params._emitClasses||!swiper.el) return;
const cls=swiper.el.className.split(' ').filter(className=> {
return className.indexOf('swiper')===0||className.indexOf(swiper.params.containerModifierClass)===0;
});
swiper.emit('_containerClasses', cls.join(' '));
}
getSlideClasses(slideEl){
const swiper=this;
if(swiper.destroyed) return '';
return slideEl.className.split(' ').filter(className=> {
return className.indexOf('swiper-slide')===0||className.indexOf(swiper.params.slideClass)===0;
}).join(' ');
}
emitSlidesClasses(){
const swiper=this;
if(!swiper.params._emitClasses||!swiper.el) return;
const updates=[];
swiper.slides.each(slideEl=> {
const classNames=swiper.getSlideClasses(slideEl);
updates.push({
slideEl,
classNames
});
swiper.emit('_slideClass', slideEl, classNames);
});
swiper.emit('_slideClasses', updates);
}
slidesPerViewDynamic(view, exact){
if(view===void 0){
view='current';
}
if(exact===void 0){
exact=false;
}
const swiper=this;
const {
params,
slides,
slidesGrid,
slidesSizesGrid,
size: swiperSize,
activeIndex
}=swiper;
let spv=1;
if(params.centeredSlides){
let slideSize=slides[activeIndex].swiperSlideSize;
let breakLoop;
for (let i=activeIndex + 1; i < slides.length; i +=1){
if(slides[i]&&!breakLoop){
slideSize +=slides[i].swiperSlideSize;
spv +=1;
if(slideSize > swiperSize) breakLoop=true;
}}
for (let i=activeIndex - 1; i >=0; i -=1){
if(slides[i]&&!breakLoop){
slideSize +=slides[i].swiperSlideSize;
spv +=1;
if(slideSize > swiperSize) breakLoop=true;
}}
}else{
if(view==='current'){
for (let i=activeIndex + 1; i < slides.length; i +=1){
const slideInView=exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize:slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
if(slideInView){
spv +=1;
}}
}else{
for (let i=activeIndex - 1; i >=0; i -=1){
const slideInView=slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
if(slideInView){
spv +=1;
}}
}}
return spv;
}
update(){
const swiper=this;
if(!swiper||swiper.destroyed) return;
const {
snapGrid,
params
}=swiper;
if(params.breakpoints){
swiper.setBreakpoint();
}
swiper.updateSize();
swiper.updateSlides();
swiper.updateProgress();
swiper.updateSlidesClasses();
function setTranslate(){
const translateValue=swiper.rtlTranslate ? swiper.translate * -1:swiper.translate;
const newTranslate=Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
swiper.setTranslate(newTranslate);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}
let translated;
if(swiper.params.freeMode&&swiper.params.freeMode.enabled){
setTranslate();
if(swiper.params.autoHeight){
swiper.updateAutoHeight();
}}else{
if((swiper.params.slidesPerView==='auto'||swiper.params.slidesPerView > 1)&&swiper.isEnd&&!swiper.params.centeredSlides){
translated=swiper.slideTo(swiper.slides.length - 1, 0, false, true);
}else{
translated=swiper.slideTo(swiper.activeIndex, 0, false, true);
}
if(!translated){
setTranslate();
}}
if(params.watchOverflow&&snapGrid!==swiper.snapGrid){
swiper.checkOverflow();
}
swiper.emit('update');
}
changeDirection(newDirection, needUpdate){
if(needUpdate===void 0){
needUpdate=true;
}
const swiper=this;
const currentDirection=swiper.params.direction;
if(!newDirection){
newDirection=currentDirection==='horizontal' ? 'vertical':'horizontal';
}
if(newDirection===currentDirection||newDirection!=='horizontal'&&newDirection!=='vertical'){
return swiper;
}
swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);
swiper.emitContainerClasses();
swiper.params.direction=newDirection;
swiper.slides.each(slideEl=> {
if(newDirection==='vertical'){
slideEl.style.width='';
}else{
slideEl.style.height='';
}});
swiper.emit('changeDirection');
if(needUpdate) swiper.update();
return swiper;
}
changeLanguageDirection(direction){
const swiper=this;
if(swiper.rtl&&direction==='rtl'||!swiper.rtl&&direction==='ltr') return;
swiper.rtl=direction==='rtl';
swiper.rtlTranslate=swiper.params.direction==='horizontal'&&swiper.rtl;
if(swiper.rtl){
swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);
swiper.el.dir='rtl';
}else{
swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);
swiper.el.dir='ltr';
}
swiper.update();
}
mount(el){
const swiper=this;
if(swiper.mounted) return true;
const $el=$(el||swiper.params.el);
el=$el[0];
if(!el){
return false;
}
el.swiper=swiper;
const getWrapperSelector=()=> {
return `.${(swiper.params.wrapperClass||'').trim().split(' ').join('.')}`;
};
const getWrapper=()=> {
if(el&&el.shadowRoot&&el.shadowRoot.querySelector){
const res=$(el.shadowRoot.querySelector(getWrapperSelector()));
res.children=options=> $el.children(options);
return res;
}
if(!$el.children){
return $($el).children(getWrapperSelector());
}
return $el.children(getWrapperSelector());
};
let $wrapperEl=getWrapper();
if($wrapperEl.length===0&&swiper.params.createElements){
const document=getDocument();
const wrapper=document.createElement('div');
$wrapperEl=$(wrapper);
wrapper.className=swiper.params.wrapperClass;
$el.append(wrapper);
$el.children(`.${swiper.params.slideClass}`).each(slideEl=> {
$wrapperEl.append(slideEl);
});
}
Object.assign(swiper, {
$el,
el,
$wrapperEl,
wrapperEl: $wrapperEl[0],
mounted: true,
rtl: el.dir.toLowerCase()==='rtl'||$el.css('direction')==='rtl',
rtlTranslate: swiper.params.direction==='horizontal'&&(el.dir.toLowerCase()==='rtl'||$el.css('direction')==='rtl'),
wrongRTL: $wrapperEl.css('display')==='-webkit-box'
});
return true;
}
init(el){
const swiper=this;
if(swiper.initialized) return swiper;
const mounted=swiper.mount(el);
if(mounted===false) return swiper;
swiper.emit('beforeInit');
if(swiper.params.breakpoints){
swiper.setBreakpoint();
}
swiper.addClasses();
if(swiper.params.loop){
swiper.loopCreate();
}
swiper.updateSize();
swiper.updateSlides();
if(swiper.params.watchOverflow){
swiper.checkOverflow();
}
if(swiper.params.grabCursor&&swiper.enabled){
swiper.setGrabCursor();
}
if(swiper.params.preloadImages){
swiper.preloadImages();
}
if(swiper.params.loop){
swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
}else{
swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
}
swiper.attachEvents();
swiper.initialized=true;
swiper.emit('init');
swiper.emit('afterInit');
return swiper;
}
destroy(deleteInstance, cleanStyles){
if(deleteInstance===void 0){
deleteInstance=true;
}
if(cleanStyles===void 0){
cleanStyles=true;
}
const swiper=this;
const {
params,
$el,
$wrapperEl,
slides
}=swiper;
if(typeof swiper.params==='undefined'||swiper.destroyed){
return null;
}
swiper.emit('beforeDestroy');
swiper.initialized=false;
swiper.detachEvents();
if(params.loop){
swiper.loopDestroy();
}
if(cleanStyles){
swiper.removeClasses();
$el.removeAttr('style');
$wrapperEl.removeAttr('style');
if(slides&&slides.length){
slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
}}
swiper.emit('destroy');
Object.keys(swiper.eventsListeners).forEach(eventName=> {
swiper.off(eventName);
});
if(deleteInstance!==false){
swiper.$el[0].swiper=null;
deleteProps(swiper);
}
swiper.destroyed=true;
return null;
}
static extendDefaults(newDefaults){
extend(extendedDefaults, newDefaults);
}
static get extendedDefaults(){
return extendedDefaults;
}
static get defaults(){
return defaults;
}
static installModule(mod){
if(!Swiper.prototype.__modules__) Swiper.prototype.__modules__=[];
const modules=Swiper.prototype.__modules__;
if(typeof mod==='function'&&modules.indexOf(mod) < 0){
modules.push(mod);
}}
static use(module){
if(Array.isArray(module)){
module.forEach(m=> Swiper.installModule(m));
return Swiper;
}
Swiper.installModule(module);
return Swiper;
}}
Object.keys(prototypes).forEach(prototypeGroup=> {
Object.keys(prototypes[prototypeGroup]).forEach(protoMethod=> {
Swiper.prototype[protoMethod]=prototypes[prototypeGroup][protoMethod];
});
});
Swiper.use([Resize, Observer]);
function Virtual(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
extendParams({
virtual: {
enabled: false,
slides: [],
cache: true,
renderSlide: null,
renderExternal: null,
renderExternalUpdate: true,
addSlidesBefore: 0,
addSlidesAfter: 0
}});
let cssModeTimeout;
swiper.virtual={
cache: {},
from: undefined,
to: undefined,
slides: [],
offset: 0,
slidesGrid: []
};
function renderSlide(slide, index){
const params=swiper.params.virtual;
if(params.cache&&swiper.virtual.cache[index]){
return swiper.virtual.cache[index];
}
const $slideEl=params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)):$(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`);
if(!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
if(params.cache) swiper.virtual.cache[index]=$slideEl;
return $slideEl;
}
function update(force){
const {
slidesPerView,
slidesPerGroup,
centeredSlides
}=swiper.params;
const {
addSlidesBefore,
addSlidesAfter
}=swiper.params.virtual;
const {
from: previousFrom,
to: previousTo,
slides,
slidesGrid: previousSlidesGrid,
offset: previousOffset
}=swiper.virtual;
if(!swiper.params.cssMode){
swiper.updateActiveIndex();
}
const activeIndex=swiper.activeIndex||0;
let offsetProp;
if(swiper.rtlTranslate) offsetProp='right';else offsetProp=swiper.isHorizontal() ? 'left':'top';
let slidesAfter;
let slidesBefore;
if(centeredSlides){
slidesAfter=Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
slidesBefore=Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
}else{
slidesAfter=slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
slidesBefore=slidesPerGroup + addSlidesBefore;
}
const from=Math.max((activeIndex||0) - slidesBefore, 0);
const to=Math.min((activeIndex||0) + slidesAfter, slides.length - 1);
const offset=(swiper.slidesGrid[from]||0) - (swiper.slidesGrid[0]||0);
Object.assign(swiper.virtual, {
from,
to,
offset,
slidesGrid: swiper.slidesGrid
});
function onRendered(){
swiper.updateSlides();
swiper.updateProgress();
swiper.updateSlidesClasses();
if(swiper.lazy&&swiper.params.lazy.enabled){
swiper.lazy.load();
}
emit('virtualUpdate');
}
if(previousFrom===from&&previousTo===to&&!force){
if(swiper.slidesGrid!==previousSlidesGrid&&offset!==previousOffset){
swiper.slides.css(offsetProp, `${offset}px`);
}
swiper.updateProgress();
emit('virtualUpdate');
return;
}
if(swiper.params.virtual.renderExternal){
swiper.params.virtual.renderExternal.call(swiper, {
offset,
from,
to,
slides: function getSlides(){
const slidesToRender=[];
for (let i=from; i <=to; i +=1){
slidesToRender.push(slides[i]);
}
return slidesToRender;
}()
});
if(swiper.params.virtual.renderExternalUpdate){
onRendered();
}else{
emit('virtualUpdate');
}
return;
}
const prependIndexes=[];
const appendIndexes=[];
if(force){
swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();
}else{
for (let i=previousFrom; i <=previousTo; i +=1){
if(i < from||i > to){
swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove();
}}
}
for (let i=0; i < slides.length; i +=1){
if(i >=from&&i <=to){
if(typeof previousTo==='undefined'||force){
appendIndexes.push(i);
}else{
if(i > previousTo) appendIndexes.push(i);
if(i < previousFrom) prependIndexes.push(i);
}}
}
appendIndexes.forEach(index=> {
swiper.$wrapperEl.append(renderSlide(slides[index], index));
});
prependIndexes.sort((a, b)=> b - a).forEach(index=> {
swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
});
swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);
onRendered();
}
function appendSlide(slides){
if(typeof slides==='object'&&'length' in slides){
for (let i=0; i < slides.length; i +=1){
if(slides[i]) swiper.virtual.slides.push(slides[i]);
}}else{
swiper.virtual.slides.push(slides);
}
update(true);
}
function prependSlide(slides){
const activeIndex=swiper.activeIndex;
let newActiveIndex=activeIndex + 1;
let numberOfNewSlides=1;
if(Array.isArray(slides)){
for (let i=0; i < slides.length; i +=1){
if(slides[i]) swiper.virtual.slides.unshift(slides[i]);
}
newActiveIndex=activeIndex + slides.length;
numberOfNewSlides=slides.length;
}else{
swiper.virtual.slides.unshift(slides);
}
if(swiper.params.virtual.cache){
const cache=swiper.virtual.cache;
const newCache={};
Object.keys(cache).forEach(cachedIndex=> {
const $cachedEl=cache[cachedIndex];
const cachedElIndex=$cachedEl.attr('data-swiper-slide-index');
if(cachedElIndex){
$cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);
}
newCache[parseInt(cachedIndex, 10) + numberOfNewSlides]=$cachedEl;
});
swiper.virtual.cache=newCache;
}
update(true);
swiper.slideTo(newActiveIndex, 0);
}
function removeSlide(slidesIndexes){
if(typeof slidesIndexes==='undefined'||slidesIndexes===null) return;
let activeIndex=swiper.activeIndex;
if(Array.isArray(slidesIndexes)){
for (let i=slidesIndexes.length - 1; i >=0; i -=1){
swiper.virtual.slides.splice(slidesIndexes[i], 1);
if(swiper.params.virtual.cache){
delete swiper.virtual.cache[slidesIndexes[i]];
}
if(slidesIndexes[i] < activeIndex) activeIndex -=1;
activeIndex=Math.max(activeIndex, 0);
}}else{
swiper.virtual.slides.splice(slidesIndexes, 1);
if(swiper.params.virtual.cache){
delete swiper.virtual.cache[slidesIndexes];
}
if(slidesIndexes < activeIndex) activeIndex -=1;
activeIndex=Math.max(activeIndex, 0);
}
update(true);
swiper.slideTo(activeIndex, 0);
}
function removeAllSlides(){
swiper.virtual.slides=[];
if(swiper.params.virtual.cache){
swiper.virtual.cache={};}
update(true);
swiper.slideTo(0, 0);
}
on('beforeInit', ()=> {
if(!swiper.params.virtual.enabled) return;
swiper.virtual.slides=swiper.params.virtual.slides;
swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);
swiper.params.watchSlidesProgress=true;
swiper.originalParams.watchSlidesProgress=true;
if(!swiper.params.initialSlide){
update();
}});
on('setTranslate', ()=> {
if(!swiper.params.virtual.enabled) return;
if(swiper.params.cssMode&&!swiper._immediateVirtual){
clearTimeout(cssModeTimeout);
cssModeTimeout=setTimeout(()=> {
update();
}, 100);
}else{
update();
}});
on('init update resize', ()=> {
if(!swiper.params.virtual.enabled) return;
if(swiper.params.cssMode){
setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);
}});
Object.assign(swiper.virtual, {
appendSlide,
prependSlide,
removeSlide,
removeAllSlides,
update
});
}
function Keyboard(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const document=getDocument();
const window=getWindow();
swiper.keyboard={
enabled: false
};
extendParams({
keyboard: {
enabled: false,
onlyInViewport: true,
pageUpDown: true
}});
function handle(event){
if(!swiper.enabled) return;
const {
rtlTranslate: rtl
}=swiper;
let e=event;
if(e.originalEvent) e=e.originalEvent;
const kc=e.keyCode||e.charCode;
const pageUpDown=swiper.params.keyboard.pageUpDown;
const isPageUp=pageUpDown&&kc===33;
const isPageDown=pageUpDown&&kc===34;
const isArrowLeft=kc===37;
const isArrowRight=kc===39;
const isArrowUp=kc===38;
const isArrowDown=kc===40;
if(!swiper.allowSlideNext&&(swiper.isHorizontal()&&isArrowRight||swiper.isVertical()&&isArrowDown||isPageDown)){
return false;
}
if(!swiper.allowSlidePrev&&(swiper.isHorizontal()&&isArrowLeft||swiper.isVertical()&&isArrowUp||isPageUp)){
return false;
}
if(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey){
return undefined;
}
if(document.activeElement&&document.activeElement.nodeName&&(document.activeElement.nodeName.toLowerCase()==='input'||document.activeElement.nodeName.toLowerCase()==='textarea')){
return undefined;
}
if(swiper.params.keyboard.onlyInViewport&&(isPageUp||isPageDown||isArrowLeft||isArrowRight||isArrowUp||isArrowDown)){
let inView=false;
if(swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0&&swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length===0){
return undefined;
}
const $el=swiper.$el;
const swiperWidth=$el[0].clientWidth;
const swiperHeight=$el[0].clientHeight;
const windowWidth=window.innerWidth;
const windowHeight=window.innerHeight;
const swiperOffset=swiper.$el.offset();
if(rtl) swiperOffset.left -=swiper.$el[0].scrollLeft;
const swiperCoord=[[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
for (let i=0; i < swiperCoord.length; i +=1){
const point=swiperCoord[i];
if(point[0] >=0&&point[0] <=windowWidth&&point[1] >=0&&point[1] <=windowHeight){
if(point[0]===0&&point[1]===0) continue;
inView=true;
}}
if(!inView) return undefined;
}
if(swiper.isHorizontal()){
if(isPageUp||isPageDown||isArrowLeft||isArrowRight){
if(e.preventDefault) e.preventDefault();else e.returnValue=false;
}
if((isPageDown||isArrowRight)&&!rtl||(isPageUp||isArrowLeft)&&rtl) swiper.slideNext();
if((isPageUp||isArrowLeft)&&!rtl||(isPageDown||isArrowRight)&&rtl) swiper.slidePrev();
}else{
if(isPageUp||isPageDown||isArrowUp||isArrowDown){
if(e.preventDefault) e.preventDefault();else e.returnValue=false;
}
if(isPageDown||isArrowDown) swiper.slideNext();
if(isPageUp||isArrowUp) swiper.slidePrev();
}
emit('keyPress', kc);
return undefined;
}
function enable(){
if(swiper.keyboard.enabled) return;
$(document).on('keydown', handle);
swiper.keyboard.enabled=true;
}
function disable(){
if(!swiper.keyboard.enabled) return;
$(document).off('keydown', handle);
swiper.keyboard.enabled=false;
}
on('init', ()=> {
if(swiper.params.keyboard.enabled){
enable();
}});
on('destroy', ()=> {
if(swiper.keyboard.enabled){
disable();
}});
Object.assign(swiper.keyboard, {
enable,
disable
});
}
function Mousewheel(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const window=getWindow();
extendParams({
mousewheel: {
enabled: false,
releaseOnEdges: false,
invert: false,
forceToAxis: false,
sensitivity: 1,
eventsTarget: 'container',
thresholdDelta: null,
thresholdTime: null
}});
swiper.mousewheel={
enabled: false
};
let timeout;
let lastScrollTime=now();
let lastEventBeforeSnap;
const recentWheelEvents=[];
function normalize(e){
const PIXEL_STEP=10;
const LINE_HEIGHT=40;
const PAGE_HEIGHT=800;
let sX=0;
let sY=0;
let pX=0;
let pY=0;
if('detail' in e){
sY=e.detail;
}
if('wheelDelta' in e){
sY=-e.wheelDelta / 120;
}
if('wheelDeltaY' in e){
sY=-e.wheelDeltaY / 120;
}
if('wheelDeltaX' in e){
sX=-e.wheelDeltaX / 120;
}
if('axis' in e&&e.axis===e.HORIZONTAL_AXIS){
sX=sY;
sY=0;
}
pX=sX * PIXEL_STEP;
pY=sY * PIXEL_STEP;
if('deltaY' in e){
pY=e.deltaY;
}
if('deltaX' in e){
pX=e.deltaX;
}
if(e.shiftKey&&!pX){
pX=pY;
pY=0;
}
if((pX||pY)&&e.deltaMode){
if(e.deltaMode===1){
pX *=LINE_HEIGHT;
pY *=LINE_HEIGHT;
}else{
pX *=PAGE_HEIGHT;
pY *=PAGE_HEIGHT;
}}
if(pX&&!sX){
sX=pX < 1 ? -1:1;
}
if(pY&&!sY){
sY=pY < 1 ? -1:1;
}
return {
spinX: sX,
spinY: sY,
pixelX: pX,
pixelY: pY
};}
function handleMouseEnter(){
if(!swiper.enabled) return;
swiper.mouseEntered=true;
}
function handleMouseLeave(){
if(!swiper.enabled) return;
swiper.mouseEntered=false;
}
function animateSlider(newEvent){
if(swiper.params.mousewheel.thresholdDelta&&newEvent.delta < swiper.params.mousewheel.thresholdDelta){
return false;
}
if(swiper.params.mousewheel.thresholdTime&&now() - lastScrollTime < swiper.params.mousewheel.thresholdTime){
return false;
}
if(newEvent.delta >=6&&now() - lastScrollTime < 60){
return true;
}
if(newEvent.direction < 0){
if((!swiper.isEnd||swiper.params.loop)&&!swiper.animating){
swiper.slideNext();
emit('scroll', newEvent.raw);
}}else if((!swiper.isBeginning||swiper.params.loop)&&!swiper.animating){
swiper.slidePrev();
emit('scroll', newEvent.raw);
}
lastScrollTime=new window.Date().getTime();
return false;
}
function releaseScroll(newEvent){
const params=swiper.params.mousewheel;
if(newEvent.direction < 0){
if(swiper.isEnd&&!swiper.params.loop&&params.releaseOnEdges){
return true;
}}else if(swiper.isBeginning&&!swiper.params.loop&&params.releaseOnEdges){
return true;
}
return false;
}
function handle(event){
let e=event;
let disableParentSwiper=true;
if(!swiper.enabled) return;
const params=swiper.params.mousewheel;
if(swiper.params.cssMode){
e.preventDefault();
}
let target=swiper.$el;
if(swiper.params.mousewheel.eventsTarget!=='container'){
target=$(swiper.params.mousewheel.eventsTarget);
}
if(!swiper.mouseEntered&&!target[0].contains(e.target)&&!params.releaseOnEdges) return true;
if(e.originalEvent) e=e.originalEvent;
let delta=0;
const rtlFactor=swiper.rtlTranslate ? -1:1;
const data=normalize(e);
if(params.forceToAxis){
if(swiper.isHorizontal()){
if(Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta=-data.pixelX * rtlFactor;else return true;
}else if(Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta=-data.pixelY;else return true;
}else{
delta=Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor:-data.pixelY;
}
if(delta===0) return true;
if(params.invert) delta=-delta;
let positions=swiper.getTranslate() + delta * params.sensitivity;
if(positions >=swiper.minTranslate()) positions=swiper.minTranslate();
if(positions <=swiper.maxTranslate()) positions=swiper.maxTranslate();
disableParentSwiper=swiper.params.loop ? true:!(positions===swiper.minTranslate()||positions===swiper.maxTranslate());
if(disableParentSwiper&&swiper.params.nested) e.stopPropagation();
if(!swiper.params.freeMode||!swiper.params.freeMode.enabled){
const newEvent={
time: now(),
delta: Math.abs(delta),
direction: Math.sign(delta),
raw: event
};
if(recentWheelEvents.length >=2){
recentWheelEvents.shift();
}
const prevEvent=recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1]:undefined;
recentWheelEvents.push(newEvent);
if(prevEvent){
if(newEvent.direction!==prevEvent.direction||newEvent.delta > prevEvent.delta||newEvent.time > prevEvent.time + 150){
animateSlider(newEvent);
}}else{
animateSlider(newEvent);
}
if(releaseScroll(newEvent)){
return true;
}}else{
const newEvent={
time: now(),
delta: Math.abs(delta),
direction: Math.sign(delta)
};
const ignoreWheelEvents=lastEventBeforeSnap&&newEvent.time < lastEventBeforeSnap.time + 500&&newEvent.delta <=lastEventBeforeSnap.delta&&newEvent.direction===lastEventBeforeSnap.direction;
if(!ignoreWheelEvents){
lastEventBeforeSnap=undefined;
if(swiper.params.loop){
swiper.loopFix();
}
let position=swiper.getTranslate() + delta * params.sensitivity;
const wasBeginning=swiper.isBeginning;
const wasEnd=swiper.isEnd;
if(position >=swiper.minTranslate()) position=swiper.minTranslate();
if(position <=swiper.maxTranslate()) position=swiper.maxTranslate();
swiper.setTransition(0);
swiper.setTranslate(position);
swiper.updateProgress();
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
if(!wasBeginning&&swiper.isBeginning||!wasEnd&&swiper.isEnd){
swiper.updateSlidesClasses();
}
if(swiper.params.freeMode.sticky){
clearTimeout(timeout);
timeout=undefined;
if(recentWheelEvents.length >=15){
recentWheelEvents.shift();
}
const prevEvent=recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1]:undefined;
const firstEvent=recentWheelEvents[0];
recentWheelEvents.push(newEvent);
if(prevEvent&&(newEvent.delta > prevEvent.delta||newEvent.direction!==prevEvent.direction)){
recentWheelEvents.splice(0);
}else if(recentWheelEvents.length >=15&&newEvent.time - firstEvent.time < 500&&firstEvent.delta - newEvent.delta >=1&&newEvent.delta <=6){
const snapToThreshold=delta > 0 ? 0.8:0.2;
lastEventBeforeSnap=newEvent;
recentWheelEvents.splice(0);
timeout=nextTick(()=> {
swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
}, 0);
}
if(!timeout){
timeout=nextTick(()=> {
const snapToThreshold=0.5;
lastEventBeforeSnap=newEvent;
recentWheelEvents.splice(0);
swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
}, 500);
}}
if(!ignoreWheelEvents) emit('scroll', e);
if(swiper.params.autoplay&&swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
if(position===swiper.minTranslate()||position===swiper.maxTranslate()) return true;
}}
if(e.preventDefault) e.preventDefault();else e.returnValue=false;
return false;
}
function events(method){
let target=swiper.$el;
if(swiper.params.mousewheel.eventsTarget!=='container'){
target=$(swiper.params.mousewheel.eventsTarget);
}
target[method]('mouseenter', handleMouseEnter);
target[method]('mouseleave', handleMouseLeave);
target[method]('wheel', handle);
}
function enable(){
if(swiper.params.cssMode){
swiper.wrapperEl.removeEventListener('wheel', handle);
return true;
}
if(swiper.mousewheel.enabled) return false;
events('on');
swiper.mousewheel.enabled=true;
return true;
}
function disable(){
if(swiper.params.cssMode){
swiper.wrapperEl.addEventListener(event, handle);
return true;
}
if(!swiper.mousewheel.enabled) return false;
events('off');
swiper.mousewheel.enabled=false;
return true;
}
on('init', ()=> {
if(!swiper.params.mousewheel.enabled&&swiper.params.cssMode){
disable();
}
if(swiper.params.mousewheel.enabled) enable();
});
on('destroy', ()=> {
if(swiper.params.cssMode){
enable();
}
if(swiper.mousewheel.enabled) disable();
});
Object.assign(swiper.mousewheel, {
enable,
disable
});
}
function createElementIfNotDefined(swiper, originalParams, params, checkProps){
const document=getDocument();
if(swiper.params.createElements){
Object.keys(checkProps).forEach(key=> {
if(!params[key]&&params.auto===true){
let element=swiper.$el.children(`.${checkProps[key]}`)[0];
if(!element){
element=document.createElement('div');
element.className=checkProps[key];
swiper.$el.append(element);
}
params[key]=element;
originalParams[key]=element;
}});
}
return params;
}
function Navigation(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
extendParams({
navigation: {
nextEl: null,
prevEl: null,
hideOnClick: false,
disabledClass: 'swiper-button-disabled',
hiddenClass: 'swiper-button-hidden',
lockClass: 'swiper-button-lock',
navigationDisabledClass: 'swiper-navigation-disabled'
}});
swiper.navigation={
nextEl: null,
$nextEl: null,
prevEl: null,
$prevEl: null
};
function getEl(el){
let $el;
if(el){
$el=$(el);
if(swiper.params.uniqueNavElements&&typeof el==='string'&&$el.length > 1&&swiper.$el.find(el).length===1){
$el=swiper.$el.find(el);
}}
return $el;
}
function toggleEl($el, disabled){
const params=swiper.params.navigation;
if($el&&$el.length > 0){
$el[disabled ? 'addClass':'removeClass'](params.disabledClass);
if($el[0]&&$el[0].tagName==='BUTTON') $el[0].disabled=disabled;
if(swiper.params.watchOverflow&&swiper.enabled){
$el[swiper.isLocked ? 'addClass':'removeClass'](params.lockClass);
}}
}
function update(){
if(swiper.params.loop) return;
const {
$nextEl,
$prevEl
}=swiper.navigation;
toggleEl($prevEl, swiper.isBeginning&&!swiper.params.rewind);
toggleEl($nextEl, swiper.isEnd&&!swiper.params.rewind);
}
function onPrevClick(e){
e.preventDefault();
if(swiper.isBeginning&&!swiper.params.loop&&!swiper.params.rewind) return;
swiper.slidePrev();
emit('navigationPrev');
}
function onNextClick(e){
e.preventDefault();
if(swiper.isEnd&&!swiper.params.loop&&!swiper.params.rewind) return;
swiper.slideNext();
emit('navigationNext');
}
function init(){
const params=swiper.params.navigation;
swiper.params.navigation=createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
nextEl: 'swiper-button-next',
prevEl: 'swiper-button-prev'
});
if(!(params.nextEl||params.prevEl)) return;
const $nextEl=getEl(params.nextEl);
const $prevEl=getEl(params.prevEl);
if($nextEl&&$nextEl.length > 0){
$nextEl.on('click', onNextClick);
}
if($prevEl&&$prevEl.length > 0){
$prevEl.on('click', onPrevClick);
}
Object.assign(swiper.navigation, {
$nextEl,
nextEl: $nextEl&&$nextEl[0],
$prevEl,
prevEl: $prevEl&&$prevEl[0]
});
if(!swiper.enabled){
if($nextEl) $nextEl.addClass(params.lockClass);
if($prevEl) $prevEl.addClass(params.lockClass);
}}
function destroy(){
const {
$nextEl,
$prevEl
}=swiper.navigation;
if($nextEl&&$nextEl.length){
$nextEl.off('click', onNextClick);
$nextEl.removeClass(swiper.params.navigation.disabledClass);
}
if($prevEl&&$prevEl.length){
$prevEl.off('click', onPrevClick);
$prevEl.removeClass(swiper.params.navigation.disabledClass);
}}
on('init', ()=> {
if(swiper.params.navigation.enabled===false){
disable();
}else{
init();
update();
}});
on('toEdge fromEdge lock unlock', ()=> {
update();
});
on('destroy', ()=> {
destroy();
});
on('enable disable', ()=> {
const {
$nextEl,
$prevEl
}=swiper.navigation;
if($nextEl){
$nextEl[swiper.enabled ? 'removeClass':'addClass'](swiper.params.navigation.lockClass);
}
if($prevEl){
$prevEl[swiper.enabled ? 'removeClass':'addClass'](swiper.params.navigation.lockClass);
}});
on('click', (_s, e)=> {
const {
$nextEl,
$prevEl
}=swiper.navigation;
const targetEl=e.target;
if(swiper.params.navigation.hideOnClick&&!$(targetEl).is($prevEl)&&!$(targetEl).is($nextEl)){
if(swiper.pagination&&swiper.params.pagination&&swiper.params.pagination.clickable&&(swiper.pagination.el===targetEl||swiper.pagination.el.contains(targetEl))) return;
let isHidden;
if($nextEl){
isHidden=$nextEl.hasClass(swiper.params.navigation.hiddenClass);
}else if($prevEl){
isHidden=$prevEl.hasClass(swiper.params.navigation.hiddenClass);
}
if(isHidden===true){
emit('navigationShow');
}else{
emit('navigationHide');
}
if($nextEl){
$nextEl.toggleClass(swiper.params.navigation.hiddenClass);
}
if($prevEl){
$prevEl.toggleClass(swiper.params.navigation.hiddenClass);
}}
});
const enable=()=> {
swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
init();
update();
};
const disable=()=> {
swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
destroy();
};
Object.assign(swiper.navigation, {
enable,
disable,
update,
init,
destroy
});
}
function classesToSelector(classes){
if(classes===void 0){
classes='';
}
return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1')
.replace(/ /g, '.')}`;
}
function Pagination(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const pfx='swiper-pagination';
extendParams({
pagination: {
el: null,
bulletElement: 'span',
clickable: false,
hideOnClick: false,
renderBullet: null,
renderProgressbar: null,
renderFraction: null,
renderCustom: null,
progressbarOpposite: false,
type: 'bullets',
dynamicBullets: false,
dynamicMainBullets: 1,
formatFractionCurrent: number=> number,
formatFractionTotal: number=> number,
bulletClass: `${pfx}-bullet`,
bulletActiveClass: `${pfx}-bullet-active`,
modifierClass: `${pfx}-`,
currentClass: `${pfx}-current`,
totalClass: `${pfx}-total`,
hiddenClass: `${pfx}-hidden`,
progressbarFillClass: `${pfx}-progressbar-fill`,
progressbarOppositeClass: `${pfx}-progressbar-opposite`,
clickableClass: `${pfx}-clickable`,
lockClass: `${pfx}-lock`,
horizontalClass: `${pfx}-horizontal`,
verticalClass: `${pfx}-vertical`,
paginationDisabledClass: `${pfx}-disabled`
}});
swiper.pagination={
el: null,
$el: null,
bullets: []
};
let bulletSize;
let dynamicBulletIndex=0;
function isPaginationDisabled(){
return !swiper.params.pagination.el||!swiper.pagination.el||!swiper.pagination.$el||swiper.pagination.$el.length===0;
}
function setSideBullets($bulletEl, position){
const {
bulletActiveClass
}=swiper.params.pagination;
$bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);
}
function update(){
const rtl=swiper.rtl;
const params=swiper.params.pagination;
if(isPaginationDisabled()) return;
const slidesLength=swiper.virtual&&swiper.params.virtual.enabled ? swiper.virtual.slides.length:swiper.slides.length;
const $el=swiper.pagination.$el;
let current;
const total=swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup):swiper.snapGrid.length;
if(swiper.params.loop){
current=Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
if(current > slidesLength - 1 - swiper.loopedSlides * 2){
current -=slidesLength - swiper.loopedSlides * 2;
}
if(current > total - 1) current -=total;
if(current < 0&&swiper.params.paginationType!=='bullets') current=total + current;
}else if(typeof swiper.snapIndex!=='undefined'){
current=swiper.snapIndex;
}else{
current=swiper.activeIndex||0;
}
if(params.type==='bullets'&&swiper.pagination.bullets&&swiper.pagination.bullets.length > 0){
const bullets=swiper.pagination.bullets;
let firstIndex;
let lastIndex;
let midIndex;
if(params.dynamicBullets){
bulletSize=bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth':'outerHeight'](true);
$el.css(swiper.isHorizontal() ? 'width':'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);
if(params.dynamicMainBullets > 1&&swiper.previousIndex!==undefined){
dynamicBulletIndex +=current - (swiper.previousIndex - swiper.loopedSlides||0);
if(dynamicBulletIndex > params.dynamicMainBullets - 1){
dynamicBulletIndex=params.dynamicMainBullets - 1;
}else if(dynamicBulletIndex < 0){
dynamicBulletIndex=0;
}}
firstIndex=Math.max(current - dynamicBulletIndex, 0);
lastIndex=firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
midIndex=(lastIndex + firstIndex) / 2;
}
bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix=> `${params.bulletActiveClass}${suffix}`).join(' '));
if($el.length > 1){
bullets.each(bullet=> {
const $bullet=$(bullet);
const bulletIndex=$bullet.index();
if(bulletIndex===current){
$bullet.addClass(params.bulletActiveClass);
}
if(params.dynamicBullets){
if(bulletIndex >=firstIndex&&bulletIndex <=lastIndex){
$bullet.addClass(`${params.bulletActiveClass}-main`);
}
if(bulletIndex===firstIndex){
setSideBullets($bullet, 'prev');
}
if(bulletIndex===lastIndex){
setSideBullets($bullet, 'next');
}}
});
}else{
const $bullet=bullets.eq(current);
const bulletIndex=$bullet.index();
$bullet.addClass(params.bulletActiveClass);
if(params.dynamicBullets){
const $firstDisplayedBullet=bullets.eq(firstIndex);
const $lastDisplayedBullet=bullets.eq(lastIndex);
for (let i=firstIndex; i <=lastIndex; i +=1){
bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);
}
if(swiper.params.loop){
if(bulletIndex >=bullets.length){
for (let i=params.dynamicMainBullets; i >=0; i -=1){
bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);
}
bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);
}else{
setSideBullets($firstDisplayedBullet, 'prev');
setSideBullets($lastDisplayedBullet, 'next');
}}else{
setSideBullets($firstDisplayedBullet, 'prev');
setSideBullets($lastDisplayedBullet, 'next');
}}
}
if(params.dynamicBullets){
const dynamicBulletsLength=Math.min(bullets.length, params.dynamicMainBullets + 4);
const bulletsOffset=(bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;
const offsetProp=rtl ? 'right':'left';
bullets.css(swiper.isHorizontal() ? offsetProp:'top', `${bulletsOffset}px`);
}}
if(params.type==='fraction'){
$el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));
$el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));
}
if(params.type==='progressbar'){
let progressbarDirection;
if(params.progressbarOpposite){
progressbarDirection=swiper.isHorizontal() ? 'vertical':'horizontal';
}else{
progressbarDirection=swiper.isHorizontal() ? 'horizontal':'vertical';
}
const scale=(current + 1) / total;
let scaleX=1;
let scaleY=1;
if(progressbarDirection==='horizontal'){
scaleX=scale;
}else{
scaleY=scale;
}
$el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);
}
if(params.type==='custom'&&params.renderCustom){
$el.html(params.renderCustom(swiper, current + 1, total));
emit('paginationRender', $el[0]);
}else{
emit('paginationUpdate', $el[0]);
}
if(swiper.params.watchOverflow&&swiper.enabled){
$el[swiper.isLocked ? 'addClass':'removeClass'](params.lockClass);
}}
function render(){
const params=swiper.params.pagination;
if(isPaginationDisabled()) return;
const slidesLength=swiper.virtual&&swiper.params.virtual.enabled ? swiper.virtual.slides.length:swiper.slides.length;
const $el=swiper.pagination.$el;
let paginationHTML='';
if(params.type==='bullets'){
let numberOfBullets=swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup):swiper.snapGrid.length;
if(swiper.params.freeMode&&swiper.params.freeMode.enabled&&!swiper.params.loop&&numberOfBullets > slidesLength){
numberOfBullets=slidesLength;
}
for (let i=0; i < numberOfBullets; i +=1){
if(params.renderBullet){
paginationHTML +=params.renderBullet.call(swiper, i, params.bulletClass);
}else{
paginationHTML +=`<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`;
}}
$el.html(paginationHTML);
swiper.pagination.bullets=$el.find(classesToSelector(params.bulletClass));
}
if(params.type==='fraction'){
if(params.renderFraction){
paginationHTML=params.renderFraction.call(swiper, params.currentClass, params.totalClass);
}else{
paginationHTML=`<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`;
}
$el.html(paginationHTML);
}
if(params.type==='progressbar'){
if(params.renderProgressbar){
paginationHTML=params.renderProgressbar.call(swiper, params.progressbarFillClass);
}else{
paginationHTML=`<span class="${params.progressbarFillClass}"></span>`;
}
$el.html(paginationHTML);
}
if(params.type!=='custom'){
emit('paginationRender', swiper.pagination.$el[0]);
}}
function init(){
swiper.params.pagination=createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {
el: 'swiper-pagination'
});
const params=swiper.params.pagination;
if(!params.el) return;
let $el=$(params.el);
if($el.length===0) return;
if(swiper.params.uniqueNavElements&&typeof params.el==='string'&&$el.length > 1){
$el=swiper.$el.find(params.el);
if($el.length > 1){
$el=$el.filter(el=> {
if($(el).parents('.swiper')[0]!==swiper.el) return false;
return true;
});
}}
if(params.type==='bullets'&&params.clickable){
$el.addClass(params.clickableClass);
}
$el.addClass(params.modifierClass + params.type);
$el.addClass(swiper.isHorizontal() ? params.horizontalClass:params.verticalClass);
if(params.type==='bullets'&&params.dynamicBullets){
$el.addClass(`${params.modifierClass}${params.type}-dynamic`);
dynamicBulletIndex=0;
if(params.dynamicMainBullets < 1){
params.dynamicMainBullets=1;
}}
if(params.type==='progressbar'&&params.progressbarOpposite){
$el.addClass(params.progressbarOppositeClass);
}
if(params.clickable){
$el.on('click', classesToSelector(params.bulletClass), function onClick(e){
e.preventDefault();
let index=$(this).index() * swiper.params.slidesPerGroup;
if(swiper.params.loop) index +=swiper.loopedSlides;
swiper.slideTo(index);
});
}
Object.assign(swiper.pagination, {
$el,
el: $el[0]
});
if(!swiper.enabled){
$el.addClass(params.lockClass);
}}
function destroy(){
const params=swiper.params.pagination;
if(isPaginationDisabled()) return;
const $el=swiper.pagination.$el;
$el.removeClass(params.hiddenClass);
$el.removeClass(params.modifierClass + params.type);
$el.removeClass(swiper.isHorizontal() ? params.horizontalClass:params.verticalClass);
if(swiper.pagination.bullets&&swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
if(params.clickable){
$el.off('click', classesToSelector(params.bulletClass));
}}
on('init', ()=> {
if(swiper.params.pagination.enabled===false){
disable();
}else{
init();
render();
update();
}});
on('activeIndexChange', ()=> {
if(swiper.params.loop){
update();
}else if(typeof swiper.snapIndex==='undefined'){
update();
}});
on('snapIndexChange', ()=> {
if(!swiper.params.loop){
update();
}});
on('slidesLengthChange', ()=> {
if(swiper.params.loop){
render();
update();
}});
on('snapGridLengthChange', ()=> {
if(!swiper.params.loop){
render();
update();
}});
on('destroy', ()=> {
destroy();
});
on('enable disable', ()=> {
const {
$el
}=swiper.pagination;
if($el){
$el[swiper.enabled ? 'removeClass':'addClass'](swiper.params.pagination.lockClass);
}});
on('lock unlock', ()=> {
update();
});
on('click', (_s, e)=> {
const targetEl=e.target;
const {
$el
}=swiper.pagination;
if(swiper.params.pagination.el&&swiper.params.pagination.hideOnClick&&$el&&$el.length > 0&&!$(targetEl).hasClass(swiper.params.pagination.bulletClass)){
if(swiper.navigation&&(swiper.navigation.nextEl&&targetEl===swiper.navigation.nextEl||swiper.navigation.prevEl&&targetEl===swiper.navigation.prevEl)) return;
const isHidden=$el.hasClass(swiper.params.pagination.hiddenClass);
if(isHidden===true){
emit('paginationShow');
}else{
emit('paginationHide');
}
$el.toggleClass(swiper.params.pagination.hiddenClass);
}});
const enable=()=> {
swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
if(swiper.pagination.$el){
swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
}
init();
render();
update();
};
const disable=()=> {
swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
if(swiper.pagination.$el){
swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
}
destroy();
};
Object.assign(swiper.pagination, {
enable,
disable,
render,
update,
init,
destroy
});
}
function Scrollbar(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const document=getDocument();
let isTouched=false;
let timeout=null;
let dragTimeout=null;
let dragStartPos;
let dragSize;
let trackSize;
let divider;
extendParams({
scrollbar: {
el: null,
dragSize: 'auto',
hide: false,
draggable: false,
snapOnRelease: true,
lockClass: 'swiper-scrollbar-lock',
dragClass: 'swiper-scrollbar-drag',
scrollbarDisabledClass: 'swiper-scrollbar-disabled',
horizontalClass: `swiper-scrollbar-horizontal`,
verticalClass: `swiper-scrollbar-vertical`
}});
swiper.scrollbar={
el: null,
dragEl: null,
$el: null,
$dragEl: null
};
function setTranslate(){
if(!swiper.params.scrollbar.el||!swiper.scrollbar.el) return;
const {
scrollbar,
rtlTranslate: rtl,
progress
}=swiper;
const {
$dragEl,
$el
}=scrollbar;
const params=swiper.params.scrollbar;
let newSize=dragSize;
let newPos=(trackSize - dragSize) * progress;
if(rtl){
newPos=-newPos;
if(newPos > 0){
newSize=dragSize - newPos;
newPos=0;
}else if(-newPos + dragSize > trackSize){
newSize=trackSize + newPos;
}}else if(newPos < 0){
newSize=dragSize + newPos;
newPos=0;
}else if(newPos + dragSize > trackSize){
newSize=trackSize - newPos;
}
if(swiper.isHorizontal()){
$dragEl.transform(`translate3d(${newPos}px, 0, 0)`);
$dragEl[0].style.width=`${newSize}px`;
}else{
$dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);
$dragEl[0].style.height=`${newSize}px`;
}
if(params.hide){
clearTimeout(timeout);
$el[0].style.opacity=1;
timeout=setTimeout(()=> {
$el[0].style.opacity=0;
$el.transition(400);
}, 1000);
}}
function setTransition(duration){
if(!swiper.params.scrollbar.el||!swiper.scrollbar.el) return;
swiper.scrollbar.$dragEl.transition(duration);
}
function updateSize(){
if(!swiper.params.scrollbar.el||!swiper.scrollbar.el) return;
const {
scrollbar
}=swiper;
const {
$dragEl,
$el
}=scrollbar;
$dragEl[0].style.width='';
$dragEl[0].style.height='';
trackSize=swiper.isHorizontal() ? $el[0].offsetWidth:$el[0].offsetHeight;
divider=swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0]:0));
if(swiper.params.scrollbar.dragSize==='auto'){
dragSize=trackSize * divider;
}else{
dragSize=parseInt(swiper.params.scrollbar.dragSize, 10);
}
if(swiper.isHorizontal()){
$dragEl[0].style.width=`${dragSize}px`;
}else{
$dragEl[0].style.height=`${dragSize}px`;
}
if(divider >=1){
$el[0].style.display='none';
}else{
$el[0].style.display='';
}
if(swiper.params.scrollbar.hide){
$el[0].style.opacity=0;
}
if(swiper.params.watchOverflow&&swiper.enabled){
scrollbar.$el[swiper.isLocked ? 'addClass':'removeClass'](swiper.params.scrollbar.lockClass);
}}
function getPointerPosition(e){
if(swiper.isHorizontal()){
return e.type==='touchstart'||e.type==='touchmove' ? e.targetTouches[0].clientX:e.clientX;
}
return e.type==='touchstart'||e.type==='touchmove' ? e.targetTouches[0].clientY:e.clientY;
}
function setDragPosition(e){
const {
scrollbar,
rtlTranslate: rtl
}=swiper;
const {
$el
}=scrollbar;
let positionRatio;
positionRatio=(getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left':'top'] - (dragStartPos!==null ? dragStartPos:dragSize / 2)) / (trackSize - dragSize);
positionRatio=Math.max(Math.min(positionRatio, 1), 0);
if(rtl){
positionRatio=1 - positionRatio;
}
const position=swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
swiper.updateProgress(position);
swiper.setTranslate(position);
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}
function onDragStart(e){
const params=swiper.params.scrollbar;
const {
scrollbar,
$wrapperEl
}=swiper;
const {
$el,
$dragEl
}=scrollbar;
isTouched=true;
dragStartPos=e.target===$dragEl[0]||e.target===$dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left':'top']:null;
e.preventDefault();
e.stopPropagation();
$wrapperEl.transition(100);
$dragEl.transition(100);
setDragPosition(e);
clearTimeout(dragTimeout);
$el.transition(0);
if(params.hide){
$el.css('opacity', 1);
}
if(swiper.params.cssMode){
swiper.$wrapperEl.css('scroll-snap-type', 'none');
}
emit('scrollbarDragStart', e);
}
function onDragMove(e){
const {
scrollbar,
$wrapperEl
}=swiper;
const {
$el,
$dragEl
}=scrollbar;
if(!isTouched) return;
if(e.preventDefault) e.preventDefault();else e.returnValue=false;
setDragPosition(e);
$wrapperEl.transition(0);
$el.transition(0);
$dragEl.transition(0);
emit('scrollbarDragMove', e);
}
function onDragEnd(e){
const params=swiper.params.scrollbar;
const {
scrollbar,
$wrapperEl
}=swiper;
const {
$el
}=scrollbar;
if(!isTouched) return;
isTouched=false;
if(swiper.params.cssMode){
swiper.$wrapperEl.css('scroll-snap-type', '');
$wrapperEl.transition('');
}
if(params.hide){
clearTimeout(dragTimeout);
dragTimeout=nextTick(()=> {
$el.css('opacity', 0);
$el.transition(400);
}, 1000);
}
emit('scrollbarDragEnd', e);
if(params.snapOnRelease){
swiper.slideToClosest();
}}
function events(method){
const {
scrollbar,
touchEventsTouch,
touchEventsDesktop,
params,
support
}=swiper;
const $el=scrollbar.$el;
if(!$el) return;
const target=$el[0];
const activeListener=support.passiveListener&&params.passiveListeners ? {
passive: false,
capture: false
}:false;
const passiveListener=support.passiveListener&&params.passiveListeners ? {
passive: true,
capture: false
}:false;
if(!target) return;
const eventMethod=method==='on' ? 'addEventListener':'removeEventListener';
if(!support.touch){
target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);
document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);
document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);
}else{
target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);
target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);
target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);
}}
function enableDraggable(){
if(!swiper.params.scrollbar.el||!swiper.scrollbar.el) return;
events('on');
}
function disableDraggable(){
if(!swiper.params.scrollbar.el||!swiper.scrollbar.el) return;
events('off');
}
function init(){
const {
scrollbar,
$el: $swiperEl
}=swiper;
swiper.params.scrollbar=createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {
el: 'swiper-scrollbar'
});
const params=swiper.params.scrollbar;
if(!params.el) return;
let $el=$(params.el);
if(swiper.params.uniqueNavElements&&typeof params.el==='string'&&$el.length > 1&&$swiperEl.find(params.el).length===1){
$el=$swiperEl.find(params.el);
}
$el.addClass(swiper.isHorizontal() ? params.horizontalClass:params.verticalClass);
let $dragEl=$el.find(`.${swiper.params.scrollbar.dragClass}`);
if($dragEl.length===0){
$dragEl=$(`<div class="${swiper.params.scrollbar.dragClass}"></div>`);
$el.append($dragEl);
}
Object.assign(scrollbar, {
$el,
el: $el[0],
$dragEl,
dragEl: $dragEl[0]
});
if(params.draggable){
enableDraggable();
}
if($el){
$el[swiper.enabled ? 'removeClass':'addClass'](swiper.params.scrollbar.lockClass);
}}
function destroy(){
const params=swiper.params.scrollbar;
const $el=swiper.scrollbar.$el;
if($el){
$el.removeClass(swiper.isHorizontal() ? params.horizontalClass:params.verticalClass);
}
disableDraggable();
}
on('init', ()=> {
if(swiper.params.scrollbar.enabled===false){
disable();
}else{
init();
updateSize();
setTranslate();
}});
on('update resize observerUpdate lock unlock', ()=> {
updateSize();
});
on('setTranslate', ()=> {
setTranslate();
});
on('setTransition', (_s, duration)=> {
setTransition(duration);
});
on('enable disable', ()=> {
const {
$el
}=swiper.scrollbar;
if($el){
$el[swiper.enabled ? 'removeClass':'addClass'](swiper.params.scrollbar.lockClass);
}});
on('destroy', ()=> {
destroy();
});
const enable=()=> {
swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
if(swiper.scrollbar.$el){
swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
}
init();
updateSize();
setTranslate();
};
const disable=()=> {
swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
if(swiper.scrollbar.$el){
swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
}
destroy();
};
Object.assign(swiper.scrollbar, {
enable,
disable,
updateSize,
setTranslate,
init,
destroy
});
}
function Parallax(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
parallax: {
enabled: false
}});
const setTransform=(el, progress)=> {
const {
rtl
}=swiper;
const $el=$(el);
const rtlFactor=rtl ? -1:1;
const p=$el.attr('data-swiper-parallax')||'0';
let x=$el.attr('data-swiper-parallax-x');
let y=$el.attr('data-swiper-parallax-y');
const scale=$el.attr('data-swiper-parallax-scale');
const opacity=$el.attr('data-swiper-parallax-opacity');
if(x||y){
x=x||'0';
y=y||'0';
}else if(swiper.isHorizontal()){
x=p;
y='0';
}else{
y=p;
x='0';
}
if(x.indexOf('%') >=0){
x=`${parseInt(x, 10) * progress * rtlFactor}%`;
}else{
x=`${x * progress * rtlFactor}px`;
}
if(y.indexOf('%') >=0){
y=`${parseInt(y, 10) * progress}%`;
}else{
y=`${y * progress}px`;
}
if(typeof opacity!=='undefined'&&opacity!==null){
const currentOpacity=opacity - (opacity - 1) * (1 - Math.abs(progress));
$el[0].style.opacity=currentOpacity;
}
if(typeof scale==='undefined'||scale===null){
$el.transform(`translate3d(${x}, ${y}, 0px)`);
}else{
const currentScale=scale - (scale - 1) * (1 - Math.abs(progress));
$el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);
}};
const setTranslate=()=> {
const {
$el,
slides,
progress,
snapGrid
}=swiper;
$el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el=> {
setTransform(el, progress);
});
slides.each((slideEl, slideIndex)=> {
let slideProgress=slideEl.progress;
if(swiper.params.slidesPerGroup > 1&&swiper.params.slidesPerView!=='auto'){
slideProgress +=Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
}
slideProgress=Math.min(Math.max(slideProgress, -1), 1);
$(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el=> {
setTransform(el, slideProgress);
});
});
};
const setTransition=function (duration){
if(duration===void 0){
duration=swiper.params.speed;
}
const {
$el
}=swiper;
$el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl=> {
const $parallaxEl=$(parallaxEl);
let parallaxDuration=parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10)||duration;
if(duration===0) parallaxDuration=0;
$parallaxEl.transition(parallaxDuration);
});
};
on('beforeInit', ()=> {
if(!swiper.params.parallax.enabled) return;
swiper.params.watchSlidesProgress=true;
swiper.originalParams.watchSlidesProgress=true;
});
on('init', ()=> {
if(!swiper.params.parallax.enabled) return;
setTranslate();
});
on('setTranslate', ()=> {
if(!swiper.params.parallax.enabled) return;
setTranslate();
});
on('setTransition', (_swiper, duration)=> {
if(!swiper.params.parallax.enabled) return;
setTransition(duration);
});
}
function Zoom(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
const window=getWindow();
extendParams({
zoom: {
enabled: false,
maxRatio: 3,
minRatio: 1,
toggle: true,
containerClass: 'swiper-zoom-container',
zoomedSlideClass: 'swiper-slide-zoomed'
}});
swiper.zoom={
enabled: false
};
let currentScale=1;
let isScaling=false;
let gesturesEnabled;
let fakeGestureTouched;
let fakeGestureMoved;
const gesture={
$slideEl: undefined,
slideWidth: undefined,
slideHeight: undefined,
$imageEl: undefined,
$imageWrapEl: undefined,
maxRatio: 3
};
const image={
isTouched: undefined,
isMoved: undefined,
currentX: undefined,
currentY: undefined,
minX: undefined,
minY: undefined,
maxX: undefined,
maxY: undefined,
width: undefined,
height: undefined,
startX: undefined,
startY: undefined,
touchesStart: {},
touchesCurrent: {}};
const velocity={
x: undefined,
y: undefined,
prevPositionX: undefined,
prevPositionY: undefined,
prevTime: undefined
};
let scale=1;
Object.defineProperty(swiper.zoom, 'scale', {
get(){
return scale;
},
set(value){
if(scale!==value){
const imageEl=gesture.$imageEl ? gesture.$imageEl[0]:undefined;
const slideEl=gesture.$slideEl ? gesture.$slideEl[0]:undefined;
emit('zoomChange', value, imageEl, slideEl);
}
scale=value;
}});
function getDistanceBetweenTouches(e){
if(e.targetTouches.length < 2) return 1;
const x1=e.targetTouches[0].pageX;
const y1=e.targetTouches[0].pageY;
const x2=e.targetTouches[1].pageX;
const y2=e.targetTouches[1].pageY;
const distance=Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
return distance;
}
function onGestureStart(e){
const support=swiper.support;
const params=swiper.params.zoom;
fakeGestureTouched=false;
fakeGestureMoved=false;
if(!support.gestures){
if(e.type!=='touchstart'||e.type==='touchstart'&&e.targetTouches.length < 2){
return;
}
fakeGestureTouched=true;
gesture.scaleStart=getDistanceBetweenTouches(e);
}
if(!gesture.$slideEl||!gesture.$slideEl.length){
gesture.$slideEl=$(e.target).closest(`.${swiper.params.slideClass}`);
if(gesture.$slideEl.length===0) gesture.$slideEl=swiper.slides.eq(swiper.activeIndex);
gesture.$imageEl=gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
gesture.$imageWrapEl=gesture.$imageEl.parent(`.${params.containerClass}`);
gesture.maxRatio=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio;
if(gesture.$imageWrapEl.length===0){
gesture.$imageEl=undefined;
return;
}}
if(gesture.$imageEl){
gesture.$imageEl.transition(0);
}
isScaling=true;
}
function onGestureChange(e){
const support=swiper.support;
const params=swiper.params.zoom;
const zoom=swiper.zoom;
if(!support.gestures){
if(e.type!=='touchmove'||e.type==='touchmove'&&e.targetTouches.length < 2){
return;
}
fakeGestureMoved=true;
gesture.scaleMove=getDistanceBetweenTouches(e);
}
if(!gesture.$imageEl||gesture.$imageEl.length===0){
if(e.type==='gesturechange') onGestureStart(e);
return;
}
if(support.gestures){
zoom.scale=e.scale * currentScale;
}else{
zoom.scale=gesture.scaleMove / gesture.scaleStart * currentScale;
}
if(zoom.scale > gesture.maxRatio){
zoom.scale=gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
}
if(zoom.scale < params.minRatio){
zoom.scale=params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
}
gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);
}
function onGestureEnd(e){
const device=swiper.device;
const support=swiper.support;
const params=swiper.params.zoom;
const zoom=swiper.zoom;
if(!support.gestures){
if(!fakeGestureTouched||!fakeGestureMoved){
return;
}
if(e.type!=='touchend'||e.type==='touchend'&&e.changedTouches.length < 2&&!device.android){
return;
}
fakeGestureTouched=false;
fakeGestureMoved=false;
}
if(!gesture.$imageEl||gesture.$imageEl.length===0) return;
zoom.scale=Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
currentScale=zoom.scale;
isScaling=false;
if(zoom.scale===1) gesture.$slideEl=undefined;
}
function onTouchStart(e){
const device=swiper.device;
if(!gesture.$imageEl||gesture.$imageEl.length===0) return;
if(image.isTouched) return;
if(device.android&&e.cancelable) e.preventDefault();
image.isTouched=true;
image.touchesStart.x=e.type==='touchstart' ? e.targetTouches[0].pageX:e.pageX;
image.touchesStart.y=e.type==='touchstart' ? e.targetTouches[0].pageY:e.pageY;
}
function onTouchMove(e){
const zoom=swiper.zoom;
if(!gesture.$imageEl||gesture.$imageEl.length===0) return;
swiper.allowClick=false;
if(!image.isTouched||!gesture.$slideEl) return;
if(!image.isMoved){
image.width=gesture.$imageEl[0].offsetWidth;
image.height=gesture.$imageEl[0].offsetHeight;
image.startX=getTranslate(gesture.$imageWrapEl[0], 'x')||0;
image.startY=getTranslate(gesture.$imageWrapEl[0], 'y')||0;
gesture.slideWidth=gesture.$slideEl[0].offsetWidth;
gesture.slideHeight=gesture.$slideEl[0].offsetHeight;
gesture.$imageWrapEl.transition(0);
}
const scaledWidth=image.width * zoom.scale;
const scaledHeight=image.height * zoom.scale;
if(scaledWidth < gesture.slideWidth&&scaledHeight < gesture.slideHeight) return;
image.minX=Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
image.maxX=-image.minX;
image.minY=Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
image.maxY=-image.minY;
image.touchesCurrent.x=e.type==='touchmove' ? e.targetTouches[0].pageX:e.pageX;
image.touchesCurrent.y=e.type==='touchmove' ? e.targetTouches[0].pageY:e.pageY;
if(!image.isMoved&&!isScaling){
if(swiper.isHorizontal()&&(Math.floor(image.minX)===Math.floor(image.startX)&&image.touchesCurrent.x < image.touchesStart.x||Math.floor(image.maxX)===Math.floor(image.startX)&&image.touchesCurrent.x > image.touchesStart.x)){
image.isTouched=false;
return;
}
if(!swiper.isHorizontal()&&(Math.floor(image.minY)===Math.floor(image.startY)&&image.touchesCurrent.y < image.touchesStart.y||Math.floor(image.maxY)===Math.floor(image.startY)&&image.touchesCurrent.y > image.touchesStart.y)){
image.isTouched=false;
return;
}}
if(e.cancelable){
e.preventDefault();
}
e.stopPropagation();
image.isMoved=true;
image.currentX=image.touchesCurrent.x - image.touchesStart.x + image.startX;
image.currentY=image.touchesCurrent.y - image.touchesStart.y + image.startY;
if(image.currentX < image.minX){
image.currentX=image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
}
if(image.currentX > image.maxX){
image.currentX=image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
}
if(image.currentY < image.minY){
image.currentY=image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
}
if(image.currentY > image.maxY){
image.currentY=image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
}
if(!velocity.prevPositionX) velocity.prevPositionX=image.touchesCurrent.x;
if(!velocity.prevPositionY) velocity.prevPositionY=image.touchesCurrent.y;
if(!velocity.prevTime) velocity.prevTime=Date.now();
velocity.x=(image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
velocity.y=(image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
if(Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x=0;
if(Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y=0;
velocity.prevPositionX=image.touchesCurrent.x;
velocity.prevPositionY=image.touchesCurrent.y;
velocity.prevTime=Date.now();
gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
}
function onTouchEnd(){
const zoom=swiper.zoom;
if(!gesture.$imageEl||gesture.$imageEl.length===0) return;
if(!image.isTouched||!image.isMoved){
image.isTouched=false;
image.isMoved=false;
return;
}
image.isTouched=false;
image.isMoved=false;
let momentumDurationX=300;
let momentumDurationY=300;
const momentumDistanceX=velocity.x * momentumDurationX;
const newPositionX=image.currentX + momentumDistanceX;
const momentumDistanceY=velocity.y * momentumDurationY;
const newPositionY=image.currentY + momentumDistanceY;
if(velocity.x!==0) momentumDurationX=Math.abs((newPositionX - image.currentX) / velocity.x);
if(velocity.y!==0) momentumDurationY=Math.abs((newPositionY - image.currentY) / velocity.y);
const momentumDuration=Math.max(momentumDurationX, momentumDurationY);
image.currentX=newPositionX;
image.currentY=newPositionY;
const scaledWidth=image.width * zoom.scale;
const scaledHeight=image.height * zoom.scale;
image.minX=Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
image.maxX=-image.minX;
image.minY=Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
image.maxY=-image.minY;
image.currentX=Math.max(Math.min(image.currentX, image.maxX), image.minX);
image.currentY=Math.max(Math.min(image.currentY, image.maxY), image.minY);
gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);
}
function onTransitionEnd(){
const zoom=swiper.zoom;
if(gesture.$slideEl&&swiper.previousIndex!==swiper.activeIndex){
if(gesture.$imageEl){
gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
}
if(gesture.$imageWrapEl){
gesture.$imageWrapEl.transform('translate3d(0,0,0)');
}
zoom.scale=1;
currentScale=1;
gesture.$slideEl=undefined;
gesture.$imageEl=undefined;
gesture.$imageWrapEl=undefined;
}}
function zoomIn(e){
const zoom=swiper.zoom;
const params=swiper.params.zoom;
if(!gesture.$slideEl){
if(e&&e.target){
gesture.$slideEl=$(e.target).closest(`.${swiper.params.slideClass}`);
}
if(!gesture.$slideEl){
if(swiper.params.virtual&&swiper.params.virtual.enabled&&swiper.virtual){
gesture.$slideEl=swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
}else{
gesture.$slideEl=swiper.slides.eq(swiper.activeIndex);
}}
gesture.$imageEl=gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
gesture.$imageWrapEl=gesture.$imageEl.parent(`.${params.containerClass}`);
}
if(!gesture.$imageEl||gesture.$imageEl.length===0||!gesture.$imageWrapEl||gesture.$imageWrapEl.length===0) return;
if(swiper.params.cssMode){
swiper.wrapperEl.style.overflow='hidden';
swiper.wrapperEl.style.touchAction='none';
}
gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);
let touchX;
let touchY;
let offsetX;
let offsetY;
let diffX;
let diffY;
let translateX;
let translateY;
let imageWidth;
let imageHeight;
let scaledWidth;
let scaledHeight;
let translateMinX;
let translateMinY;
let translateMaxX;
let translateMaxY;
let slideWidth;
let slideHeight;
if(typeof image.touchesStart.x==='undefined'&&e){
touchX=e.type==='touchend' ? e.changedTouches[0].pageX:e.pageX;
touchY=e.type==='touchend' ? e.changedTouches[0].pageY:e.pageY;
}else{
touchX=image.touchesStart.x;
touchY=image.touchesStart.y;
}
zoom.scale=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio;
currentScale=gesture.$imageWrapEl.attr('data-swiper-zoom')||params.maxRatio;
if(e){
slideWidth=gesture.$slideEl[0].offsetWidth;
slideHeight=gesture.$slideEl[0].offsetHeight;
offsetX=gesture.$slideEl.offset().left + window.scrollX;
offsetY=gesture.$slideEl.offset().top + window.scrollY;
diffX=offsetX + slideWidth / 2 - touchX;
diffY=offsetY + slideHeight / 2 - touchY;
imageWidth=gesture.$imageEl[0].offsetWidth;
imageHeight=gesture.$imageEl[0].offsetHeight;
scaledWidth=imageWidth * zoom.scale;
scaledHeight=imageHeight * zoom.scale;
translateMinX=Math.min(slideWidth / 2 - scaledWidth / 2, 0);
translateMinY=Math.min(slideHeight / 2 - scaledHeight / 2, 0);
translateMaxX=-translateMinX;
translateMaxY=-translateMinY;
translateX=diffX * zoom.scale;
translateY=diffY * zoom.scale;
if(translateX < translateMinX){
translateX=translateMinX;
}
if(translateX > translateMaxX){
translateX=translateMaxX;
}
if(translateY < translateMinY){
translateY=translateMinY;
}
if(translateY > translateMaxY){
translateY=translateMaxY;
}}else{
translateX=0;
translateY=0;
}
gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);
gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);
}
function zoomOut(){
const zoom=swiper.zoom;
const params=swiper.params.zoom;
if(!gesture.$slideEl){
if(swiper.params.virtual&&swiper.params.virtual.enabled&&swiper.virtual){
gesture.$slideEl=swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);
}else{
gesture.$slideEl=swiper.slides.eq(swiper.activeIndex);
}
gesture.$imageEl=gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);
gesture.$imageWrapEl=gesture.$imageEl.parent(`.${params.containerClass}`);
}
if(!gesture.$imageEl||gesture.$imageEl.length===0||!gesture.$imageWrapEl||gesture.$imageWrapEl.length===0) return;
if(swiper.params.cssMode){
swiper.wrapperEl.style.overflow='';
swiper.wrapperEl.style.touchAction='';
}
zoom.scale=1;
currentScale=1;
gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);
gesture.$slideEl=undefined;
}
function zoomToggle(e){
const zoom=swiper.zoom;
if(zoom.scale&&zoom.scale!==1){
zoomOut();
}else{
zoomIn(e);
}}
function getListeners(){
const support=swiper.support;
const passiveListener=swiper.touchEvents.start==='touchstart'&&support.passiveListener&&swiper.params.passiveListeners ? {
passive: true,
capture: false
}:false;
const activeListenerWithCapture=support.passiveListener ? {
passive: false,
capture: true
}:true;
return {
passiveListener,
activeListenerWithCapture
};}
function getSlideSelector(){
return `.${swiper.params.slideClass}`;
}
function toggleGestures(method){
const {
passiveListener
}=getListeners();
const slideSelector=getSlideSelector();
swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);
swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);
swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);
}
function enableGestures(){
if(gesturesEnabled) return;
gesturesEnabled=true;
toggleGestures('on');
}
function disableGestures(){
if(!gesturesEnabled) return;
gesturesEnabled=false;
toggleGestures('off');
}
function enable(){
const zoom=swiper.zoom;
if(zoom.enabled) return;
zoom.enabled=true;
const support=swiper.support;
const {
passiveListener,
activeListenerWithCapture
}=getListeners();
const slideSelector=getSlideSelector();
if(support.gestures){
swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);
swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);
}else if(swiper.touchEvents.start==='touchstart'){
swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
if(swiper.touchEvents.cancel){
swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
}}
swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
}
function disable(){
const zoom=swiper.zoom;
if(!zoom.enabled) return;
const support=swiper.support;
zoom.enabled=false;
const {
passiveListener,
activeListenerWithCapture
}=getListeners();
const slideSelector=getSlideSelector();
if(support.gestures){
swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);
swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);
}else if(swiper.touchEvents.start==='touchstart'){
swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);
swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);
swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);
if(swiper.touchEvents.cancel){
swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);
}}
swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);
}
on('init', ()=> {
if(swiper.params.zoom.enabled){
enable();
}});
on('destroy', ()=> {
disable();
});
on('touchStart', (_s, e)=> {
if(!swiper.zoom.enabled) return;
onTouchStart(e);
});
on('touchEnd', (_s, e)=> {
if(!swiper.zoom.enabled) return;
onTouchEnd();
});
on('doubleTap', (_s, e)=> {
if(!swiper.animating&&swiper.params.zoom.enabled&&swiper.zoom.enabled&&swiper.params.zoom.toggle){
zoomToggle(e);
}});
on('transitionEnd', ()=> {
if(swiper.zoom.enabled&&swiper.params.zoom.enabled){
onTransitionEnd();
}});
on('slideChange', ()=> {
if(swiper.zoom.enabled&&swiper.params.zoom.enabled&&swiper.params.cssMode){
onTransitionEnd();
}});
Object.assign(swiper.zoom, {
enable,
disable,
in: zoomIn,
out: zoomOut,
toggle: zoomToggle
});
}
function Lazy(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
extendParams({
lazy: {
checkInView: false,
enabled: false,
loadPrevNext: false,
loadPrevNextAmount: 1,
loadOnTransitionStart: false,
scrollingElement: '',
elementClass: 'swiper-lazy',
loadingClass: 'swiper-lazy-loading',
loadedClass: 'swiper-lazy-loaded',
preloaderClass: 'swiper-lazy-preloader'
}});
swiper.lazy={};
let scrollHandlerAttached=false;
let initialImageLoaded=false;
function loadInSlide(index, loadInDuplicate){
if(loadInDuplicate===void 0){
loadInDuplicate=true;
}
const params=swiper.params.lazy;
if(typeof index==='undefined') return;
if(swiper.slides.length===0) return;
const isVirtual=swiper.virtual&&swiper.params.virtual.enabled;
const $slideEl=isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`):swiper.slides.eq(index);
const $images=$slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);
if($slideEl.hasClass(params.elementClass)&&!$slideEl.hasClass(params.loadedClass)&&!$slideEl.hasClass(params.loadingClass)){
$images.push($slideEl[0]);
}
if($images.length===0) return;
$images.each(imageEl=> {
const $imageEl=$(imageEl);
$imageEl.addClass(params.loadingClass);
const background=$imageEl.attr('data-background');
const src=$imageEl.attr('data-src');
const srcset=$imageEl.attr('data-srcset');
const sizes=$imageEl.attr('data-sizes');
const $pictureEl=$imageEl.parent('picture');
swiper.loadImage($imageEl[0], src||background, srcset, sizes, false, ()=> {
if(typeof swiper==='undefined'||swiper===null||!swiper||swiper&&!swiper.params||swiper.destroyed) return;
if(background){
$imageEl.css('background-image', `url("${background}")`);
$imageEl.removeAttr('data-background');
}else{
if(srcset){
$imageEl.attr('srcset', srcset);
$imageEl.removeAttr('data-srcset');
}
if(sizes){
$imageEl.attr('sizes', sizes);
$imageEl.removeAttr('data-sizes');
}
if($pictureEl.length){
$pictureEl.children('source').each(sourceEl=> {
const $source=$(sourceEl);
if($source.attr('data-srcset')){
$source.attr('srcset', $source.attr('data-srcset'));
$source.removeAttr('data-srcset');
}});
}
if(src){
$imageEl.attr('src', src);
$imageEl.removeAttr('data-src');
}}
$imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
$slideEl.find(`.${params.preloaderClass}`).remove();
if(swiper.params.loop&&loadInDuplicate){
const slideOriginalIndex=$slideEl.attr('data-swiper-slide-index');
if($slideEl.hasClass(swiper.params.slideDuplicateClass)){
const originalSlide=swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`);
loadInSlide(originalSlide.index(), false);
}else{
const duplicatedSlide=swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`);
loadInSlide(duplicatedSlide.index(), false);
}}
emit('lazyImageReady', $slideEl[0], $imageEl[0]);
if(swiper.params.autoHeight){
swiper.updateAutoHeight();
}});
emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
});
}
function load(){
const {
$wrapperEl,
params: swiperParams,
slides,
activeIndex
}=swiper;
const isVirtual=swiper.virtual&&swiperParams.virtual.enabled;
const params=swiperParams.lazy;
let slidesPerView=swiperParams.slidesPerView;
if(slidesPerView==='auto'){
slidesPerView=0;
}
function slideExist(index){
if(isVirtual){
if($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length){
return true;
}}else if(slides[index]) return true;
return false;
}
function slideIndex(slideEl){
if(isVirtual){
return $(slideEl).attr('data-swiper-slide-index');
}
return $(slideEl).index();
}
if(!initialImageLoaded) initialImageLoaded=true;
if(swiper.params.watchSlidesProgress){
$wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl=> {
const index=isVirtual ? $(slideEl).attr('data-swiper-slide-index'):$(slideEl).index();
loadInSlide(index);
});
}else if(slidesPerView > 1){
for (let i=activeIndex; i < activeIndex + slidesPerView; i +=1){
if(slideExist(i)) loadInSlide(i);
}}else{
loadInSlide(activeIndex);
}
if(params.loadPrevNext){
if(slidesPerView > 1||params.loadPrevNextAmount&&params.loadPrevNextAmount > 1){
const amount=params.loadPrevNextAmount;
const spv=Math.ceil(slidesPerView);
const maxIndex=Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
const minIndex=Math.max(activeIndex - Math.max(spv, amount), 0);
for (let i=activeIndex + spv; i < maxIndex; i +=1){
if(slideExist(i)) loadInSlide(i);
}
for (let i=minIndex; i < activeIndex; i +=1){
if(slideExist(i)) loadInSlide(i);
}}else{
const nextSlide=$wrapperEl.children(`.${swiperParams.slideNextClass}`);
if(nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));
const prevSlide=$wrapperEl.children(`.${swiperParams.slidePrevClass}`);
if(prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));
}}
}
function checkInViewOnLoad(){
const window=getWindow();
if(!swiper||swiper.destroyed) return;
const $scrollElement=swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement):$(window);
const isWindow=$scrollElement[0]===window;
const scrollElementWidth=isWindow ? window.innerWidth:$scrollElement[0].offsetWidth;
const scrollElementHeight=isWindow ? window.innerHeight:$scrollElement[0].offsetHeight;
const swiperOffset=swiper.$el.offset();
const {
rtlTranslate: rtl
}=swiper;
let inView=false;
if(rtl) swiperOffset.left -=swiper.$el[0].scrollLeft;
const swiperCoord=[[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
for (let i=0; i < swiperCoord.length; i +=1){
const point=swiperCoord[i];
if(point[0] >=0&&point[0] <=scrollElementWidth&&point[1] >=0&&point[1] <=scrollElementHeight){
if(point[0]===0&&point[1]===0) continue;
inView=true;
}}
const passiveListener=swiper.touchEvents.start==='touchstart'&&swiper.support.passiveListener&&swiper.params.passiveListeners ? {
passive: true,
capture: false
}:false;
if(inView){
load();
$scrollElement.off('scroll', checkInViewOnLoad, passiveListener);
}else if(!scrollHandlerAttached){
scrollHandlerAttached=true;
$scrollElement.on('scroll', checkInViewOnLoad, passiveListener);
}}
on('beforeInit', ()=> {
if(swiper.params.lazy.enabled&&swiper.params.preloadImages){
swiper.params.preloadImages=false;
}});
on('init', ()=> {
if(swiper.params.lazy.enabled){
if(swiper.params.lazy.checkInView){
checkInViewOnLoad();
}else{
load();
}}
});
on('scroll', ()=> {
if(swiper.params.freeMode&&swiper.params.freeMode.enabled&&!swiper.params.freeMode.sticky){
load();
}});
on('scrollbarDragMove resize _freeModeNoMomentumRelease', ()=> {
if(swiper.params.lazy.enabled){
if(swiper.params.lazy.checkInView){
checkInViewOnLoad();
}else{
load();
}}
});
on('transitionStart', ()=> {
if(swiper.params.lazy.enabled){
if(swiper.params.lazy.loadOnTransitionStart||!swiper.params.lazy.loadOnTransitionStart&&!initialImageLoaded){
if(swiper.params.lazy.checkInView){
checkInViewOnLoad();
}else{
load();
}}
}});
on('transitionEnd', ()=> {
if(swiper.params.lazy.enabled&&!swiper.params.lazy.loadOnTransitionStart){
if(swiper.params.lazy.checkInView){
checkInViewOnLoad();
}else{
load();
}}
});
on('slideChange', ()=> {
const {
lazy,
cssMode,
watchSlidesProgress,
touchReleaseOnEdges,
resistanceRatio
}=swiper.params;
if(lazy.enabled&&(cssMode||watchSlidesProgress&&(touchReleaseOnEdges||resistanceRatio===0))){
load();
}});
on('destroy', ()=> {
if(!swiper.$el) return;
swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);
});
Object.assign(swiper.lazy, {
load,
loadInSlide
});
}
function Controller(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
controller: {
control: undefined,
inverse: false,
by: 'slide'
}});
swiper.controller={
control: undefined
};
function LinearSpline(x, y){
const binarySearch=function search(){
let maxIndex;
let minIndex;
let guess;
return (array, val)=> {
minIndex=-1;
maxIndex=array.length;
while (maxIndex - minIndex > 1){
guess=maxIndex + minIndex >> 1;
if(array[guess] <=val){
minIndex=guess;
}else{
maxIndex=guess;
}}
return maxIndex;
};}();
this.x=x;
this.y=y;
this.lastIndex=x.length - 1;
let i1;
let i3;
this.interpolate=function interpolate(x2){
if(!x2) return 0;
i3=binarySearch(this.x, x2);
i1=i3 - 1;
return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
};
return this;
}
function getInterpolateFunction(c){
if(!swiper.controller.spline){
swiper.controller.spline=swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid):new LinearSpline(swiper.snapGrid, c.snapGrid);
}}
function setTranslate(_t, byController){
const controlled=swiper.controller.control;
let multiplier;
let controlledTranslate;
const Swiper=swiper.constructor;
function setControlledTranslate(c){
const translate=swiper.rtlTranslate ? -swiper.translate:swiper.translate;
if(swiper.params.controller.by==='slide'){
getInterpolateFunction(c);
controlledTranslate=-swiper.controller.spline.interpolate(-translate);
}
if(!controlledTranslate||swiper.params.controller.by==='container'){
multiplier=(c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
controlledTranslate=(translate - swiper.minTranslate()) * multiplier + c.minTranslate();
}
if(swiper.params.controller.inverse){
controlledTranslate=c.maxTranslate() - controlledTranslate;
}
c.updateProgress(controlledTranslate);
c.setTranslate(controlledTranslate, swiper);
c.updateActiveIndex();
c.updateSlidesClasses();
}
if(Array.isArray(controlled)){
for (let i=0; i < controlled.length; i +=1){
if(controlled[i]!==byController&&controlled[i] instanceof Swiper){
setControlledTranslate(controlled[i]);
}}
}else if(controlled instanceof Swiper&&byController!==controlled){
setControlledTranslate(controlled);
}}
function setTransition(duration, byController){
const Swiper=swiper.constructor;
const controlled=swiper.controller.control;
let i;
function setControlledTransition(c){
c.setTransition(duration, swiper);
if(duration!==0){
c.transitionStart();
if(c.params.autoHeight){
nextTick(()=> {
c.updateAutoHeight();
});
}
c.$wrapperEl.transitionEnd(()=> {
if(!controlled) return;
if(c.params.loop&&swiper.params.controller.by==='slide'){
c.loopFix();
}
c.transitionEnd();
});
}}
if(Array.isArray(controlled)){
for (i=0; i < controlled.length; i +=1){
if(controlled[i]!==byController&&controlled[i] instanceof Swiper){
setControlledTransition(controlled[i]);
}}
}else if(controlled instanceof Swiper&&byController!==controlled){
setControlledTransition(controlled);
}}
function removeSpline(){
if(!swiper.controller.control) return;
if(swiper.controller.spline){
swiper.controller.spline=undefined;
delete swiper.controller.spline;
}}
on('beforeInit', ()=> {
swiper.controller.control=swiper.params.controller.control;
});
on('update', ()=> {
removeSpline();
});
on('resize', ()=> {
removeSpline();
});
on('observerUpdate', ()=> {
removeSpline();
});
on('setTranslate', (_s, translate, byController)=> {
if(!swiper.controller.control) return;
swiper.controller.setTranslate(translate, byController);
});
on('setTransition', (_s, duration, byController)=> {
if(!swiper.controller.control) return;
swiper.controller.setTransition(duration, byController);
});
Object.assign(swiper.controller, {
setTranslate,
setTransition
});
}
function A11y(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
a11y: {
enabled: true,
notificationClass: 'swiper-notification',
prevSlideMessage: 'Previous slide',
nextSlideMessage: 'Next slide',
firstSlideMessage: 'This is the first slide',
lastSlideMessage: 'This is the last slide',
paginationBulletMessage: 'Go to slide {{index}}',
slideLabelMessage: '{{index}} / {{slidesLength}}',
containerMessage: null,
containerRoleDescriptionMessage: null,
itemRoleDescriptionMessage: null,
slideRole: 'group',
id: null
}});
swiper.a11y={
clicked: false
};
let liveRegion=null;
function notify(message){
const notification=liveRegion;
if(notification.length===0) return;
notification.html('');
notification.html(message);
}
function getRandomNumber(size){
if(size===void 0){
size=16;
}
const randomChar=()=> Math.round(16 * Math.random()).toString(16);
return 'x'.repeat(size).replace(/x/g, randomChar);
}
function makeElFocusable($el){
$el.attr('tabIndex', '0');
}
function makeElNotFocusable($el){
$el.attr('tabIndex', '-1');
}
function addElRole($el, role){
$el.attr('role', role);
}
function addElRoleDescription($el, description){
$el.attr('aria-roledescription', description);
}
function addElControls($el, controls){
$el.attr('aria-controls', controls);
}
function addElLabel($el, label){
$el.attr('aria-label', label);
}
function addElId($el, id){
$el.attr('id', id);
}
function addElLive($el, live){
$el.attr('aria-live', live);
}
function disableEl($el){
$el.attr('aria-disabled', true);
}
function enableEl($el){
$el.attr('aria-disabled', false);
}
function onEnterOrSpaceKey(e){
if(e.keyCode!==13&&e.keyCode!==32) return;
const params=swiper.params.a11y;
const $targetEl=$(e.target);
if(swiper.navigation&&swiper.navigation.$nextEl&&$targetEl.is(swiper.navigation.$nextEl)){
if(!(swiper.isEnd&&!swiper.params.loop)){
swiper.slideNext();
}
if(swiper.isEnd){
notify(params.lastSlideMessage);
}else{
notify(params.nextSlideMessage);
}}
if(swiper.navigation&&swiper.navigation.$prevEl&&$targetEl.is(swiper.navigation.$prevEl)){
if(!(swiper.isBeginning&&!swiper.params.loop)){
swiper.slidePrev();
}
if(swiper.isBeginning){
notify(params.firstSlideMessage);
}else{
notify(params.prevSlideMessage);
}}
if(swiper.pagination&&$targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))){
$targetEl[0].click();
}}
function updateNavigation(){
if(swiper.params.loop||swiper.params.rewind||!swiper.navigation) return;
const {
$nextEl,
$prevEl
}=swiper.navigation;
if($prevEl&&$prevEl.length > 0){
if(swiper.isBeginning){
disableEl($prevEl);
makeElNotFocusable($prevEl);
}else{
enableEl($prevEl);
makeElFocusable($prevEl);
}}
if($nextEl&&$nextEl.length > 0){
if(swiper.isEnd){
disableEl($nextEl);
makeElNotFocusable($nextEl);
}else{
enableEl($nextEl);
makeElFocusable($nextEl);
}}
}
function hasPagination(){
return swiper.pagination&&swiper.pagination.bullets&&swiper.pagination.bullets.length;
}
function hasClickablePagination(){
return hasPagination()&&swiper.params.pagination.clickable;
}
function updatePagination(){
const params=swiper.params.a11y;
if(!hasPagination()) return;
swiper.pagination.bullets.each(bulletEl=> {
const $bulletEl=$(bulletEl);
if(swiper.params.pagination.clickable){
makeElFocusable($bulletEl);
if(!swiper.params.pagination.renderBullet){
addElRole($bulletEl, 'button');
addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
}}
if($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)){
$bulletEl.attr('aria-current', 'true');
}else{
$bulletEl.removeAttr('aria-current');
}});
}
const initNavEl=($el, wrapperId, message)=> {
makeElFocusable($el);
if($el[0].tagName!=='BUTTON'){
addElRole($el, 'button');
$el.on('keydown', onEnterOrSpaceKey);
}
addElLabel($el, message);
addElControls($el, wrapperId);
};
const handlePointerDown=()=> {
swiper.a11y.clicked=true;
};
const handlePointerUp=()=> {
requestAnimationFrame(()=> {
requestAnimationFrame(()=> {
if(!swiper.destroyed){
swiper.a11y.clicked=false;
}});
});
};
const handleFocus=e => {
if(swiper.a11y.clicked) return;
const slideEl=e.target.closest(`.${swiper.params.slideClass}`);
if(!slideEl||!swiper.slides.includes(slideEl)) return;
const isActive=swiper.slides.indexOf(slideEl)===swiper.activeIndex;
const isVisible=swiper.params.watchSlidesProgress&&swiper.visibleSlides&&swiper.visibleSlides.includes(slideEl);
if(isActive||isVisible) return;
if(e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents) return;
if(swiper.isHorizontal()){
swiper.el.scrollLeft=0;
}else{
swiper.el.scrollTop=0;
}
swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
};
const initSlides=()=> {
const params=swiper.params.a11y;
if(params.itemRoleDescriptionMessage){
addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);
}
if(params.slideRole){
addElRole($(swiper.slides), params.slideRole);
}
const slidesLength=swiper.params.loop ? swiper.slides.filter(el=> !el.classList.contains(swiper.params.slideDuplicateClass)).length:swiper.slides.length;
if(params.slideLabelMessage){
swiper.slides.each((slideEl, index)=> {
const $slideEl=$(slideEl);
const slideIndex=swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10):index;
const ariaLabelMessage=params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
addElLabel($slideEl, ariaLabelMessage);
});
}};
const init=()=> {
const params=swiper.params.a11y;
swiper.$el.append(liveRegion);
const $containerEl=swiper.$el;
if(params.containerRoleDescriptionMessage){
addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
}
if(params.containerMessage){
addElLabel($containerEl, params.containerMessage);
}
const $wrapperEl=swiper.$wrapperEl;
const wrapperId=params.id||$wrapperEl.attr('id')||`swiper-wrapper-${getRandomNumber(16)}`;
const live=swiper.params.autoplay&&swiper.params.autoplay.enabled ? 'off':'polite';
addElId($wrapperEl, wrapperId);
addElLive($wrapperEl, live);
initSlides();
let $nextEl;
let $prevEl;
if(swiper.navigation&&swiper.navigation.$nextEl){
$nextEl=swiper.navigation.$nextEl;
}
if(swiper.navigation&&swiper.navigation.$prevEl){
$prevEl=swiper.navigation.$prevEl;
}
if($nextEl&&$nextEl.length){
initNavEl($nextEl, wrapperId, params.nextSlideMessage);
}
if($prevEl&&$prevEl.length){
initNavEl($prevEl, wrapperId, params.prevSlideMessage);
}
if(hasClickablePagination()){
swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
}
swiper.$el.on('focus', handleFocus, true);
swiper.$el.on('pointerdown', handlePointerDown, true);
swiper.$el.on('pointerup', handlePointerUp, true);
};
function destroy(){
if(liveRegion&&liveRegion.length > 0) liveRegion.remove();
let $nextEl;
let $prevEl;
if(swiper.navigation&&swiper.navigation.$nextEl){
$nextEl=swiper.navigation.$nextEl;
}
if(swiper.navigation&&swiper.navigation.$prevEl){
$prevEl=swiper.navigation.$prevEl;
}
if($nextEl){
$nextEl.off('keydown', onEnterOrSpaceKey);
}
if($prevEl){
$prevEl.off('keydown', onEnterOrSpaceKey);
}
if(hasClickablePagination()){
swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);
}
swiper.$el.off('focus', handleFocus, true);
swiper.$el.off('pointerdown', handlePointerDown, true);
swiper.$el.off('pointerup', handlePointerUp, true);
}
on('beforeInit', ()=> {
liveRegion=$(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`);
});
on('afterInit', ()=> {
if(!swiper.params.a11y.enabled) return;
init();
});
on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', ()=> {
if(!swiper.params.a11y.enabled) return;
initSlides();
});
on('fromEdge toEdge afterInit lock unlock', ()=> {
if(!swiper.params.a11y.enabled) return;
updateNavigation();
});
on('paginationUpdate', ()=> {
if(!swiper.params.a11y.enabled) return;
updatePagination();
});
on('destroy', ()=> {
if(!swiper.params.a11y.enabled) return;
destroy();
});
}
function History(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
history: {
enabled: false,
root: '',
replaceState: false,
key: 'slides',
keepQuery: false
}});
let initialized=false;
let paths={};
const slugify=text=> {
return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
};
const getPathValues=urlOverride=> {
const window=getWindow();
let location;
if(urlOverride){
location=new URL(urlOverride);
}else{
location=window.location;
}
const pathArray=location.pathname.slice(1).split('/').filter(part=> part!=='');
const total=pathArray.length;
const key=pathArray[total - 2];
const value=pathArray[total - 1];
return {
key,
value
};};
const setHistory=(key, index)=> {
const window=getWindow();
if(!initialized||!swiper.params.history.enabled) return;
let location;
if(swiper.params.url){
location=new URL(swiper.params.url);
}else{
location=window.location;
}
const slide=swiper.slides.eq(index);
let value=slugify(slide.attr('data-history'));
if(swiper.params.history.root.length > 0){
let root=swiper.params.history.root;
if(root[root.length - 1]==='/') root=root.slice(0, root.length - 1);
value=`${root}/${key}/${value}`;
}else if(!location.pathname.includes(key)){
value=`${key}/${value}`;
}
if(swiper.params.history.keepQuery){
value +=location.search;
}
const currentState=window.history.state;
if(currentState&&currentState.value===value){
return;
}
if(swiper.params.history.replaceState){
window.history.replaceState({
value
}, null, value);
}else{
window.history.pushState({
value
}, null, value);
}};
const scrollToSlide=(speed, value, runCallbacks)=> {
if(value){
for (let i=0, length=swiper.slides.length; i < length; i +=1){
const slide=swiper.slides.eq(i);
const slideHistory=slugify(slide.attr('data-history'));
if(slideHistory===value&&!slide.hasClass(swiper.params.slideDuplicateClass)){
const index=slide.index();
swiper.slideTo(index, speed, runCallbacks);
}}
}else{
swiper.slideTo(0, speed, runCallbacks);
}};
const setHistoryPopState=()=> {
paths=getPathValues(swiper.params.url);
scrollToSlide(swiper.params.speed, paths.value, false);
};
const init=()=> {
const window=getWindow();
if(!swiper.params.history) return;
if(!window.history||!window.history.pushState){
swiper.params.history.enabled=false;
swiper.params.hashNavigation.enabled=true;
return;
}
initialized=true;
paths=getPathValues(swiper.params.url);
if(!paths.key&&!paths.value) return;
scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);
if(!swiper.params.history.replaceState){
window.addEventListener('popstate', setHistoryPopState);
}};
const destroy=()=> {
const window=getWindow();
if(!swiper.params.history.replaceState){
window.removeEventListener('popstate', setHistoryPopState);
}};
on('init', ()=> {
if(swiper.params.history.enabled){
init();
}});
on('destroy', ()=> {
if(swiper.params.history.enabled){
destroy();
}});
on('transitionEnd _freeModeNoMomentumRelease', ()=> {
if(initialized){
setHistory(swiper.params.history.key, swiper.activeIndex);
}});
on('slideChange', ()=> {
if(initialized&&swiper.params.cssMode){
setHistory(swiper.params.history.key, swiper.activeIndex);
}});
}
function HashNavigation(_ref){
let {
swiper,
extendParams,
emit,
on
}=_ref;
let initialized=false;
const document=getDocument();
const window=getWindow();
extendParams({
hashNavigation: {
enabled: false,
replaceState: false,
watchState: false
}});
const onHashChange=()=> {
emit('hashChange');
const newHash=document.location.hash.replace('#', '');
const activeSlideHash=swiper.slides.eq(swiper.activeIndex).attr('data-hash');
if(newHash!==activeSlideHash){
const newIndex=swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index();
if(typeof newIndex==='undefined') return;
swiper.slideTo(newIndex);
}};
const setHash=()=> {
if(!initialized||!swiper.params.hashNavigation.enabled) return;
if(swiper.params.hashNavigation.replaceState&&window.history&&window.history.replaceState){
window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}`||'');
emit('hashSet');
}else{
const slide=swiper.slides.eq(swiper.activeIndex);
const hash=slide.attr('data-hash')||slide.attr('data-history');
document.location.hash=hash||'';
emit('hashSet');
}};
const init=()=> {
if(!swiper.params.hashNavigation.enabled||swiper.params.history&&swiper.params.history.enabled) return;
initialized=true;
const hash=document.location.hash.replace('#', '');
if(hash){
const speed=0;
for (let i=0, length=swiper.slides.length; i < length; i +=1){
const slide=swiper.slides.eq(i);
const slideHash=slide.attr('data-hash')||slide.attr('data-history');
if(slideHash===hash&&!slide.hasClass(swiper.params.slideDuplicateClass)){
const index=slide.index();
swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
}}
}
if(swiper.params.hashNavigation.watchState){
$(window).on('hashchange', onHashChange);
}};
const destroy=()=> {
if(swiper.params.hashNavigation.watchState){
$(window).off('hashchange', onHashChange);
}};
on('init', ()=> {
if(swiper.params.hashNavigation.enabled){
init();
}});
on('destroy', ()=> {
if(swiper.params.hashNavigation.enabled){
destroy();
}});
on('transitionEnd _freeModeNoMomentumRelease', ()=> {
if(initialized){
setHash();
}});
on('slideChange', ()=> {
if(initialized&&swiper.params.cssMode){
setHash();
}});
}
function Autoplay(_ref){
let {
swiper,
extendParams,
on,
emit
}=_ref;
let timeout;
swiper.autoplay={
running: false,
paused: false
};
extendParams({
autoplay: {
enabled: false,
delay: 3000,
waitForTransition: true,
disableOnInteraction: true,
stopOnLastSlide: false,
reverseDirection: false,
pauseOnMouseEnter: false
}});
function run(){
if(!swiper.size){
swiper.autoplay.running=false;
swiper.autoplay.paused=false;
return;
}
const $activeSlideEl=swiper.slides.eq(swiper.activeIndex);
let delay=swiper.params.autoplay.delay;
if($activeSlideEl.attr('data-swiper-autoplay')){
delay=$activeSlideEl.attr('data-swiper-autoplay')||swiper.params.autoplay.delay;
}
clearTimeout(timeout);
timeout=nextTick(()=> {
let autoplayResult;
if(swiper.params.autoplay.reverseDirection){
if(swiper.params.loop){
swiper.loopFix();
autoplayResult=swiper.slidePrev(swiper.params.speed, true, true);
emit('autoplay');
}else if(!swiper.isBeginning){
autoplayResult=swiper.slidePrev(swiper.params.speed, true, true);
emit('autoplay');
}else if(!swiper.params.autoplay.stopOnLastSlide){
autoplayResult=swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
emit('autoplay');
}else{
stop();
}}else if(swiper.params.loop){
swiper.loopFix();
autoplayResult=swiper.slideNext(swiper.params.speed, true, true);
emit('autoplay');
}else if(!swiper.isEnd){
autoplayResult=swiper.slideNext(swiper.params.speed, true, true);
emit('autoplay');
}else if(!swiper.params.autoplay.stopOnLastSlide){
autoplayResult=swiper.slideTo(0, swiper.params.speed, true, true);
emit('autoplay');
}else{
stop();
}
if(swiper.params.cssMode&&swiper.autoplay.running) run();else if(autoplayResult===false){
run();
}}, delay);
}
function start(){
if(typeof timeout!=='undefined') return false;
if(swiper.autoplay.running) return false;
swiper.autoplay.running=true;
emit('autoplayStart');
run();
return true;
}
function stop(){
if(!swiper.autoplay.running) return false;
if(typeof timeout==='undefined') return false;
if(timeout){
clearTimeout(timeout);
timeout=undefined;
}
swiper.autoplay.running=false;
emit('autoplayStop');
return true;
}
function pause(speed){
if(!swiper.autoplay.running) return;
if(swiper.autoplay.paused) return;
if(timeout) clearTimeout(timeout);
swiper.autoplay.paused=true;
if(speed===0||!swiper.params.autoplay.waitForTransition){
swiper.autoplay.paused=false;
run();
}else{
['transitionend', 'webkitTransitionEnd'].forEach(event=> {
swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);
});
}}
function onVisibilityChange(){
const document=getDocument();
if(document.visibilityState==='hidden'&&swiper.autoplay.running){
pause();
}
if(document.visibilityState==='visible'&&swiper.autoplay.paused){
run();
swiper.autoplay.paused=false;
}}
function onTransitionEnd(e){
if(!swiper||swiper.destroyed||!swiper.$wrapperEl) return;
if(e.target!==swiper.$wrapperEl[0]) return;
['transitionend', 'webkitTransitionEnd'].forEach(event=> {
swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
});
swiper.autoplay.paused=false;
if(!swiper.autoplay.running){
stop();
}else{
run();
}}
function onMouseEnter(){
if(swiper.params.autoplay.disableOnInteraction){
stop();
}else{
emit('autoplayPause');
pause();
}
['transitionend', 'webkitTransitionEnd'].forEach(event=> {
swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);
});
}
function onMouseLeave(){
if(swiper.params.autoplay.disableOnInteraction){
return;
}
swiper.autoplay.paused=false;
emit('autoplayResume');
run();
}
function attachMouseEvents(){
if(swiper.params.autoplay.pauseOnMouseEnter){
swiper.$el.on('mouseenter', onMouseEnter);
swiper.$el.on('mouseleave', onMouseLeave);
}}
function detachMouseEvents(){
swiper.$el.off('mouseenter', onMouseEnter);
swiper.$el.off('mouseleave', onMouseLeave);
}
on('init', ()=> {
if(swiper.params.autoplay.enabled){
start();
const document=getDocument();
document.addEventListener('visibilitychange', onVisibilityChange);
attachMouseEvents();
}});
on('beforeTransitionStart', (_s, speed, internal)=> {
if(swiper.autoplay.running){
if(internal||!swiper.params.autoplay.disableOnInteraction){
swiper.autoplay.pause(speed);
}else{
stop();
}}
});
on('sliderFirstMove', ()=> {
if(swiper.autoplay.running){
if(swiper.params.autoplay.disableOnInteraction){
stop();
}else{
pause();
}}
});
on('touchEnd', ()=> {
if(swiper.params.cssMode&&swiper.autoplay.paused&&!swiper.params.autoplay.disableOnInteraction){
run();
}});
on('destroy', ()=> {
detachMouseEvents();
if(swiper.autoplay.running){
stop();
}
const document=getDocument();
document.removeEventListener('visibilitychange', onVisibilityChange);
});
Object.assign(swiper.autoplay, {
pause,
run,
start,
stop
});
}
function Thumb(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
thumbs: {
swiper: null,
multipleActiveThumbs: true,
autoScrollOffset: 0,
slideThumbActiveClass: 'swiper-slide-thumb-active',
thumbsContainerClass: 'swiper-thumbs'
}});
let initialized=false;
let swiperCreated=false;
swiper.thumbs={
swiper: null
};
function onThumbClick(){
const thumbsSwiper=swiper.thumbs.swiper;
if(!thumbsSwiper||thumbsSwiper.destroyed) return;
const clickedIndex=thumbsSwiper.clickedIndex;
const clickedSlide=thumbsSwiper.clickedSlide;
if(clickedSlide&&$(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
if(typeof clickedIndex==='undefined'||clickedIndex===null) return;
let slideToIndex;
if(thumbsSwiper.params.loop){
slideToIndex=parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
}else{
slideToIndex=clickedIndex;
}
if(swiper.params.loop){
let currentIndex=swiper.activeIndex;
if(swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)){
swiper.loopFix();
swiper._clientLeft=swiper.$wrapperEl[0].clientLeft;
currentIndex=swiper.activeIndex;
}
const prevIndex=swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
const nextIndex=swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index();
if(typeof prevIndex==='undefined') slideToIndex=nextIndex;else if(typeof nextIndex==='undefined') slideToIndex=prevIndex;else if(nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex=nextIndex;else slideToIndex=prevIndex;
}
swiper.slideTo(slideToIndex);
}
function init(){
const {
thumbs: thumbsParams
}=swiper.params;
if(initialized) return false;
initialized=true;
const SwiperClass=swiper.constructor;
if(thumbsParams.swiper instanceof SwiperClass){
swiper.thumbs.swiper=thumbsParams.swiper;
Object.assign(swiper.thumbs.swiper.originalParams, {
watchSlidesProgress: true,
slideToClickedSlide: false
});
Object.assign(swiper.thumbs.swiper.params, {
watchSlidesProgress: true,
slideToClickedSlide: false
});
}else if(isObject(thumbsParams.swiper)){
const thumbsSwiperParams=Object.assign({}, thumbsParams.swiper);
Object.assign(thumbsSwiperParams, {
watchSlidesProgress: true,
slideToClickedSlide: false
});
swiper.thumbs.swiper=new SwiperClass(thumbsSwiperParams);
swiperCreated=true;
}
swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
swiper.thumbs.swiper.on('tap', onThumbClick);
return true;
}
function update(initial){
const thumbsSwiper=swiper.thumbs.swiper;
if(!thumbsSwiper||thumbsSwiper.destroyed) return;
const slidesPerView=thumbsSwiper.params.slidesPerView==='auto' ? thumbsSwiper.slidesPerViewDynamic():thumbsSwiper.params.slidesPerView;
let thumbsToActivate=1;
const thumbActiveClass=swiper.params.thumbs.slideThumbActiveClass;
if(swiper.params.slidesPerView > 1&&!swiper.params.centeredSlides){
thumbsToActivate=swiper.params.slidesPerView;
}
if(!swiper.params.thumbs.multipleActiveThumbs){
thumbsToActivate=1;
}
thumbsToActivate=Math.floor(thumbsToActivate);
thumbsSwiper.slides.removeClass(thumbActiveClass);
if(thumbsSwiper.params.loop||thumbsSwiper.params.virtual&&thumbsSwiper.params.virtual.enabled){
for (let i=0; i < thumbsToActivate; i +=1){
thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
}}else{
for (let i=0; i < thumbsToActivate; i +=1){
thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
}}
const autoScrollOffset=swiper.params.thumbs.autoScrollOffset;
const useOffset=autoScrollOffset&&!thumbsSwiper.params.loop;
if(swiper.realIndex!==thumbsSwiper.realIndex||useOffset){
let currentThumbsIndex=thumbsSwiper.activeIndex;
let newThumbsIndex;
let direction;
if(thumbsSwiper.params.loop){
if(thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)){
thumbsSwiper.loopFix();
thumbsSwiper._clientLeft=thumbsSwiper.$wrapperEl[0].clientLeft;
currentThumbsIndex=thumbsSwiper.activeIndex;
}
const prevThumbsIndex=thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
const nextThumbsIndex=thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index();
if(typeof prevThumbsIndex==='undefined'){
newThumbsIndex=nextThumbsIndex;
}else if(typeof nextThumbsIndex==='undefined'){
newThumbsIndex=prevThumbsIndex;
}else if(nextThumbsIndex - currentThumbsIndex===currentThumbsIndex - prevThumbsIndex){
newThumbsIndex=thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex:currentThumbsIndex;
}else if(nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex){
newThumbsIndex=nextThumbsIndex;
}else{
newThumbsIndex=prevThumbsIndex;
}
direction=swiper.activeIndex > swiper.previousIndex ? 'next':'prev';
}else{
newThumbsIndex=swiper.realIndex;
direction=newThumbsIndex > swiper.previousIndex ? 'next':'prev';
}
if(useOffset){
newThumbsIndex +=direction==='next' ? autoScrollOffset:-1 * autoScrollOffset;
}
if(thumbsSwiper.visibleSlidesIndexes&&thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0){
if(thumbsSwiper.params.centeredSlides){
if(newThumbsIndex > currentThumbsIndex){
newThumbsIndex=newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
}else{
newThumbsIndex=newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
}}else if(newThumbsIndex > currentThumbsIndex&&thumbsSwiper.params.slidesPerGroup===1) ;
thumbsSwiper.slideTo(newThumbsIndex, initial ? 0:undefined);
}}
}
on('beforeInit', ()=> {
const {
thumbs
}=swiper.params;
if(!thumbs||!thumbs.swiper) return;
init();
update(true);
});
on('slideChange update resize observerUpdate', ()=> {
update();
});
on('setTransition', (_s, duration)=> {
const thumbsSwiper=swiper.thumbs.swiper;
if(!thumbsSwiper||thumbsSwiper.destroyed) return;
thumbsSwiper.setTransition(duration);
});
on('beforeDestroy', ()=> {
const thumbsSwiper=swiper.thumbs.swiper;
if(!thumbsSwiper||thumbsSwiper.destroyed) return;
if(swiperCreated){
thumbsSwiper.destroy();
}});
Object.assign(swiper.thumbs, {
init,
update
});
}
function freeMode(_ref){
let {
swiper,
extendParams,
emit,
once
}=_ref;
extendParams({
freeMode: {
enabled: false,
momentum: true,
momentumRatio: 1,
momentumBounce: true,
momentumBounceRatio: 1,
momentumVelocityRatio: 1,
sticky: false,
minimumVelocity: 0.02
}});
function onTouchStart(){
const translate=swiper.getTranslate();
swiper.setTranslate(translate);
swiper.setTransition(0);
swiper.touchEventsData.velocities.length=0;
swiper.freeMode.onTouchEnd({
currentPos: swiper.rtl ? swiper.translate:-swiper.translate
});
}
function onTouchMove(){
const {
touchEventsData: data,
touches
}=swiper;
if(data.velocities.length===0){
data.velocities.push({
position: touches[swiper.isHorizontal() ? 'startX':'startY'],
time: data.touchStartTime
});
}
data.velocities.push({
position: touches[swiper.isHorizontal() ? 'currentX':'currentY'],
time: now()
});
}
function onTouchEnd(_ref2){
let {
currentPos
}=_ref2;
const {
params,
$wrapperEl,
rtlTranslate: rtl,
snapGrid,
touchEventsData: data
}=swiper;
const touchEndTime=now();
const timeDiff=touchEndTime - data.touchStartTime;
if(currentPos < -swiper.minTranslate()){
swiper.slideTo(swiper.activeIndex);
return;
}
if(currentPos > -swiper.maxTranslate()){
if(swiper.slides.length < snapGrid.length){
swiper.slideTo(snapGrid.length - 1);
}else{
swiper.slideTo(swiper.slides.length - 1);
}
return;
}
if(params.freeMode.momentum){
if(data.velocities.length > 1){
const lastMoveEvent=data.velocities.pop();
const velocityEvent=data.velocities.pop();
const distance=lastMoveEvent.position - velocityEvent.position;
const time=lastMoveEvent.time - velocityEvent.time;
swiper.velocity=distance / time;
swiper.velocity /=2;
if(Math.abs(swiper.velocity) < params.freeMode.minimumVelocity){
swiper.velocity=0;
}
if(time > 150||now() - lastMoveEvent.time > 300){
swiper.velocity=0;
}}else{
swiper.velocity=0;
}
swiper.velocity *=params.freeMode.momentumVelocityRatio;
data.velocities.length=0;
let momentumDuration=1000 * params.freeMode.momentumRatio;
const momentumDistance=swiper.velocity * momentumDuration;
let newPosition=swiper.translate + momentumDistance;
if(rtl) newPosition=-newPosition;
let doBounce=false;
let afterBouncePosition;
const bounceAmount=Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;
let needsLoopFix;
if(newPosition < swiper.maxTranslate()){
if(params.freeMode.momentumBounce){
if(newPosition + swiper.maxTranslate() < -bounceAmount){
newPosition=swiper.maxTranslate() - bounceAmount;
}
afterBouncePosition=swiper.maxTranslate();
doBounce=true;
data.allowMomentumBounce=true;
}else{
newPosition=swiper.maxTranslate();
}
if(params.loop&&params.centeredSlides) needsLoopFix=true;
}else if(newPosition > swiper.minTranslate()){
if(params.freeMode.momentumBounce){
if(newPosition - swiper.minTranslate() > bounceAmount){
newPosition=swiper.minTranslate() + bounceAmount;
}
afterBouncePosition=swiper.minTranslate();
doBounce=true;
data.allowMomentumBounce=true;
}else{
newPosition=swiper.minTranslate();
}
if(params.loop&&params.centeredSlides) needsLoopFix=true;
}else if(params.freeMode.sticky){
let nextSlide;
for (let j=0; j < snapGrid.length; j +=1){
if(snapGrid[j] > -newPosition){
nextSlide=j;
break;
}}
if(Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition)||swiper.swipeDirection==='next'){
newPosition=snapGrid[nextSlide];
}else{
newPosition=snapGrid[nextSlide - 1];
}
newPosition=-newPosition;
}
if(needsLoopFix){
once('transitionEnd', ()=> {
swiper.loopFix();
});
}
if(swiper.velocity!==0){
if(rtl){
momentumDuration=Math.abs((-newPosition - swiper.translate) / swiper.velocity);
}else{
momentumDuration=Math.abs((newPosition - swiper.translate) / swiper.velocity);
}
if(params.freeMode.sticky){
const moveDistance=Math.abs((rtl ? -newPosition:newPosition) - swiper.translate);
const currentSlideSize=swiper.slidesSizesGrid[swiper.activeIndex];
if(moveDistance < currentSlideSize){
momentumDuration=params.speed;
}else if(moveDistance < 2 * currentSlideSize){
momentumDuration=params.speed * 1.5;
}else{
momentumDuration=params.speed * 2.5;
}}
}else if(params.freeMode.sticky){
swiper.slideToClosest();
return;
}
if(params.freeMode.momentumBounce&&doBounce){
swiper.updateProgress(afterBouncePosition);
swiper.setTransition(momentumDuration);
swiper.setTranslate(newPosition);
swiper.transitionStart(true, swiper.swipeDirection);
swiper.animating=true;
$wrapperEl.transitionEnd(()=> {
if(!swiper||swiper.destroyed||!data.allowMomentumBounce) return;
emit('momentumBounce');
swiper.setTransition(params.speed);
setTimeout(()=> {
swiper.setTranslate(afterBouncePosition);
$wrapperEl.transitionEnd(()=> {
if(!swiper||swiper.destroyed) return;
swiper.transitionEnd();
});
}, 0);
});
}else if(swiper.velocity){
emit('_freeModeNoMomentumRelease');
swiper.updateProgress(newPosition);
swiper.setTransition(momentumDuration);
swiper.setTranslate(newPosition);
swiper.transitionStart(true, swiper.swipeDirection);
if(!swiper.animating){
swiper.animating=true;
$wrapperEl.transitionEnd(()=> {
if(!swiper||swiper.destroyed) return;
swiper.transitionEnd();
});
}}else{
swiper.updateProgress(newPosition);
}
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}else if(params.freeMode.sticky){
swiper.slideToClosest();
return;
}else if(params.freeMode){
emit('_freeModeNoMomentumRelease');
}
if(!params.freeMode.momentum||timeDiff >=params.longSwipesMs){
swiper.updateProgress();
swiper.updateActiveIndex();
swiper.updateSlidesClasses();
}}
Object.assign(swiper, {
freeMode: {
onTouchStart,
onTouchMove,
onTouchEnd
}});
}
function Grid(_ref){
let {
swiper,
extendParams
}=_ref;
extendParams({
grid: {
rows: 1,
fill: 'column'
}});
let slidesNumberEvenToRows;
let slidesPerRow;
let numFullColumns;
const initSlides=slidesLength=> {
const {
slidesPerView
}=swiper.params;
const {
rows,
fill
}=swiper.params.grid;
slidesPerRow=slidesNumberEvenToRows / rows;
numFullColumns=Math.floor(slidesLength / rows);
if(Math.floor(slidesLength / rows)===slidesLength / rows){
slidesNumberEvenToRows=slidesLength;
}else{
slidesNumberEvenToRows=Math.ceil(slidesLength / rows) * rows;
}
if(slidesPerView!=='auto'&&fill==='row'){
slidesNumberEvenToRows=Math.max(slidesNumberEvenToRows, slidesPerView * rows);
}};
const updateSlide=(i, slide, slidesLength, getDirectionLabel)=> {
const {
slidesPerGroup,
spaceBetween
}=swiper.params;
const {
rows,
fill
}=swiper.params.grid;
let newSlideOrderIndex;
let column;
let row;
if(fill==='row'&&slidesPerGroup > 1){
const groupIndex=Math.floor(i / (slidesPerGroup * rows));
const slideIndexInGroup=i - rows * slidesPerGroup * groupIndex;
const columnsInGroup=groupIndex===0 ? slidesPerGroup:Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);
row=Math.floor(slideIndexInGroup / columnsInGroup);
column=slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;
newSlideOrderIndex=column + row * slidesNumberEvenToRows / rows;
slide.css({
'-webkit-order': newSlideOrderIndex,
order: newSlideOrderIndex
});
}else if(fill==='column'){
column=Math.floor(i / rows);
row=i - column * rows;
if(column > numFullColumns||column===numFullColumns&&row===rows - 1){
row +=1;
if(row >=rows){
row=0;
column +=1;
}}
}else{
row=Math.floor(i / slidesPerRow);
column=i - row * slidesPerRow;
}
slide.css(getDirectionLabel('margin-top'), row!==0 ? spaceBetween&&`${spaceBetween}px`:'');
};
const updateWrapperSize=(slideSize, snapGrid, getDirectionLabel)=> {
const {
spaceBetween,
centeredSlides,
roundLengths
}=swiper.params;
const {
rows
}=swiper.params.grid;
swiper.virtualSize=(slideSize + spaceBetween) * slidesNumberEvenToRows;
swiper.virtualSize=Math.ceil(swiper.virtualSize / rows) - spaceBetween;
swiper.$wrapperEl.css({
[getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`
});
if(centeredSlides){
snapGrid.splice(0, snapGrid.length);
const newSlidesGrid=[];
for (let i=0; i < snapGrid.length; i +=1){
let slidesGridItem=snapGrid[i];
if(roundLengths) slidesGridItem=Math.floor(slidesGridItem);
if(snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
}
snapGrid.push(...newSlidesGrid);
}};
swiper.grid={
initSlides,
updateSlide,
updateWrapperSize
};}
function appendSlide(slides){
const swiper=this;
const {
$wrapperEl,
params
}=swiper;
if(params.loop){
swiper.loopDestroy();
}
if(typeof slides==='object'&&'length' in slides){
for (let i=0; i < slides.length; i +=1){
if(slides[i]) $wrapperEl.append(slides[i]);
}}else{
$wrapperEl.append(slides);
}
if(params.loop){
swiper.loopCreate();
}
if(!params.observer){
swiper.update();
}}
function prependSlide(slides){
const swiper=this;
const {
params,
$wrapperEl,
activeIndex
}=swiper;
if(params.loop){
swiper.loopDestroy();
}
let newActiveIndex=activeIndex + 1;
if(typeof slides==='object'&&'length' in slides){
for (let i=0; i < slides.length; i +=1){
if(slides[i]) $wrapperEl.prepend(slides[i]);
}
newActiveIndex=activeIndex + slides.length;
}else{
$wrapperEl.prepend(slides);
}
if(params.loop){
swiper.loopCreate();
}
if(!params.observer){
swiper.update();
}
swiper.slideTo(newActiveIndex, 0, false);
}
function addSlide(index, slides){
const swiper=this;
const {
$wrapperEl,
params,
activeIndex
}=swiper;
let activeIndexBuffer=activeIndex;
if(params.loop){
activeIndexBuffer -=swiper.loopedSlides;
swiper.loopDestroy();
swiper.slides=$wrapperEl.children(`.${params.slideClass}`);
}
const baseLength=swiper.slides.length;
if(index <=0){
swiper.prependSlide(slides);
return;
}
if(index >=baseLength){
swiper.appendSlide(slides);
return;
}
let newActiveIndex=activeIndexBuffer > index ? activeIndexBuffer + 1:activeIndexBuffer;
const slidesBuffer=[];
for (let i=baseLength - 1; i >=index; i -=1){
const currentSlide=swiper.slides.eq(i);
currentSlide.remove();
slidesBuffer.unshift(currentSlide);
}
if(typeof slides==='object'&&'length' in slides){
for (let i=0; i < slides.length; i +=1){
if(slides[i]) $wrapperEl.append(slides[i]);
}
newActiveIndex=activeIndexBuffer > index ? activeIndexBuffer + slides.length:activeIndexBuffer;
}else{
$wrapperEl.append(slides);
}
for (let i=0; i < slidesBuffer.length; i +=1){
$wrapperEl.append(slidesBuffer[i]);
}
if(params.loop){
swiper.loopCreate();
}
if(!params.observer){
swiper.update();
}
if(params.loop){
swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
}else{
swiper.slideTo(newActiveIndex, 0, false);
}}
function removeSlide(slidesIndexes){
const swiper=this;
const {
params,
$wrapperEl,
activeIndex
}=swiper;
let activeIndexBuffer=activeIndex;
if(params.loop){
activeIndexBuffer -=swiper.loopedSlides;
swiper.loopDestroy();
swiper.slides=$wrapperEl.children(`.${params.slideClass}`);
}
let newActiveIndex=activeIndexBuffer;
let indexToRemove;
if(typeof slidesIndexes==='object'&&'length' in slidesIndexes){
for (let i=0; i < slidesIndexes.length; i +=1){
indexToRemove=slidesIndexes[i];
if(swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
if(indexToRemove < newActiveIndex) newActiveIndex -=1;
}
newActiveIndex=Math.max(newActiveIndex, 0);
}else{
indexToRemove=slidesIndexes;
if(swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
if(indexToRemove < newActiveIndex) newActiveIndex -=1;
newActiveIndex=Math.max(newActiveIndex, 0);
}
if(params.loop){
swiper.loopCreate();
}
if(!params.observer){
swiper.update();
}
if(params.loop){
swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
}else{
swiper.slideTo(newActiveIndex, 0, false);
}}
function removeAllSlides(){
const swiper=this;
const slidesIndexes=[];
for (let i=0; i < swiper.slides.length; i +=1){
slidesIndexes.push(i);
}
swiper.removeSlide(slidesIndexes);
}
function Manipulation(_ref){
let {
swiper
}=_ref;
Object.assign(swiper, {
appendSlide: appendSlide.bind(swiper),
prependSlide: prependSlide.bind(swiper),
addSlide: addSlide.bind(swiper),
removeSlide: removeSlide.bind(swiper),
removeAllSlides: removeAllSlides.bind(swiper)
});
}
function effectInit(params){
const {
effect,
swiper,
on,
setTranslate,
setTransition,
overwriteParams,
perspective,
recreateShadows,
getEffectParams
}=params;
on('beforeInit', ()=> {
if(swiper.params.effect!==effect) return;
swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);
if(perspective&&perspective()){
swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
}
const overwriteParamsResult=overwriteParams ? overwriteParams():{};
Object.assign(swiper.params, overwriteParamsResult);
Object.assign(swiper.originalParams, overwriteParamsResult);
});
on('setTranslate', ()=> {
if(swiper.params.effect!==effect) return;
setTranslate();
});
on('setTransition', (_s, duration)=> {
if(swiper.params.effect!==effect) return;
setTransition(duration);
});
on('transitionEnd', ()=> {
if(swiper.params.effect!==effect) return;
if(recreateShadows){
if(!getEffectParams||!getEffectParams().slideShadows) return;
swiper.slides.each(slideEl=> {
const $slideEl=swiper.$(slideEl);
$slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();
});
recreateShadows();
}});
let requireUpdateOnVirtual;
on('virtualUpdate', ()=> {
if(swiper.params.effect!==effect) return;
if(!swiper.slides.length){
requireUpdateOnVirtual=true;
}
requestAnimationFrame(()=> {
if(requireUpdateOnVirtual&&swiper.slides&&swiper.slides.length){
setTranslate();
requireUpdateOnVirtual=false;
}});
});
}
function effectTarget(effectParams, $slideEl){
if(effectParams.transformEl){
return $slideEl.find(effectParams.transformEl).css({
'backface-visibility': 'hidden',
'-webkit-backface-visibility': 'hidden'
});
}
return $slideEl;
}
function effectVirtualTransitionEnd(_ref){
let {
swiper,
duration,
transformEl,
allSlides
}=_ref;
const {
slides,
activeIndex,
$wrapperEl
}=swiper;
if(swiper.params.virtualTranslate&&duration!==0){
let eventTriggered=false;
let $transitionEndTarget;
if(allSlides){
$transitionEndTarget=transformEl ? slides.find(transformEl):slides;
}else{
$transitionEndTarget=transformEl ? slides.eq(activeIndex).find(transformEl):slides.eq(activeIndex);
}
$transitionEndTarget.transitionEnd(()=> {
if(eventTriggered) return;
if(!swiper||swiper.destroyed) return;
eventTriggered=true;
swiper.animating=false;
const triggerEvents=['webkitTransitionEnd', 'transitionend'];
for (let i=0; i < triggerEvents.length; i +=1){
$wrapperEl.trigger(triggerEvents[i]);
}});
}}
function EffectFade(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
fadeEffect: {
crossFade: false,
transformEl: null
}});
const setTranslate=()=> {
const {
slides
}=swiper;
const params=swiper.params.fadeEffect;
for (let i=0; i < slides.length; i +=1){
const $slideEl=swiper.slides.eq(i);
const offset=$slideEl[0].swiperSlideOffset;
let tx=-offset;
if(!swiper.params.virtualTranslate) tx -=swiper.translate;
let ty=0;
if(!swiper.isHorizontal()){
ty=tx;
tx=0;
}
const slideOpacity=swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0):1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
const $targetEl=effectTarget(params, $slideEl);
$targetEl.css({
opacity: slideOpacity
}).transform(`translate3d(${tx}px, ${ty}px, 0px)`);
}};
const setTransition=duration=> {
const {
transformEl
}=swiper.params.fadeEffect;
const $transitionElements=transformEl ? swiper.slides.find(transformEl):swiper.slides;
$transitionElements.transition(duration);
effectVirtualTransitionEnd({
swiper,
duration,
transformEl,
allSlides: true
});
};
effectInit({
effect: 'fade',
swiper,
on,
setTranslate,
setTransition,
overwriteParams: ()=> ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: true,
spaceBetween: 0,
virtualTranslate: !swiper.params.cssMode
})
});
}
function EffectCube(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
cubeEffect: {
slideShadows: true,
shadow: true,
shadowOffset: 20,
shadowScale: 0.94
}});
const createSlideShadows=($slideEl, progress, isHorizontal)=> {
let shadowBefore=isHorizontal ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top');
let shadowAfter=isHorizontal ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom');
if(shadowBefore.length===0){
shadowBefore=$(`<div class="swiper-slide-shadow-${isHorizontal ? 'left':'top'}"></div>`);
$slideEl.append(shadowBefore);
}
if(shadowAfter.length===0){
shadowAfter=$(`<div class="swiper-slide-shadow-${isHorizontal ? 'right':'bottom'}"></div>`);
$slideEl.append(shadowAfter);
}
if(shadowBefore.length) shadowBefore[0].style.opacity=Math.max(-progress, 0);
if(shadowAfter.length) shadowAfter[0].style.opacity=Math.max(progress, 0);
};
const recreateShadows=()=> {
const isHorizontal=swiper.isHorizontal();
swiper.slides.each(slideEl=> {
const progress=Math.max(Math.min(slideEl.progress, 1), -1);
createSlideShadows($(slideEl), progress, isHorizontal);
});
};
const setTranslate=()=> {
const {
$el,
$wrapperEl,
slides,
width: swiperWidth,
height: swiperHeight,
rtlTranslate: rtl,
size: swiperSize,
browser
}=swiper;
const params=swiper.params.cubeEffect;
const isHorizontal=swiper.isHorizontal();
const isVirtual=swiper.virtual&&swiper.params.virtual.enabled;
let wrapperRotate=0;
let $cubeShadowEl;
if(params.shadow){
if(isHorizontal){
$cubeShadowEl=$wrapperEl.find('.swiper-cube-shadow');
if($cubeShadowEl.length===0){
$cubeShadowEl=$('<div class="swiper-cube-shadow"></div>');
$wrapperEl.append($cubeShadowEl);
}
$cubeShadowEl.css({
height: `${swiperWidth}px`
});
}else{
$cubeShadowEl=$el.find('.swiper-cube-shadow');
if($cubeShadowEl.length===0){
$cubeShadowEl=$('<div class="swiper-cube-shadow"></div>');
$el.append($cubeShadowEl);
}}
}
for (let i=0; i < slides.length; i +=1){
const $slideEl=slides.eq(i);
let slideIndex=i;
if(isVirtual){
slideIndex=parseInt($slideEl.attr('data-swiper-slide-index'), 10);
}
let slideAngle=slideIndex * 90;
let round=Math.floor(slideAngle / 360);
if(rtl){
slideAngle=-slideAngle;
round=Math.floor(-slideAngle / 360);
}
const progress=Math.max(Math.min($slideEl[0].progress, 1), -1);
let tx=0;
let ty=0;
let tz=0;
if(slideIndex % 4===0){
tx=-round * 4 * swiperSize;
tz=0;
}else if((slideIndex - 1) % 4===0){
tx=0;
tz=-round * 4 * swiperSize;
}else if((slideIndex - 2) % 4===0){
tx=swiperSize + round * 4 * swiperSize;
tz=swiperSize;
}else if((slideIndex - 3) % 4===0){
tx=-swiperSize;
tz=3 * swiperSize + swiperSize * 4 * round;
}
if(rtl){
tx=-tx;
}
if(!isHorizontal){
ty=tx;
tx=0;
}
const transform=`rotateX(${isHorizontal ? 0:-slideAngle}deg) rotateY(${isHorizontal ? slideAngle:0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;
if(progress <=1&&progress > -1){
wrapperRotate=slideIndex * 90 + progress * 90;
if(rtl) wrapperRotate=-slideIndex * 90 - progress * 90;
}
$slideEl.transform(transform);
if(params.slideShadows){
createSlideShadows($slideEl, progress, isHorizontal);
}}
$wrapperEl.css({
'-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,
'transform-origin': `50% 50% -${swiperSize / 2}px`
});
if(params.shadow){
if(isHorizontal){
$cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);
}else{
const shadowAngle=Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
const multiplier=1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
const scale1=params.shadowScale;
const scale2=params.shadowScale / multiplier;
const offset=params.shadowOffset;
$cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);
}}
const zFactor=browser.isSafari||browser.isWebView ? -swiperSize / 2:0;
$wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0:wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate:0}deg)`);
$wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);
};
const setTransition=duration=> {
const {
$el,
slides
}=swiper;
slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
if(swiper.params.cubeEffect.shadow&&!swiper.isHorizontal()){
$el.find('.swiper-cube-shadow').transition(duration);
}};
effectInit({
effect: 'cube',
swiper,
on,
setTranslate,
setTransition,
recreateShadows,
getEffectParams: ()=> swiper.params.cubeEffect,
perspective: ()=> true,
overwriteParams: ()=> ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: true,
resistanceRatio: 0,
spaceBetween: 0,
centeredSlides: false,
virtualTranslate: true
})
});
}
function createShadow(params, $slideEl, side){
const shadowClass=`swiper-slide-shadow${side ? `-${side}`:''}`;
const $shadowContainer=params.transformEl ? $slideEl.find(params.transformEl):$slideEl;
let $shadowEl=$shadowContainer.children(`.${shadowClass}`);
if(!$shadowEl.length){
$shadowEl=$(`<div class="swiper-slide-shadow${side ? `-${side}`:''}"></div>`);
$shadowContainer.append($shadowEl);
}
return $shadowEl;
}
function EffectFlip(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
flipEffect: {
slideShadows: true,
limitRotation: true,
transformEl: null
}});
const createSlideShadows=($slideEl, progress, params)=> {
let shadowBefore=swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top');
let shadowAfter=swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom');
if(shadowBefore.length===0){
shadowBefore=createShadow(params, $slideEl, swiper.isHorizontal() ? 'left':'top');
}
if(shadowAfter.length===0){
shadowAfter=createShadow(params, $slideEl, swiper.isHorizontal() ? 'right':'bottom');
}
if(shadowBefore.length) shadowBefore[0].style.opacity=Math.max(-progress, 0);
if(shadowAfter.length) shadowAfter[0].style.opacity=Math.max(progress, 0);
};
const recreateShadows=()=> {
const params=swiper.params.flipEffect;
swiper.slides.each(slideEl=> {
const $slideEl=$(slideEl);
let progress=$slideEl[0].progress;
if(swiper.params.flipEffect.limitRotation){
progress=Math.max(Math.min(slideEl.progress, 1), -1);
}
createSlideShadows($slideEl, progress, params);
});
};
const setTranslate=()=> {
const {
slides,
rtlTranslate: rtl
}=swiper;
const params=swiper.params.flipEffect;
for (let i=0; i < slides.length; i +=1){
const $slideEl=slides.eq(i);
let progress=$slideEl[0].progress;
if(swiper.params.flipEffect.limitRotation){
progress=Math.max(Math.min($slideEl[0].progress, 1), -1);
}
const offset=$slideEl[0].swiperSlideOffset;
const rotate=-180 * progress;
let rotateY=rotate;
let rotateX=0;
let tx=swiper.params.cssMode ? -offset - swiper.translate:-offset;
let ty=0;
if(!swiper.isHorizontal()){
ty=tx;
tx=0;
rotateX=-rotateY;
rotateY=0;
}else if(rtl){
rotateY=-rotateY;
}
$slideEl[0].style.zIndex=-Math.abs(Math.round(progress)) + slides.length;
if(params.slideShadows){
createSlideShadows($slideEl, progress, params);
}
const transform=`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;
const $targetEl=effectTarget(params, $slideEl);
$targetEl.transform(transform);
}};
const setTransition=duration=> {
const {
transformEl
}=swiper.params.flipEffect;
const $transitionElements=transformEl ? swiper.slides.find(transformEl):swiper.slides;
$transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
effectVirtualTransitionEnd({
swiper,
duration,
transformEl
});
};
effectInit({
effect: 'flip',
swiper,
on,
setTranslate,
setTransition,
recreateShadows,
getEffectParams: ()=> swiper.params.flipEffect,
perspective: ()=> true,
overwriteParams: ()=> ({
slidesPerView: 1,
slidesPerGroup: 1,
watchSlidesProgress: true,
spaceBetween: 0,
virtualTranslate: !swiper.params.cssMode
})
});
}
function EffectCoverflow(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
coverflowEffect: {
rotate: 50,
stretch: 0,
depth: 100,
scale: 1,
modifier: 1,
slideShadows: true,
transformEl: null
}});
const setTranslate=()=> {
const {
width: swiperWidth,
height: swiperHeight,
slides,
slidesSizesGrid
}=swiper;
const params=swiper.params.coverflowEffect;
const isHorizontal=swiper.isHorizontal();
const transform=swiper.translate;
const center=isHorizontal ? -transform + swiperWidth / 2:-transform + swiperHeight / 2;
const rotate=isHorizontal ? params.rotate:-params.rotate;
const translate=params.depth;
for (let i=0, length=slides.length; i < length; i +=1){
const $slideEl=slides.eq(i);
const slideSize=slidesSizesGrid[i];
const slideOffset=$slideEl[0].swiperSlideOffset;
const centerOffset=(center - slideOffset - slideSize / 2) / slideSize;
const offsetMultiplier=typeof params.modifier==='function' ? params.modifier(centerOffset):centerOffset * params.modifier;
let rotateY=isHorizontal ? rotate * offsetMultiplier:0;
let rotateX=isHorizontal ? 0:rotate * offsetMultiplier;
let translateZ=-translate * Math.abs(offsetMultiplier);
let stretch=params.stretch;
if(typeof stretch==='string'&&stretch.indexOf('%')!==-1){
stretch=parseFloat(params.stretch) / 100 * slideSize;
}
let translateY=isHorizontal ? 0:stretch * offsetMultiplier;
let translateX=isHorizontal ? stretch * offsetMultiplier:0;
let scale=1 - (1 - params.scale) * Math.abs(offsetMultiplier);
if(Math.abs(translateX) < 0.001) translateX=0;
if(Math.abs(translateY) < 0.001) translateY=0;
if(Math.abs(translateZ) < 0.001) translateZ=0;
if(Math.abs(rotateY) < 0.001) rotateY=0;
if(Math.abs(rotateX) < 0.001) rotateX=0;
if(Math.abs(scale) < 0.001) scale=0;
const slideTransform=`translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;
const $targetEl=effectTarget(params, $slideEl);
$targetEl.transform(slideTransform);
$slideEl[0].style.zIndex=-Math.abs(Math.round(offsetMultiplier)) + 1;
if(params.slideShadows){
let $shadowBeforeEl=isHorizontal ? $slideEl.find('.swiper-slide-shadow-left'):$slideEl.find('.swiper-slide-shadow-top');
let $shadowAfterEl=isHorizontal ? $slideEl.find('.swiper-slide-shadow-right'):$slideEl.find('.swiper-slide-shadow-bottom');
if($shadowBeforeEl.length===0){
$shadowBeforeEl=createShadow(params, $slideEl, isHorizontal ? 'left':'top');
}
if($shadowAfterEl.length===0){
$shadowAfterEl=createShadow(params, $slideEl, isHorizontal ? 'right':'bottom');
}
if($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity=offsetMultiplier > 0 ? offsetMultiplier:0;
if($shadowAfterEl.length) $shadowAfterEl[0].style.opacity=-offsetMultiplier > 0 ? -offsetMultiplier:0;
}}
};
const setTransition=duration=> {
const {
transformEl
}=swiper.params.coverflowEffect;
const $transitionElements=transformEl ? swiper.slides.find(transformEl):swiper.slides;
$transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
};
effectInit({
effect: 'coverflow',
swiper,
on,
setTranslate,
setTransition,
perspective: ()=> true,
overwriteParams: ()=> ({
watchSlidesProgress: true
})
});
}
function EffectCreative(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
creativeEffect: {
transformEl: null,
limitProgress: 1,
shadowPerProgress: false,
progressMultiplier: 1,
perspective: true,
prev: {
translate: [0, 0, 0],
rotate: [0, 0, 0],
opacity: 1,
scale: 1
},
next: {
translate: [0, 0, 0],
rotate: [0, 0, 0],
opacity: 1,
scale: 1
}}
});
const getTranslateValue=value=> {
if(typeof value==='string') return value;
return `${value}px`;
};
const setTranslate=()=> {
const {
slides,
$wrapperEl,
slidesSizesGrid
}=swiper;
const params=swiper.params.creativeEffect;
const {
progressMultiplier: multiplier
}=params;
const isCenteredSlides=swiper.params.centeredSlides;
if(isCenteredSlides){
const margin=slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore||0;
$wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);
}
for (let i=0; i < slides.length; i +=1){
const $slideEl=slides.eq(i);
const slideProgress=$slideEl[0].progress;
const progress=Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);
let originalProgress=progress;
if(!isCenteredSlides){
originalProgress=Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);
}
const offset=$slideEl[0].swiperSlideOffset;
const t=[swiper.params.cssMode ? -offset - swiper.translate:-offset, 0, 0];
const r=[0, 0, 0];
let custom=false;
if(!swiper.isHorizontal()){
t[1]=t[0];
t[0]=0;
}
let data={
translate: [0, 0, 0],
rotate: [0, 0, 0],
scale: 1,
opacity: 1
};
if(progress < 0){
data=params.next;
custom=true;
}else if(progress > 0){
data=params.prev;
custom=true;
}
t.forEach((value, index)=> {
t[index]=`calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;
});
r.forEach((value, index)=> {
r[index]=data.rotate[index] * Math.abs(progress * multiplier);
});
$slideEl[0].style.zIndex=-Math.abs(Math.round(slideProgress)) + slides.length;
const translateString=t.join(', ');
const rotateString=`rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;
const scaleString=originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})`:`scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;
const opacityString=originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier:1 - (1 - data.opacity) * originalProgress * multiplier;
const transform=`translate3d(${translateString}) ${rotateString} ${scaleString}`;
if(custom&&data.shadow||!custom){
let $shadowEl=$slideEl.children('.swiper-slide-shadow');
if($shadowEl.length===0&&data.shadow){
$shadowEl=createShadow(params, $slideEl);
}
if($shadowEl.length){
const shadowOpacity=params.shadowPerProgress ? progress * (1 / params.limitProgress):progress;
$shadowEl[0].style.opacity=Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);
}}
const $targetEl=effectTarget(params, $slideEl);
$targetEl.transform(transform).css({
opacity: opacityString
});
if(data.origin){
$targetEl.css('transform-origin', data.origin);
}}
};
const setTransition=duration=> {
const {
transformEl
}=swiper.params.creativeEffect;
const $transitionElements=transformEl ? swiper.slides.find(transformEl):swiper.slides;
$transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
effectVirtualTransitionEnd({
swiper,
duration,
transformEl,
allSlides: true
});
};
effectInit({
effect: 'creative',
swiper,
on,
setTranslate,
setTransition,
perspective: ()=> swiper.params.creativeEffect.perspective,
overwriteParams: ()=> ({
watchSlidesProgress: true,
virtualTranslate: !swiper.params.cssMode
})
});
}
function EffectCards(_ref){
let {
swiper,
extendParams,
on
}=_ref;
extendParams({
cardsEffect: {
slideShadows: true,
transformEl: null,
rotate: true,
perSlideRotate: 2,
perSlideOffset: 8
}});
const setTranslate=()=> {
const {
slides,
activeIndex
}=swiper;
const params=swiper.params.cardsEffect;
const {
startTranslate,
isTouched
}=swiper.touchEventsData;
const currentTranslate=swiper.translate;
for (let i=0; i < slides.length; i +=1){
const $slideEl=slides.eq(i);
const slideProgress=$slideEl[0].progress;
const progress=Math.min(Math.max(slideProgress, -4), 4);
let offset=$slideEl[0].swiperSlideOffset;
if(swiper.params.centeredSlides&&!swiper.params.cssMode){
swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);
}
if(swiper.params.centeredSlides&&swiper.params.cssMode){
offset -=slides[0].swiperSlideOffset;
}
let tX=swiper.params.cssMode ? -offset - swiper.translate:-offset;
let tY=0;
const tZ=-100 * Math.abs(progress);
let scale=1;
let rotate=-params.perSlideRotate * progress;
let tXAdd=params.perSlideOffset - Math.abs(progress) * 0.75;
const slideIndex=swiper.virtual&&swiper.params.virtual.enabled ? swiper.virtual.from + i:i;
const isSwipeToNext=(slideIndex===activeIndex||slideIndex===activeIndex - 1)&&progress > 0&&progress < 1&&(isTouched||swiper.params.cssMode)&&currentTranslate < startTranslate;
const isSwipeToPrev=(slideIndex===activeIndex||slideIndex===activeIndex + 1)&&progress < 0&&progress > -1&&(isTouched||swiper.params.cssMode)&&currentTranslate > startTranslate;
if(isSwipeToNext||isSwipeToPrev){
const subProgress=(1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;
rotate +=-28 * progress * subProgress;
scale +=-0.5 * subProgress;
tXAdd +=96 * subProgress;
tY=`${-25 * subProgress * Math.abs(progress)}%`;
}
if(progress < 0){
tX=`calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;
}else if(progress > 0){
tX=`calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;
}else{
tX=`${tX}px`;
}
if(!swiper.isHorizontal()){
const prevY=tY;
tY=tX;
tX=prevY;
}
const scaleString=progress < 0 ? `${1 + (1 - scale) * progress}`:`${1 - (1 - scale) * progress}`;
const transform=`
translate3d(${tX}, ${tY}, ${tZ}px)
rotateZ(${params.rotate ? rotate:0}deg)
scale(${scaleString})
`;
if(params.slideShadows){
let $shadowEl=$slideEl.find('.swiper-slide-shadow');
if($shadowEl.length===0){
$shadowEl=createShadow(params, $slideEl);
}
if($shadowEl.length) $shadowEl[0].style.opacity=Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);
}
$slideEl[0].style.zIndex=-Math.abs(Math.round(slideProgress)) + slides.length;
const $targetEl=effectTarget(params, $slideEl);
$targetEl.transform(transform);
}};
const setTransition=duration=> {
const {
transformEl
}=swiper.params.cardsEffect;
const $transitionElements=transformEl ? swiper.slides.find(transformEl):swiper.slides;
$transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);
effectVirtualTransitionEnd({
swiper,
duration,
transformEl
});
};
effectInit({
effect: 'cards',
swiper,
on,
setTranslate,
setTransition,
perspective: ()=> true,
overwriteParams: ()=> ({
watchSlidesProgress: true,
virtualTranslate: !swiper.params.cssMode
})
});
}
const modules=[Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];
Swiper.use(modules);
return Swiper;
}));
(function(t){function e(e){return u?e.data("events"):t._data(e[0]).events}function n(t,n,r){var i=e(t),a=i[n];if(!u){var s=r?a.splice(a.delegateCount-1,1)[0]:a.pop();return a.splice(r?0:a.delegateCount||0,0,s),void 0}r?i.live.unshift(i.live.pop()):a.unshift(a.pop())}function r(e,r,i){var a=r.split(/\s+/);e.each(function(){for(var e=0;a.length>e;++e){var r=a[e].trim().match(/[^\.]+/i)[0];n(t(this),r,i)}})}function i(e){t.fn[e+"First"]=function(){var n=t.makeArray(arguments),i=n.shift();return i&&(t.fn[e].apply(this,arguments),r(this,i)),this}}var a=t.fn.jquery.split("."),s=parseInt(a[0]),f=parseInt(a[1]),u=1>s||1==s&&7>f;i("bind"),i("one"),t.fn.delegateFirst=function(){var e=t.makeArray(arguments),n=e[1];return n&&(e.splice(0,2),t.fn.delegate.apply(this,arguments),r(this,n,!0)),this},t.fn.liveFirst=function(){var e=t.makeArray(arguments);return e.unshift(this.selector),t.fn.delegateFirst.apply(t(document),e),this},u||(t.fn.onFirst=function(e,n){var i=t(this),a="string"==typeof n;if(t.fn.on.apply(i,arguments),"object"==typeof e)for(type in e)e.hasOwnProperty(type)&&r(i,type,a);else"string"==typeof e&&r(i,e,a);return i})})(jQuery);
!function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e<arguments.length;e++){var o=arguments[e];for(var t in o)n[t]=o[t]}return n}function n(o){function t(n,r,i){var c;if("undefined"!=typeof document){if(arguments.length>1){if(i=e({path:"/"},t.defaults,i),"number"==typeof i.expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}try{c=JSON.stringify(r),/^[\{\[]/.test(c)&&(r=c)}catch(e){}return r=o.write?o.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",r,i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],s=/(%[0-9A-Z]{2})+/g,d=0;d<p.length;d++){var f=p[d].split("="),u=f.slice(1).join("=");'"'===u.charAt(0)&&(u=u.slice(1,-1));try{var l=f[0].replace(s,decodeURIComponent);if(u=o.read?o.read(u,l):o(u,l)||u.replace(s,decodeURIComponent),this.json)try{u=JSON.parse(u)}catch(e){}if(n===l){c=u;break}n||(c[l]=u)}catch(e){}}return c}}return t.set=t,t.get=function(e){return t.call(t,e)},t.getJSON=function(){return t.apply({json:!0},[].slice.call(arguments))},t.defaults={},t.remove=function(n,o){t(n,"",e(o,{expires:-1}))},t.withConverter=n,t}return n(function(){})});
!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).tldjs=f()}}(function(){return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";var allRules=require("./lib/suffix-trie.js").fromJson(require("./rules.json")),extractHostname=require("./lib/clean-host.js"),getDomain=require("./lib/domain.js"),getPublicSuffix=require("./lib/public-suffix.js"),getSubdomain=require("./lib/subdomain.js"),isValid=require("./lib/is-valid.js"),isIp=require("./lib/is-ip.js"),tldExists=require("./lib/tld-exists.js"),TLD_EXISTS=1,PUBLIC_SUFFIX=2,DOMAIN=3,SUB_DOMAIN=4,ALL=5;module.exports=function factory(options){var rules=options.rules||allRules||{},validHosts=options.validHosts||[],_extractHostname=options.extractHostname||extractHostname;function parse(url,_step){var step=_step||ALL,result={hostname:_extractHostname(url),isValid:null,isIp:null,tldExists:!1,publicSuffix:null,domain:null,subdomain:null};return null===result.hostname?(result.isIp=!1,result.isValid=!1,result):(result.isIp=isIp(result.hostname),result.isIp?(result.isValid=!0,result):(result.isValid=isValid(result.hostname),!1===result.isValid?result:(step!==ALL&&step!==TLD_EXISTS||(result.tldExists=tldExists(rules,result.hostname)),step===TLD_EXISTS?result:(result.publicSuffix=getPublicSuffix(rules,result.hostname),step===PUBLIC_SUFFIX?result:(result.domain=getDomain(validHosts,result.publicSuffix,result.hostname),step===DOMAIN?result:(result.subdomain=getSubdomain(result.hostname,result.domain),result))))))}return{extractHostname:_extractHostname,isValid:isValid,parse:parse,tldExists:function(url){return parse(url,TLD_EXISTS).tldExists},getPublicSuffix:function(url){return parse(url,PUBLIC_SUFFIX).publicSuffix},getDomain:function(url){return parse(url,DOMAIN).domain},getSubdomain:function(url){return parse(url,SUB_DOMAIN).subdomain},fromUserSettings:factory}}({})},{"./lib/clean-host.js":2,"./lib/domain.js":3,"./lib/is-ip.js":5,"./lib/is-valid.js":6,"./lib/public-suffix.js":7,"./lib/subdomain.js":8,"./lib/suffix-trie.js":9,"./lib/tld-exists.js":10,"./rules.json":17}],2:[function(require,module,exports){var URL=require("url"),isValid=require("./is-valid.js"),hasPrefixRE=/^(([a-z][a-z0-9+.-]*)?:)?\/\//;function trimTrailingDots(value){return"."===value[value.length-1]?value.substr(0,value.length-1):value}module.exports=function(value){if(isValid(value))return trimTrailingDots(value);var url=value;"string"!=typeof url&&(url=""+url);var needsTrimming=function(value){return value.length>0&&(value.charCodeAt(0)<=32||value.charCodeAt(value.length-1)<=32)}(url);needsTrimming&&(url=url.trim());var needsLowerCase=function(value){for(var i=0;i<value.length;i+=1){var code=value.charCodeAt(i);if(code>=65&&code<=90)return!0}return!1}(url);if(needsLowerCase&&(url=url.toLowerCase()),(needsLowerCase||needsTrimming)&&isValid(url))return trimTrailingDots(url);hasPrefixRE.test(url)||(url="//"+url);var parts=URL.parse(url,null,!0);return parts.hostname?trimTrailingDots(parts.hostname):null}},{"./is-valid.js":6,url:15}],3:[function(require,module,exports){"use strict";function shareSameDomainSuffix(hostname,vhost){return pattern=vhost,(str=hostname).lastIndexOf(pattern)===str.length-pattern.length&&(hostname.length===vhost.length||"."===hostname[hostname.length-vhost.length-1]);var str,pattern}module.exports=function(validHosts,suffix,hostname){for(var i=0;i<validHosts.length;i+=1){var vhost=validHosts[i];if(shareSameDomainSuffix(hostname,vhost))return vhost}return null===suffix?null:suffix.length===hostname.length?null:function(hostname,publicSuffix){var publicSuffixIndex=hostname.length-publicSuffix.length-2,lastDotBeforeSuffixIndex=hostname.lastIndexOf(".",publicSuffixIndex);return-1===lastDotBeforeSuffixIndex?hostname:hostname.substr(lastDotBeforeSuffixIndex+1)}(hostname,suffix)}},{}],4:[function(require,module,exports){"use strict";module.exports=function(hostname){var lastDotIndex=hostname.lastIndexOf(".");return-1===lastDotIndex?null:hostname.substr(lastDotIndex+1)}},{}],5:[function(require,module,exports){"use strict";module.exports=function(hostname){return"string"==typeof hostname&&(0!==hostname.length&&(function(hostname){for(var hasColon=!1,i=0;i<hostname.length;i+=1){var code=hostname.charCodeAt(i);if(58===code)hasColon=!0;else if(!(code>=48&&code<=57||code>=97&&code<=102))return!1}return hasColon}(hostname)||function(hostname){for(var numberOfDots=0,i=0;i<hostname.length;i+=1){var code=hostname.charCodeAt(i);if(46===code)numberOfDots+=1;else if(code<48||code>57)return!1}return 3===numberOfDots&&"."!==hostname[0]&&"."!==hostname[hostname.length-1]}(hostname)))}},{}],6:[function(require,module,exports){"use strict";function isDigit(code){return code>=48&&code<=57}function isAlpha(code){return code>=97&&code<=122}module.exports=function(hostname){if("string"!=typeof hostname)return!1;if(hostname.length>255)return!1;if(0===hostname.length)return!1;var firstCharCode=hostname.charCodeAt(0);if(!isAlpha(firstCharCode)&&!isDigit(firstCharCode))return!1;for(var lastCharCode,code,lastDotIndex=-1,len=hostname.length,i=0;i<len;i+=1){if(46===(code=hostname.charCodeAt(i))){if(i-lastDotIndex>64||46===lastCharCode||45===lastCharCode)return!1;lastDotIndex=i}else if(!isAlpha(code)&&!isDigit(code)&&45!==code)return!1;lastCharCode=code}return len-lastDotIndex-1<=63&&45!==lastCharCode}},{}],7:[function(require,module,exports){"use strict";var extractTldFromHost=require("./from-host.js");module.exports=function(rules,hostname){if(rules.hasTld(hostname))return hostname;var candidate=rules.suffixLookup(hostname);return null===candidate?extractTldFromHost(hostname):candidate}},{"./from-host.js":4}],8:[function(require,module,exports){"use strict";module.exports=function(hostname,domain){return null===domain?null:hostname.substr(0,hostname.length-domain.length-1)}},{}],9:[function(require,module,exports){"use strict";var VALID_HOSTNAME_VALUE=0;function minIndex(a,b){return null===a?b:null===b?a:a<b?a:b}function insertInTrie(rule,trie){for(var parts=rule.parts,node=trie,i=0;i<parts.length;i+=1){var part=parts[i],nextNode=node[part];void 0===nextNode&&(nextNode=Object.create(null),node[part]=nextNode),node=nextNode}return node.$=VALID_HOSTNAME_VALUE,trie}function lookupInTrie(parts,trie,index){var nextNode,publicSuffixIndex=null;return void 0!==trie.$&&(publicSuffixIndex=index+1),-1===index?publicSuffixIndex:(void 0!==(nextNode=trie[parts[index]])&&(publicSuffixIndex=minIndex(publicSuffixIndex,lookupInTrie(parts,nextNode,index-1))),void 0!==(nextNode=trie["*"])&&(publicSuffixIndex=minIndex(publicSuffixIndex,lookupInTrie(parts,nextNode,index-1))),publicSuffixIndex)}function SuffixTrie(rules){if(this.exceptions=Object.create(null),this.rules=Object.create(null),rules)for(var i=0;i<rules.length;i+=1){var rule=rules[i];rule.exception?insertInTrie(rule,this.exceptions):insertInTrie(rule,this.rules)}}SuffixTrie.fromJson=function(json){var trie=new SuffixTrie;return trie.exceptions=json.exceptions,trie.rules=json.rules,trie},SuffixTrie.prototype.hasTld=function(value){return void 0!==this.rules[value]},SuffixTrie.prototype.suffixLookup=function(hostname){var parts=hostname.split("."),publicSuffixIndex=lookupInTrie(parts,this.rules,parts.length-1);if(null===publicSuffixIndex)return null;var exceptionIndex=lookupInTrie(parts,this.exceptions,parts.length-1);return null!==exceptionIndex?parts.slice(exceptionIndex+1).join("."):parts.slice(publicSuffixIndex).join(".")},module.exports=SuffixTrie},{}],10:[function(require,module,exports){"use strict";var extractTldFromHost=require("./from-host.js");module.exports=function(rules,hostname){if(rules.hasTld(hostname))return!0;var hostTld=extractTldFromHost(hostname);return null!==hostTld&&rules.hasTld(hostTld)}},{"./from-host.js":4}],11:[function(require,module,exports){(function(global){!function(root){var freeExports="object"==typeof exports&&exports&&!exports.nodeType&&exports,freeModule="object"==typeof module&&module&&!module.nodeType&&module,freeGlobal="object"==typeof global&&global;freeGlobal.global!==freeGlobal&&freeGlobal.window!==freeGlobal&&freeGlobal.self!==freeGlobal||(root=freeGlobal);var punycode,key,maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^\x20-\x7E]/,regexSeparators=/[\x2E\u3002\uFF0E\uFF61]/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >=0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode;function error(type){throw new RangeError(errors[type])}function map(array,fn){for(var length=array.length,result=[];length--;)result[length]=fn(array[length]);return result}function mapDomain(string,fn){var parts=string.split("@"),result="";return parts.length>1&&(result=parts[0]+"@",string=parts[1]),result+map((string=string.replace(regexSeparators,".")).split("."),fn).join(".")}function ucs2decode(string){for(var value,extra,output=[],counter=0,length=string.length;counter<length;)(value=string.charCodeAt(counter++))>=55296&&value<=56319&&counter<length?56320==(64512&(extra=string.charCodeAt(counter++)))?output.push(((1023&value)<<10)+(1023&extra)+65536):(output.push(value),counter--):output.push(value);return output}function ucs2encode(array){return map(array,function(value){var output="";return value>65535&&(output+=stringFromCharCode((value-=65536)>>>10&1023|55296),value=56320|1023&value),output+=stringFromCharCode(value)}).join("")}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((0!=flag)<<5)}function adapt(delta,numPoints,firstTime){var k=0;for(delta=firstTime?floor(delta/damp):delta>>1,delta+=floor(delta/numPoints);delta>baseMinusTMin*tMax>>1;k+=base)delta=floor(delta/baseMinusTMin);return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var out,basic,j,index,oldi,w,k,digit,t,baseMinusT,codePoint,output=[],inputLength=input.length,i=0,n=initialN,bias=initialBias;for((basic=input.lastIndexOf(delimiter))<0&&(basic=0),j=0;j<basic;++j)input.charCodeAt(j)>=128&&error("not-basic"),output.push(input.charCodeAt(j));for(index=basic>0?basic+1:0;index<inputLength;){for(oldi=i,w=1,k=base;index>=inputLength&&error("invalid-input"),((digit=(codePoint=input.charCodeAt(index++))-48<10?codePoint-22:codePoint-65<26?codePoint-65:codePoint-97<26?codePoint-97:base)>=base||digit>floor((maxInt-i)/w))&&error("overflow"),i+=digit*w,!(digit<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)w>floor(maxInt/(baseMinusT=base-t))&&error("overflow"),w*=baseMinusT;bias=adapt(i-oldi,out=output.length+1,0==oldi),floor(i/out)>maxInt-n&&error("overflow"),n+=floor(i/out),i%=out,output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,inputLength,handledCPCountPlusOne,baseMinusT,qMinusT,output=[];for(inputLength=(input=ucs2decode(input)).length,n=initialN,delta=0,bias=initialBias,j=0;j<inputLength;++j)(currentValue=input[j])<128&&output.push(stringFromCharCode(currentValue));for(handledCPCount=basicLength=output.length,basicLength&&output.push(delimiter);handledCPCount<inputLength;){for(m=maxInt,j=0;j<inputLength;++j)(currentValue=input[j])>=n&&currentValue<m&&(m=currentValue);for(m-n>floor((maxInt-delta)/(handledCPCountPlusOne=handledCPCount+1))&&error("overflow"),delta+=(m-n)*handledCPCountPlusOne,n=m,j=0;j<inputLength;++j)if((currentValue=input[j])<n&&++delta>maxInt&&error("overflow"),currentValue==n){for(q=delta,k=base;!(q<(t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias));k+=base)qMinusT=q-t,baseMinusT=base-t,output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0))),q=floor(qMinusT/baseMinusT);output.push(stringFromCharCode(digitToBasic(q,0))),bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength),delta=0,++handledCPCount}++delta,++n}return output.join("")}if(punycode={version:"1.4.1",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:function(input){return mapDomain(input,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})},toUnicode:function(input){return mapDomain(input,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}},freeExports&&freeModule)if(module.exports==freeExports)freeModule.exports=punycode;else for(key in punycode)punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key]);else root.punycode=punycode}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],12:[function(require,module,exports){"use strict";function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}module.exports=function(qs,sep,eq,options){sep=sep||"&",eq=eq||"=";var obj={};if("string"!=typeof qs||0===qs.length)return obj;var regexp=/\+/g;qs=qs.split(sep);var maxKeys=1e3;options&&"number"==typeof options.maxKeys&&(maxKeys=options.maxKeys);var len=qs.length;maxKeys>0&&len>maxKeys&&(len=maxKeys);for(var i=0;i<len;++i){var kstr,vstr,k,v,x=qs[i].replace(regexp,"%20"),idx=x.indexOf(eq);idx>=0?(kstr=x.substr(0,idx),vstr=x.substr(idx+1)):(kstr=x,vstr=""),k=decodeURIComponent(kstr),v=decodeURIComponent(vstr),hasOwnProperty(obj,k)?isArray(obj[k])?obj[k].push(v):obj[k]=[obj[k],v]:obj[k]=v}return obj};var isArray=Array.isArray||function(xs){return"[object Array]"===Object.prototype.toString.call(xs)}},{}],13:[function(require,module,exports){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){return sep=sep||"&",eq=eq||"=",null===obj&&(obj=void 0),"object"==typeof obj?map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;return isArray(obj[k])?map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep):ks+encodeURIComponent(stringifyPrimitive(obj[k]))}).join(sep):name?encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj)):""};var isArray=Array.isArray||function(xs){return"[object Array]"===Object.prototype.toString.call(xs)};function map(xs,f){if(xs.map)return xs.map(f);for(var res=[],i=0;i<xs.length;i++)res.push(f(xs[i],i));return res}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj)Object.prototype.hasOwnProperty.call(obj,key)&&res.push(key);return res}},{}],14:[function(require,module,exports){"use strict";exports.decode=exports.parse=require("./decode"),exports.encode=exports.stringify=require("./encode")},{"./decode":12,"./encode":13}],15:[function(require,module,exports){"use strict";var punycode=require("punycode"),util=require("./util");function Url(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}exports.parse=urlParse,exports.resolve=function(source,relative){return urlParse(source,!1,!0).resolve(relative)},exports.resolveObject=function(source,relative){return source?urlParse(source,!1,!0).resolveObject(relative):relative},exports.format=function(obj){util.isString(obj)&&(obj=urlParse(obj));return obj instanceof Url?obj.format():Url.prototype.format.call(obj)},exports.Url=Url;var protocolPattern=/^([a-z0-9.+-]+:)/i,portPattern=/:[0-9]*$/,simplePathPattern=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,unwise=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnamePartPattern=/^[+a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:!0,"javascript:":!0},hostlessProtocol={javascript:!0,"javascript:":!0},slashedProtocol={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},querystring=require("querystring");function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&util.isObject(url)&&url instanceof Url)return url;var u=new Url;return u.parse(url,parseQueryString,slashesDenoteHost),u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!util.isString(url))throw new TypeError("Parameter 'url' must be a string, not "+typeof url);var queryIndex=url.indexOf("?"),splitter=-1!==queryIndex&&queryIndex<url.indexOf("#")?"?":"#",uSplit=url.split(splitter);uSplit[0]=uSplit[0].replace(/\\/g,"/");var rest=url=uSplit.join(splitter);if(rest=rest.trim(),!slashesDenoteHost&&1===url.split("#").length){var simplePath=simplePathPattern.exec(rest);if(simplePath)return this.path=rest,this.href=rest,this.pathname=simplePath[1],simplePath[2]?(this.search=simplePath[2],this.query=parseQueryString?querystring.parse(this.search.substr(1)):this.search.substr(1)):parseQueryString&&(this.search="",this.query={}),this}var proto=protocolPattern.exec(rest);if(proto){var lowerProto=(proto=proto[0]).toLowerCase();this.protocol=lowerProto,rest=rest.substr(proto.length)}if(slashesDenoteHost||proto||rest.match(/^\/\/[^@\/]+@[^@\/]+/)){var slashes="//"===rest.substr(0,2);!slashes||proto&&hostlessProtocol[proto]||(rest=rest.substr(2),this.slashes=!0)}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){for(var auth,atSign,hostEnd=-1,i=0;i<hostEndingChars.length;i++){-1!==(hec=rest.indexOf(hostEndingChars[i]))&&(-1===hostEnd||hec<hostEnd)&&(hostEnd=hec)}-1!==(atSign=-1===hostEnd?rest.lastIndexOf("@"):rest.lastIndexOf("@",hostEnd))&&(auth=rest.slice(0,atSign),rest=rest.slice(atSign+1),this.auth=decodeURIComponent(auth)),hostEnd=-1;for(i=0;i<nonHostChars.length;i++){var hec;-1!==(hec=rest.indexOf(nonHostChars[i]))&&(-1===hostEnd||hec<hostEnd)&&(hostEnd=hec)}-1===hostEnd&&(hostEnd=rest.length),this.host=rest.slice(0,hostEnd),rest=rest.slice(hostEnd),this.parseHost(),this.hostname=this.hostname||"";var ipv6Hostname="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!ipv6Hostname)for(var hostparts=this.hostname.split(/\./),l=(i=0,hostparts.length);i<l;i++){var part=hostparts[i];if(part&&!part.match(hostnamePartPattern)){for(var newpart="",j=0,k=part.length;j<k;j++)part.charCodeAt(j)>127?newpart+="x":newpart+=part[j];if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i),notHost=hostparts.slice(i+1),bit=part.match(hostnamePartStart);bit&&(validParts.push(bit[1]),notHost.unshift(bit[2])),notHost.length&&(rest="/"+notHost.join(".")+rest),this.hostname=validParts.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),ipv6Hostname||(this.hostname=punycode.toASCII(this.hostname));var p=this.port?":"+this.port:"",h=this.hostname||"";this.host=h+p,this.href+=this.host,ipv6Hostname&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==rest[0]&&(rest="/"+rest))}if(!unsafeProtocol[lowerProto])for(i=0,l=autoEscape.length;i<l;i++){var ae=autoEscape[i];if(-1!==rest.indexOf(ae)){var esc=encodeURIComponent(ae);esc===ae&&(esc=escape(ae)),rest=rest.split(ae).join(esc)}}var hash=rest.indexOf("#");-1!==hash&&(this.hash=rest.substr(hash),rest=rest.slice(0,hash));var qm=rest.indexOf("?");if(-1!==qm?(this.search=rest.substr(qm),this.query=rest.substr(qm+1),parseQueryString&&(this.query=querystring.parse(this.query)),rest=rest.slice(0,qm)):parseQueryString&&(this.search="",this.query={}),rest&&(this.pathname=rest),slashedProtocol[lowerProto]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){p=this.pathname||"";var s=this.search||"";this.path=p+s}return this.href=this.format(),this},Url.prototype.format=function(){var auth=this.auth||"";auth&&(auth=(auth=encodeURIComponent(auth)).replace(/%3A/i,":"),auth+="@");var protocol=this.protocol||"",pathname=this.pathname||"",hash=this.hash||"",host=!1,query="";this.host?host=auth+this.host:this.hostname&&(host=auth+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(host+=":"+this.port)),this.query&&util.isObject(this.query)&&Object.keys(this.query).length&&(query=querystring.stringify(this.query));var search=this.search||query&&"?"+query||"";return protocol&&":"!==protocol.substr(-1)&&(protocol+=":"),this.slashes||(!protocol||slashedProtocol[protocol])&&!1!==host?(host="//"+(host||""),pathname&&"/"!==pathname.charAt(0)&&(pathname="/"+pathname)):host||(host=""),hash&&"#"!==hash.charAt(0)&&(hash="#"+hash),search&&"?"!==search.charAt(0)&&(search="?"+search),protocol+host+(pathname=pathname.replace(/[?#]/g,function(match){return encodeURIComponent(match)}))+(search=search.replace("#","%23"))+hash},Url.prototype.resolve=function(relative){return this.resolveObject(urlParse(relative,!1,!0)).format()},Url.prototype.resolveObject=function(relative){if(util.isString(relative)){var rel=new Url;rel.parse(relative,!1,!0),relative=rel}for(var result=new Url,tkeys=Object.keys(this),tk=0;tk<tkeys.length;tk++){var tkey=tkeys[tk];result[tkey]=this[tkey]}if(result.hash=relative.hash,""===relative.href)return result.href=result.format(),result;if(relative.slashes&&!relative.protocol){for(var rkeys=Object.keys(relative),rk=0;rk<rkeys.length;rk++){var rkey=rkeys[rk];"protocol"!==rkey&&(result[rkey]=relative[rkey])}return slashedProtocol[result.protocol]&&result.hostname&&!result.pathname&&(result.path=result.pathname="/"),result.href=result.format(),result}if(relative.protocol&&relative.protocol!==result.protocol){if(!slashedProtocol[relative.protocol]){for(var keys=Object.keys(relative),v=0;v<keys.length;v++){var k=keys[v];result[k]=relative[k]}return result.href=result.format(),result}if(result.protocol=relative.protocol,relative.host||hostlessProtocol[relative.protocol])result.pathname=relative.pathname;else{for(var relPath=(relative.pathname||"").split("/");relPath.length&&!(relative.host=relPath.shift()););relative.host||(relative.host=""),relative.hostname||(relative.hostname=""),""!==relPath[0]&&relPath.unshift(""),relPath.length<2&&relPath.unshift(""),result.pathname=relPath.join("/")}if(result.search=relative.search,result.query=relative.query,result.host=relative.host||"",result.auth=relative.auth,result.hostname=relative.hostname||relative.host,result.port=relative.port,result.pathname||result.search){var p=result.pathname||"",s=result.search||"";result.path=p+s}return result.slashes=result.slashes||relative.slashes,result.href=result.format(),result}var isSourceAbs=result.pathname&&"/"===result.pathname.charAt(0),isRelAbs=relative.host||relative.pathname&&"/"===relative.pathname.charAt(0),mustEndAbs=isRelAbs||isSourceAbs||result.host&&relative.pathname,removeAllDots=mustEndAbs,srcPath=result.pathname&&result.pathname.split("/")||[],psychotic=(relPath=relative.pathname&&relative.pathname.split("/")||[],result.protocol&&!slashedProtocol[result.protocol]);if(psychotic&&(result.hostname="",result.port=null,result.host&&(""===srcPath[0]?srcPath[0]=result.host:srcPath.unshift(result.host)),result.host="",relative.protocol&&(relative.hostname=null,relative.port=null,relative.host&&(""===relPath[0]?relPath[0]=relative.host:relPath.unshift(relative.host)),relative.host=null),mustEndAbs=mustEndAbs&&(""===relPath[0]||""===srcPath[0])),isRelAbs)result.host=relative.host||""===relative.host?relative.host:result.host,result.hostname=relative.hostname||""===relative.hostname?relative.hostname:result.hostname,result.search=relative.search,result.query=relative.query,srcPath=relPath;else if(relPath.length)srcPath||(srcPath=[]),srcPath.pop(),srcPath=srcPath.concat(relPath),result.search=relative.search,result.query=relative.query;else if(!util.isNullOrUndefined(relative.search)){if(psychotic)result.hostname=result.host=srcPath.shift(),(authInHost=!!(result.host&&result.host.indexOf("@")>0)&&result.host.split("@"))&&(result.auth=authInHost.shift(),result.host=result.hostname=authInHost.shift());return result.search=relative.search,result.query=relative.query,util.isNull(result.pathname)&&util.isNull(result.search)||(result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")),result.href=result.format(),result}if(!srcPath.length)return result.pathname=null,result.search?result.path="/"+result.search:result.path=null,result.href=result.format(),result;for(var last=srcPath.slice(-1)[0],hasTrailingSlash=(result.host||relative.host||srcPath.length>1)&&("."===last||".."===last)||""===last,up=0,i=srcPath.length;i>=0;i--)"."===(last=srcPath[i])?srcPath.splice(i,1):".."===last?(srcPath.splice(i,1),up++):up&&(srcPath.splice(i,1),up--);if(!mustEndAbs&&!removeAllDots)for(;up--;up)srcPath.unshift("..");!mustEndAbs||""===srcPath[0]||srcPath[0]&&"/"===srcPath[0].charAt(0)||srcPath.unshift(""),hasTrailingSlash&&"/"!==srcPath.join("/").substr(-1)&&srcPath.push("");var authInHost,isAbsolute=""===srcPath[0]||srcPath[0]&&"/"===srcPath[0].charAt(0);psychotic&&(result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"",(authInHost=!!(result.host&&result.host.indexOf("@")>0)&&result.host.split("@"))&&(result.auth=authInHost.shift(),result.host=result.hostname=authInHost.shift()));return(mustEndAbs=mustEndAbs||result.host&&srcPath.length)&&!isAbsolute&&srcPath.unshift(""),srcPath.length?result.pathname=srcPath.join("/"):(result.pathname=null,result.path=null),util.isNull(result.pathname)&&util.isNull(result.search)||(result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")),result.auth=relative.auth||result.auth,result.slashes=result.slashes||relative.slashes,result.href=result.format(),result},Url.prototype.parseHost=function(){var host=this.host,port=portPattern.exec(host);port&&(":"!==(port=port[0])&&(this.port=port.substr(1)),host=host.substr(0,host.length-port.length)),host&&(this.hostname=host)}},{"./util":16,punycode:11,querystring:14}],16:[function(require,module,exports){"use strict";module.exports={isString:function(arg){return"string"==typeof arg},isObject:function(arg){return"object"==typeof arg&&null!==arg},isNull:function(arg){return null===arg},isNullOrUndefined:function(arg){return null==arg}}},{}],17:[function(require,module,exports){module.exports={exceptions:{ck:{www:{$:0}},jp:{kawasaki:{city:{$:0}},kitakyushu:{city:{$:0}},kobe:{city:{$:0}},nagoya:{city:{$:0}},sapporo:{city:{$:0}},sendai:{city:{$:0}},yokohama:{city:{$:0}}}},rules:{ac:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},mil:{$:0},org:{$:0}},ad:{$:0,nom:{$:0}},ae:{$:0,co:{$:0},net:{$:0},org:{$:0},sch:{$:0},ac:{$:0},gov:{$:0},mil:{$:0},blogspot:{$:0},nom:{$:0}},aero:{$:0,"accident-investigation":{$:0},"accident-prevention":{$:0},aerobatic:{$:0},aeroclub:{$:0},aerodrome:{$:0},agents:{$:0},aircraft:{$:0},airline:{$:0},airport:{$:0},"air-surveillance":{$:0},airtraffic:{$:0},"air-traffic-control":{$:0},ambulance:{$:0},amusement:{$:0},association:{$:0},author:{$:0},ballooning:{$:0},broker:{$:0},caa:{$:0},cargo:{$:0},catering:{$:0},certification:{$:0},championship:{$:0},charter:{$:0},civilaviation:{$:0},club:{$:0},conference:{$:0},consultant:{$:0},consulting:{$:0},control:{$:0},council:{$:0},crew:{$:0},design:{$:0},dgca:{$:0},educator:{$:0},emergency:{$:0},engine:{$:0},engineer:{$:0},entertainment:{$:0},equipment:{$:0},exchange:{$:0},express:{$:0},federation:{$:0},flight:{$:0},freight:{$:0},fuel:{$:0},gliding:{$:0},government:{$:0},groundhandling:{$:0},group:{$:0},hanggliding:{$:0},homebuilt:{$:0},insurance:{$:0},journal:{$:0},journalist:{$:0},leasing:{$:0},logistics:{$:0},magazine:{$:0},maintenance:{$:0},media:{$:0},microlight:{$:0},modelling:{$:0},navigation:{$:0},parachuting:{$:0},paragliding:{$:0},"passenger-association":{$:0},pilot:{$:0},press:{$:0},production:{$:0},recreation:{$:0},repbody:{$:0},res:{$:0},research:{$:0},rotorcraft:{$:0},safety:{$:0},scientist:{$:0},services:{$:0},show:{$:0},skydiving:{$:0},software:{$:0},student:{$:0},trader:{$:0},trading:{$:0},trainer:{$:0},union:{$:0},workinggroup:{$:0},works:{$:0}},af:{$:0,gov:{$:0},com:{$:0},org:{$:0},net:{$:0},edu:{$:0}},ag:{$:0,com:{$:0},org:{$:0},net:{$:0},co:{$:0},nom:{$:0}},ai:{$:0,off:{$:0},com:{$:0},net:{$:0},org:{$:0},nom:{$:0}},al:{$:0,com:{$:0},edu:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0},blogspot:{$:0},nom:{$:0}},am:{$:0,blogspot:{$:0}},ao:{$:0,ed:{$:0},gv:{$:0},og:{$:0},co:{$:0},pb:{$:0},it:{$:0}},aq:{$:0},ar:{$:0,com:{$:0,blogspot:{$:0}},edu:{$:0},gob:{$:0},gov:{$:0},int:{$:0},mil:{$:0},musica:{$:0},net:{$:0},org:{$:0},tur:{$:0}},arpa:{$:0,e164:{$:0},"in-addr":{$:0},ip6:{$:0},iris:{$:0},uri:{$:0},urn:{$:0}},as:{$:0,gov:{$:0}},asia:{$:0,cloudns:{$:0}},at:{$:0,ac:{$:0},co:{$:0,blogspot:{$:0}},gv:{$:0},or:{$:0},futurecms:{"*":{$:0}},futurehosting:{$:0},futuremailing:{$:0},ortsinfo:{ex:{"*":{$:0}},kunden:{"*":{$:0}}},biz:{$:0},info:{$:0},priv:{$:0},"12hp":{$:0},"2ix":{$:0},"4lima":{$:0},"lima-city":{$:0}},au:{$:0,com:{$:0,blogspot:{$:0}},net:{$:0},org:{$:0},edu:{$:0,act:{$:0},nsw:{$:0},nt:{$:0},qld:{$:0},sa:{$:0},tas:{$:0},vic:{$:0},wa:{$:0}},gov:{$:0,qld:{$:0},sa:{$:0},tas:{$:0},vic:{$:0},wa:{$:0}},asn:{$:0},id:{$:0},info:{$:0},conf:{$:0},oz:{$:0},act:{$:0},nsw:{$:0},nt:{$:0},qld:{$:0},sa:{$:0},tas:{$:0},vic:{$:0},wa:{$:0}},aw:{$:0,com:{$:0}},ax:{$:0},az:{$:0,com:{$:0},net:{$:0},int:{$:0},gov:{$:0},org:{$:0},edu:{$:0},info:{$:0},pp:{$:0},mil:{$:0},name:{$:0},pro:{$:0},biz:{$:0}},ba:{$:0,com:{$:0},edu:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0},blogspot:{$:0}},bb:{$:0,biz:{$:0},co:{$:0},com:{$:0},edu:{$:0},gov:{$:0},info:{$:0},net:{$:0},org:{$:0},store:{$:0},tv:{$:0}},bd:{"*":{$:0}},be:{$:0,ac:{$:0},webhosting:{$:0},blogspot:{$:0},transurl:{"*":{$:0}}},bf:{$:0,gov:{$:0}},bg:{0:{$:0},1:{$:0},2:{$:0},3:{$:0},4:{$:0},5:{$:0},6:{$:0},7:{$:0},8:{$:0},9:{$:0},$:0,a:{$:0},b:{$:0},c:{$:0},d:{$:0},e:{$:0},f:{$:0},g:{$:0},h:{$:0},i:{$:0},j:{$:0},k:{$:0},l:{$:0},m:{$:0},n:{$:0},o:{$:0},p:{$:0},q:{$:0},r:{$:0},s:{$:0},t:{$:0},u:{$:0},v:{$:0},w:{$:0},x:{$:0},y:{$:0},z:{$:0},blogspot:{$:0},barsy:{$:0}},bh:{$:0,com:{$:0},edu:{$:0},net:{$:0},org:{$:0},gov:{$:0}},bi:{$:0,co:{$:0},com:{$:0},edu:{$:0},or:{$:0},org:{$:0}},biz:{$:0,cloudns:{$:0},dyndns:{$:0},"for-better":{$:0},"for-more":{$:0},"for-some":{$:0},"for-the":{$:0},selfip:{$:0},webhop:{$:0},mmafan:{$:0},myftp:{$:0},"no-ip":{$:0},dscloud:{$:0}},bj:{$:0,asso:{$:0},barreau:{$:0},gouv:{$:0},blogspot:{$:0}},bm:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},bn:{"*":{$:0}},bo:{$:0,com:{$:0},edu:{$:0},gob:{$:0},int:{$:0},org:{$:0},net:{$:0},mil:{$:0},tv:{$:0},web:{$:0},academia:{$:0},agro:{$:0},arte:{$:0},blog:{$:0},bolivia:{$:0},ciencia:{$:0},cooperativa:{$:0},democracia:{$:0},deporte:{$:0},ecologia:{$:0},economia:{$:0},empresa:{$:0},indigena:{$:0},industria:{$:0},info:{$:0},medicina:{$:0},movimiento:{$:0},musica:{$:0},natural:{$:0},nombre:{$:0},noticias:{$:0},patria:{$:0},politica:{$:0},profesional:{$:0},plurinacional:{$:0},pueblo:{$:0},revista:{$:0},salud:{$:0},tecnologia:{$:0},tksat:{$:0},transporte:{$:0},wiki:{$:0}},br:{$:0,"9guacu":{$:0},abc:{$:0},adm:{$:0},adv:{$:0},agr:{$:0},aju:{$:0},am:{$:0},anani:{$:0},aparecida:{$:0},arq:{$:0},art:{$:0},ato:{$:0},b:{$:0},belem:{$:0},bhz:{$:0},bio:{$:0},blog:{$:0},bmd:{$:0},boavista:{$:0},bsb:{$:0},campinagrande:{$:0},campinas:{$:0},caxias:{$:0},cim:{$:0},cng:{$:0},cnt:{$:0},com:{$:0,blogspot:{$:0}},contagem:{$:0},coop:{$:0},cri:{$:0},cuiaba:{$:0},curitiba:{$:0},def:{$:0},ecn:{$:0},eco:{$:0},edu:{$:0},emp:{$:0},eng:{$:0},esp:{$:0},etc:{$:0},eti:{$:0},far:{$:0},feira:{$:0},flog:{$:0},floripa:{$:0},fm:{$:0},fnd:{$:0},fortal:{$:0},fot:{$:0},foz:{$:0},fst:{$:0},g12:{$:0},ggf:{$:0},goiania:{$:0},gov:{$:0,ac:{$:0},al:{$:0},am:{$:0},ap:{$:0},ba:{$:0},ce:{$:0},df:{$:0},es:{$:0},go:{$:0},ma:{$:0},mg:{$:0},ms:{$:0},mt:{$:0},pa:{$:0},pb:{$:0},pe:{$:0},pi:{$:0},pr:{$:0},rj:{$:0},rn:{$:0},ro:{$:0},rr:{$:0},rs:{$:0},sc:{$:0},se:{$:0},sp:{$:0},to:{$:0}},gru:{$:0},imb:{$:0},ind:{$:0},inf:{$:0},jab:{$:0},jampa:{$:0},jdf:{$:0},joinville:{$:0},jor:{$:0},jus:{$:0},leg:{$:0,ac:{$:0},al:{$:0},am:{$:0},ap:{$:0},ba:{$:0},ce:{$:0},df:{$:0},es:{$:0},go:{$:0},ma:{$:0},mg:{$:0},ms:{$:0},mt:{$:0},pa:{$:0},pb:{$:0},pe:{$:0},pi:{$:0},pr:{$:0},rj:{$:0},rn:{$:0},ro:{$:0},rr:{$:0},rs:{$:0},sc:{$:0},se:{$:0},sp:{$:0},to:{$:0}},lel:{$:0},londrina:{$:0},macapa:{$:0},maceio:{$:0},manaus:{$:0},maringa:{$:0},mat:{$:0},med:{$:0},mil:{$:0},morena:{$:0},mp:{$:0},mus:{$:0},natal:{$:0},net:{$:0},niteroi:{$:0},nom:{"*":{$:0}},not:{$:0},ntr:{$:0},odo:{$:0},org:{$:0},osasco:{$:0},palmas:{$:0},poa:{$:0},ppg:{$:0},pro:{$:0},psc:{$:0},psi:{$:0},pvh:{$:0},qsl:{$:0},radio:{$:0},rec:{$:0},recife:{$:0},ribeirao:{$:0},rio:{$:0},riobranco:{$:0},riopreto:{$:0},salvador:{$:0},sampa:{$:0},santamaria:{$:0},santoandre:{$:0},saobernardo:{$:0},saogonca:{$:0},sjc:{$:0},slg:{$:0},slz:{$:0},sorocaba:{$:0},srv:{$:0},taxi:{$:0},teo:{$:0},the:{$:0},tmp:{$:0},trd:{$:0},tur:{$:0},tv:{$:0},udi:{$:0},vet:{$:0},vix:{$:0},vlog:{$:0},wiki:{$:0},zlg:{$:0}},bs:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},gov:{$:0},we:{$:0}},bt:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},bv:{$:0},bw:{$:0,co:{$:0},org:{$:0}},by:{$:0,gov:{$:0},mil:{$:0},com:{$:0,blogspot:{$:0}},of:{$:0},nym:{$:0}},bz:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},gov:{$:0},za:{$:0},nym:{$:0}},ca:{$:0,ab:{$:0},bc:{$:0},mb:{$:0},nb:{$:0},nf:{$:0},nl:{$:0},ns:{$:0},nt:{$:0},nu:{$:0},on:{$:0},pe:{$:0},qc:{$:0},sk:{$:0},yk:{$:0},gc:{$:0},"1password":{$:0},awdev:{"*":{$:0}},co:{$:0},blogspot:{$:0},"no-ip":{$:0}},cat:{$:0},cc:{$:0,cloudns:{$:0},ftpaccess:{$:0},"game-server":{$:0},myphotos:{$:0},scrapping:{$:0},twmail:{$:0},fantasyleague:{$:0}},cd:{$:0,gov:{$:0}},cf:{$:0,blogspot:{$:0}},cg:{$:0},ch:{$:0,square7:{$:0},blogspot:{$:0},gotdns:{$:0},"12hp":{$:0},"2ix":{$:0},"4lima":{$:0},"lima-city":{$:0}},ci:{$:0,org:{$:0},or:{$:0},com:{$:0},co:{$:0},edu:{$:0},ed:{$:0},ac:{$:0},net:{$:0},go:{$:0},asso:{$:0},"xn--aroport-bya":{$:0},int:{$:0},presse:{$:0},md:{$:0},gouv:{$:0}},ck:{"*":{$:0}},cl:{$:0,gov:{$:0},gob:{$:0},co:{$:0},mil:{$:0},blogspot:{$:0},nom:{$:0}},cm:{$:0,co:{$:0},com:{$:0},gov:{$:0},net:{$:0}},cn:{$:0,ac:{$:0},com:{$:0,amazonaws:{compute:{"*":{$:0}},eb:{"cn-north-1":{$:0}},elb:{"*":{$:0}},"cn-north-1":{s3:{$:0}}}},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0},mil:{$:0},"xn--55qx5d":{$:0},"xn--io0a7i":{$:0},"xn--od0alg":{$:0},ah:{$:0},bj:{$:0},cq:{$:0},fj:{$:0},gd:{$:0},gs:{$:0},gz:{$:0},gx:{$:0},ha:{$:0},hb:{$:0},he:{$:0},hi:{$:0},hl:{$:0},hn:{$:0},jl:{$:0},js:{$:0},jx:{$:0},ln:{$:0},nm:{$:0},nx:{$:0},qh:{$:0},sc:{$:0},sd:{$:0},sh:{$:0},sn:{$:0},sx:{$:0},tj:{$:0},xj:{$:0},xz:{$:0},yn:{$:0},zj:{$:0},hk:{$:0},mo:{$:0},tw:{$:0}},co:{$:0,arts:{$:0},com:{$:0,blogspot:{$:0}},edu:{$:0},firm:{$:0},gov:{$:0},info:{$:0},int:{$:0},mil:{$:0},net:{$:0},nom:{$:0},org:{$:0},rec:{$:0},web:{$:0},nodum:{$:0}},com:{$:0,"1password":{$:0},amazonaws:{compute:{"*":{$:0}},"compute-1":{"*":{$:0}},"us-east-1":{$:0,dualstack:{s3:{$:0}}},elb:{"*":{$:0}},s3:{$:0},"s3-ap-northeast-1":{$:0},"s3-ap-northeast-2":{$:0},"s3-ap-south-1":{$:0},"s3-ap-southeast-1":{$:0},"s3-ap-southeast-2":{$:0},"s3-ca-central-1":{$:0},"s3-eu-central-1":{$:0},"s3-eu-west-1":{$:0},"s3-eu-west-2":{$:0},"s3-eu-west-3":{$:0},"s3-external-1":{$:0},"s3-fips-us-gov-west-1":{$:0},"s3-sa-east-1":{$:0},"s3-us-gov-west-1":{$:0},"s3-us-east-2":{$:0},"s3-us-west-1":{$:0},"s3-us-west-2":{$:0},"ap-northeast-2":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"ap-south-1":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"ca-central-1":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"eu-central-1":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"eu-west-2":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"eu-west-3":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"us-east-2":{s3:{$:0},dualstack:{s3:{$:0}},"s3-website":{$:0}},"ap-northeast-1":{dualstack:{s3:{$:0}}},"ap-southeast-1":{dualstack:{s3:{$:0}}},"ap-southeast-2":{dualstack:{s3:{$:0}}},"eu-west-1":{dualstack:{s3:{$:0}}},"sa-east-1":{dualstack:{s3:{$:0}}},"s3-website-us-east-1":{$:0},"s3-website-us-west-1":{$:0},"s3-website-us-west-2":{$:0},"s3-website-ap-northeast-1":{$:0},"s3-website-ap-southeast-1":{$:0},"s3-website-ap-southeast-2":{$:0},"s3-website-eu-west-1":{$:0},"s3-website-sa-east-1":{$:0}},elasticbeanstalk:{$:0,"ap-northeast-1":{$:0},"ap-northeast-2":{$:0},"ap-south-1":{$:0},"ap-southeast-1":{$:0},"ap-southeast-2":{$:0},"ca-central-1":{$:0},"eu-central-1":{$:0},"eu-west-1":{$:0},"eu-west-2":{$:0},"eu-west-3":{$:0},"sa-east-1":{$:0},"us-east-1":{$:0},"us-east-2":{$:0},"us-gov-west-1":{$:0},"us-west-1":{$:0},"us-west-2":{$:0}},"on-aptible":{$:0},myasustor:{$:0},betainabox:{$:0},bplaced:{$:0},ar:{$:0},br:{$:0},cn:{$:0},de:{$:0},eu:{$:0},gb:{$:0},hu:{$:0},jpn:{$:0},kr:{$:0},mex:{$:0},no:{$:0},qc:{$:0},ru:{$:0},sa:{$:0},se:{$:0},uk:{$:0},us:{$:0},uy:{$:0},za:{$:0},africa:{$:0},gr:{$:0},co:{$:0},xenapponazure:{$:0},jdevcloud:{$:0},wpdevcloud:{$:0},cloudcontrolled:{$:0},cloudcontrolapp:{$:0},drayddns:{$:0},dreamhosters:{$:0},mydrobo:{$:0},"dyndns-at-home":{$:0},"dyndns-at-work":{$:0},"dyndns-blog":{$:0},"dyndns-free":{$:0},"dyndns-home":{$:0},"dyndns-ip":{$:0},"dyndns-mail":{$:0},"dyndns-office":{$:0},"dyndns-pics":{$:0},"dyndns-remote":{$:0},"dyndns-server":{$:0},"dyndns-web":{$:0},"dyndns-wiki":{$:0},"dyndns-work":{$:0},blogdns:{$:0},cechire:{$:0},dnsalias:{$:0},dnsdojo:{$:0},doesntexist:{$:0},dontexist:{$:0},doomdns:{$:0},"dyn-o-saur":{$:0},dynalias:{$:0},"est-a-la-maison":{$:0},"est-a-la-masion":{$:0},"est-le-patron":{$:0},"est-mon-blogueur":{$:0},"from-ak":{$:0},"from-al":{$:0},"from-ar":{$:0},"from-ca":{$:0},"from-ct":{$:0},"from-dc":{$:0},"from-de":{$:0},"from-fl":{$:0},"from-ga":{$:0},"from-hi":{$:0},"from-ia":{$:0},"from-id":{$:0},"from-il":{$:0},"from-in":{$:0},"from-ks":{$:0},"from-ky":{$:0},"from-ma":{$:0},"from-md":{$:0},"from-mi":{$:0},"from-mn":{$:0},"from-mo":{$:0},"from-ms":{$:0},"from-mt":{$:0},"from-nc":{$:0},"from-nd":{$:0},"from-ne":{$:0},"from-nh":{$:0},"from-nj":{$:0},"from-nm":{$:0},"from-nv":{$:0},"from-oh":{$:0},"from-ok":{$:0},"from-or":{$:0},"from-pa":{$:0},"from-pr":{$:0},"from-ri":{$:0},"from-sc":{$:0},"from-sd":{$:0},"from-tn":{$:0},"from-tx":{$:0},"from-ut":{$:0},"from-va":{$:0},"from-vt":{$:0},"from-wa":{$:0},"from-wi":{$:0},"from-wv":{$:0},"from-wy":{$:0},getmyip:{$:0},gotdns:{$:0},"hobby-site":{$:0},homelinux:{$:0},homeunix:{$:0},iamallama:{$:0},"is-a-anarchist":{$:0},"is-a-blogger":{$:0},"is-a-bookkeeper":{$:0},"is-a-bulls-fan":{$:0},"is-a-caterer":{$:0},"is-a-chef":{$:0},"is-a-conservative":{$:0},"is-a-cpa":{$:0},"is-a-cubicle-slave":{$:0},"is-a-democrat":{$:0},"is-a-designer":{$:0},"is-a-doctor":{$:0},"is-a-financialadvisor":{$:0},"is-a-geek":{$:0},"is-a-green":{$:0},"is-a-guru":{$:0},"is-a-hard-worker":{$:0},"is-a-hunter":{$:0},"is-a-landscaper":{$:0},"is-a-lawyer":{$:0},"is-a-liberal":{$:0},"is-a-libertarian":{$:0},"is-a-llama":{$:0},"is-a-musician":{$:0},"is-a-nascarfan":{$:0},"is-a-nurse":{$:0},"is-a-painter":{$:0},"is-a-personaltrainer":{$:0},"is-a-photographer":{$:0},"is-a-player":{$:0},"is-a-republican":{$:0},"is-a-rockstar":{$:0},"is-a-socialist":{$:0},"is-a-student":{$:0},"is-a-teacher":{$:0},"is-a-techie":{$:0},"is-a-therapist":{$:0},"is-an-accountant":{$:0},"is-an-actor":{$:0},"is-an-actress":{$:0},"is-an-anarchist":{$:0},"is-an-artist":{$:0},"is-an-engineer":{$:0},"is-an-entertainer":{$:0},"is-certified":{$:0},"is-gone":{$:0},"is-into-anime":{$:0},"is-into-cars":{$:0},"is-into-cartoons":{$:0},"is-into-games":{$:0},"is-leet":{$:0},"is-not-certified":{$:0},"is-slick":{$:0},"is-uberleet":{$:0},"is-with-theband":{$:0},"isa-geek":{$:0},"isa-hockeynut":{$:0},issmarterthanyou:{$:0},"likes-pie":{$:0},likescandy:{$:0},"neat-url":{$:0},"saves-the-whales":{$:0},selfip:{$:0},"sells-for-less":{$:0},"sells-for-u":{$:0},servebbs:{$:0},"simple-url":{$:0},"space-to-rent":{$:0},"teaches-yoga":{$:0},writesthisblog:{$:0},ddnsfree:{$:0},ddnsgeek:{$:0},giize:{$:0},gleeze:{$:0},kozow:{$:0},loseyourip:{$:0},ooguy:{$:0},theworkpc:{$:0},mytuleap:{$:0},evennode:{"eu-1":{$:0},"eu-2":{$:0},"eu-3":{$:0},"eu-4":{$:0},"us-1":{$:0},"us-2":{$:0},"us-3":{$:0},"us-4":{$:0}},fbsbx:{apps:{$:0}},firebaseapp:{$:0},flynnhub:{$:0},"freebox-os":{$:0},freeboxos:{$:0},githubusercontent:{$:0},"0emm":{"*":{$:0}},appspot:{$:0},blogspot:{$:0},codespot:{$:0},googleapis:{$:0},googlecode:{$:0},pagespeedmobilizer:{$:0},publishproxy:{$:0},withgoogle:{$:0},withyoutube:{$:0},herokuapp:{$:0},herokussl:{$:0},pixolino:{$:0},joyent:{cns:{"*":{$:0}}},barsyonline:{$:0},meteorapp:{$:0,eu:{$:0}},bitballoon:{$:0},netlify:{$:0},"4u":{$:0},nfshost:{$:0},blogsyte:{$:0},ciscofreak:{$:0},damnserver:{$:0},ditchyourip:{$:0},dnsiskinky:{$:0},dynns:{$:0},geekgalaxy:{$:0},"health-carereform":{$:0},homesecuritymac:{$:0},homesecuritypc:{$:0},myactivedirectory:{$:0},mysecuritycamera:{$:0},"net-freaks":{$:0},onthewifi:{$:0},point2this:{$:0},quicksytes:{$:0},securitytactics:{$:0},serveexchange:{$:0},servehumour:{$:0},servep2p:{$:0},servesarcasm:{$:0},stufftoread:{$:0},unusualperson:{$:0},workisboring:{$:0},"3utilities":{$:0},ddnsking:{$:0},myvnc:{$:0},servebeer:{$:0},servecounterstrike:{$:0},serveftp:{$:0},servegame:{$:0},servehalflife:{$:0},servehttp:{$:0},serveirc:{$:0},servemp3:{$:0},servepics:{$:0},servequake:{$:0},operaunite:{$:0},outsystemscloud:{$:0},ownprovider:{$:0},pgfog:{$:0},pagefrontapp:{$:0},gotpantheon:{$:0},prgmr:{xen:{$:0}},qa2:{$:0},"dev-myqnapcloud":{$:0},"alpha-myqnapcloud":{$:0},myqnapcloud:{$:0},quipelements:{"*":{$:0}},rackmaze:{$:0},rhcloud:{$:0},logoip:{$:0},scrysec:{$:0},"firewall-gateway":{$:0},myshopblocks:{$:0},"1kapp":{$:0},appchizi:{$:0},applinzi:{$:0},sinaapp:{$:0},vipsinaapp:{$:0},"bounty-full":{$:0,alpha:{$:0},beta:{$:0}},"temp-dns":{$:0},dsmynas:{$:0},familyds:{$:0},bloxcms:{$:0},"townnews-staging":{$:0},hk:{$:0},remotewd:{$:0},yolasite:{$:0}},coop:{$:0},cr:{$:0,ac:{$:0},co:{$:0},ed:{$:0},fi:{$:0},go:{$:0},or:{$:0},sa:{$:0}},cu:{$:0,com:{$:0},edu:{$:0},org:{$:0},net:{$:0},gov:{$:0},inf:{$:0}},cv:{$:0,blogspot:{$:0}},cw:{$:0,com:{$:0},edu:{$:0},net:{$:0},org:{$:0}},cx:{$:0,gov:{$:0},ath:{$:0},info:{$:0}},cy:{$:0,ac:{$:0},biz:{$:0},com:{$:0,blogspot:{$:0}},ekloges:{$:0},gov:{$:0},ltd:{$:0},name:{$:0},net:{$:0},org:{$:0},parliament:{$:0},press:{$:0},pro:{$:0},tm:{$:0}},cz:{$:0,co:{$:0},realm:{$:0},e4:{$:0},blogspot:{$:0},metacentrum:{cloud:{$:0},custom:{$:0}}},de:{$:0,bplaced:{$:0},square7:{$:0},com:{$:0},cosidns:{dyn:{$:0}},"dynamisches-dns":{$:0},dnsupdater:{$:0},"internet-dns":{$:0},"l-o-g-i-n":{$:0},dnshome:{$:0},fuettertdasnetz:{$:0},isteingeek:{$:0},istmein:{$:0},lebtimnetz:{$:0},leitungsen:{$:0},traeumtgerade:{$:0},ddnss:{$:0,dyn:{$:0},dyndns:{$:0}},dyndns1:{$:0},"dyn-ip24":{$:0},"home-webserver":{$:0,dyn:{$:0}},"myhome-server":{$:0},goip:{$:0},blogspot:{$:0},keymachine:{$:0},"git-repos":{$:0},"lcube-server":{$:0},"svn-repos":{$:0},barsy:{$:0},logoip:{$:0},"firewall-gateway":{$:0},"my-gateway":{$:0},"my-router":{$:0},spdns:{$:0},"taifun-dns":{$:0},"12hp":{$:0},"2ix":{$:0},"4lima":{$:0},"lima-city":{$:0},"dd-dns":{$:0},"dray-dns":{$:0},draydns:{$:0},"dyn-vpn":{$:0},dynvpn:{$:0},"mein-vigor":{$:0},"my-vigor":{$:0},"my-wan":{$:0},"syno-ds":{$:0},"synology-diskstation":{$:0},"synology-ds":{$:0}},dj:{$:0},dk:{$:0,biz:{$:0},co:{$:0},firm:{$:0},reg:{$:0},store:{$:0},blogspot:{$:0}},dm:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},gov:{$:0}},do:{$:0,art:{$:0},com:{$:0},edu:{$:0},gob:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0},sld:{$:0},web:{$:0}},dz:{$:0,com:{$:0},org:{$:0},net:{$:0},gov:{$:0},edu:{$:0},asso:{$:0},pol:{$:0},art:{$:0}},ec:{$:0,com:{$:0},info:{$:0},net:{$:0},fin:{$:0},k12:{$:0},med:{$:0},pro:{$:0},org:{$:0},edu:{$:0},gov:{$:0},gob:{$:0},mil:{$:0}},edu:{$:0},ee:{$:0,edu:{$:0},gov:{$:0},riik:{$:0},lib:{$:0},med:{$:0},com:{$:0,blogspot:{$:0}},pri:{$:0},aip:{$:0},org:{$:0},fie:{$:0}},eg:{$:0,com:{$:0,blogspot:{$:0}},edu:{$:0},eun:{$:0},gov:{$:0},mil:{$:0},name:{$:0},net:{$:0},org:{$:0},sci:{$:0}},er:{"*":{$:0}},es:{$:0,com:{$:0,blogspot:{$:0}},nom:{$:0},org:{$:0},gob:{$:0},edu:{$:0}},et:{$:0,com:{$:0},gov:{$:0},org:{$:0},edu:{$:0},biz:{$:0},name:{$:0},info:{$:0},net:{$:0}},eu:{$:0,"1password":{$:0},mycd:{$:0},cloudns:{$:0},barsy:{$:0},wellbeingzone:{$:0},spdns:{$:0},transurl:{"*":{$:0}},diskstation:{$:0}},fi:{$:0,aland:{$:0},dy:{$:0},blogspot:{$:0},iki:{$:0}},fj:{"*":{$:0}},fk:{"*":{$:0}},fm:{$:0},fo:{$:0},fr:{$:0,com:{$:0},asso:{$:0},nom:{$:0},prd:{$:0},presse:{$:0},tm:{$:0},aeroport:{$:0},assedic:{$:0},avocat:{$:0},avoues:{$:0},cci:{$:0},chambagri:{$:0},"chirurgiens-dentistes":{$:0},"experts-comptables":{$:0},"geometre-expert":{$:0},gouv:{$:0},greta:{$:0},"huissier-justice":{$:0},medecin:{$:0},notaires:{$:0},pharmacien:{$:0},port:{$:0},veterinaire:{$:0},"fbx-os":{$:0},fbxos:{$:0},"freebox-os":{$:0},freeboxos:{$:0},blogspot:{$:0},"on-web":{$:0},"chirurgiens-dentistes-en-france":{$:0}},ga:{$:0},gb:{$:0},gd:{$:0,nom:{$:0}},ge:{$:0,com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},mil:{$:0},net:{$:0},pvt:{$:0}},gf:{$:0},gg:{$:0,co:{$:0},net:{$:0},org:{$:0},cya:{$:0}},gh:{$:0,com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},mil:{$:0}},gi:{$:0,com:{$:0},ltd:{$:0},gov:{$:0},mod:{$:0},edu:{$:0},org:{$:0}},gl:{$:0,co:{$:0},com:{$:0},edu:{$:0},net:{$:0},org:{$:0},nom:{$:0}},gm:{$:0},gn:{$:0,ac:{$:0},com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},net:{$:0}},gov:{$:0},gp:{$:0,com:{$:0},net:{$:0},mobi:{$:0},edu:{$:0},org:{$:0},asso:{$:0}},gq:{$:0},gr:{$:0,com:{$:0},edu:{$:0},net:{$:0},org:{$:0},gov:{$:0},blogspot:{$:0},nym:{$:0}},gs:{$:0},gt:{$:0,com:{$:0},edu:{$:0},gob:{$:0},ind:{$:0},mil:{$:0},net:{$:0},org:{$:0},nom:{$:0}},gu:{"*":{$:0}},gw:{$:0},gy:{$:0,co:{$:0},com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},hk:{$:0,com:{$:0},edu:{$:0},gov:{$:0},idv:{$:0},net:{$:0},org:{$:0},"xn--55qx5d":{$:0},"xn--wcvs22d":{$:0},"xn--lcvr32d":{$:0},"xn--mxtq1m":{$:0},"xn--gmqw5a":{$:0},"xn--ciqpn":{$:0},"xn--gmq050i":{$:0},"xn--zf0avx":{$:0},"xn--io0a7i":{$:0},"xn--mk0axi":{$:0},"xn--od0alg":{$:0},"xn--od0aq3b":{$:0},"xn--tn0ag":{$:0},"xn--uc0atv":{$:0},"xn--uc0ay4a":{$:0},blogspot:{$:0},ltd:{$:0},inc:{$:0}},hm:{$:0},hn:{$:0,com:{$:0},edu:{$:0},org:{$:0},net:{$:0},mil:{$:0},gob:{$:0},nom:{$:0}},hr:{$:0,iz:{$:0},from:{$:0},name:{$:0},com:{$:0},blogspot:{$:0}},ht:{$:0,com:{$:0},shop:{$:0},firm:{$:0},info:{$:0},adult:{$:0},net:{$:0},pro:{$:0},org:{$:0},med:{$:0},art:{$:0},coop:{$:0},pol:{$:0},asso:{$:0},edu:{$:0},rel:{$:0},gouv:{$:0},perso:{$:0}},hu:{2000:{$:0},$:0,co:{$:0},info:{$:0},org:{$:0},priv:{$:0},sport:{$:0},tm:{$:0},agrar:{$:0},bolt:{$:0},casino:{$:0},city:{$:0},erotica:{$:0},erotika:{$:0},film:{$:0},forum:{$:0},games:{$:0},hotel:{$:0},ingatlan:{$:0},jogasz:{$:0},konyvelo:{$:0},lakas:{$:0},media:{$:0},news:{$:0},reklam:{$:0},sex:{$:0},shop:{$:0},suli:{$:0},szex:{$:0},tozsde:{$:0},utazas:{$:0},video:{$:0},blogspot:{$:0}},id:{$:0,ac:{$:0},biz:{$:0},co:{$:0,blogspot:{$:0}},desa:{$:0},go:{$:0},mil:{$:0},my:{$:0},net:{$:0},or:{$:0},sch:{$:0},web:{$:0}},ie:{$:0,gov:{$:0},blogspot:{$:0}},il:{$:0,ac:{$:0},co:{$:0,blogspot:{$:0}},gov:{$:0},idf:{$:0},k12:{$:0},muni:{$:0},net:{$:0},org:{$:0}},im:{$:0,ac:{$:0},co:{$:0,ltd:{$:0},plc:{$:0}},com:{$:0},net:{$:0},org:{$:0},tt:{$:0},tv:{$:0},ro:{$:0},nom:{$:0}},in:{$:0,co:{$:0},firm:{$:0},net:{$:0},org:{$:0},gen:{$:0},ind:{$:0},nic:{$:0},ac:{$:0},edu:{$:0},res:{$:0},gov:{$:0},mil:{$:0},cloudns:{$:0},blogspot:{$:0},barsy:{$:0}},info:{$:0,cloudns:{$:0},"dynamic-dns":{$:0},dyndns:{$:0},"barrel-of-knowledge":{$:0},"barrell-of-knowledge":{$:0},"for-our":{$:0},"groks-the":{$:0},"groks-this":{$:0},"here-for-more":{$:0},knowsitall:{$:0},selfip:{$:0},webhop:{$:0},nsupdate:{$:0},dvrcam:{$:0},ilovecollege:{$:0},"no-ip":{$:0},"v-info":{$:0}},int:{$:0,eu:{$:0}},io:{$:0,com:{$:0},backplaneapp:{$:0},boxfuse:{$:0},browsersafetymark:{$:0},dedyn:{$:0},drud:{$:0},definima:{$:0},enonic:{$:0,customer:{$:0}},github:{$:0},gitlab:{$:0},"hasura-app":{$:0},ngrok:{$:0},nodeart:{stage:{$:0}},nodum:{$:0},nid:{$:0},pantheonsite:{$:0},protonet:{$:0},vaporcloud:{$:0},resindevice:{$:0},resinstaging:{devices:{$:0}},hzc:{$:0},sandcats:{$:0},s5y:{"*":{$:0}},shiftedit:{$:0},lair:{apps:{$:0}},stolos:{"*":{$:0}},spacekit:{$:0},thingdust:{dev:{cust:{$:0}},disrec:{cust:{$:0}},prod:{cust:{$:0}},testing:{cust:{$:0}}},wedeploy:{$:0}},iq:{$:0,gov:{$:0},edu:{$:0},mil:{$:0},com:{$:0},org:{$:0},net:{$:0}},ir:{$:0,ac:{$:0},co:{$:0},gov:{$:0},id:{$:0},net:{$:0},org:{$:0},sch:{$:0},"xn--mgba3a4f16a":{$:0},"xn--mgba3a4fra":{$:0}},is:{$:0,net:{$:0},com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},int:{$:0},cupcake:{$:0},blogspot:{$:0}},it:{$:0,gov:{$:0},edu:{$:0},abr:{$:0},abruzzo:{$:0},"aosta-valley":{$:0},aostavalley:{$:0},bas:{$:0},basilicata:{$:0},cal:{$:0},calabria:{$:0},cam:{$:0},campania:{$:0},"emilia-romagna":{$:0},emiliaromagna:{$:0},emr:{$:0},"friuli-v-giulia":{$:0},"friuli-ve-giulia":{$:0},"friuli-vegiulia":{$:0},"friuli-venezia-giulia":{$:0},"friuli-veneziagiulia":{$:0},"friuli-vgiulia":{$:0},"friuliv-giulia":{$:0},"friulive-giulia":{$:0},friulivegiulia:{$:0},"friulivenezia-giulia":{$:0},friuliveneziagiulia:{$:0},friulivgiulia:{$:0},fvg:{$:0},laz:{$:0},lazio:{$:0},lig:{$:0},liguria:{$:0},lom:{$:0},lombardia:{$:0},lombardy:{$:0},lucania:{$:0},mar:{$:0},marche:{$:0},mol:{$:0},molise:{$:0},piedmont:{$:0},piemonte:{$:0},pmn:{$:0},pug:{$:0},puglia:{$:0},sar:{$:0},sardegna:{$:0},sardinia:{$:0},sic:{$:0},sicilia:{$:0},sicily:{$:0},taa:{$:0},tos:{$:0},toscana:{$:0},"trentino-a-adige":{$:0},"trentino-aadige":{$:0},"trentino-alto-adige":{$:0},"trentino-altoadige":{$:0},"trentino-s-tirol":{$:0},"trentino-stirol":{$:0},"trentino-sud-tirol":{$:0},"trentino-sudtirol":{$:0},"trentino-sued-tirol":{$:0},"trentino-suedtirol":{$:0},"trentinoa-adige":{$:0},trentinoaadige:{$:0},"trentinoalto-adige":{$:0},trentinoaltoadige:{$:0},"trentinos-tirol":{$:0},trentinostirol:{$:0},"trentinosud-tirol":{$:0},trentinosudtirol:{$:0},"trentinosued-tirol":{$:0},trentinosuedtirol:{$:0},tuscany:{$:0},umb:{$:0},umbria:{$:0},"val-d-aosta":{$:0},"val-daosta":{$:0},"vald-aosta":{$:0},valdaosta:{$:0},"valle-aosta":{$:0},"valle-d-aosta":{$:0},"valle-daosta":{$:0},valleaosta:{$:0},"valled-aosta":{$:0},valledaosta:{$:0},"vallee-aoste":{$:0},valleeaoste:{$:0},vao:{$:0},vda:{$:0},ven:{$:0},veneto:{$:0},ag:{$:0},agrigento:{$:0},al:{$:0},alessandria:{$:0},"alto-adige":{$:0},altoadige:{$:0},an:{$:0},ancona:{$:0},"andria-barletta-trani":{$:0},"andria-trani-barletta":{$:0},andriabarlettatrani:{$:0},andriatranibarletta:{$:0},ao:{$:0},aosta:{$:0},aoste:{$:0},ap:{$:0},aq:{$:0},aquila:{$:0},ar:{$:0},arezzo:{$:0},"ascoli-piceno":{$:0},ascolipiceno:{$:0},asti:{$:0},at:{$:0},av:{$:0},avellino:{$:0},ba:{$:0},balsan:{$:0},bari:{$:0},"barletta-trani-andria":{$:0},barlettatraniandria:{$:0},belluno:{$:0},benevento:{$:0},bergamo:{$:0},bg:{$:0},bi:{$:0},biella:{$:0},bl:{$:0},bn:{$:0},bo:{$:0},bologna:{$:0},bolzano:{$:0},bozen:{$:0},br:{$:0},brescia:{$:0},brindisi:{$:0},bs:{$:0},bt:{$:0},bz:{$:0},ca:{$:0},cagliari:{$:0},caltanissetta:{$:0},"campidano-medio":{$:0},campidanomedio:{$:0},campobasso:{$:0},"carbonia-iglesias":{$:0},carboniaiglesias:{$:0},"carrara-massa":{$:0},carraramassa:{$:0},caserta:{$:0},catania:{$:0},catanzaro:{$:0},cb:{$:0},ce:{$:0},"cesena-forli":{$:0},cesenaforli:{$:0},ch:{$:0},chieti:{$:0},ci:{$:0},cl:{$:0},cn:{$:0},co:{$:0},como:{$:0},cosenza:{$:0},cr:{$:0},cremona:{$:0},crotone:{$:0},cs:{$:0},ct:{$:0},cuneo:{$:0},cz:{$:0},"dell-ogliastra":{$:0},dellogliastra:{$:0},en:{$:0},enna:{$:0},fc:{$:0},fe:{$:0},fermo:{$:0},ferrara:{$:0},fg:{$:0},fi:{$:0},firenze:{$:0},florence:{$:0},fm:{$:0},foggia:{$:0},"forli-cesena":{$:0},forlicesena:{$:0},fr:{$:0},frosinone:{$:0},ge:{$:0},genoa:{$:0},genova:{$:0},go:{$:0},gorizia:{$:0},gr:{$:0},grosseto:{$:0},"iglesias-carbonia":{$:0},iglesiascarbonia:{$:0},im:{$:0},imperia:{$:0},is:{$:0},isernia:{$:0},kr:{$:0},"la-spezia":{$:0},laquila:{$:0},laspezia:{$:0},latina:{$:0},lc:{$:0},le:{$:0},lecce:{$:0},lecco:{$:0},li:{$:0},livorno:{$:0},lo:{$:0},lodi:{$:0},lt:{$:0},lu:{$:0},lucca:{$:0},macerata:{$:0},mantova:{$:0},"massa-carrara":{$:0},massacarrara:{$:0},matera:{$:0},mb:{$:0},mc:{$:0},me:{$:0},"medio-campidano":{$:0},mediocampidano:{$:0},messina:{$:0},mi:{$:0},milan:{$:0},milano:{$:0},mn:{$:0},mo:{$:0},modena:{$:0},"monza-brianza":{$:0},"monza-e-della-brianza":{$:0},monza:{$:0},monzabrianza:{$:0},monzaebrianza:{$:0},monzaedellabrianza:{$:0},ms:{$:0},mt:{$:0},na:{$:0},naples:{$:0},napoli:{$:0},no:{$:0},novara:{$:0},nu:{$:0},nuoro:{$:0},og:{$:0},ogliastra:{$:0},"olbia-tempio":{$:0},olbiatempio:{$:0},or:{$:0},oristano:{$:0},ot:{$:0},pa:{$:0},padova:{$:0},padua:{$:0},palermo:{$:0},parma:{$:0},pavia:{$:0},pc:{$:0},pd:{$:0},pe:{$:0},perugia:{$:0},"pesaro-urbino":{$:0},pesarourbino:{$:0},pescara:{$:0},pg:{$:0},pi:{$:0},piacenza:{$:0},pisa:{$:0},pistoia:{$:0},pn:{$:0},po:{$:0},pordenone:{$:0},potenza:{$:0},pr:{$:0},prato:{$:0},pt:{$:0},pu:{$:0},pv:{$:0},pz:{$:0},ra:{$:0},ragusa:{$:0},ravenna:{$:0},rc:{$:0},re:{$:0},"reggio-calabria":{$:0},"reggio-emilia":{$:0},reggiocalabria:{$:0},reggioemilia:{$:0},rg:{$:0},ri:{$:0},rieti:{$:0},rimini:{$:0},rm:{$:0},rn:{$:0},ro:{$:0},roma:{$:0},rome:{$:0},rovigo:{$:0},sa:{$:0},salerno:{$:0},sassari:{$:0},savona:{$:0},si:{$:0},siena:{$:0},siracusa:{$:0},so:{$:0},sondrio:{$:0},sp:{$:0},sr:{$:0},ss:{$:0},suedtirol:{$:0},sv:{$:0},ta:{$:0},taranto:{$:0},te:{$:0},"tempio-olbia":{$:0},tempioolbia:{$:0},teramo:{$:0},terni:{$:0},tn:{$:0},to:{$:0},torino:{$:0},tp:{$:0},tr:{$:0},"trani-andria-barletta":{$:0},"trani-barletta-andria":{$:0},traniandriabarletta:{$:0},tranibarlettaandria:{$:0},trapani:{$:0},trentino:{$:0},trento:{$:0},treviso:{$:0},trieste:{$:0},ts:{$:0},turin:{$:0},tv:{$:0},ud:{$:0},udine:{$:0},"urbino-pesaro":{$:0},urbinopesaro:{$:0},va:{$:0},varese:{$:0},vb:{$:0},vc:{$:0},ve:{$:0},venezia:{$:0},venice:{$:0},verbania:{$:0},vercelli:{$:0},verona:{$:0},vi:{$:0},"vibo-valentia":{$:0},vibovalentia:{$:0},vicenza:{$:0},viterbo:{$:0},vr:{$:0},vs:{$:0},vt:{$:0},vv:{$:0},blogspot:{$:0}},je:{$:0,co:{$:0},net:{$:0},org:{$:0}},jm:{"*":{$:0}},jo:{$:0,com:{$:0},org:{$:0},net:{$:0},edu:{$:0},sch:{$:0},gov:{$:0},mil:{$:0},name:{$:0}},jobs:{$:0},jp:{$:0,ac:{$:0},ad:{$:0},co:{$:0},ed:{$:0},go:{$:0},gr:{$:0},lg:{$:0},ne:{$:0},or:{$:0},aichi:{$:0,aisai:{$:0},ama:{$:0},anjo:{$:0},asuke:{$:0},chiryu:{$:0},chita:{$:0},fuso:{$:0},gamagori:{$:0},handa:{$:0},hazu:{$:0},hekinan:{$:0},higashiura:{$:0},ichinomiya:{$:0},inazawa:{$:0},inuyama:{$:0},isshiki:{$:0},iwakura:{$:0},kanie:{$:0},kariya:{$:0},kasugai:{$:0},kira:{$:0},kiyosu:{$:0},komaki:{$:0},konan:{$:0},kota:{$:0},mihama:{$:0},miyoshi:{$:0},nishio:{$:0},nisshin:{$:0},obu:{$:0},oguchi:{$:0},oharu:{$:0},okazaki:{$:0},owariasahi:{$:0},seto:{$:0},shikatsu:{$:0},shinshiro:{$:0},shitara:{$:0},tahara:{$:0},takahama:{$:0},tobishima:{$:0},toei:{$:0},togo:{$:0},tokai:{$:0},tokoname:{$:0},toyoake:{$:0},toyohashi:{$:0},toyokawa:{$:0},toyone:{$:0},toyota:{$:0},tsushima:{$:0},yatomi:{$:0}},akita:{$:0,akita:{$:0},daisen:{$:0},fujisato:{$:0},gojome:{$:0},hachirogata:{$:0},happou:{$:0},higashinaruse:{$:0},honjo:{$:0},honjyo:{$:0},ikawa:{$:0},kamikoani:{$:0},kamioka:{$:0},katagami:{$:0},kazuno:{$:0},kitaakita:{$:0},kosaka:{$:0},kyowa:{$:0},misato:{$:0},mitane:{$:0},moriyoshi:{$:0},nikaho:{$:0},noshiro:{$:0},odate:{$:0},oga:{$:0},ogata:{$:0},semboku:{$:0},yokote:{$:0},yurihonjo:{$:0}},aomori:{$:0,aomori:{$:0},gonohe:{$:0},hachinohe:{$:0},hashikami:{$:0},hiranai:{$:0},hirosaki:{$:0},itayanagi:{$:0},kuroishi:{$:0},misawa:{$:0},mutsu:{$:0},nakadomari:{$:0},noheji:{$:0},oirase:{$:0},owani:{$:0},rokunohe:{$:0},sannohe:{$:0},shichinohe:{$:0},shingo:{$:0},takko:{$:0},towada:{$:0},tsugaru:{$:0},tsuruta:{$:0}},chiba:{$:0,abiko:{$:0},asahi:{$:0},chonan:{$:0},chosei:{$:0},choshi:{$:0},chuo:{$:0},funabashi:{$:0},futtsu:{$:0},hanamigawa:{$:0},ichihara:{$:0},ichikawa:{$:0},ichinomiya:{$:0},inzai:{$:0},isumi:{$:0},kamagaya:{$:0},kamogawa:{$:0},kashiwa:{$:0},katori:{$:0},katsuura:{$:0},kimitsu:{$:0},kisarazu:{$:0},kozaki:{$:0},kujukuri:{$:0},kyonan:{$:0},matsudo:{$:0},midori:{$:0},mihama:{$:0},minamiboso:{$:0},mobara:{$:0},mutsuzawa:{$:0},nagara:{$:0},nagareyama:{$:0},narashino:{$:0},narita:{$:0},noda:{$:0},oamishirasato:{$:0},omigawa:{$:0},onjuku:{$:0},otaki:{$:0},sakae:{$:0},sakura:{$:0},shimofusa:{$:0},shirako:{$:0},shiroi:{$:0},shisui:{$:0},sodegaura:{$:0},sosa:{$:0},tako:{$:0},tateyama:{$:0},togane:{$:0},tohnosho:{$:0},tomisato:{$:0},urayasu:{$:0},yachimata:{$:0},yachiyo:{$:0},yokaichiba:{$:0},yokoshibahikari:{$:0},yotsukaido:{$:0}},ehime:{$:0,ainan:{$:0},honai:{$:0},ikata:{$:0},imabari:{$:0},iyo:{$:0},kamijima:{$:0},kihoku:{$:0},kumakogen:{$:0},masaki:{$:0},matsuno:{$:0},matsuyama:{$:0},namikata:{$:0},niihama:{$:0},ozu:{$:0},saijo:{$:0},seiyo:{$:0},shikokuchuo:{$:0},tobe:{$:0},toon:{$:0},uchiko:{$:0},uwajima:{$:0},yawatahama:{$:0}},fukui:{$:0,echizen:{$:0},eiheiji:{$:0},fukui:{$:0},ikeda:{$:0},katsuyama:{$:0},mihama:{$:0},minamiechizen:{$:0},obama:{$:0},ohi:{$:0},ono:{$:0},sabae:{$:0},sakai:{$:0},takahama:{$:0},tsuruga:{$:0},wakasa:{$:0}},fukuoka:{$:0,ashiya:{$:0},buzen:{$:0},chikugo:{$:0},chikuho:{$:0},chikujo:{$:0},chikushino:{$:0},chikuzen:{$:0},chuo:{$:0},dazaifu:{$:0},fukuchi:{$:0},hakata:{$:0},higashi:{$:0},hirokawa:{$:0},hisayama:{$:0},iizuka:{$:0},inatsuki:{$:0},kaho:{$:0},kasuga:{$:0},kasuya:{$:0},kawara:{$:0},keisen:{$:0},koga:{$:0},kurate:{$:0},kurogi:{$:0},kurume:{$:0},minami:{$:0},miyako:{$:0},miyama:{$:0},miyawaka:{$:0},mizumaki:{$:0},munakata:{$:0},nakagawa:{$:0},nakama:{$:0},nishi:{$:0},nogata:{$:0},ogori:{$:0},okagaki:{$:0},okawa:{$:0},oki:{$:0},omuta:{$:0},onga:{$:0},onojo:{$:0},oto:{$:0},saigawa:{$:0},sasaguri:{$:0},shingu:{$:0},shinyoshitomi:{$:0},shonai:{$:0},soeda:{$:0},sue:{$:0},tachiarai:{$:0},tagawa:{$:0},takata:{$:0},toho:{$:0},toyotsu:{$:0},tsuiki:{$:0},ukiha:{$:0},umi:{$:0},usui:{$:0},yamada:{$:0},yame:{$:0},yanagawa:{$:0},yukuhashi:{$:0}},fukushima:{$:0,aizubange:{$:0},aizumisato:{$:0},aizuwakamatsu:{$:0},asakawa:{$:0},bandai:{$:0},date:{$:0},fukushima:{$:0},furudono:{$:0},futaba:{$:0},hanawa:{$:0},higashi:{$:0},hirata:{$:0},hirono:{$:0},iitate:{$:0},inawashiro:{$:0},ishikawa:{$:0},iwaki:{$:0},izumizaki:{$:0},kagamiishi:{$:0},kaneyama:{$:0},kawamata:{$:0},kitakata:{$:0},kitashiobara:{$:0},koori:{$:0},koriyama:{$:0},kunimi:{$:0},miharu:{$:0},mishima:{$:0},namie:{$:0},nango:{$:0},nishiaizu:{$:0},nishigo:{$:0},okuma:{$:0},omotego:{$:0},ono:{$:0},otama:{$:0},samegawa:{$:0},shimogo:{$:0},shirakawa:{$:0},showa:{$:0},soma:{$:0},sukagawa:{$:0},taishin:{$:0},tamakawa:{$:0},tanagura:{$:0},tenei:{$:0},yabuki:{$:0},yamato:{$:0},yamatsuri:{$:0},yanaizu:{$:0},yugawa:{$:0}},gifu:{$:0,anpachi:{$:0},ena:{$:0},gifu:{$:0},ginan:{$:0},godo:{$:0},gujo:{$:0},hashima:{$:0},hichiso:{$:0},hida:{$:0},higashishirakawa:{$:0},ibigawa:{$:0},ikeda:{$:0},kakamigahara:{$:0},kani:{$:0},kasahara:{$:0},kasamatsu:{$:0},kawaue:{$:0},kitagata:{$:0},mino:{$:0},minokamo:{$:0},mitake:{$:0},mizunami:{$:0},motosu:{$:0},nakatsugawa:{$:0},ogaki:{$:0},sakahogi:{$:0},seki:{$:0},sekigahara:{$:0},shirakawa:{$:0},tajimi:{$:0},takayama:{$:0},tarui:{$:0},toki:{$:0},tomika:{$:0},wanouchi:{$:0},yamagata:{$:0},yaotsu:{$:0},yoro:{$:0}},gunma:{$:0,annaka:{$:0},chiyoda:{$:0},fujioka:{$:0},higashiagatsuma:{$:0},isesaki:{$:0},itakura:{$:0},kanna:{$:0},kanra:{$:0},katashina:{$:0},kawaba:{$:0},kiryu:{$:0},kusatsu:{$:0},maebashi:{$:0},meiwa:{$:0},midori:{$:0},minakami:{$:0},naganohara:{$:0},nakanojo:{$:0},nanmoku:{$:0},numata:{$:0},oizumi:{$:0},ora:{$:0},ota:{$:0},shibukawa:{$:0},shimonita:{$:0},shinto:{$:0},showa:{$:0},takasaki:{$:0},takayama:{$:0},tamamura:{$:0},tatebayashi:{$:0},tomioka:{$:0},tsukiyono:{$:0},tsumagoi:{$:0},ueno:{$:0},yoshioka:{$:0}},hiroshima:{$:0,asaminami:{$:0},daiwa:{$:0},etajima:{$:0},fuchu:{$:0},fukuyama:{$:0},hatsukaichi:{$:0},higashihiroshima:{$:0},hongo:{$:0},jinsekikogen:{$:0},kaita:{$:0},kui:{$:0},kumano:{$:0},kure:{$:0},mihara:{$:0},miyoshi:{$:0},naka:{$:0},onomichi:{$:0},osakikamijima:{$:0},otake:{$:0},saka:{$:0},sera:{$:0},seranishi:{$:0},shinichi:{$:0},shobara:{$:0},takehara:{$:0}},hokkaido:{$:0,abashiri:{$:0},abira:{$:0},aibetsu:{$:0},akabira:{$:0},akkeshi:{$:0},asahikawa:{$:0},ashibetsu:{$:0},ashoro:{$:0},assabu:{$:0},atsuma:{$:0},bibai:{$:0},biei:{$:0},bifuka:{$:0},bihoro:{$:0},biratori:{$:0},chippubetsu:{$:0},chitose:{$:0},date:{$:0},ebetsu:{$:0},embetsu:{$:0},eniwa:{$:0},erimo:{$:0},esan:{$:0},esashi:{$:0},fukagawa:{$:0},fukushima:{$:0},furano:{$:0},furubira:{$:0},haboro:{$:0},hakodate:{$:0},hamatonbetsu:{$:0},hidaka:{$:0},higashikagura:{$:0},higashikawa:{$:0},hiroo:{$:0},hokuryu:{$:0},hokuto:{$:0},honbetsu:{$:0},horokanai:{$:0},horonobe:{$:0},ikeda:{$:0},imakane:{$:0},ishikari:{$:0},iwamizawa:{$:0},iwanai:{$:0},kamifurano:{$:0},kamikawa:{$:0},kamishihoro:{$:0},kamisunagawa:{$:0},kamoenai:{$:0},kayabe:{$:0},kembuchi:{$:0},kikonai:{$:0},kimobetsu:{$:0},kitahiroshima:{$:0},kitami:{$:0},kiyosato:{$:0},koshimizu:{$:0},kunneppu:{$:0},kuriyama:{$:0},kuromatsunai:{$:0},kushiro:{$:0},kutchan:{$:0},kyowa:{$:0},mashike:{$:0},matsumae:{$:0},mikasa:{$:0},minamifurano:{$:0},mombetsu:{$:0},moseushi:{$:0},mukawa:{$:0},muroran:{$:0},naie:{$:0},nakagawa:{$:0},nakasatsunai:{$:0},nakatombetsu:{$:0},nanae:{$:0},nanporo:{$:0},nayoro:{$:0},nemuro:{$:0},niikappu:{$:0},niki:{$:0},nishiokoppe:{$:0},noboribetsu:{$:0},numata:{$:0},obihiro:{$:0},obira:{$:0},oketo:{$:0},okoppe:{$:0},otaru:{$:0},otobe:{$:0},otofuke:{$:0},otoineppu:{$:0},oumu:{$:0},ozora:{$:0},pippu:{$:0},rankoshi:{$:0},rebun:{$:0},rikubetsu:{$:0},rishiri:{$:0},rishirifuji:{$:0},saroma:{$:0},sarufutsu:{$:0},shakotan:{$:0},shari:{$:0},shibecha:{$:0},shibetsu:{$:0},shikabe:{$:0},shikaoi:{$:0},shimamaki:{$:0},shimizu:{$:0},shimokawa:{$:0},shinshinotsu:{$:0},shintoku:{$:0},shiranuka:{$:0},shiraoi:{$:0},shiriuchi:{$:0},sobetsu:{$:0},sunagawa:{$:0},taiki:{$:0},takasu:{$:0},takikawa:{$:0},takinoue:{$:0},teshikaga:{$:0},tobetsu:{$:0},tohma:{$:0},tomakomai:{$:0},tomari:{$:0},toya:{$:0},toyako:{$:0},toyotomi:{$:0},toyoura:{$:0},tsubetsu:{$:0},tsukigata:{$:0},urakawa:{$:0},urausu:{$:0},uryu:{$:0},utashinai:{$:0},wakkanai:{$:0},wassamu:{$:0},yakumo:{$:0},yoichi:{$:0}},hyogo:{$:0,aioi:{$:0},akashi:{$:0},ako:{$:0},amagasaki:{$:0},aogaki:{$:0},asago:{$:0},ashiya:{$:0},awaji:{$:0},fukusaki:{$:0},goshiki:{$:0},harima:{$:0},himeji:{$:0},ichikawa:{$:0},inagawa:{$:0},itami:{$:0},kakogawa:{$:0},kamigori:{$:0},kamikawa:{$:0},kasai:{$:0},kasuga:{$:0},kawanishi:{$:0},miki:{$:0},minamiawaji:{$:0},nishinomiya:{$:0},nishiwaki:{$:0},ono:{$:0},sanda:{$:0},sannan:{$:0},sasayama:{$:0},sayo:{$:0},shingu:{$:0},shinonsen:{$:0},shiso:{$:0},sumoto:{$:0},taishi:{$:0},taka:{$:0},takarazuka:{$:0},takasago:{$:0},takino:{$:0},tamba:{$:0},tatsuno:{$:0},toyooka:{$:0},yabu:{$:0},yashiro:{$:0},yoka:{$:0},yokawa:{$:0}},ibaraki:{$:0,ami:{$:0},asahi:{$:0},bando:{$:0},chikusei:{$:0},daigo:{$:0},fujishiro:{$:0},hitachi:{$:0},hitachinaka:{$:0},hitachiomiya:{$:0},hitachiota:{$:0},ibaraki:{$:0},ina:{$:0},inashiki:{$:0},itako:{$:0},iwama:{$:0},joso:{$:0},kamisu:{$:0},kasama:{$:0},kashima:{$:0},kasumigaura:{$:0},koga:{$:0},miho:{$:0},mito:{$:0},moriya:{$:0},naka:{$:0},namegata:{$:0},oarai:{$:0},ogawa:{$:0},omitama:{$:0},ryugasaki:{$:0},sakai:{$:0},sakuragawa:{$:0},shimodate:{$:0},shimotsuma:{$:0},shirosato:{$:0},sowa:{$:0},suifu:{$:0},takahagi:{$:0},tamatsukuri:{$:0},tokai:{$:0},tomobe:{$:0},tone:{$:0},toride:{$:0},tsuchiura:{$:0},tsukuba:{$:0},uchihara:{$:0},ushiku:{$:0},yachiyo:{$:0},yamagata:{$:0},yawara:{$:0},yuki:{$:0}},ishikawa:{$:0,anamizu:{$:0},hakui:{$:0},hakusan:{$:0},kaga:{$:0},kahoku:{$:0},kanazawa:{$:0},kawakita:{$:0},komatsu:{$:0},nakanoto:{$:0},nanao:{$:0},nomi:{$:0},nonoichi:{$:0},noto:{$:0},shika:{$:0},suzu:{$:0},tsubata:{$:0},tsurugi:{$:0},uchinada:{$:0},wajima:{$:0}},iwate:{$:0,fudai:{$:0},fujisawa:{$:0},hanamaki:{$:0},hiraizumi:{$:0},hirono:{$:0},ichinohe:{$:0},ichinoseki:{$:0},iwaizumi:{$:0},iwate:{$:0},joboji:{$:0},kamaishi:{$:0},kanegasaki:{$:0},karumai:{$:0},kawai:{$:0},kitakami:{$:0},kuji:{$:0},kunohe:{$:0},kuzumaki:{$:0},miyako:{$:0},mizusawa:{$:0},morioka:{$:0},ninohe:{$:0},noda:{$:0},ofunato:{$:0},oshu:{$:0},otsuchi:{$:0},rikuzentakata:{$:0},shiwa:{$:0},shizukuishi:{$:0},sumita:{$:0},tanohata:{$:0},tono:{$:0},yahaba:{$:0},yamada:{$:0}},kagawa:{$:0,ayagawa:{$:0},higashikagawa:{$:0},kanonji:{$:0},kotohira:{$:0},manno:{$:0},marugame:{$:0},mitoyo:{$:0},naoshima:{$:0},sanuki:{$:0},tadotsu:{$:0},takamatsu:{$:0},tonosho:{$:0},uchinomi:{$:0},utazu:{$:0},zentsuji:{$:0}},kagoshima:{$:0,akune:{$:0},amami:{$:0},hioki:{$:0},isa:{$:0},isen:{$:0},izumi:{$:0},kagoshima:{$:0},kanoya:{$:0},kawanabe:{$:0},kinko:{$:0},kouyama:{$:0},makurazaki:{$:0},matsumoto:{$:0},minamitane:{$:0},nakatane:{$:0},nishinoomote:{$:0},satsumasendai:{$:0},soo:{$:0},tarumizu:{$:0},yusui:{$:0}},kanagawa:{$:0,aikawa:{$:0},atsugi:{$:0},ayase:{$:0},chigasaki:{$:0},ebina:{$:0},fujisawa:{$:0},hadano:{$:0},hakone:{$:0},hiratsuka:{$:0},isehara:{$:0},kaisei:{$:0},kamakura:{$:0},kiyokawa:{$:0},matsuda:{$:0},minamiashigara:{$:0},miura:{$:0},nakai:{$:0},ninomiya:{$:0},odawara:{$:0},oi:{$:0},oiso:{$:0},sagamihara:{$:0},samukawa:{$:0},tsukui:{$:0},yamakita:{$:0},yamato:{$:0},yokosuka:{$:0},yugawara:{$:0},zama:{$:0},zushi:{$:0}},kochi:{$:0,aki:{$:0},geisei:{$:0},hidaka:{$:0},higashitsuno:{$:0},ino:{$:0},kagami:{$:0},kami:{$:0},kitagawa:{$:0},kochi:{$:0},mihara:{$:0},motoyama:{$:0},muroto:{$:0},nahari:{$:0},nakamura:{$:0},nankoku:{$:0},nishitosa:{$:0},niyodogawa:{$:0},ochi:{$:0},okawa:{$:0},otoyo:{$:0},otsuki:{$:0},sakawa:{$:0},sukumo:{$:0},susaki:{$:0},tosa:{$:0},tosashimizu:{$:0},toyo:{$:0},tsuno:{$:0},umaji:{$:0},yasuda:{$:0},yusuhara:{$:0}},kumamoto:{$:0,amakusa:{$:0},arao:{$:0},aso:{$:0},choyo:{$:0},gyokuto:{$:0},kamiamakusa:{$:0},kikuchi:{$:0},kumamoto:{$:0},mashiki:{$:0},mifune:{$:0},minamata:{$:0},minamioguni:{$:0},nagasu:{$:0},nishihara:{$:0},oguni:{$:0},ozu:{$:0},sumoto:{$:0},takamori:{$:0},uki:{$:0},uto:{$:0},yamaga:{$:0},yamato:{$:0},yatsushiro:{$:0}},kyoto:{$:0,ayabe:{$:0},fukuchiyama:{$:0},higashiyama:{$:0},ide:{$:0},ine:{$:0},joyo:{$:0},kameoka:{$:0},kamo:{$:0},kita:{$:0},kizu:{$:0},kumiyama:{$:0},kyotamba:{$:0},kyotanabe:{$:0},kyotango:{$:0},maizuru:{$:0},minami:{$:0},minamiyamashiro:{$:0},miyazu:{$:0},muko:{$:0},nagaokakyo:{$:0},nakagyo:{$:0},nantan:{$:0},oyamazaki:{$:0},sakyo:{$:0},seika:{$:0},tanabe:{$:0},uji:{$:0},ujitawara:{$:0},wazuka:{$:0},yamashina:{$:0},yawata:{$:0}},mie:{$:0,asahi:{$:0},inabe:{$:0},ise:{$:0},kameyama:{$:0},kawagoe:{$:0},kiho:{$:0},kisosaki:{$:0},kiwa:{$:0},komono:{$:0},kumano:{$:0},kuwana:{$:0},matsusaka:{$:0},meiwa:{$:0},mihama:{$:0},minamiise:{$:0},misugi:{$:0},miyama:{$:0},nabari:{$:0},shima:{$:0},suzuka:{$:0},tado:{$:0},taiki:{$:0},taki:{$:0},tamaki:{$:0},toba:{$:0},tsu:{$:0},udono:{$:0},ureshino:{$:0},watarai:{$:0},yokkaichi:{$:0}},miyagi:{$:0,furukawa:{$:0},higashimatsushima:{$:0},ishinomaki:{$:0},iwanuma:{$:0},kakuda:{$:0},kami:{$:0},kawasaki:{$:0},marumori:{$:0},matsushima:{$:0},minamisanriku:{$:0},misato:{$:0},murata:{$:0},natori:{$:0},ogawara:{$:0},ohira:{$:0},onagawa:{$:0},osaki:{$:0},rifu:{$:0},semine:{$:0},shibata:{$:0},shichikashuku:{$:0},shikama:{$:0},shiogama:{$:0},shiroishi:{$:0},tagajo:{$:0},taiwa:{$:0},tome:{$:0},tomiya:{$:0},wakuya:{$:0},watari:{$:0},yamamoto:{$:0},zao:{$:0}},miyazaki:{$:0,aya:{$:0},ebino:{$:0},gokase:{$:0},hyuga:{$:0},kadogawa:{$:0},kawaminami:{$:0},kijo:{$:0},kitagawa:{$:0},kitakata:{$:0},kitaura:{$:0},kobayashi:{$:0},kunitomi:{$:0},kushima:{$:0},mimata:{$:0},miyakonojo:{$:0},miyazaki:{$:0},morotsuka:{$:0},nichinan:{$:0},nishimera:{$:0},nobeoka:{$:0},saito:{$:0},shiiba:{$:0},shintomi:{$:0},takaharu:{$:0},takanabe:{$:0},takazaki:{$:0},tsuno:{$:0}},nagano:{$:0,achi:{$:0},agematsu:{$:0},anan:{$:0},aoki:{$:0},asahi:{$:0},azumino:{$:0},chikuhoku:{$:0},chikuma:{$:0},chino:{$:0},fujimi:{$:0},hakuba:{$:0},hara:{$:0},hiraya:{$:0},iida:{$:0},iijima:{$:0},iiyama:{$:0},iizuna:{$:0},ikeda:{$:0},ikusaka:{$:0},ina:{$:0},karuizawa:{$:0},kawakami:{$:0},kiso:{$:0},kisofukushima:{$:0},kitaaiki:{$:0},komagane:{$:0},komoro:{$:0},matsukawa:{$:0},matsumoto:{$:0},miasa:{$:0},minamiaiki:{$:0},minamimaki:{$:0},minamiminowa:{$:0},minowa:{$:0},miyada:{$:0},miyota:{$:0},mochizuki:{$:0},nagano:{$:0},nagawa:{$:0},nagiso:{$:0},nakagawa:{$:0},nakano:{$:0},nozawaonsen:{$:0},obuse:{$:0},ogawa:{$:0},okaya:{$:0},omachi:{$:0},omi:{$:0},ookuwa:{$:0},ooshika:{$:0},otaki:{$:0},otari:{$:0},sakae:{$:0},sakaki:{$:0},saku:{$:0},sakuho:{$:0},shimosuwa:{$:0},shinanomachi:{$:0},shiojiri:{$:0},suwa:{$:0},suzaka:{$:0},takagi:{$:0},takamori:{$:0},takayama:{$:0},tateshina:{$:0},tatsuno:{$:0},togakushi:{$:0},togura:{$:0},tomi:{$:0},ueda:{$:0},wada:{$:0},yamagata:{$:0},yamanouchi:{$:0},yasaka:{$:0},yasuoka:{$:0}},nagasaki:{$:0,chijiwa:{$:0},futsu:{$:0},goto:{$:0},hasami:{$:0},hirado:{$:0},iki:{$:0},isahaya:{$:0},kawatana:{$:0},kuchinotsu:{$:0},matsuura:{$:0},nagasaki:{$:0},obama:{$:0},omura:{$:0},oseto:{$:0},saikai:{$:0},sasebo:{$:0},seihi:{$:0},shimabara:{$:0},shinkamigoto:{$:0},togitsu:{$:0},tsushima:{$:0},unzen:{$:0}},nara:{$:0,ando:{$:0},gose:{$:0},heguri:{$:0},higashiyoshino:{$:0},ikaruga:{$:0},ikoma:{$:0},kamikitayama:{$:0},kanmaki:{$:0},kashiba:{$:0},kashihara:{$:0},katsuragi:{$:0},kawai:{$:0},kawakami:{$:0},kawanishi:{$:0},koryo:{$:0},kurotaki:{$:0},mitsue:{$:0},miyake:{$:0},nara:{$:0},nosegawa:{$:0},oji:{$:0},ouda:{$:0},oyodo:{$:0},sakurai:{$:0},sango:{$:0},shimoichi:{$:0},shimokitayama:{$:0},shinjo:{$:0},soni:{$:0},takatori:{$:0},tawaramoto:{$:0},tenkawa:{$:0},tenri:{$:0},uda:{$:0},yamatokoriyama:{$:0},yamatotakada:{$:0},yamazoe:{$:0},yoshino:{$:0}},niigata:{$:0,aga:{$:0},agano:{$:0},gosen:{$:0},itoigawa:{$:0},izumozaki:{$:0},joetsu:{$:0},kamo:{$:0},kariwa:{$:0},kashiwazaki:{$:0},minamiuonuma:{$:0},mitsuke:{$:0},muika:{$:0},murakami:{$:0},myoko:{$:0},nagaoka:{$:0},niigata:{$:0},ojiya:{$:0},omi:{$:0},sado:{$:0},sanjo:{$:0},seiro:{$:0},seirou:{$:0},sekikawa:{$:0},shibata:{$:0},tagami:{$:0},tainai:{$:0},tochio:{$:0},tokamachi:{$:0},tsubame:{$:0},tsunan:{$:0},uonuma:{$:0},yahiko:{$:0},yoita:{$:0},yuzawa:{$:0}},oita:{$:0,beppu:{$:0},bungoono:{$:0},bungotakada:{$:0},hasama:{$:0},hiji:{$:0},himeshima:{$:0},hita:{$:0},kamitsue:{$:0},kokonoe:{$:0},kuju:{$:0},kunisaki:{$:0},kusu:{$:0},oita:{$:0},saiki:{$:0},taketa:{$:0},tsukumi:{$:0},usa:{$:0},usuki:{$:0},yufu:{$:0}},okayama:{$:0,akaiwa:{$:0},asakuchi:{$:0},bizen:{$:0},hayashima:{$:0},ibara:{$:0},kagamino:{$:0},kasaoka:{$:0},kibichuo:{$:0},kumenan:{$:0},kurashiki:{$:0},maniwa:{$:0},misaki:{$:0},nagi:{$:0},niimi:{$:0},nishiawakura:{$:0},okayama:{$:0},satosho:{$:0},setouchi:{$:0},shinjo:{$:0},shoo:{$:0},soja:{$:0},takahashi:{$:0},tamano:{$:0},tsuyama:{$:0},wake:{$:0},yakage:{$:0}},okinawa:{$:0,aguni:{$:0},ginowan:{$:0},ginoza:{$:0},gushikami:{$:0},haebaru:{$:0},higashi:{$:0},hirara:{$:0},iheya:{$:0},ishigaki:{$:0},ishikawa:{$:0},itoman:{$:0},izena:{$:0},kadena:{$:0},kin:{$:0},kitadaito:{$:0},kitanakagusuku:{$:0},kumejima:{$:0},kunigami:{$:0},minamidaito:{$:0},motobu:{$:0},nago:{$:0},naha:{$:0},nakagusuku:{$:0},nakijin:{$:0},nanjo:{$:0},nishihara:{$:0},ogimi:{$:0},okinawa:{$:0},onna:{$:0},shimoji:{$:0},taketomi:{$:0},tarama:{$:0},tokashiki:{$:0},tomigusuku:{$:0},tonaki:{$:0},urasoe:{$:0},uruma:{$:0},yaese:{$:0},yomitan:{$:0},yonabaru:{$:0},yonaguni:{$:0},zamami:{$:0}},osaka:{$:0,abeno:{$:0},chihayaakasaka:{$:0},chuo:{$:0},daito:{$:0},fujiidera:{$:0},habikino:{$:0},hannan:{$:0},higashiosaka:{$:0},higashisumiyoshi:{$:0},higashiyodogawa:{$:0},hirakata:{$:0},ibaraki:{$:0},ikeda:{$:0},izumi:{$:0},izumiotsu:{$:0},izumisano:{$:0},kadoma:{$:0},kaizuka:{$:0},kanan:{$:0},kashiwara:{$:0},katano:{$:0},kawachinagano:{$:0},kishiwada:{$:0},kita:{$:0},kumatori:{$:0},matsubara:{$:0},minato:{$:0},minoh:{$:0},misaki:{$:0},moriguchi:{$:0},neyagawa:{$:0},nishi:{$:0},nose:{$:0},osakasayama:{$:0},sakai:{$:0},sayama:{$:0},sennan:{$:0},settsu:{$:0},shijonawate:{$:0},shimamoto:{$:0},suita:{$:0},tadaoka:{$:0},taishi:{$:0},tajiri:{$:0},takaishi:{$:0},takatsuki:{$:0},tondabayashi:{$:0},toyonaka:{$:0},toyono:{$:0},yao:{$:0}},saga:{$:0,ariake:{$:0},arita:{$:0},fukudomi:{$:0},genkai:{$:0},hamatama:{$:0},hizen:{$:0},imari:{$:0},kamimine:{$:0},kanzaki:{$:0},karatsu:{$:0},kashima:{$:0},kitagata:{$:0},kitahata:{$:0},kiyama:{$:0},kouhoku:{$:0},kyuragi:{$:0},nishiarita:{$:0},ogi:{$:0},omachi:{$:0},ouchi:{$:0},saga:{$:0},shiroishi:{$:0},taku:{$:0},tara:{$:0},tosu:{$:0},yoshinogari:{$:0}},saitama:{$:0,arakawa:{$:0},asaka:{$:0},chichibu:{$:0},fujimi:{$:0},fujimino:{$:0},fukaya:{$:0},hanno:{$:0},hanyu:{$:0},hasuda:{$:0},hatogaya:{$:0},hatoyama:{$:0},hidaka:{$:0},higashichichibu:{$:0},higashimatsuyama:{$:0},honjo:{$:0},ina:{$:0},iruma:{$:0},iwatsuki:{$:0},kamiizumi:{$:0},kamikawa:{$:0},kamisato:{$:0},kasukabe:{$:0},kawagoe:{$:0},kawaguchi:{$:0},kawajima:{$:0},kazo:{$:0},kitamoto:{$:0},koshigaya:{$:0},kounosu:{$:0},kuki:{$:0},kumagaya:{$:0},matsubushi:{$:0},minano:{$:0},misato:{$:0},miyashiro:{$:0},miyoshi:{$:0},moroyama:{$:0},nagatoro:{$:0},namegawa:{$:0},niiza:{$:0},ogano:{$:0},ogawa:{$:0},ogose:{$:0},okegawa:{$:0},omiya:{$:0},otaki:{$:0},ranzan:{$:0},ryokami:{$:0},saitama:{$:0},sakado:{$:0},satte:{$:0},sayama:{$:0},shiki:{$:0},shiraoka:{$:0},soka:{$:0},sugito:{$:0},toda:{$:0},tokigawa:{$:0},tokorozawa:{$:0},tsurugashima:{$:0},urawa:{$:0},warabi:{$:0},yashio:{$:0},yokoze:{$:0},yono:{$:0},yorii:{$:0},yoshida:{$:0},yoshikawa:{$:0},yoshimi:{$:0}},shiga:{$:0,aisho:{$:0},gamo:{$:0},higashiomi:{$:0},hikone:{$:0},koka:{$:0},konan:{$:0},kosei:{$:0},koto:{$:0},kusatsu:{$:0},maibara:{$:0},moriyama:{$:0},nagahama:{$:0},nishiazai:{$:0},notogawa:{$:0},omihachiman:{$:0},otsu:{$:0},ritto:{$:0},ryuoh:{$:0},takashima:{$:0},takatsuki:{$:0},torahime:{$:0},toyosato:{$:0},yasu:{$:0}},shimane:{$:0,akagi:{$:0},ama:{$:0},gotsu:{$:0},hamada:{$:0},higashiizumo:{$:0},hikawa:{$:0},hikimi:{$:0},izumo:{$:0},kakinoki:{$:0},masuda:{$:0},matsue:{$:0},misato:{$:0},nishinoshima:{$:0},ohda:{$:0},okinoshima:{$:0},okuizumo:{$:0},shimane:{$:0},tamayu:{$:0},tsuwano:{$:0},unnan:{$:0},yakumo:{$:0},yasugi:{$:0},yatsuka:{$:0}},shizuoka:{$:0,arai:{$:0},atami:{$:0},fuji:{$:0},fujieda:{$:0},fujikawa:{$:0},fujinomiya:{$:0},fukuroi:{$:0},gotemba:{$:0},haibara:{$:0},hamamatsu:{$:0},higashiizu:{$:0},ito:{$:0},iwata:{$:0},izu:{$:0},izunokuni:{$:0},kakegawa:{$:0},kannami:{$:0},kawanehon:{$:0},kawazu:{$:0},kikugawa:{$:0},kosai:{$:0},makinohara:{$:0},matsuzaki:{$:0},minamiizu:{$:0},mishima:{$:0},morimachi:{$:0},nishiizu:{$:0},numazu:{$:0},omaezaki:{$:0},shimada:{$:0},shimizu:{$:0},shimoda:{$:0},shizuoka:{$:0},susono:{$:0},yaizu:{$:0},yoshida:{$:0}},tochigi:{$:0,ashikaga:{$:0},bato:{$:0},haga:{$:0},ichikai:{$:0},iwafune:{$:0},kaminokawa:{$:0},kanuma:{$:0},karasuyama:{$:0},kuroiso:{$:0},mashiko:{$:0},mibu:{$:0},moka:{$:0},motegi:{$:0},nasu:{$:0},nasushiobara:{$:0},nikko:{$:0},nishikata:{$:0},nogi:{$:0},ohira:{$:0},ohtawara:{$:0},oyama:{$:0},sakura:{$:0},sano:{$:0},shimotsuke:{$:0},shioya:{$:0},takanezawa:{$:0},tochigi:{$:0},tsuga:{$:0},ujiie:{$:0},utsunomiya:{$:0},yaita:{$:0}},tokushima:{$:0,aizumi:{$:0},anan:{$:0},ichiba:{$:0},itano:{$:0},kainan:{$:0},komatsushima:{$:0},matsushige:{$:0},mima:{$:0},minami:{$:0},miyoshi:{$:0},mugi:{$:0},nakagawa:{$:0},naruto:{$:0},sanagochi:{$:0},shishikui:{$:0},tokushima:{$:0},wajiki:{$:0}},tokyo:{$:0,adachi:{$:0},akiruno:{$:0},akishima:{$:0},aogashima:{$:0},arakawa:{$:0},bunkyo:{$:0},chiyoda:{$:0},chofu:{$:0},chuo:{$:0},edogawa:{$:0},fuchu:{$:0},fussa:{$:0},hachijo:{$:0},hachioji:{$:0},hamura:{$:0},higashikurume:{$:0},higashimurayama:{$:0},higashiyamato:{$:0},hino:{$:0},hinode:{$:0},hinohara:{$:0},inagi:{$:0},itabashi:{$:0},katsushika:{$:0},kita:{$:0},kiyose:{$:0},kodaira:{$:0},koganei:{$:0},kokubunji:{$:0},komae:{$:0},koto:{$:0},kouzushima:{$:0},kunitachi:{$:0},machida:{$:0},meguro:{$:0},minato:{$:0},mitaka:{$:0},mizuho:{$:0},musashimurayama:{$:0},musashino:{$:0},nakano:{$:0},nerima:{$:0},ogasawara:{$:0},okutama:{$:0},ome:{$:0},oshima:{$:0},ota:{$:0},setagaya:{$:0},shibuya:{$:0},shinagawa:{$:0},shinjuku:{$:0},suginami:{$:0},sumida:{$:0},tachikawa:{$:0},taito:{$:0},tama:{$:0},toshima:{$:0}},tottori:{$:0,chizu:{$:0},hino:{$:0},kawahara:{$:0},koge:{$:0},kotoura:{$:0},misasa:{$:0},nanbu:{$:0},nichinan:{$:0},sakaiminato:{$:0},tottori:{$:0},wakasa:{$:0},yazu:{$:0},yonago:{$:0}},toyama:{$:0,asahi:{$:0},fuchu:{$:0},fukumitsu:{$:0},funahashi:{$:0},himi:{$:0},imizu:{$:0},inami:{$:0},johana:{$:0},kamiichi:{$:0},kurobe:{$:0},nakaniikawa:{$:0},namerikawa:{$:0},nanto:{$:0},nyuzen:{$:0},oyabe:{$:0},taira:{$:0},takaoka:{$:0},tateyama:{$:0},toga:{$:0},tonami:{$:0},toyama:{$:0},unazuki:{$:0},uozu:{$:0},yamada:{$:0}},wakayama:{$:0,arida:{$:0},aridagawa:{$:0},gobo:{$:0},hashimoto:{$:0},hidaka:{$:0},hirogawa:{$:0},inami:{$:0},iwade:{$:0},kainan:{$:0},kamitonda:{$:0},katsuragi:{$:0},kimino:{$:0},kinokawa:{$:0},kitayama:{$:0},koya:{$:0},koza:{$:0},kozagawa:{$:0},kudoyama:{$:0},kushimoto:{$:0},mihama:{$:0},misato:{$:0},nachikatsuura:{$:0},shingu:{$:0},shirahama:{$:0},taiji:{$:0},tanabe:{$:0},wakayama:{$:0},yuasa:{$:0},yura:{$:0}},yamagata:{$:0,asahi:{$:0},funagata:{$:0},higashine:{$:0},iide:{$:0},kahoku:{$:0},kaminoyama:{$:0},kaneyama:{$:0},kawanishi:{$:0},mamurogawa:{$:0},mikawa:{$:0},murayama:{$:0},nagai:{$:0},nakayama:{$:0},nanyo:{$:0},nishikawa:{$:0},obanazawa:{$:0},oe:{$:0},oguni:{$:0},ohkura:{$:0},oishida:{$:0},sagae:{$:0},sakata:{$:0},sakegawa:{$:0},shinjo:{$:0},shirataka:{$:0},shonai:{$:0},takahata:{$:0},tendo:{$:0},tozawa:{$:0},tsuruoka:{$:0},yamagata:{$:0},yamanobe:{$:0},yonezawa:{$:0},yuza:{$:0}},yamaguchi:{$:0,abu:{$:0},hagi:{$:0},hikari:{$:0},hofu:{$:0},iwakuni:{$:0},kudamatsu:{$:0},mitou:{$:0},nagato:{$:0},oshima:{$:0},shimonoseki:{$:0},shunan:{$:0},tabuse:{$:0},tokuyama:{$:0},toyota:{$:0},ube:{$:0},yuu:{$:0}},yamanashi:{$:0,chuo:{$:0},doshi:{$:0},fuefuki:{$:0},fujikawa:{$:0},fujikawaguchiko:{$:0},fujiyoshida:{$:0},hayakawa:{$:0},hokuto:{$:0},ichikawamisato:{$:0},kai:{$:0},kofu:{$:0},koshu:{$:0},kosuge:{$:0},"minami-alps":{$:0},minobu:{$:0},nakamichi:{$:0},nanbu:{$:0},narusawa:{$:0},nirasaki:{$:0},nishikatsura:{$:0},oshino:{$:0},otsuki:{$:0},showa:{$:0},tabayama:{$:0},tsuru:{$:0},uenohara:{$:0},yamanakako:{$:0},yamanashi:{$:0}},"xn--4pvxs":{$:0},"xn--vgu402c":{$:0},"xn--c3s14m":{$:0},"xn--f6qx53a":{$:0},"xn--8pvr4u":{$:0},"xn--uist22h":{$:0},"xn--djrs72d6uy":{$:0},"xn--mkru45i":{$:0},"xn--0trq7p7nn":{$:0},"xn--8ltr62k":{$:0},"xn--2m4a15e":{$:0},"xn--efvn9s":{$:0},"xn--32vp30h":{$:0},"xn--4it797k":{$:0},"xn--1lqs71d":{$:0},"xn--5rtp49c":{$:0},"xn--5js045d":{$:0},"xn--ehqz56n":{$:0},"xn--1lqs03n":{$:0},"xn--qqqt11m":{$:0},"xn--kbrq7o":{$:0},"xn--pssu33l":{$:0},"xn--ntsq17g":{$:0},"xn--uisz3g":{$:0},"xn--6btw5a":{$:0},"xn--1ctwo":{$:0},"xn--6orx2r":{$:0},"xn--rht61e":{$:0},"xn--rht27z":{$:0},"xn--djty4k":{$:0},"xn--nit225k":{$:0},"xn--rht3d":{$:0},"xn--klty5x":{$:0},"xn--kltx9a":{$:0},"xn--kltp7d":{$:0},"xn--uuwu58a":{$:0},"xn--zbx025d":{$:0},"xn--ntso0iqx3a":{$:0},"xn--elqq16h":{$:0},"xn--4it168d":{$:0},"xn--klt787d":{$:0},"xn--rny31h":{$:0},"xn--7t0a264c":{$:0},"xn--5rtq34k":{$:0},"xn--k7yn95e":{$:0},"xn--tor131o":{$:0},"xn--d5qv7z876c":{$:0},kawasaki:{"*":{$:0}},kitakyushu:{"*":{$:0}},kobe:{"*":{$:0}},nagoya:{"*":{$:0}},sapporo:{"*":{$:0}},sendai:{"*":{$:0}},yokohama:{"*":{$:0}},blogspot:{$:0}},ke:{$:0,ac:{$:0},co:{$:0,blogspot:{$:0}},go:{$:0},info:{$:0},me:{$:0},mobi:{$:0},ne:{$:0},or:{$:0},sc:{$:0}},kg:{$:0,org:{$:0},net:{$:0},com:{$:0},edu:{$:0},gov:{$:0},mil:{$:0}},kh:{"*":{$:0}},ki:{$:0,edu:{$:0},biz:{$:0},net:{$:0},org:{$:0},gov:{$:0},info:{$:0},com:{$:0}},km:{$:0,org:{$:0},nom:{$:0},gov:{$:0},prd:{$:0},tm:{$:0},edu:{$:0},mil:{$:0},ass:{$:0},com:{$:0},coop:{$:0},asso:{$:0},presse:{$:0},medecin:{$:0},notaires:{$:0},pharmaciens:{$:0},veterinaire:{$:0},gouv:{$:0}},kn:{$:0,net:{$:0},org:{$:0},edu:{$:0},gov:{$:0}},kp:{$:0,com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},rep:{$:0},tra:{$:0}},kr:{$:0,ac:{$:0},co:{$:0},es:{$:0},go:{$:0},hs:{$:0},kg:{$:0},mil:{$:0},ms:{$:0},ne:{$:0},or:{$:0},pe:{$:0},re:{$:0},sc:{$:0},busan:{$:0},chungbuk:{$:0},chungnam:{$:0},daegu:{$:0},daejeon:{$:0},gangwon:{$:0},gwangju:{$:0},gyeongbuk:{$:0},gyeonggi:{$:0},gyeongnam:{$:0},incheon:{$:0},jeju:{$:0},jeonbuk:{$:0},jeonnam:{$:0},seoul:{$:0},ulsan:{$:0},blogspot:{$:0}},kw:{"*":{$:0}},ky:{$:0,edu:{$:0},gov:{$:0},com:{$:0},org:{$:0},net:{$:0}},kz:{$:0,org:{$:0},edu:{$:0},net:{$:0},gov:{$:0},mil:{$:0},com:{$:0},nym:{$:0}},la:{$:0,int:{$:0},net:{$:0},info:{$:0},edu:{$:0},gov:{$:0},per:{$:0},com:{$:0},org:{$:0},bnr:{$:0},c:{$:0},nym:{$:0}},lb:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},lc:{$:0,com:{$:0},net:{$:0},co:{$:0},org:{$:0},edu:{$:0},gov:{$:0},oy:{$:0}},li:{$:0,blogspot:{$:0},nom:{$:0},nym:{$:0}},lk:{$:0,gov:{$:0},sch:{$:0},net:{$:0},int:{$:0},com:{$:0},org:{$:0},edu:{$:0},ngo:{$:0},soc:{$:0},web:{$:0},ltd:{$:0},assn:{$:0},grp:{$:0},hotel:{$:0},ac:{$:0}},lr:{$:0,com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},net:{$:0}},ls:{$:0,co:{$:0},org:{$:0}},lt:{$:0,gov:{$:0},blogspot:{$:0},nym:{$:0}},lu:{$:0,blogspot:{$:0},nym:{$:0}},lv:{$:0,com:{$:0},edu:{$:0},gov:{$:0},org:{$:0},mil:{$:0},id:{$:0},net:{$:0},asn:{$:0},conf:{$:0}},ly:{$:0,com:{$:0},net:{$:0},gov:{$:0},plc:{$:0},edu:{$:0},sch:{$:0},med:{$:0},org:{$:0},id:{$:0}},ma:{$:0,co:{$:0},net:{$:0},gov:{$:0},org:{$:0},ac:{$:0},press:{$:0}},mc:{$:0,tm:{$:0},asso:{$:0}},md:{$:0,blogspot:{$:0}},me:{$:0,co:{$:0},net:{$:0},org:{$:0},edu:{$:0},ac:{$:0},gov:{$:0},its:{$:0},priv:{$:0},c66:{$:0},daplie:{$:0,localhost:{$:0}},filegear:{$:0},brasilia:{$:0},ddns:{$:0},dnsfor:{$:0},hopto:{$:0},loginto:{$:0},noip:{$:0},webhop:{$:0},nym:{$:0},diskstation:{$:0},dscloud:{$:0},i234:{$:0},myds:{$:0},synology:{$:0},wedeploy:{$:0},yombo:{$:0}},mg:{$:0,org:{$:0},nom:{$:0},gov:{$:0},prd:{$:0},tm:{$:0},edu:{$:0},mil:{$:0},com:{$:0},co:{$:0}},mh:{$:0},mil:{$:0},mk:{$:0,com:{$:0},org:{$:0},net:{$:0},edu:{$:0},gov:{$:0},inf:{$:0},name:{$:0},blogspot:{$:0},nom:{$:0}},ml:{$:0,com:{$:0},edu:{$:0},gouv:{$:0},gov:{$:0},net:{$:0},org:{$:0},presse:{$:0}},mm:{"*":{$:0}},mn:{$:0,gov:{$:0},edu:{$:0},org:{$:0},nyc:{$:0}},mo:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},gov:{$:0}},mobi:{$:0,dscloud:{$:0}},mp:{$:0},mq:{$:0},mr:{$:0,gov:{$:0},blogspot:{$:0}},ms:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},mt:{$:0,com:{$:0,blogspot:{$:0}},edu:{$:0},net:{$:0},org:{$:0}},mu:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},ac:{$:0},co:{$:0},or:{$:0}},museum:{$:0,academy:{$:0},agriculture:{$:0},air:{$:0},airguard:{$:0},alabama:{$:0},alaska:{$:0},amber:{$:0},ambulance:{$:0},american:{$:0},americana:{$:0},americanantiques:{$:0},americanart:{$:0},amsterdam:{$:0},and:{$:0},annefrank:{$:0},anthro:{$:0},anthropology:{$:0},antiques:{$:0},aquarium:{$:0},arboretum:{$:0},archaeological:{$:0},archaeology:{$:0},architecture:{$:0},art:{$:0},artanddesign:{$:0},artcenter:{$:0},artdeco:{$:0},arteducation:{$:0},artgallery:{$:0},arts:{$:0},artsandcrafts:{$:0},asmatart:{$:0},assassination:{$:0},assisi:{$:0},association:{$:0},astronomy:{$:0},atlanta:{$:0},austin:{$:0},australia:{$:0},automotive:{$:0},aviation:{$:0},axis:{$:0},badajoz:{$:0},baghdad:{$:0},bahn:{$:0},bale:{$:0},baltimore:{$:0},barcelona:{$:0},baseball:{$:0},basel:{$:0},baths:{$:0},bauern:{$:0},beauxarts:{$:0},beeldengeluid:{$:0},bellevue:{$:0},bergbau:{$:0},berkeley:{$:0},berlin:{$:0},bern:{$:0},bible:{$:0},bilbao:{$:0},bill:{$:0},birdart:{$:0},birthplace:{$:0},bonn:{$:0},boston:{$:0},botanical:{$:0},botanicalgarden:{$:0},botanicgarden:{$:0},botany:{$:0},brandywinevalley:{$:0},brasil:{$:0},bristol:{$:0},british:{$:0},britishcolumbia:{$:0},broadcast:{$:0},brunel:{$:0},brussel:{$:0},brussels:{$:0},bruxelles:{$:0},building:{$:0},burghof:{$:0},bus:{$:0},bushey:{$:0},cadaques:{$:0},california:{$:0},cambridge:{$:0},can:{$:0},canada:{$:0},capebreton:{$:0},carrier:{$:0},cartoonart:{$:0},casadelamoneda:{$:0},castle:{$:0},castres:{$:0},celtic:{$:0},center:{$:0},chattanooga:{$:0},cheltenham:{$:0},chesapeakebay:{$:0},chicago:{$:0},children:{$:0},childrens:{$:0},childrensgarden:{$:0},chiropractic:{$:0},chocolate:{$:0},christiansburg:{$:0},cincinnati:{$:0},cinema:{$:0},circus:{$:0},civilisation:{$:0},civilization:{$:0},civilwar:{$:0},clinton:{$:0},clock:{$:0},coal:{$:0},coastaldefence:{$:0},cody:{$:0},coldwar:{$:0},collection:{$:0},colonialwilliamsburg:{$:0},coloradoplateau:{$:0},columbia:{$:0},columbus:{$:0},communication:{$:0},communications:{$:0},community:{$:0},computer:{$:0},computerhistory:{$:0},"xn--comunicaes-v6a2o":{$:0},contemporary:{$:0},contemporaryart:{$:0},convent:{$:0},copenhagen:{$:0},corporation:{$:0},"xn--correios-e-telecomunicaes-ghc29a":{$:0},corvette:{$:0},costume:{$:0},countryestate:{$:0},county:{$:0},crafts:{$:0},cranbrook:{$:0},creation:{$:0},cultural:{$:0},culturalcenter:{$:0},culture:{$:0},cyber:{$:0},cymru:{$:0},dali:{$:0},dallas:{$:0},database:{$:0},ddr:{$:0},decorativearts:{$:0},delaware:{$:0},delmenhorst:{$:0},denmark:{$:0},depot:{$:0},design:{$:0},detroit:{$:0},dinosaur:{$:0},discovery:{$:0},dolls:{$:0},donostia:{$:0},durham:{$:0},eastafrica:{$:0},eastcoast:{$:0},education:{$:0},educational:{$:0},egyptian:{$:0},eisenbahn:{$:0},elburg:{$:0},elvendrell:{$:0},embroidery:{$:0},encyclopedic:{$:0},england:{$:0},entomology:{$:0},environment:{$:0},environmentalconservation:{$:0},epilepsy:{$:0},essex:{$:0},estate:{$:0},ethnology:{$:0},exeter:{$:0},exhibition:{$:0},family:{$:0},farm:{$:0},farmequipment:{$:0},farmers:{$:0},farmstead:{$:0},field:{$:0},figueres:{$:0},filatelia:{$:0},film:{$:0},fineart:{$:0},finearts:{$:0},finland:{$:0},flanders:{$:0},florida:{$:0},force:{$:0},fortmissoula:{$:0},fortworth:{$:0},foundation:{$:0},francaise:{$:0},frankfurt:{$:0},franziskaner:{$:0},freemasonry:{$:0},freiburg:{$:0},fribourg:{$:0},frog:{$:0},fundacio:{$:0},furniture:{$:0},gallery:{$:0},garden:{$:0},gateway:{$:0},geelvinck:{$:0},gemological:{$:0},geology:{$:0},georgia:{$:0},giessen:{$:0},glas:{$:0},glass:{$:0},gorge:{$:0},grandrapids:{$:0},graz:{$:0},guernsey:{$:0},halloffame:{$:0},hamburg:{$:0},handson:{$:0},harvestcelebration:{$:0},hawaii:{$:0},health:{$:0},heimatunduhren:{$:0},hellas:{$:0},helsinki:{$:0},hembygdsforbund:{$:0},heritage:{$:0},histoire:{$:0},historical:{$:0},historicalsociety:{$:0},historichouses:{$:0},historisch:{$:0},historisches:{$:0},history:{$:0},historyofscience:{$:0},horology:{$:0},house:{$:0},humanities:{$:0},illustration:{$:0},imageandsound:{$:0},indian:{$:0},indiana:{$:0},indianapolis:{$:0},indianmarket:{$:0},intelligence:{$:0},interactive:{$:0},iraq:{$:0},iron:{$:0},isleofman:{$:0},jamison:{$:0},jefferson:{$:0},jerusalem:{$:0},jewelry:{$:0},jewish:{$:0},jewishart:{$:0},jfk:{$:0},journalism:{$:0},judaica:{$:0},judygarland:{$:0},juedisches:{$:0},juif:{$:0},karate:{$:0},karikatur:{$:0},kids:{$:0},koebenhavn:{$:0},koeln:{$:0},kunst:{$:0},kunstsammlung:{$:0},kunstunddesign:{$:0},labor:{$:0},labour:{$:0},lajolla:{$:0},lancashire:{$:0},landes:{$:0},lans:{$:0},"xn--lns-qla":{$:0},larsson:{$:0},lewismiller:{$:0},lincoln:{$:0},linz:{$:0},living:{$:0},livinghistory:{$:0},localhistory:{$:0},london:{$:0},losangeles:{$:0},louvre:{$:0},loyalist:{$:0},lucerne:{$:0},luxembourg:{$:0},luzern:{$:0},mad:{$:0},madrid:{$:0},mallorca:{$:0},manchester:{$:0},mansion:{$:0},mansions:{$:0},manx:{$:0},marburg:{$:0},maritime:{$:0},maritimo:{$:0},maryland:{$:0},marylhurst:{$:0},media:{$:0},medical:{$:0},medizinhistorisches:{$:0},meeres:{$:0},memorial:{$:0},mesaverde:{$:0},michigan:{$:0},midatlantic:{$:0},military:{$:0},mill:{$:0},miners:{$:0},mining:{$:0},minnesota:{$:0},missile:{$:0},missoula:{$:0},modern:{$:0},moma:{$:0},money:{$:0},monmouth:{$:0},monticello:{$:0},montreal:{$:0},moscow:{$:0},motorcycle:{$:0},muenchen:{$:0},muenster:{$:0},mulhouse:{$:0},muncie:{$:0},museet:{$:0},museumcenter:{$:0},museumvereniging:{$:0},music:{$:0},national:{$:0},nationalfirearms:{$:0},nationalheritage:{$:0},nativeamerican:{$:0},naturalhistory:{$:0},naturalhistorymuseum:{$:0},naturalsciences:{$:0},nature:{$:0},naturhistorisches:{$:0},natuurwetenschappen:{$:0},naumburg:{$:0},naval:{$:0},nebraska:{$:0},neues:{$:0},newhampshire:{$:0},newjersey:{$:0},newmexico:{$:0},newport:{$:0},newspaper:{$:0},newyork:{$:0},niepce:{$:0},norfolk:{$:0},north:{$:0},nrw:{$:0},nuernberg:{$:0},nuremberg:{$:0},nyc:{$:0},nyny:{$:0},oceanographic:{$:0},oceanographique:{$:0},omaha:{$:0},online:{$:0},ontario:{$:0},openair:{$:0},oregon:{$:0},oregontrail:{$:0},otago:{$:0},oxford:{$:0},pacific:{$:0},paderborn:{$:0},palace:{$:0},paleo:{$:0},palmsprings:{$:0},panama:{$:0},paris:{$:0},pasadena:{$:0},pharmacy:{$:0},philadelphia:{$:0},philadelphiaarea:{$:0},philately:{$:0},phoenix:{$:0},photography:{$:0},pilots:{$:0},pittsburgh:{$:0},planetarium:{$:0},plantation:{$:0},plants:{$:0},plaza:{$:0},portal:{$:0},portland:{$:0},portlligat:{$:0},"posts-and-telecommunications":{$:0},preservation:{$:0},presidio:{$:0},press:{$:0},project:{$:0},public:{$:0},pubol:{$:0},quebec:{$:0},railroad:{$:0},railway:{$:0},research:{$:0},resistance:{$:0},riodejaneiro:{$:0},rochester:{$:0},rockart:{$:0},roma:{$:0},russia:{$:0},saintlouis:{$:0},salem:{$:0},salvadordali:{$:0},salzburg:{$:0},sandiego:{$:0},sanfrancisco:{$:0},santabarbara:{$:0},santacruz:{$:0},santafe:{$:0},saskatchewan:{$:0},satx:{$:0},savannahga:{$:0},schlesisches:{$:0},schoenbrunn:{$:0},schokoladen:{$:0},school:{$:0},schweiz:{$:0},science:{$:0},scienceandhistory:{$:0},scienceandindustry:{$:0},sciencecenter:{$:0},sciencecenters:{$:0},"science-fiction":{$:0},sciencehistory:{$:0},sciences:{$:0},sciencesnaturelles:{$:0},scotland:{$:0},seaport:{$:0},settlement:{$:0},settlers:{$:0},shell:{$:0},sherbrooke:{$:0},sibenik:{$:0},silk:{$:0},ski:{$:0},skole:{$:0},society:{$:0},sologne:{$:0},soundandvision:{$:0},southcarolina:{$:0},southwest:{$:0},space:{$:0},spy:{$:0},square:{$:0},stadt:{$:0},stalbans:{$:0},starnberg:{$:0},state:{$:0},stateofdelaware:{$:0},station:{$:0},steam:{$:0},steiermark:{$:0},stjohn:{$:0},stockholm:{$:0},stpetersburg:{$:0},stuttgart:{$:0},suisse:{$:0},surgeonshall:{$:0},surrey:{$:0},svizzera:{$:0},sweden:{$:0},sydney:{$:0},tank:{$:0},tcm:{$:0},technology:{$:0},telekommunikation:{$:0},television:{$:0},texas:{$:0},textile:{$:0},theater:{$:0},time:{$:0},timekeeping:{$:0},topology:{$:0},torino:{$:0},touch:{$:0},town:{$:0},transport:{$:0},tree:{$:0},trolley:{$:0},trust:{$:0},trustee:{$:0},uhren:{$:0},ulm:{$:0},undersea:{$:0},university:{$:0},usa:{$:0},usantiques:{$:0},usarts:{$:0},uscountryestate:{$:0},usculture:{$:0},usdecorativearts:{$:0},usgarden:{$:0},ushistory:{$:0},ushuaia:{$:0},uslivinghistory:{$:0},utah:{$:0},uvic:{$:0},valley:{$:0},vantaa:{$:0},versailles:{$:0},viking:{$:0},village:{$:0},virginia:{$:0},virtual:{$:0},virtuel:{$:0},vlaanderen:{$:0},volkenkunde:{$:0},wales:{$:0},wallonie:{$:0},war:{$:0},washingtondc:{$:0},watchandclock:{$:0},"watch-and-clock":{$:0},western:{$:0},westfalen:{$:0},whaling:{$:0},wildlife:{$:0},williamsburg:{$:0},windmill:{$:0},workshop:{$:0},york:{$:0},yorkshire:{$:0},yosemite:{$:0},youth:{$:0},zoological:{$:0},zoology:{$:0},"xn--9dbhblg6di":{$:0},"xn--h1aegh":{$:0}},mv:{$:0,aero:{$:0},biz:{$:0},com:{$:0},coop:{$:0},edu:{$:0},gov:{$:0},info:{$:0},int:{$:0},mil:{$:0},museum:{$:0},name:{$:0},net:{$:0},org:{$:0},pro:{$:0}},mw:{$:0,ac:{$:0},biz:{$:0},co:{$:0},com:{$:0},coop:{$:0},edu:{$:0},gov:{$:0},int:{$:0},museum:{$:0},net:{$:0},org:{$:0}},mx:{$:0,com:{$:0},org:{$:0},gob:{$:0},edu:{$:0},net:{$:0},blogspot:{$:0},nym:{$:0}},my:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},edu:{$:0},mil:{$:0},name:{$:0},blogspot:{$:0}},mz:{$:0,ac:{$:0},adv:{$:0},co:{$:0},edu:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0}},na:{$:0,info:{$:0},pro:{$:0},name:{$:0},school:{$:0},or:{$:0},dr:{$:0},us:{$:0},mx:{$:0},ca:{$:0},in:{$:0},cc:{$:0},tv:{$:0},ws:{$:0},mobi:{$:0},co:{$:0},com:{$:0},org:{$:0}},name:{$:0,her:{forgot:{$:0}},his:{forgot:{$:0}}},nc:{$:0,asso:{$:0},nom:{$:0}},ne:{$:0},net:{$:0,alwaysdata:{$:0},cloudfront:{$:0},t3l3p0rt:{$:0},myfritz:{$:0},boomla:{$:0},bplaced:{$:0},square7:{$:0},gb:{$:0},hu:{$:0},jp:{$:0},se:{$:0},uk:{$:0},in:{$:0},cloudaccess:{$:0},"cdn77-ssl":{$:0},cdn77:{r:{$:0}},"feste-ip":{$:0},"knx-server":{$:0},"static-access":{$:0},cryptonomic:{"*":{$:0}},debian:{$:0},"at-band-camp":{$:0},blogdns:{$:0},"broke-it":{$:0},buyshouses:{$:0},dnsalias:{$:0},dnsdojo:{$:0},"does-it":{$:0},dontexist:{$:0},dynalias:{$:0},dynathome:{$:0},endofinternet:{$:0},"from-az":{$:0},"from-co":{$:0},"from-la":{$:0},"from-ny":{$:0},"gets-it":{$:0},"ham-radio-op":{$:0},homeftp:{$:0},homeip:{$:0},homelinux:{$:0},homeunix:{$:0},"in-the-band":{$:0},"is-a-chef":{$:0},"is-a-geek":{$:0},"isa-geek":{$:0},"kicks-ass":{$:0},"office-on-the":{$:0},podzone:{$:0},"scrapper-site":{$:0},selfip:{$:0},"sells-it":{$:0},servebbs:{$:0},serveftp:{$:0},thruhere:{$:0},webhop:{$:0},definima:{$:0},casacam:{$:0},dynu:{$:0},dynv6:{$:0},twmail:{$:0},ru:{$:0},channelsdvr:{$:0},fastlylb:{$:0,map:{$:0}},fastly:{freetls:{$:0},map:{$:0},prod:{a:{$:0},global:{$:0}},ssl:{a:{$:0},b:{$:0},global:{$:0}}},flynnhosting:{$:0},cloudfunctions:{$:0},moonscale:{$:0},ipifony:{$:0},barsy:{$:0},azurewebsites:{$:0},"azure-mobile":{$:0},cloudapp:{$:0},"eating-organic":{$:0},mydissent:{$:0},myeffect:{$:0},mymediapc:{$:0},mypsx:{$:0},mysecuritycamera:{$:0},nhlfan:{$:0},"no-ip":{$:0},pgafan:{$:0},privatizehealthinsurance:{$:0},bounceme:{$:0},ddns:{$:0},redirectme:{$:0},serveblog:{$:0},serveminecraft:{$:0},sytes:{$:0},rackmaze:{$:0},"firewall-gateway":{$:0},dsmynas:{$:0},familyds:{$:0},za:{$:0}},nf:{$:0,com:{$:0},net:{$:0},per:{$:0},rec:{$:0},web:{$:0},arts:{$:0},firm:{$:0},info:{$:0},other:{$:0},store:{$:0}},ng:{$:0,com:{$:0,blogspot:{$:0}},edu:{$:0},gov:{$:0},i:{$:0},mil:{$:0},mobi:{$:0},name:{$:0},net:{$:0},org:{$:0},sch:{$:0}},ni:{$:0,ac:{$:0},biz:{$:0},co:{$:0},com:{$:0},edu:{$:0},gob:{$:0},in:{$:0},info:{$:0},int:{$:0},mil:{$:0},net:{$:0},nom:{$:0},org:{$:0},web:{$:0}},nl:{$:0,bv:{$:0},virtueeldomein:{$:0},co:{$:0},"hosting-cluster":{$:0},blogspot:{$:0},transurl:{"*":{$:0}},cistron:{$:0},demon:{$:0}},no:{$:0,fhs:{$:0},vgs:{$:0},fylkesbibl:{$:0},folkebibl:{$:0},museum:{$:0},idrett:{$:0},priv:{$:0},mil:{$:0},stat:{$:0},dep:{$:0},kommune:{$:0},herad:{$:0},aa:{$:0,gs:{$:0}},ah:{$:0,gs:{$:0}},bu:{$:0,gs:{$:0}},fm:{$:0,gs:{$:0}},hl:{$:0,gs:{$:0}},hm:{$:0,gs:{$:0}},"jan-mayen":{$:0,gs:{$:0}},mr:{$:0,gs:{$:0}},nl:{$:0,gs:{$:0}},nt:{$:0,gs:{$:0}},of:{$:0,gs:{$:0}},ol:{$:0,gs:{$:0}},oslo:{$:0,gs:{$:0}},rl:{$:0,gs:{$:0}},sf:{$:0,gs:{$:0}},st:{$:0,gs:{$:0}},svalbard:{$:0,gs:{$:0}},tm:{$:0,gs:{$:0}},tr:{$:0,gs:{$:0}},va:{$:0,gs:{$:0}},vf:{$:0,gs:{$:0}},akrehamn:{$:0},"xn--krehamn-dxa":{$:0},algard:{$:0},"xn--lgrd-poac":{$:0},arna:{$:0},brumunddal:{$:0},bryne:{$:0},bronnoysund:{$:0},"xn--brnnysund-m8ac":{$:0},drobak:{$:0},"xn--drbak-wua":{$:0},egersund:{$:0},fetsund:{$:0},floro:{$:0},"xn--flor-jra":{$:0},fredrikstad:{$:0},hokksund:{$:0},honefoss:{$:0},"xn--hnefoss-q1a":{$:0},jessheim:{$:0},jorpeland:{$:0},"xn--jrpeland-54a":{$:0},kirkenes:{$:0},kopervik:{$:0},krokstadelva:{$:0},langevag:{$:0},"xn--langevg-jxa":{$:0},leirvik:{$:0},mjondalen:{$:0},"xn--mjndalen-64a":{$:0},"mo-i-rana":{$:0},mosjoen:{$:0},"xn--mosjen-eya":{$:0},nesoddtangen:{$:0},orkanger:{$:0},osoyro:{$:0},"xn--osyro-wua":{$:0},raholt:{$:0},"xn--rholt-mra":{$:0},sandnessjoen:{$:0},"xn--sandnessjen-ogb":{$:0},skedsmokorset:{$:0},slattum:{$:0},spjelkavik:{$:0},stathelle:{$:0},stavern:{$:0},stjordalshalsen:{$:0},"xn--stjrdalshalsen-sqb":{$:0},tananger:{$:0},tranby:{$:0},vossevangen:{$:0},afjord:{$:0},"xn--fjord-lra":{$:0},agdenes:{$:0},al:{$:0},"xn--l-1fa":{$:0},alesund:{$:0},"xn--lesund-hua":{$:0},alstahaug:{$:0},alta:{$:0},"xn--lt-liac":{$:0},alaheadju:{$:0},"xn--laheadju-7ya":{$:0},alvdal:{$:0},amli:{$:0},"xn--mli-tla":{$:0},amot:{$:0},"xn--mot-tla":{$:0},andebu:{$:0},andoy:{$:0},"xn--andy-ira":{$:0},andasuolo:{$:0},ardal:{$:0},"xn--rdal-poa":{$:0},aremark:{$:0},arendal:{$:0},"xn--s-1fa":{$:0},aseral:{$:0},"xn--seral-lra":{$:0},asker:{$:0},askim:{$:0},askvoll:{$:0},askoy:{$:0},"xn--asky-ira":{$:0},asnes:{$:0},"xn--snes-poa":{$:0},audnedaln:{$:0},aukra:{$:0},aure:{$:0},aurland:{$:0},"aurskog-holand":{$:0},"xn--aurskog-hland-jnb":{$:0},austevoll:{$:0},austrheim:{$:0},averoy:{$:0},"xn--avery-yua":{$:0},balestrand:{$:0},ballangen:{$:0},balat:{$:0},"xn--blt-elab":{$:0},balsfjord:{$:0},bahccavuotna:{$:0},"xn--bhccavuotna-k7a":{$:0},bamble:{$:0},bardu:{$:0},beardu:{$:0},beiarn:{$:0},bajddar:{$:0},"xn--bjddar-pta":{$:0},baidar:{$:0},"xn--bidr-5nac":{$:0},berg:{$:0},bergen:{$:0},berlevag:{$:0},"xn--berlevg-jxa":{$:0},bearalvahki:{$:0},"xn--bearalvhki-y4a":{$:0},bindal:{$:0},birkenes:{$:0},bjarkoy:{$:0},"xn--bjarky-fya":{$:0},bjerkreim:{$:0},bjugn:{$:0},bodo:{$:0},"xn--bod-2na":{$:0},badaddja:{$:0},"xn--bdddj-mrabd":{$:0},budejju:{$:0},bokn:{$:0},bremanger:{$:0},bronnoy:{$:0},"xn--brnny-wuac":{$:0},bygland:{$:0},bykle:{$:0},barum:{$:0},"xn--brum-voa":{$:0},telemark:{bo:{$:0},"xn--b-5ga":{$:0}},nordland:{bo:{$:0},"xn--b-5ga":{$:0},heroy:{$:0},"xn--hery-ira":{$:0}},bievat:{$:0},"xn--bievt-0qa":{$:0},bomlo:{$:0},"xn--bmlo-gra":{$:0},batsfjord:{$:0},"xn--btsfjord-9za":{$:0},bahcavuotna:{$:0},"xn--bhcavuotna-s4a":{$:0},dovre:{$:0},drammen:{$:0},drangedal:{$:0},dyroy:{$:0},"xn--dyry-ira":{$:0},donna:{$:0},"xn--dnna-gra":{$:0},eid:{$:0},eidfjord:{$:0},eidsberg:{$:0},eidskog:{$:0},eidsvoll:{$:0},eigersund:{$:0},elverum:{$:0},enebakk:{$:0},engerdal:{$:0},etne:{$:0},etnedal:{$:0},evenes:{$:0},evenassi:{$:0},"xn--eveni-0qa01ga":{$:0},"evje-og-hornnes":{$:0},farsund:{$:0},fauske:{$:0},fuossko:{$:0},fuoisku:{$:0},fedje:{$:0},fet:{$:0},finnoy:{$:0},"xn--finny-yua":{$:0},fitjar:{$:0},fjaler:{$:0},fjell:{$:0},flakstad:{$:0},flatanger:{$:0},flekkefjord:{$:0},flesberg:{$:0},flora:{$:0},fla:{$:0},"xn--fl-zia":{$:0},folldal:{$:0},forsand:{$:0},fosnes:{$:0},frei:{$:0},frogn:{$:0},froland:{$:0},frosta:{$:0},frana:{$:0},"xn--frna-woa":{$:0},froya:{$:0},"xn--frya-hra":{$:0},fusa:{$:0},fyresdal:{$:0},forde:{$:0},"xn--frde-gra":{$:0},gamvik:{$:0},gangaviika:{$:0},"xn--ggaviika-8ya47h":{$:0},gaular:{$:0},gausdal:{$:0},gildeskal:{$:0},"xn--gildeskl-g0a":{$:0},giske:{$:0},gjemnes:{$:0},gjerdrum:{$:0},gjerstad:{$:0},gjesdal:{$:0},gjovik:{$:0},"xn--gjvik-wua":{$:0},gloppen:{$:0},gol:{$:0},gran:{$:0},grane:{$:0},granvin:{$:0},gratangen:{$:0},grimstad:{$:0},grong:{$:0},kraanghke:{$:0},"xn--kranghke-b0a":{$:0},grue:{$:0},gulen:{$:0},hadsel:{$:0},halden:{$:0},halsa:{$:0},hamar:{$:0},hamaroy:{$:0},habmer:{$:0},"xn--hbmer-xqa":{$:0},hapmir:{$:0},"xn--hpmir-xqa":{$:0},hammerfest:{$:0},hammarfeasta:{$:0},"xn--hmmrfeasta-s4ac":{$:0},haram:{$:0},hareid:{$:0},harstad:{$:0},hasvik:{$:0},aknoluokta:{$:0},"xn--koluokta-7ya57h":{$:0},hattfjelldal:{$:0},aarborte:{$:0},haugesund:{$:0},hemne:{$:0},hemnes:{$:0},hemsedal:{$:0},"more-og-romsdal":{heroy:{$:0},sande:{$:0}},"xn--mre-og-romsdal-qqb":{"xn--hery-ira":{$:0},sande:{$:0}},hitra:{$:0},hjartdal:{$:0},hjelmeland:{$:0},hobol:{$:0},"xn--hobl-ira":{$:0},hof:{$:0},hol:{$:0},hole:{$:0},holmestrand:{$:0},holtalen:{$:0},"xn--holtlen-hxa":{$:0},hornindal:{$:0},horten:{$:0},hurdal:{$:0},hurum:{$:0},hvaler:{$:0},hyllestad:{$:0},hagebostad:{$:0},"xn--hgebostad-g3a":{$:0},hoyanger:{$:0},"xn--hyanger-q1a":{$:0},hoylandet:{$:0},"xn--hylandet-54a":{$:0},ha:{$:0},"xn--h-2fa":{$:0},ibestad:{$:0},inderoy:{$:0},"xn--indery-fya":{$:0},iveland:{$:0},jevnaker:{$:0},jondal:{$:0},jolster:{$:0},"xn--jlster-bya":{$:0},karasjok:{$:0},karasjohka:{$:0},"xn--krjohka-hwab49j":{$:0},karlsoy:{$:0},galsa:{$:0},"xn--gls-elac":{$:0},karmoy:{$:0},"xn--karmy-yua":{$:0},kautokeino:{$:0},guovdageaidnu:{$:0},klepp:{$:0},klabu:{$:0},"xn--klbu-woa":{$:0},kongsberg:{$:0},kongsvinger:{$:0},kragero:{$:0},"xn--krager-gya":{$:0},kristiansand:{$:0},kristiansund:{$:0},krodsherad:{$:0},"xn--krdsherad-m8a":{$:0},kvalsund:{$:0},rahkkeravju:{$:0},"xn--rhkkervju-01af":{$:0},kvam:{$:0},kvinesdal:{$:0},kvinnherad:{$:0},kviteseid:{$:0},kvitsoy:{$:0},"xn--kvitsy-fya":{$:0},kvafjord:{$:0},"xn--kvfjord-nxa":{$:0},giehtavuoatna:{$:0},kvanangen:{$:0},"xn--kvnangen-k0a":{$:0},navuotna:{$:0},"xn--nvuotna-hwa":{$:0},kafjord:{$:0},"xn--kfjord-iua":{$:0},gaivuotna:{$:0},"xn--givuotna-8ya":{$:0},larvik:{$:0},lavangen:{$:0},lavagis:{$:0},loabat:{$:0},"xn--loabt-0qa":{$:0},lebesby:{$:0},davvesiida:{$:0},leikanger:{$:0},leirfjord:{$:0},leka:{$:0},leksvik:{$:0},lenvik:{$:0},leangaviika:{$:0},"xn--leagaviika-52b":{$:0},lesja:{$:0},levanger:{$:0},lier:{$:0},lierne:{$:0},lillehammer:{$:0},lillesand:{$:0},lindesnes:{$:0},lindas:{$:0},"xn--linds-pra":{$:0},lom:{$:0},loppa:{$:0},lahppi:{$:0},"xn--lhppi-xqa":{$:0},lund:{$:0},lunner:{$:0},luroy:{$:0},"xn--lury-ira":{$:0},luster:{$:0},lyngdal:{$:0},lyngen:{$:0},ivgu:{$:0},lardal:{$:0},lerdal:{$:0},"xn--lrdal-sra":{$:0},lodingen:{$:0},"xn--ldingen-q1a":{$:0},lorenskog:{$:0},"xn--lrenskog-54a":{$:0},loten:{$:0},"xn--lten-gra":{$:0},malvik:{$:0},masoy:{$:0},"xn--msy-ula0h":{$:0},muosat:{$:0},"xn--muost-0qa":{$:0},mandal:{$:0},marker:{$:0},marnardal:{$:0},masfjorden:{$:0},meland:{$:0},meldal:{$:0},melhus:{$:0},meloy:{$:0},"xn--mely-ira":{$:0},meraker:{$:0},"xn--merker-kua":{$:0},moareke:{$:0},"xn--moreke-jua":{$:0},midsund:{$:0},"midtre-gauldal":{$:0},modalen:{$:0},modum:{$:0},molde:{$:0},moskenes:{$:0},moss:{$:0},mosvik:{$:0},malselv:{$:0},"xn--mlselv-iua":{$:0},malatvuopmi:{$:0},"xn--mlatvuopmi-s4a":{$:0},namdalseid:{$:0},aejrie:{$:0},namsos:{$:0},namsskogan:{$:0},naamesjevuemie:{$:0},"xn--nmesjevuemie-tcba":{$:0},laakesvuemie:{$:0},nannestad:{$:0},narvik:{$:0},narviika:{$:0},naustdal:{$:0},"nedre-eiker":{$:0},akershus:{nes:{$:0}},buskerud:{nes:{$:0}},nesna:{$:0},nesodden:{$:0},nesseby:{$:0},unjarga:{$:0},"xn--unjrga-rta":{$:0},nesset:{$:0},nissedal:{$:0},nittedal:{$:0},"nord-aurdal":{$:0},"nord-fron":{$:0},"nord-odal":{$:0},norddal:{$:0},nordkapp:{$:0},davvenjarga:{$:0},"xn--davvenjrga-y4a":{$:0},"nordre-land":{$:0},nordreisa:{$:0},raisa:{$:0},"xn--risa-5na":{$:0},"nore-og-uvdal":{$:0},notodden:{$:0},naroy:{$:0},"xn--nry-yla5g":{$:0},notteroy:{$:0},"xn--nttery-byae":{$:0},odda:{$:0},oksnes:{$:0},"xn--ksnes-uua":{$:0},oppdal:{$:0},oppegard:{$:0},"xn--oppegrd-ixa":{$:0},orkdal:{$:0},orland:{$:0},"xn--rland-uua":{$:0},orskog:{$:0},"xn--rskog-uua":{$:0},orsta:{$:0},"xn--rsta-fra":{$:0},hedmark:{os:{$:0},valer:{$:0},"xn--vler-qoa":{$:0}},hordaland:{os:{$:0}},osen:{$:0},osteroy:{$:0},"xn--ostery-fya":{$:0},"ostre-toten":{$:0},"xn--stre-toten-zcb":{$:0},overhalla:{$:0},"ovre-eiker":{$:0},"xn--vre-eiker-k8a":{$:0},oyer:{$:0},"xn--yer-zna":{$:0},oygarden:{$:0},"xn--ygarden-p1a":{$:0},"oystre-slidre":{$:0},"xn--ystre-slidre-ujb":{$:0},porsanger:{$:0},porsangu:{$:0},"xn--porsgu-sta26f":{$:0},porsgrunn:{$:0},radoy:{$:0},"xn--rady-ira":{$:0},rakkestad:{$:0},rana:{$:0},ruovat:{$:0},randaberg:{$:0},rauma:{$:0},rendalen:{$:0},rennebu:{$:0},rennesoy:{$:0},"xn--rennesy-v1a":{$:0},rindal:{$:0},ringebu:{$:0},ringerike:{$:0},ringsaker:{$:0},rissa:{$:0},risor:{$:0},"xn--risr-ira":{$:0},roan:{$:0},rollag:{$:0},rygge:{$:0},ralingen:{$:0},"xn--rlingen-mxa":{$:0},rodoy:{$:0},"xn--rdy-0nab":{$:0},romskog:{$:0},"xn--rmskog-bya":{$:0},roros:{$:0},"xn--rros-gra":{$:0},rost:{$:0},"xn--rst-0na":{$:0},royken:{$:0},"xn--ryken-vua":{$:0},royrvik:{$:0},"xn--ryrvik-bya":{$:0},rade:{$:0},"xn--rde-ula":{$:0},salangen:{$:0},siellak:{$:0},saltdal:{$:0},salat:{$:0},"xn--slt-elab":{$:0},"xn--slat-5na":{$:0},samnanger:{$:0},vestfold:{sande:{$:0}},sandefjord:{$:0},sandnes:{$:0},sandoy:{$:0},"xn--sandy-yua":{$:0},sarpsborg:{$:0},sauda:{$:0},sauherad:{$:0},sel:{$:0},selbu:{$:0},selje:{$:0},seljord:{$:0},sigdal:{$:0},siljan:{$:0},sirdal:{$:0},skaun:{$:0},skedsmo:{$:0},ski:{$:0},skien:{$:0},skiptvet:{$:0},skjervoy:{$:0},"xn--skjervy-v1a":{$:0},skierva:{$:0},"xn--skierv-uta":{$:0},skjak:{$:0},"xn--skjk-soa":{$:0},skodje:{$:0},skanland:{$:0},"xn--sknland-fxa":{$:0},skanit:{$:0},"xn--sknit-yqa":{$:0},smola:{$:0},"xn--smla-hra":{$:0},snillfjord:{$:0},snasa:{$:0},"xn--snsa-roa":{$:0},snoasa:{$:0},snaase:{$:0},"xn--snase-nra":{$:0},sogndal:{$:0},sokndal:{$:0},sola:{$:0},solund:{$:0},songdalen:{$:0},sortland:{$:0},spydeberg:{$:0},stange:{$:0},stavanger:{$:0},steigen:{$:0},steinkjer:{$:0},stjordal:{$:0},"xn--stjrdal-s1a":{$:0},stokke:{$:0},"stor-elvdal":{$:0},stord:{$:0},stordal:{$:0},storfjord:{$:0},omasvuotna:{$:0},strand:{$:0},stranda:{$:0},stryn:{$:0},sula:{$:0},suldal:{$:0},sund:{$:0},sunndal:{$:0},surnadal:{$:0},sveio:{$:0},svelvik:{$:0},sykkylven:{$:0},sogne:{$:0},"xn--sgne-gra":{$:0},somna:{$:0},"xn--smna-gra":{$:0},"sondre-land":{$:0},"xn--sndre-land-0cb":{$:0},"sor-aurdal":{$:0},"xn--sr-aurdal-l8a":{$:0},"sor-fron":{$:0},"xn--sr-fron-q1a":{$:0},"sor-odal":{$:0},"xn--sr-odal-q1a":{$:0},"sor-varanger":{$:0},"xn--sr-varanger-ggb":{$:0},"matta-varjjat":{$:0},"xn--mtta-vrjjat-k7af":{$:0},sorfold:{$:0},"xn--srfold-bya":{$:0},sorreisa:{$:0},"xn--srreisa-q1a":{$:0},sorum:{$:0},"xn--srum-gra":{$:0},tana:{$:0},deatnu:{$:0},time:{$:0},tingvoll:{$:0},tinn:{$:0},tjeldsund:{$:0},dielddanuorri:{$:0},tjome:{$:0},"xn--tjme-hra":{$:0},tokke:{$:0},tolga:{$:0},torsken:{$:0},tranoy:{$:0},"xn--trany-yua":{$:0},tromso:{$:0},"xn--troms-zua":{$:0},tromsa:{$:0},romsa:{$:0},trondheim:{$:0},troandin:{$:0},trysil:{$:0},trana:{$:0},"xn--trna-woa":{$:0},trogstad:{$:0},"xn--trgstad-r1a":{$:0},tvedestrand:{$:0},tydal:{$:0},tynset:{$:0},tysfjord:{$:0},divtasvuodna:{$:0},divttasvuotna:{$:0},tysnes:{$:0},tysvar:{$:0},"xn--tysvr-vra":{$:0},tonsberg:{$:0},"xn--tnsberg-q1a":{$:0},ullensaker:{$:0},ullensvang:{$:0},ulvik:{$:0},utsira:{$:0},vadso:{$:0},"xn--vads-jra":{$:0},cahcesuolo:{$:0},"xn--hcesuolo-7ya35b":{$:0},vaksdal:{$:0},valle:{$:0},vang:{$:0},vanylven:{$:0},vardo:{$:0},"xn--vard-jra":{$:0},varggat:{$:0},"xn--vrggt-xqad":{$:0},vefsn:{$:0},vaapste:{$:0},vega:{$:0},vegarshei:{$:0},"xn--vegrshei-c0a":{$:0},vennesla:{$:0},verdal:{$:0},verran:{$:0},vestby:{$:0},vestnes:{$:0},"vestre-slidre":{$:0},"vestre-toten":{$:0},vestvagoy:{$:0},"xn--vestvgy-ixa6o":{$:0},vevelstad:{$:0},vik:{$:0},vikna:{$:0},vindafjord:{$:0},volda:{$:0},voss:{$:0},varoy:{$:0},"xn--vry-yla5g":{$:0},vagan:{$:0},"xn--vgan-qoa":{$:0},voagat:{$:0},vagsoy:{$:0},"xn--vgsy-qoa0j":{$:0},vaga:{$:0},"xn--vg-yiab":{$:0},ostfold:{valer:{$:0}},"xn--stfold-9xa":{"xn--vler-qoa":{$:0}},co:{$:0},blogspot:{$:0}},np:{"*":{$:0}},nr:{$:0,biz:{$:0},info:{$:0},gov:{$:0},edu:{$:0},org:{$:0},net:{$:0},com:{$:0}},nu:{$:0,merseine:{$:0},mine:{$:0},shacknet:{$:0},nom:{$:0}},nz:{$:0,ac:{$:0},co:{$:0,blogspot:{$:0}},cri:{$:0},geek:{$:0},gen:{$:0},govt:{$:0},health:{$:0},iwi:{$:0},kiwi:{$:0},maori:{$:0},mil:{$:0},"xn--mori-qsa":{$:0},net:{$:0},org:{$:0},parliament:{$:0},school:{$:0},nym:{$:0}},om:{$:0,co:{$:0},com:{$:0},edu:{$:0},gov:{$:0},med:{$:0},museum:{$:0},net:{$:0},org:{$:0},pro:{$:0}},onion:{$:0},org:{$:0,amune:{tele:{$:0}},pimienta:{$:0},poivron:{$:0},potager:{$:0},sweetpepper:{$:0},ae:{$:0},us:{$:0},certmgr:{$:0},cdn77:{c:{$:0},rsc:{$:0}},"cdn77-secure":{origin:{ssl:{$:0}}},cloudns:{$:0},duckdns:{$:0},tunk:{$:0},dyndns:{$:0,go:{$:0},home:{$:0}},blogdns:{$:0},blogsite:{$:0},boldlygoingnowhere:{$:0},dnsalias:{$:0},dnsdojo:{$:0},doesntexist:{$:0},dontexist:{$:0},doomdns:{$:0},dvrdns:{$:0},dynalias:{$:0},endofinternet:{$:0},endoftheinternet:{$:0},"from-me":{$:0},"game-host":{$:0},gotdns:{$:0},"hobby-site":{$:0},homedns:{$:0},homeftp:{$:0},homelinux:{$:0},homeunix:{$:0},"is-a-bruinsfan":{$:0},"is-a-candidate":{$:0},"is-a-celticsfan":{$:0},"is-a-chef":{$:0},"is-a-geek":{$:0},"is-a-knight":{$:0},"is-a-linux-user":{$:0},"is-a-patsfan":{$:0},"is-a-soxfan":{$:0},"is-found":{$:0},"is-lost":{$:0},"is-saved":{$:0},"is-very-bad":{$:0},"is-very-evil":{$:0},"is-very-good":{$:0},"is-very-nice":{$:0},"is-very-sweet":{$:0},"isa-geek":{$:0},"kicks-ass":{$:0},misconfused:{$:0},podzone:{$:0},readmyblog:{$:0},selfip:{$:0},sellsyourhome:{$:0},servebbs:{$:0},serveftp:{$:0},servegame:{$:0},"stuff-4-sale":{$:0},webhop:{$:0},ddnss:{$:0},accesscam:{$:0},camdvr:{$:0},freeddns:{$:0},mywire:{$:0},webredirect:{$:0},eu:{$:0,al:{$:0},asso:{$:0},at:{$:0},au:{$:0},be:{$:0},bg:{$:0},ca:{$:0},cd:{$:0},ch:{$:0},cn:{$:0},cy:{$:0},cz:{$:0},de:{$:0},dk:{$:0},edu:{$:0},ee:{$:0},es:{$:0},fi:{$:0},fr:{$:0},gr:{$:0},hr:{$:0},hu:{$:0},ie:{$:0},il:{$:0},in:{$:0},int:{$:0},is:{$:0},it:{$:0},jp:{$:0},kr:{$:0},lt:{$:0},lu:{$:0},lv:{$:0},mc:{$:0},me:{$:0},mk:{$:0},mt:{$:0},my:{$:0},net:{$:0},ng:{$:0},nl:{$:0},no:{$:0},nz:{$:0},paris:{$:0},pl:{$:0},pt:{$:0},"q-a":{$:0},ro:{$:0},ru:{$:0},se:{$:0},si:{$:0},sk:{$:0},tr:{$:0},uk:{$:0},us:{$:0}},twmail:{$:0},fedorainfracloud:{$:0},fedorapeople:{$:0},fedoraproject:{cloud:{$:0},os:{app:{$:0}},stg:{os:{app:{$:0}}}},hepforge:{$:0},js:{$:0},bmoattachments:{$:0},"cable-modem":{$:0},collegefan:{$:0},couchpotatofries:{$:0},mlbfan:{$:0},mysecuritycamera:{$:0},nflfan:{$:0},"read-books":{$:0},ufcfan:{$:0},hopto:{$:0},myftp:{$:0},"no-ip":{$:0},zapto:{$:0},"my-firewall":{$:0},myfirewall:{$:0},spdns:{$:0},dsmynas:{$:0},familyds:{$:0},tuxfamily:{$:0},diskstation:{$:0},hk:{$:0},wmflabs:{$:0},za:{$:0}},pa:{$:0,ac:{$:0},gob:{$:0},com:{$:0},org:{$:0},sld:{$:0},edu:{$:0},net:{$:0},ing:{$:0},abo:{$:0},med:{$:0},nom:{$:0}},pe:{$:0,edu:{$:0},gob:{$:0},nom:{$:0},mil:{$:0},org:{$:0},com:{$:0},net:{$:0},blogspot:{$:0},nym:{$:0}},pf:{$:0,com:{$:0},org:{$:0},edu:{$:0}},pg:{"*":{$:0}},ph:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},edu:{$:0},ngo:{$:0},mil:{$:0},i:{$:0}},pk:{$:0,com:{$:0},net:{$:0},edu:{$:0},org:{$:0},fam:{$:0},biz:{$:0},web:{$:0},gov:{$:0},gob:{$:0},gok:{$:0},gon:{$:0},gop:{$:0},gos:{$:0},info:{$:0}},pl:{$:0,com:{$:0},net:{$:0},org:{$:0},aid:{$:0},agro:{$:0},atm:{$:0},auto:{$:0},biz:{$:0},edu:{$:0},gmina:{$:0},gsm:{$:0},info:{$:0},mail:{$:0},miasta:{$:0},media:{$:0},mil:{$:0},nieruchomosci:{$:0},nom:{$:0},pc:{$:0},powiat:{$:0},priv:{$:0},realestate:{$:0},rel:{$:0},sex:{$:0},shop:{$:0},sklep:{$:0},sos:{$:0},szkola:{$:0},targi:{$:0},tm:{$:0},tourism:{$:0},travel:{$:0},turystyka:{$:0},gov:{$:0,ap:{$:0},ic:{$:0},is:{$:0},us:{$:0},kmpsp:{$:0},kppsp:{$:0},kwpsp:{$:0},psp:{$:0},wskr:{$:0},kwp:{$:0},mw:{$:0},ug:{$:0},um:{$:0},umig:{$:0},ugim:{$:0},upow:{$:0},uw:{$:0},starostwo:{$:0},pa:{$:0},po:{$:0},psse:{$:0},pup:{$:0},rzgw:{$:0},sa:{$:0},so:{$:0},sr:{$:0},wsa:{$:0},sko:{$:0},uzs:{$:0},wiih:{$:0},winb:{$:0},pinb:{$:0},wios:{$:0},witd:{$:0},wzmiuw:{$:0},piw:{$:0},wiw:{$:0},griw:{$:0},wif:{$:0},oum:{$:0},sdn:{$:0},zp:{$:0},uppo:{$:0},mup:{$:0},wuoz:{$:0},konsulat:{$:0},oirm:{$:0}},augustow:{$:0},"babia-gora":{$:0},bedzin:{$:0},beskidy:{$:0},bialowieza:{$:0},bialystok:{$:0},bielawa:{$:0},bieszczady:{$:0},boleslawiec:{$:0},bydgoszcz:{$:0},bytom:{$:0},cieszyn:{$:0},czeladz:{$:0},czest:{$:0},dlugoleka:{$:0},elblag:{$:0},elk:{$:0},glogow:{$:0},gniezno:{$:0},gorlice:{$:0},grajewo:{$:0},ilawa:{$:0},jaworzno:{$:0},"jelenia-gora":{$:0},jgora:{$:0},kalisz:{$:0},"kazimierz-dolny":{$:0},karpacz:{$:0},kartuzy:{$:0},kaszuby:{$:0},katowice:{$:0},kepno:{$:0},ketrzyn:{$:0},klodzko:{$:0},kobierzyce:{$:0},kolobrzeg:{$:0},konin:{$:0},konskowola:{$:0},kutno:{$:0},lapy:{$:0},lebork:{$:0},legnica:{$:0},lezajsk:{$:0},limanowa:{$:0},lomza:{$:0},lowicz:{$:0},lubin:{$:0},lukow:{$:0},malbork:{$:0},malopolska:{$:0},mazowsze:{$:0},mazury:{$:0},mielec:{$:0},mielno:{$:0},mragowo:{$:0},naklo:{$:0},nowaruda:{$:0},nysa:{$:0},olawa:{$:0},olecko:{$:0},olkusz:{$:0},olsztyn:{$:0},opoczno:{$:0},opole:{$:0},ostroda:{$:0},ostroleka:{$:0},ostrowiec:{$:0},ostrowwlkp:{$:0},pila:{$:0},pisz:{$:0},podhale:{$:0},podlasie:{$:0},polkowice:{$:0},pomorze:{$:0},pomorskie:{$:0},prochowice:{$:0},pruszkow:{$:0},przeworsk:{$:0},pulawy:{$:0},radom:{$:0},"rawa-maz":{$:0},rybnik:{$:0},rzeszow:{$:0},sanok:{$:0},sejny:{$:0},slask:{$:0},slupsk:{$:0},sosnowiec:{$:0},"stalowa-wola":{$:0},skoczow:{$:0},starachowice:{$:0},stargard:{$:0},suwalki:{$:0},swidnica:{$:0},swiebodzin:{$:0},swinoujscie:{$:0},szczecin:{$:0},szczytno:{$:0},tarnobrzeg:{$:0},tgory:{$:0},turek:{$:0},tychy:{$:0},ustka:{$:0},walbrzych:{$:0},warmia:{$:0},warszawa:{$:0},waw:{$:0},wegrow:{$:0},wielun:{$:0},wlocl:{$:0},wloclawek:{$:0},wodzislaw:{$:0},wolomin:{$:0},wroclaw:{$:0},zachpomor:{$:0},zagan:{$:0},zarow:{$:0},zgora:{$:0},zgorzelec:{$:0},beep:{$:0},co:{$:0},art:{$:0},gliwice:{$:0},krakow:{$:0},poznan:{$:0},wroc:{$:0},zakopane:{$:0},gda:{$:0},gdansk:{$:0},gdynia:{$:0},med:{$:0},sopot:{$:0}},pm:{$:0},pn:{$:0,gov:{$:0},co:{$:0},org:{$:0},edu:{$:0},net:{$:0}},post:{$:0},pr:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},edu:{$:0},isla:{$:0},pro:{$:0},biz:{$:0},info:{$:0},name:{$:0},est:{$:0},prof:{$:0},ac:{$:0}},pro:{$:0,aaa:{$:0},aca:{$:0},acct:{$:0},avocat:{$:0},bar:{$:0},cpa:{$:0},eng:{$:0},jur:{$:0},law:{$:0},med:{$:0},recht:{$:0},cloudns:{$:0}},ps:{$:0,edu:{$:0},gov:{$:0},sec:{$:0},plo:{$:0},com:{$:0},org:{$:0},net:{$:0}},pt:{$:0,net:{$:0},gov:{$:0},org:{$:0},edu:{$:0},int:{$:0},publ:{$:0},com:{$:0},nome:{$:0},blogspot:{$:0},nym:{$:0}},pw:{$:0,co:{$:0},ne:{$:0},or:{$:0},ed:{$:0},go:{$:0},belau:{$:0},cloudns:{$:0},nom:{$:0}},py:{$:0,com:{$:0},coop:{$:0},edu:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0}},qa:{$:0,com:{$:0},edu:{$:0},gov:{$:0},mil:{$:0},name:{$:0},net:{$:0},org:{$:0},sch:{$:0},blogspot:{$:0},nom:{$:0}},re:{$:0,asso:{$:0},com:{$:0},nom:{$:0},blogspot:{$:0}},ro:{$:0,arts:{$:0},com:{$:0},firm:{$:0},info:{$:0},nom:{$:0},nt:{$:0},org:{$:0},rec:{$:0},store:{$:0},tm:{$:0},www:{$:0},shop:{$:0},blogspot:{$:0}},rs:{$:0,ac:{$:0},co:{$:0},edu:{$:0},gov:{$:0},in:{$:0},org:{$:0},blogspot:{$:0},nom:{$:0}},ru:{$:0,ac:{$:0},edu:{$:0},gov:{$:0},int:{$:0},mil:{$:0},test:{$:0},adygeya:{$:0},bashkiria:{$:0},bir:{$:0},cbg:{$:0},com:{$:0},dagestan:{$:0},grozny:{$:0},kalmykia:{$:0},kustanai:{$:0},marine:{$:0},mordovia:{$:0},msk:{$:0},mytis:{$:0},nalchik:{$:0},nov:{$:0},pyatigorsk:{$:0},spb:{$:0},vladikavkaz:{$:0},vladimir:{$:0},blogspot:{$:0},cldmail:{hb:{$:0}},net:{$:0},org:{$:0},pp:{$:0}},rw:{$:0,gov:{$:0},net:{$:0},edu:{$:0},ac:{$:0},com:{$:0},co:{$:0},int:{$:0},mil:{$:0},gouv:{$:0}},sa:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},med:{$:0},pub:{$:0},edu:{$:0},sch:{$:0}},sb:{$:0,com:{$:0},edu:{$:0},gov:{$:0},net:{$:0},org:{$:0}},sc:{$:0,com:{$:0},gov:{$:0},net:{$:0},org:{$:0},edu:{$:0}},sd:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},med:{$:0},tv:{$:0},gov:{$:0},info:{$:0}},se:{$:0,a:{$:0},ac:{$:0},b:{$:0},bd:{$:0},brand:{$:0},c:{$:0},d:{$:0},e:{$:0},f:{$:0},fh:{$:0},fhsk:{$:0},fhv:{$:0},g:{$:0},h:{$:0},i:{$:0},k:{$:0},komforb:{$:0},kommunalforbund:{$:0},komvux:{$:0},l:{$:0},lanbib:{$:0},m:{$:0},n:{$:0},naturbruksgymn:{$:0},o:{$:0},org:{$:0},p:{$:0},parti:{$:0},pp:{$:0},press:{$:0},r:{$:0},s:{$:0},t:{$:0},tm:{$:0},u:{$:0},w:{$:0},x:{$:0},y:{$:0},z:{$:0},com:{$:0},blogspot:{$:0}},sg:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},edu:{$:0},per:{$:0},blogspot:{$:0}},sh:{$:0,com:{$:0},net:{$:0},gov:{$:0},org:{$:0},mil:{$:0},hashbang:{$:0},platform:{"*":{$:0}},wedeploy:{$:0},now:{$:0}},si:{$:0,blogspot:{$:0},nom:{$:0}},sj:{$:0},sk:{$:0,blogspot:{$:0},nym:{$:0}},sl:{$:0,com:{$:0},net:{$:0},edu:{$:0},gov:{$:0},org:{$:0}},sm:{$:0},sn:{$:0,art:{$:0},com:{$:0},edu:{$:0},gouv:{$:0},org:{$:0},perso:{$:0},univ:{$:0},blogspot:{$:0}},so:{$:0,com:{$:0},net:{$:0},org:{$:0}},sr:{$:0},st:{$:0,co:{$:0},com:{$:0},consulado:{$:0},edu:{$:0},embaixada:{$:0},gov:{$:0},mil:{$:0},net:{$:0},org:{$:0},principe:{$:0},saotome:{$:0},store:{$:0}},su:{$:0,abkhazia:{$:0},adygeya:{$:0},aktyubinsk:{$:0},arkhangelsk:{$:0},armenia:{$:0},ashgabad:{$:0},azerbaijan:{$:0},balashov:{$:0},bashkiria:{$:0},bryansk:{$:0},bukhara:{$:0},chimkent:{$:0},dagestan:{$:0},"east-kazakhstan":{$:0},exnet:{$:0},georgia:{$:0},grozny:{$:0},ivanovo:{$:0},jambyl:{$:0},kalmykia:{$:0},kaluga:{$:0},karacol:{$:0},karaganda:{$:0},karelia:{$:0},khakassia:{$:0},krasnodar:{$:0},kurgan:{$:0},kustanai:{$:0},lenug:{$:0},mangyshlak:{$:0},mordovia:{$:0},msk:{$:0},murmansk:{$:0},nalchik:{$:0},navoi:{$:0},"north-kazakhstan":{$:0},nov:{$:0},obninsk:{$:0},penza:{$:0},pokrovsk:{$:0},sochi:{$:0},spb:{$:0},tashkent:{$:0},termez:{$:0},togliatti:{$:0},troitsk:{$:0},tselinograd:{$:0},tula:{$:0},tuva:{$:0},vladikavkaz:{$:0},vladimir:{$:0},vologda:{$:0},nym:{$:0}},sv:{$:0,com:{$:0},edu:{$:0},gob:{$:0},org:{$:0},red:{$:0}},sx:{$:0,gov:{$:0},nym:{$:0}},sy:{$:0,edu:{$:0},gov:{$:0},net:{$:0},mil:{$:0},com:{$:0},org:{$:0}},sz:{$:0,co:{$:0},ac:{$:0},org:{$:0}},tc:{$:0},td:{$:0,blogspot:{$:0}},tel:{$:0},tf:{$:0},tg:{$:0},th:{$:0,ac:{$:0},co:{$:0},go:{$:0},in:{$:0},mi:{$:0},net:{$:0},or:{$:0}},tj:{$:0,ac:{$:0},biz:{$:0},co:{$:0},com:{$:0},edu:{$:0},go:{$:0},gov:{$:0},int:{$:0},mil:{$:0},name:{$:0},net:{$:0},nic:{$:0},org:{$:0},test:{$:0},web:{$:0}},tk:{$:0},tl:{$:0,gov:{$:0}},tm:{$:0,com:{$:0},co:{$:0},org:{$:0},net:{$:0},nom:{$:0},gov:{$:0},mil:{$:0},edu:{$:0}},tn:{$:0,com:{$:0},ens:{$:0},fin:{$:0},gov:{$:0},ind:{$:0},intl:{$:0},nat:{$:0},net:{$:0},org:{$:0},info:{$:0},perso:{$:0},tourism:{$:0},edunet:{$:0},rnrt:{$:0},rns:{$:0},rnu:{$:0},mincom:{$:0},agrinet:{$:0},defense:{$:0},turen:{$:0}},to:{$:0,com:{$:0},gov:{$:0},net:{$:0},org:{$:0},edu:{$:0},mil:{$:0},vpnplus:{$:0}},tr:{$:0,com:{$:0,blogspot:{$:0}},info:{$:0},biz:{$:0},net:{$:0},org:{$:0},web:{$:0},gen:{$:0},tv:{$:0},av:{$:0},dr:{$:0},bbs:{$:0},name:{$:0},tel:{$:0},gov:{$:0},bel:{$:0},pol:{$:0},mil:{$:0},k12:{$:0},edu:{$:0},kep:{$:0},nc:{$:0,gov:{$:0}}},travel:{$:0},tt:{$:0,co:{$:0},com:{$:0},org:{$:0},net:{$:0},biz:{$:0},info:{$:0},pro:{$:0},int:{$:0},coop:{$:0},jobs:{$:0},mobi:{$:0},travel:{$:0},museum:{$:0},aero:{$:0},name:{$:0},gov:{$:0},edu:{$:0}},tv:{$:0,dyndns:{$:0},"better-than":{$:0},"on-the-web":{$:0},"worse-than":{$:0}},tw:{$:0,edu:{$:0},gov:{$:0},mil:{$:0},com:{$:0,mymailer:{$:0}},net:{$:0},org:{$:0},idv:{$:0},game:{$:0},ebiz:{$:0},club:{$:0},"xn--zf0ao64a":{$:0},"xn--uc0atv":{$:0},"xn--czrw28b":{$:0},url:{$:0},blogspot:{$:0},nym:{$:0}},tz:{$:0,ac:{$:0},co:{$:0},go:{$:0},hotel:{$:0},info:{$:0},me:{$:0},mil:{$:0},mobi:{$:0},ne:{$:0},or:{$:0},sc:{$:0},tv:{$:0}},ua:{$:0,com:{$:0},edu:{$:0},gov:{$:0},in:{$:0},net:{$:0},org:{$:0},cherkassy:{$:0},cherkasy:{$:0},chernigov:{$:0},chernihiv:{$:0},chernivtsi:{$:0},chernovtsy:{$:0},ck:{$:0},cn:{$:0},cr:{$:0},crimea:{$:0},cv:{$:0},dn:{$:0},dnepropetrovsk:{$:0},dnipropetrovsk:{$:0},dominic:{$:0},donetsk:{$:0},dp:{$:0},if:{$:0},"ivano-frankivsk":{$:0},kh:{$:0},kharkiv:{$:0},kharkov:{$:0},kherson:{$:0},khmelnitskiy:{$:0},khmelnytskyi:{$:0},kiev:{$:0},kirovograd:{$:0},km:{$:0},kr:{$:0},krym:{$:0},ks:{$:0},kv:{$:0},kyiv:{$:0},lg:{$:0},lt:{$:0},lugansk:{$:0},lutsk:{$:0},lv:{$:0},lviv:{$:0},mk:{$:0},mykolaiv:{$:0},nikolaev:{$:0},od:{$:0},odesa:{$:0},odessa:{$:0},pl:{$:0},poltava:{$:0},rivne:{$:0},rovno:{$:0},rv:{$:0},sb:{$:0},sebastopol:{$:0},sevastopol:{$:0},sm:{$:0},sumy:{$:0},te:{$:0},ternopil:{$:0},uz:{$:0},uzhgorod:{$:0},vinnica:{$:0},vinnytsia:{$:0},vn:{$:0},volyn:{$:0},yalta:{$:0},zaporizhzhe:{$:0},zaporizhzhia:{$:0},zhitomir:{$:0},zhytomyr:{$:0},zp:{$:0},zt:{$:0},cc:{$:0},inf:{$:0},ltd:{$:0},biz:{$:0},co:{$:0},pp:{$:0}},ug:{$:0,co:{$:0},or:{$:0},ac:{$:0},sc:{$:0},go:{$:0},ne:{$:0},com:{$:0},org:{$:0},blogspot:{$:0},nom:{$:0}},uk:{$:0,ac:{$:0},co:{$:0,blogspot:{$:0},"nh-serv":{$:0},"no-ip":{$:0},wellbeingzone:{$:0}},gov:{$:0,service:{$:0},homeoffice:{$:0}},ltd:{$:0},me:{$:0},net:{$:0},nhs:{$:0},org:{$:0},plc:{$:0},police:{$:0},sch:{"*":{$:0}}},us:{$:0,dni:{$:0},fed:{$:0},isa:{$:0},kids:{$:0},nsn:{$:0},ak:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},al:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ar:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},as:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},az:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ca:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},co:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ct:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},dc:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},de:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},fl:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ga:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},gu:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},hi:{$:0,cc:{$:0},lib:{$:0}},ia:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},id:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},il:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},in:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ks:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ky:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},la:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ma:{$:0,k12:{$:0,pvt:{$:0},chtr:{$:0},paroch:{$:0}},cc:{$:0},lib:{$:0}},md:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},me:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},mi:{$:0,k12:{$:0},cc:{$:0},lib:{$:0},"ann-arbor":{$:0},cog:{$:0},dst:{$:0},eaton:{$:0},gen:{$:0},mus:{$:0},tec:{$:0},washtenaw:{$:0}},mn:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},mo:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ms:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},mt:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nc:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nd:{$:0,cc:{$:0},lib:{$:0}},ne:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nh:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nj:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nm:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},nv:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ny:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},oh:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ok:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},or:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},pa:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},pr:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ri:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},sc:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},sd:{$:0,cc:{$:0},lib:{$:0}},tn:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},tx:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},ut:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},vi:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},vt:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},va:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},wa:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},wi:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},wv:{$:0,cc:{$:0}},wy:{$:0,k12:{$:0},cc:{$:0},lib:{$:0}},cloudns:{$:0},drud:{$:0},"is-by":{$:0},"land-4-sale":{$:0},"stuff-4-sale":{$:0},golffan:{$:0},noip:{$:0},pointto:{$:0}},uy:{$:0,com:{$:0,blogspot:{$:0}},edu:{$:0},gub:{$:0},mil:{$:0},net:{$:0},org:{$:0},nom:{$:0}},uz:{$:0,co:{$:0},com:{$:0},net:{$:0},org:{$:0}},va:{$:0},vc:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},mil:{$:0},edu:{$:0},nom:{$:0}},ve:{$:0,arts:{$:0},co:{$:0},com:{$:0},e12:{$:0},edu:{$:0},firm:{$:0},gob:{$:0},gov:{$:0},info:{$:0},int:{$:0},mil:{$:0},net:{$:0},org:{$:0},rec:{$:0},store:{$:0},tec:{$:0},web:{$:0}},vg:{$:0,nom:{$:0}},vi:{$:0,co:{$:0},com:{$:0},k12:{$:0},net:{$:0},org:{$:0}},vn:{$:0,com:{$:0},net:{$:0},org:{$:0},edu:{$:0},gov:{$:0},int:{$:0},ac:{$:0},biz:{$:0},info:{$:0},name:{$:0},pro:{$:0},health:{$:0},blogspot:{$:0}},vu:{$:0,com:{$:0},edu:{$:0},net:{$:0},org:{$:0}},wf:{$:0},ws:{$:0,com:{$:0},net:{$:0},org:{$:0},gov:{$:0},edu:{$:0},advisor:{"*":{$:0}},dyndns:{$:0},mypets:{$:0}},yt:{$:0},"xn--mgbaam7a8h":{$:0},"xn--y9a3aq":{$:0},"xn--54b7fta0cc":{$:0},"xn--90ae":{$:0},"xn--90ais":{$:0},"xn--fiqs8s":{$:0},"xn--fiqz9s":{$:0},"xn--lgbbat1ad8j":{$:0},"xn--wgbh1c":{$:0},"xn--e1a4c":{$:0},"xn--node":{$:0},"xn--qxam":{$:0},"xn--j6w193g":{$:0},"xn--2scrj9c":{$:0},"xn--3hcrj9c":{$:0},"xn--45br5cyl":{$:0},"xn--h2breg3eve":{$:0},"xn--h2brj9c8c":{$:0},"xn--mgbgu82a":{$:0},"xn--rvc1e0am3e":{$:0},"xn--h2brj9c":{$:0},"xn--mgbbh1a71e":{$:0},"xn--fpcrj9c3d":{$:0},"xn--gecrj9c":{$:0},"xn--s9brj9c":{$:0},"xn--45brj9c":{$:0},"xn--xkc2dl3a5ee0h":{$:0},"xn--mgba3a4f16a":{$:0},"xn--mgba3a4fra":{$:0},"xn--mgbtx2b":{$:0},"xn--mgbayh7gpa":{$:0},"xn--3e0b707e":{$:0},"xn--80ao21a":{$:0},"xn--fzc2c9e2c":{$:0},"xn--xkc2al3hye2a":{$:0},"xn--mgbc0a9azcg":{$:0},"xn--d1alf":{$:0},"xn--l1acc":{$:0},"xn--mix891f":{$:0},"xn--mix082f":{$:0},"xn--mgbx4cd0ab":{$:0},"xn--mgb9awbf":{$:0},"xn--mgbai9azgqp6j":{$:0},"xn--mgbai9a5eva00b":{$:0},"xn--ygbi2ammx":{$:0},"xn--90a3ac":{$:0,"xn--o1ac":{$:0},"xn--c1avg":{$:0},"xn--90azh":{$:0},"xn--d1at":{$:0},"xn--o1ach":{$:0},"xn--80au":{$:0}},"xn--p1ai":{$:0},"xn--wgbl6a":{$:0},"xn--mgberp4a5d4ar":{$:0},"xn--mgberp4a5d4a87g":{$:0},"xn--mgbqly7c0a67fbc":{$:0},"xn--mgbqly7cvafr":{$:0},"xn--mgbpl2fh":{$:0},"xn--yfro4i67o":{$:0},"xn--clchc0ea0b2g2a9gcd":{$:0},"xn--ogbpf8fl":{$:0},"xn--mgbtf8fl":{$:0},"xn--o3cw4h":{$:0,"xn--12c1fe0br":{$:0},"xn--12co0c3b4eva":{$:0},"xn--h3cuzk1di":{$:0},"xn--o3cyx2a":{$:0},"xn--m3ch0j3a":{$:0},"xn--12cfi8ixb8l":{$:0}},"xn--pgbs0dh":{$:0},"xn--kpry57d":{$:0},"xn--kprw13d":{$:0},"xn--nnx388a":{$:0},"xn--j1amh":{$:0},"xn--mgb2ddes":{$:0},xxx:{$:0},ye:{"*":{$:0}},za:{ac:{$:0},agric:{$:0},alt:{$:0},co:{$:0,blogspot:{$:0}},edu:{$:0},gov:{$:0},grondar:{$:0},law:{$:0},mil:{$:0},net:{$:0},ngo:{$:0},nis:{$:0},nom:{$:0},org:{$:0},school:{$:0},tm:{$:0},web:{$:0}},zm:{$:0,ac:{$:0},biz:{$:0},co:{$:0},com:{$:0},edu:{$:0},gov:{$:0},info:{$:0},mil:{$:0},net:{$:0},org:{$:0},sch:{$:0}},zw:{$:0,ac:{$:0},co:{$:0},gov:{$:0},mil:{$:0},org:{$:0}},aaa:{$:0},aarp:{$:0},abarth:{$:0},abb:{$:0},abbott:{$:0},abbvie:{$:0},abc:{$:0},able:{$:0},abogado:{$:0},abudhabi:{$:0},academy:{$:0},accenture:{$:0},accountant:{$:0},accountants:{$:0},aco:{$:0},active:{$:0},actor:{$:0},adac:{$:0},ads:{$:0},adult:{$:0},aeg:{$:0},aetna:{$:0},afamilycompany:{$:0},afl:{$:0},africa:{$:0},agakhan:{$:0},agency:{$:0},aig:{$:0},aigo:{$:0},airbus:{$:0},airforce:{$:0},airtel:{$:0},akdn:{$:0},alfaromeo:{$:0},alibaba:{$:0},alipay:{$:0},allfinanz:{$:0},allstate:{$:0},ally:{$:0},alsace:{$:0},alstom:{$:0},americanexpress:{$:0},americanfamily:{$:0},amex:{$:0},amfam:{$:0},amica:{$:0},amsterdam:{$:0},analytics:{$:0},android:{$:0},anquan:{$:0},anz:{$:0},aol:{$:0},apartments:{$:0},app:{$:0},apple:{$:0},aquarelle:{$:0},arab:{$:0},aramco:{$:0},archi:{$:0},army:{$:0},art:{$:0},arte:{$:0},asda:{$:0},associates:{$:0},athleta:{$:0},attorney:{$:0},auction:{$:0},audi:{$:0},audible:{$:0},audio:{$:0},auspost:{$:0},author:{$:0},auto:{$:0},autos:{$:0},avianca:{$:0},aws:{$:0},axa:{$:0},azure:{$:0},baby:{$:0},baidu:{$:0},banamex:{$:0},bananarepublic:{$:0},band:{$:0},bank:{$:0},bar:{$:0},barcelona:{$:0},barclaycard:{$:0},barclays:{$:0},barefoot:{$:0},bargains:{$:0},baseball:{$:0},basketball:{$:0},bauhaus:{$:0},bayern:{$:0},bbc:{$:0},bbt:{$:0},bbva:{$:0},bcg:{$:0},bcn:{$:0},beats:{$:0},beauty:{$:0},beer:{$:0},bentley:{$:0},berlin:{$:0},best:{$:0},bestbuy:{$:0},bet:{$:0},bharti:{$:0},bible:{$:0},bid:{$:0},bike:{$:0},bing:{$:0},bingo:{$:0},bio:{$:0},black:{$:0},blackfriday:{$:0},blanco:{$:0},blockbuster:{$:0},blog:{$:0},bloomberg:{$:0},blue:{$:0},bms:{$:0},bmw:{$:0},bnl:{$:0},bnpparibas:{$:0},boats:{$:0},boehringer:{$:0},bofa:{$:0},bom:{$:0},bond:{$:0},boo:{$:0},book:{$:0},booking:{$:0},boots:{$:0},bosch:{$:0},bostik:{$:0},boston:{$:0},bot:{$:0},boutique:{$:0},box:{$:0},bradesco:{$:0},bridgestone:{$:0},broadway:{$:0},broker:{$:0},brother:{$:0},brussels:{$:0},budapest:{$:0},bugatti:{$:0},build:{$:0},builders:{$:0},business:{$:0},buy:{$:0},buzz:{$:0},bzh:{$:0},cab:{$:0},cafe:{$:0},cal:{$:0},call:{$:0},calvinklein:{$:0},cam:{$:0},camera:{$:0},camp:{$:0},cancerresearch:{$:0},canon:{$:0},capetown:{$:0},capital:{$:0},capitalone:{$:0},car:{$:0},caravan:{$:0},cards:{$:0},care:{$:0},career:{$:0},careers:{$:0},cars:{$:0},cartier:{$:0},casa:{$:0},case:{$:0},caseih:{$:0},cash:{$:0},casino:{$:0},catering:{$:0},catholic:{$:0},cba:{$:0},cbn:{$:0},cbre:{$:0},cbs:{$:0},ceb:{$:0},center:{$:0},ceo:{$:0},cern:{$:0},cfa:{$:0},cfd:{$:0},chanel:{$:0},channel:{$:0},chase:{$:0},chat:{$:0},cheap:{$:0},chintai:{$:0},christmas:{$:0},chrome:{$:0},chrysler:{$:0},church:{$:0},cipriani:{$:0},circle:{$:0},cisco:{$:0},citadel:{$:0},citi:{$:0},citic:{$:0},city:{$:0},cityeats:{$:0},claims:{$:0},cleaning:{$:0},click:{$:0},clinic:{$:0},clinique:{$:0},clothing:{$:0},cloud:{$:0,statics:{"*":{$:0}},magentosite:{"*":{$:0}},vapor:{$:0},sensiosite:{"*":{$:0}},trafficplex:{$:0}},club:{$:0,cloudns:{$:0}},clubmed:{$:0},coach:{$:0},codes:{$:0},coffee:{$:0},college:{$:0},cologne:{$:0},comcast:{$:0},commbank:{$:0},community:{$:0},company:{$:0},compare:{$:0},computer:{$:0},comsec:{$:0},condos:{$:0},construction:{$:0},consulting:{$:0},contact:{$:0},contractors:{$:0},cooking:{$:0},cookingchannel:{$:0},cool:{$:0,de:{$:0}},corsica:{$:0},country:{$:0},coupon:{$:0},coupons:{$:0},courses:{$:0},credit:{$:0},creditcard:{$:0},creditunion:{$:0},cricket:{$:0},crown:{$:0},crs:{$:0},cruise:{$:0},cruises:{$:0},csc:{$:0},cuisinella:{$:0},cymru:{$:0},cyou:{$:0},dabur:{$:0},dad:{$:0},dance:{$:0},data:{$:0},date:{$:0},dating:{$:0},datsun:{$:0},day:{$:0},dclk:{$:0},dds:{$:0},deal:{$:0},dealer:{$:0},deals:{$:0},degree:{$:0},delivery:{$:0},dell:{$:0},deloitte:{$:0},delta:{$:0},democrat:{$:0},dental:{$:0},dentist:{$:0},desi:{$:0},design:{$:0},dev:{$:0},dhl:{$:0},diamonds:{$:0},diet:{$:0},digital:{$:0},direct:{$:0},directory:{$:0},discount:{$:0},discover:{$:0},dish:{$:0},diy:{$:0},dnp:{$:0},docs:{$:0},doctor:{$:0},dodge:{$:0},dog:{$:0},doha:{$:0},domains:{$:0},dot:{$:0},download:{$:0},drive:{$:0},dtv:{$:0},dubai:{$:0},duck:{$:0},dunlop:{$:0},duns:{$:0},dupont:{$:0},durban:{$:0},dvag:{$:0},dvr:{$:0},earth:{$:0},eat:{$:0},eco:{$:0},edeka:{$:0},education:{$:0},email:{$:0},emerck:{$:0},energy:{$:0},engineer:{$:0},engineering:{$:0},enterprises:{$:0},epost:{$:0},epson:{$:0},equipment:{$:0},ericsson:{$:0},erni:{$:0},esq:{$:0},estate:{$:0,compute:{"*":{$:0}}},esurance:{$:0},etisalat:{$:0},eurovision:{$:0},eus:{$:0,party:{user:{$:0}}},events:{$:0},everbank:{$:0},exchange:{$:0},expert:{$:0},exposed:{$:0},express:{$:0},extraspace:{$:0},fage:{$:0},fail:{$:0},fairwinds:{$:0},faith:{$:0,ybo:{$:0}},family:{$:0},fan:{$:0},fans:{$:0},farm:{$:0,storj:{$:0}},farmers:{$:0},fashion:{$:0},fast:{$:0},fedex:{$:0},feedback:{$:0},ferrari:{$:0},ferrero:{$:0},fiat:{$:0},fidelity:{$:0},fido:{$:0},film:{$:0},final:{$:0},finance:{$:0},financial:{$:0},fire:{$:0},firestone:{$:0},firmdale:{$:0},fish:{$:0},fishing:{$:0},fit:{$:0,ptplus:{$:0}},fitness:{$:0},flickr:{$:0},flights:{$:0},flir:{$:0},florist:{$:0},flowers:{$:0},fly:{$:0},foo:{$:0},food:{$:0},foodnetwork:{$:0},football:{$:0},ford:{$:0},forex:{$:0},forsale:{$:0},forum:{$:0},foundation:{$:0},fox:{$:0},free:{$:0},fresenius:{$:0},frl:{$:0},frogans:{$:0},frontdoor:{$:0},frontier:{$:0},ftr:{$:0},fujitsu:{$:0},fujixerox:{$:0},fun:{$:0},fund:{$:0},furniture:{$:0},futbol:{$:0},fyi:{$:0},gal:{$:0},gallery:{$:0},gallo:{$:0},gallup:{$:0},game:{$:0},games:{$:0},gap:{$:0},garden:{$:0},gbiz:{$:0},gdn:{$:0},gea:{$:0},gent:{$:0},genting:{$:0},george:{$:0},ggee:{$:0},gift:{$:0},gifts:{$:0},gives:{$:0},giving:{$:0},glade:{$:0},glass:{$:0},gle:{$:0},global:{$:0},globo:{$:0},gmail:{$:0},gmbh:{$:0},gmo:{$:0},gmx:{$:0},godaddy:{$:0},gold:{$:0},goldpoint:{$:0},golf:{$:0},goo:{$:0},goodhands:{$:0},goodyear:{$:0},goog:{$:0,cloud:{$:0}},google:{$:0},gop:{$:0},got:{$:0},grainger:{$:0},graphics:{$:0},gratis:{$:0},green:{$:0},gripe:{$:0},grocery:{$:0},group:{$:0},guardian:{$:0},gucci:{$:0},guge:{$:0},guide:{$:0},guitars:{$:0},guru:{$:0},hair:{$:0},hamburg:{$:0},hangout:{$:0},haus:{$:0},hbo:{$:0},hdfc:{$:0},hdfcbank:{$:0},health:{$:0},healthcare:{$:0},help:{$:0},helsinki:{$:0},here:{$:0},hermes:{$:0},hgtv:{$:0},hiphop:{$:0},hisamitsu:{$:0},hitachi:{$:0},hiv:{$:0},hkt:{$:0},hockey:{$:0},holdings:{$:0},holiday:{$:0},homedepot:{$:0},homegoods:{$:0},homes:{$:0},homesense:{$:0},honda:{$:0},honeywell:{$:0},horse:{$:0},hospital:{$:0},host:{$:0,cloudaccess:{$:0},freesite:{$:0}},hosting:{$:0,opencraft:{$:0}},hot:{$:0},hoteles:{$:0},hotels:{$:0},hotmail:{$:0},house:{$:0},how:{$:0},hsbc:{$:0},hughes:{$:0},hyatt:{$:0},hyundai:{$:0},ibm:{$:0},icbc:{$:0},ice:{$:0},icu:{$:0},ieee:{$:0},ifm:{$:0},ikano:{$:0},imamat:{$:0},imdb:{$:0},immo:{$:0},immobilien:{$:0},industries:{$:0},infiniti:{$:0},ing:{$:0},ink:{$:0},institute:{$:0},insurance:{$:0},insure:{$:0},intel:{$:0},international:{$:0},intuit:{$:0},investments:{$:0},ipiranga:{$:0},irish:{$:0},iselect:{$:0},ismaili:{$:0},ist:{$:0},istanbul:{$:0},itau:{$:0},itv:{$:0},iveco:{$:0},iwc:{$:0},jaguar:{$:0},java:{$:0},jcb:{$:0},jcp:{$:0},jeep:{$:0},jetzt:{$:0},jewelry:{$:0},jio:{$:0},jlc:{$:0},jll:{$:0},jmp:{$:0},jnj:{$:0},joburg:{$:0},jot:{$:0},joy:{$:0},jpmorgan:{$:0},jprs:{$:0},juegos:{$:0},juniper:{$:0},kaufen:{$:0},kddi:{$:0},kerryhotels:{$:0},kerrylogistics:{$:0},kerryproperties:{$:0},kfh:{$:0},kia:{$:0},kim:{$:0},kinder:{$:0},kindle:{$:0},kitchen:{$:0},kiwi:{$:0},koeln:{$:0},komatsu:{$:0},kosher:{$:0},kpmg:{$:0},kpn:{$:0},krd:{$:0,co:{$:0},edu:{$:0}},kred:{$:0},kuokgroup:{$:0},kyoto:{$:0},lacaixa:{$:0},ladbrokes:{$:0},lamborghini:{$:0},lamer:{$:0},lancaster:{$:0},lancia:{$:0},lancome:{$:0},land:{$:0,static:{$:0,dev:{$:0},sites:{$:0}}},landrover:{$:0},lanxess:{$:0},lasalle:{$:0},lat:{$:0},latino:{$:0},latrobe:{$:0},law:{$:0},lawyer:{$:0},lds:{$:0},lease:{$:0},leclerc:{$:0},lefrak:{$:0},legal:{$:0},lego:{$:0},lexus:{$:0},lgbt:{$:0},liaison:{$:0},lidl:{$:0},life:{$:0},lifeinsurance:{$:0},lifestyle:{$:0},lighting:{$:0},like:{$:0},lilly:{$:0},limited:{$:0},limo:{$:0},lincoln:{$:0},linde:{$:0},link:{$:0,cyon:{$:0},mypep:{$:0}},lipsy:{$:0},live:{$:0},living:{$:0},lixil:{$:0},loan:{$:0},loans:{$:0},locker:{$:0},locus:{$:0},loft:{$:0},lol:{$:0},london:{$:0},lotte:{$:0},lotto:{$:0},love:{$:0},lpl:{$:0},lplfinancial:{$:0},ltd:{$:0},ltda:{$:0},lundbeck:{$:0},lupin:{$:0},luxe:{$:0},luxury:{$:0},macys:{$:0},madrid:{$:0},maif:{$:0},maison:{$:0},makeup:{$:0},man:{$:0},management:{$:0,router:{$:0}},mango:{$:0},map:{$:0},market:{$:0},marketing:{$:0},markets:{$:0},marriott:{$:0},marshalls:{$:0},maserati:{$:0},mattel:{$:0},mba:{$:0},mckinsey:{$:0},med:{$:0},media:{$:0},meet:{$:0},melbourne:{$:0},meme:{$:0},memorial:{$:0},men:{$:0},menu:{$:0},meo:{$:0},merckmsd:{$:0},metlife:{$:0},miami:{$:0},microsoft:{$:0},mini:{$:0},mint:{$:0},mit:{$:0},mitsubishi:{$:0},mlb:{$:0},mls:{$:0},mma:{$:0},mobile:{$:0},mobily:{$:0},moda:{$:0},moe:{$:0},moi:{$:0},mom:{$:0},monash:{$:0},money:{$:0},monster:{$:0},mopar:{$:0},mormon:{$:0},mortgage:{$:0},moscow:{$:0},moto:{$:0},motorcycles:{$:0},mov:{$:0},movie:{$:0},movistar:{$:0},msd:{$:0},mtn:{$:0},mtpc:{$:0},mtr:{$:0},mutual:{$:0},nab:{$:0},nadex:{$:0},nagoya:{$:0},nationwide:{$:0},natura:{$:0},navy:{$:0},nba:{$:0},nec:{$:0},netbank:{$:0},netflix:{$:0},network:{$:0,alces:{"*":{$:0}}},neustar:{$:0},new:{$:0},newholland:{$:0},news:{$:0},next:{$:0},nextdirect:{$:0},nexus:{$:0},nfl:{$:0},ngo:{$:0},nhk:{$:0},nico:{$:0},nike:{$:0},nikon:{$:0},ninja:{$:0},nissan:{$:0},nissay:{$:0},nokia:{$:0},northwesternmutual:{$:0},norton:{$:0},now:{$:0},nowruz:{$:0},nowtv:{$:0},nra:{$:0},nrw:{$:0},ntt:{$:0},nyc:{$:0},obi:{$:0},observer:{$:0},off:{$:0},office:{$:0},okinawa:{$:0},olayan:{$:0},olayangroup:{$:0},oldnavy:{$:0},ollo:{$:0},omega:{$:0},one:{$:0,homelink:{$:0}},ong:{$:0},onl:{$:0},online:{$:0,barsy:{$:0}},onyourside:{$:0},ooo:{$:0},open:{$:0},oracle:{$:0},orange:{$:0},organic:{$:0},origins:{$:0},osaka:{$:0},otsuka:{$:0},ott:{$:0},ovh:{$:0,nerdpol:{$:0}},page:{$:0},panasonic:{$:0},panerai:{$:0},paris:{$:0},pars:{$:0},partners:{$:0},parts:{$:0},party:{$:0,ybo:{$:0}},passagens:{$:0},pay:{$:0},pccw:{$:0},pet:{$:0},pfizer:{$:0},pharmacy:{$:0},phd:{$:0},philips:{$:0},phone:{$:0},photo:{$:0},photography:{$:0},photos:{$:0},physio:{$:0},piaget:{$:0},pics:{$:0},pictet:{$:0},pictures:{1337:{$:0},$:0},pid:{$:0},pin:{$:0},ping:{$:0},pink:{$:0},pioneer:{$:0},pizza:{$:0},place:{$:0},play:{$:0},playstation:{$:0},plumbing:{$:0},plus:{$:0},pnc:{$:0},pohl:{$:0},poker:{$:0},politie:{$:0},porn:{$:0},pramerica:{$:0},praxi:{$:0},press:{$:0},prime:{$:0},prod:{$:0},productions:{$:0},prof:{$:0},progressive:{$:0},promo:{$:0},properties:{$:0},property:{$:0},protection:{$:0},pru:{$:0},prudential:{$:0},pub:{$:0},pwc:{$:0},qpon:{$:0},quebec:{$:0},quest:{$:0},qvc:{$:0},racing:{$:0},radio:{$:0},raid:{$:0},read:{$:0},realestate:{$:0},realtor:{$:0},realty:{$:0},recipes:{$:0},red:{$:0},redstone:{$:0},redumbrella:{$:0},rehab:{$:0},reise:{$:0},reisen:{$:0},reit:{$:0},reliance:{$:0},ren:{$:0},rent:{$:0},rentals:{$:0},repair:{$:0},report:{$:0},republican:{$:0},rest:{$:0},restaurant:{$:0},review:{$:0,ybo:{$:0}},reviews:{$:0},rexroth:{$:0},rich:{$:0},richardli:{$:0},ricoh:{$:0},rightathome:{$:0},ril:{$:0},rio:{$:0},rip:{$:0,clan:{$:0}},rmit:{$:0},rocher:{$:0},rocks:{$:0,myddns:{$:0},"lima-city":{$:0},webspace:{$:0}},rodeo:{$:0},rogers:{$:0},room:{$:0},rsvp:{$:0},rugby:{$:0},ruhr:{$:0},run:{$:0},rwe:{$:0},ryukyu:{$:0},saarland:{$:0},safe:{$:0},safety:{$:0},sakura:{$:0},sale:{$:0},salon:{$:0},samsclub:{$:0},samsung:{$:0},sandvik:{$:0},sandvikcoromant:{$:0},sanofi:{$:0},sap:{$:0},sapo:{$:0},sarl:{$:0},sas:{$:0},save:{$:0},saxo:{$:0},sbi:{$:0},sbs:{$:0},sca:{$:0},scb:{$:0},schaeffler:{$:0},schmidt:{$:0},scholarships:{$:0},school:{$:0},schule:{$:0},schwarz:{$:0},science:{$:0,ybo:{$:0}},scjohnson:{$:0},scor:{$:0},scot:{$:0},search:{$:0},seat:{$:0},secure:{$:0},security:{$:0},seek:{$:0},select:{$:0},sener:{$:0},services:{$:0},ses:{$:0},seven:{$:0},sew:{$:0},sex:{$:0},sexy:{$:0},sfr:{$:0},shangrila:{$:0},sharp:{$:0},shaw:{$:0},shell:{$:0},shia:{$:0},shiksha:{$:0},shoes:{$:0},shop:{$:0},shopping:{$:0},shouji:{$:0},show:{$:0},showtime:{$:0},shriram:{$:0},silk:{$:0},sina:{$:0},singles:{$:0},site:{$:0,cyon:{$:0},platformsh:{"*":{$:0}},byen:{$:0}},ski:{$:0},skin:{$:0},sky:{$:0},skype:{$:0},sling:{$:0},smart:{$:0},smile:{$:0},sncf:{$:0},soccer:{$:0},social:{$:0},softbank:{$:0},software:{$:0},sohu:{$:0},solar:{$:0},solutions:{$:0},song:{$:0},sony:{$:0},soy:{$:0},space:{$:0,stackspace:{$:0},uber:{$:0},xs4all:{$:0}},spiegel:{$:0},spot:{$:0},spreadbetting:{$:0},srl:{$:0},srt:{$:0},stada:{$:0},staples:{$:0},star:{$:0},starhub:{$:0},statebank:{$:0},statefarm:{$:0},statoil:{$:0},stc:{$:0},stcgroup:{$:0},stockholm:{$:0},storage:{$:0},store:{$:0},stream:{$:0},studio:{$:0},study:{$:0},style:{$:0},sucks:{$:0},supplies:{$:0},supply:{$:0},support:{$:0,barsy:{$:0}},surf:{$:0},surgery:{$:0},suzuki:{$:0},swatch:{$:0},swiftcover:{$:0},swiss:{$:0},sydney:{$:0},symantec:{$:0},systems:{$:0,knightpoint:{$:0}},tab:{$:0},taipei:{$:0},talk:{$:0},taobao:{$:0},target:{$:0},tatamotors:{$:0},tatar:{$:0},tattoo:{$:0},tax:{$:0},taxi:{$:0},tci:{$:0},tdk:{$:0},team:{$:0},tech:{$:0},technology:{$:0},telecity:{$:0},telefonica:{$:0},temasek:{$:0},tennis:{$:0},teva:{$:0},thd:{$:0},theater:{$:0},theatre:{$:0},tiaa:{$:0},tickets:{$:0},tienda:{$:0},tiffany:{$:0},tips:{$:0},tires:{$:0},tirol:{$:0},tjmaxx:{$:0},tjx:{$:0},tkmaxx:{$:0},tmall:{$:0},today:{$:0},tokyo:{$:0},tools:{$:0},top:{$:0},toray:{$:0},toshiba:{$:0},total:{$:0},tours:{$:0},town:{$:0},toyota:{$:0},toys:{$:0},trade:{$:0,ybo:{$:0}},trading:{$:0},training:{$:0},travelchannel:{$:0},travelers:{$:0},travelersinsurance:{$:0},trust:{$:0},trv:{$:0},tube:{$:0},tui:{$:0},tunes:{$:0},tushu:{$:0},tvs:{$:0},ubank:{$:0},ubs:{$:0},uconnect:{$:0},unicom:{$:0},university:{$:0},uno:{$:0},uol:{$:0},ups:{$:0},vacations:{$:0},vana:{$:0},vanguard:{$:0},vegas:{$:0},ventures:{$:0},verisign:{$:0},versicherung:{$:0},vet:{$:0},viajes:{$:0},video:{$:0},vig:{$:0},viking:{$:0},villas:{$:0},vin:{$:0},vip:{$:0},virgin:{$:0},visa:{$:0},vision:{$:0},vista:{$:0},vistaprint:{$:0},viva:{$:0},vivo:{$:0},vlaanderen:{$:0},vodka:{$:0},volkswagen:{$:0},volvo:{$:0},vote:{$:0},voting:{$:0},voto:{$:0},voyage:{$:0},vuelos:{$:0},wales:{$:0},walmart:{$:0},walter:{$:0},wang:{$:0},wanggou:{$:0},warman:{$:0},watch:{$:0},watches:{$:0},weather:{$:0},weatherchannel:{$:0},webcam:{$:0},weber:{$:0},website:{$:0},wed:{$:0},wedding:{$:0},weibo:{$:0},weir:{$:0},whoswho:{$:0},wien:{$:0},wiki:{$:0},williamhill:{$:0},win:{$:0},windows:{$:0},wine:{$:0},winners:{$:0},wme:{$:0},wolterskluwer:{$:0},woodside:{$:0},work:{$:0},works:{$:0},world:{$:0},wow:{$:0},wtc:{$:0},wtf:{$:0},xbox:{$:0},xerox:{$:0},xfinity:{$:0},xihuan:{$:0},xin:{$:0},"xn--11b4c3d":{$:0},"xn--1ck2e1b":{$:0},"xn--1qqw23a":{$:0},"xn--30rr7y":{$:0},"xn--3bst00m":{$:0},"xn--3ds443g":{$:0},"xn--3oq18vl8pn36a":{$:0},"xn--3pxu8k":{$:0},"xn--42c2d9a":{$:0},"xn--45q11c":{$:0},"xn--4gbrim":{$:0},"xn--55qw42g":{$:0},"xn--55qx5d":{$:0},"xn--5su34j936bgsg":{$:0},"xn--5tzm5g":{$:0},"xn--6frz82g":{$:0},"xn--6qq986b3xl":{$:0},"xn--80adxhks":{$:0},"xn--80aqecdr1a":{$:0},"xn--80asehdb":{$:0},"xn--80aswg":{$:0},"xn--8y0a063a":{$:0},"xn--9dbq2a":{$:0},"xn--9et52u":{$:0},"xn--9krt00a":{$:0},"xn--b4w605ferd":{$:0},"xn--bck1b9a5dre4c":{$:0},"xn--c1avg":{$:0},"xn--c2br7g":{$:0},"xn--cck2b3b":{$:0},"xn--cg4bki":{$:0},"xn--czr694b":{$:0},"xn--czrs0t":{$:0},"xn--czru2d":{$:0},"xn--d1acj3b":{$:0},"xn--eckvdtc9d":{$:0},"xn--efvy88h":{$:0},"xn--estv75g":{$:0},"xn--fct429k":{$:0},"xn--fhbei":{$:0},"xn--fiq228c5hs":{$:0},"xn--fiq64b":{$:0},"xn--fjq720a":{$:0},"xn--flw351e":{$:0},"xn--fzys8d69uvgm":{$:0},"xn--g2xx48c":{$:0},"xn--gckr3f0f":{$:0},"xn--gk3at1e":{$:0},"xn--hxt814e":{$:0},"xn--i1b6b1a6a2e":{$:0},"xn--imr513n":{$:0},"xn--io0a7i":{$:0},"xn--j1aef":{$:0},"xn--jlq61u9w7b":{$:0},"xn--jvr189m":{$:0},"xn--kcrx77d1x4a":{$:0},"xn--kpu716f":{$:0},"xn--kput3i":{$:0},"xn--mgba3a3ejt":{$:0},"xn--mgba7c0bbn0a":{$:0},"xn--mgbaakc7dvf":{$:0},"xn--mgbab2bd":{$:0},"xn--mgbb9fbpob":{$:0},"xn--mgbca7dzdo":{$:0},"xn--mgbi4ecexp":{$:0},"xn--mgbt3dhd":{$:0},"xn--mk1bu44c":{$:0},"xn--mxtq1m":{$:0},"xn--ngbc5azd":{$:0},"xn--ngbe9e0a":{$:0},"xn--ngbrx":{$:0},"xn--nqv7f":{$:0},"xn--nqv7fs00ema":{$:0},"xn--nyqy26a":{$:0},"xn--p1acf":{$:0},"xn--pbt977c":{$:0},"xn--pssy2u":{$:0},"xn--q9jyb4c":{$:0},"xn--qcka1pmc":{$:0},"xn--rhqv96g":{$:0},"xn--rovu88b":{$:0},"xn--ses554g":{$:0},"xn--t60b56a":{$:0},"xn--tckwe":{$:0},"xn--tiq49xqyj":{$:0},"xn--unup4y":{$:0},"xn--vermgensberater-ctb":{$:0},"xn--vermgensberatung-pwb":{$:0},"xn--vhquv":{$:0},"xn--vuq861b":{$:0},"xn--w4r85el8fhu5dnra":{$:0},"xn--w4rs40l":{$:0},"xn--xhq521b":{$:0},"xn--zfr164b":{$:0},xperia:{$:0},xyz:{$:0,blogsite:{$:0},fhapp:{$:0}},yachts:{$:0},yahoo:{$:0},yamaxun:{$:0},yandex:{$:0},yodobashi:{$:0},yoga:{$:0},yokohama:{$:0},you:{$:0},youtube:{$:0},yun:{$:0},zappos:{$:0},zara:{$:0},zero:{$:0},zip:{$:0},zippo:{$:0},zone:{$:0,triton:{"*":{$:0}},lima:{$:0}},zuerich:{$:0}}}},{}]},{},[1])(1)});