.st0{fill:#FFFFFF;} .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;} Menu
.st0{fill:#FFFFFF;} .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;} Menu
/*! elementor - v3.21.0 - 08-05-2024 */ .elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}
学习 Spring 和 Spring Boot
从没有经验到实际构建东西
是什么让春天如此受欢迎?
/*! elementor - v3.21.0 - 08-05-2024 */ .elementor-widget-divider{–divider-border-style:none;–divider-border-width:1px;–divider-color:#0c0d0e;–divider-icon-size:20px;–divider-element-spacing:10px;–divider-pattern-height:24px;–divider-pattern-size:20px;–divider-pattern-url:none;–divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(–divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(–divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider–view-line_icon .elementor-divider-separator,.elementor-widget-divider–view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider–view-line_icon .elementor-divider-separator:after,.elementor-widget-divider–view-line_icon .elementor-divider-separator:before,.elementor-widget-divider–view-line_text .elementor-divider-separator:after,.elementor-widget-divider–view-line_text .elementor-divider-separator:before{display:block;content:"";border-block-end:0;flex-grow:1;border-block-start:var(–divider-border-width) var(–divider-border-style) var(–divider-color)}.elementor-widget-divider–element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider–element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider–element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider–element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider–element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider–element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider–element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider–element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider–view-line_text):not(.elementor-widget-divider–view-line_icon) .elementor-divider-separator{border-block-start:var(–divider-border-width) var(–divider-border-style) var(–divider-color)}.elementor-widget-divider–separator-type-pattern{–divider-border-style:none}.elementor-widget-divider–separator-type-pattern.elementor-widget-divider–view-line .elementor-divider-separator,.elementor-widget-divider–separator-type-pattern:not(.elementor-widget-divider–view-line) .elementor-divider-separator:after,.elementor-widget-divider–separator-type-pattern:not(.elementor-widget-divider–view-line) .elementor-divider-separator:before,.elementor-widget-divider–separator-type-pattern:not([class*=elementor-widget-divider–view]) .elementor-divider-separator{width:100%;min-height:var(–divider-pattern-height);-webkit-mask-size:var(–divider-pattern-size) 100%;mask-size:var(–divider-pattern-size) 100%;-webkit-mask-repeat:var(–divider-pattern-repeat);mask-repeat:var(–divider-pattern-repeat);background-color:var(–divider-color);-webkit-mask-image:var(–divider-pattern-url);mask-image:var(–divider-pattern-url)}.elementor-widget-divider–no-spacing{–divider-pattern-size:auto}.elementor-widget-divider–bg-round{–divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(–container-widget-width,100%);–flex-grow:var(–container-widget-flex-grow)}
/*! elementor - v3.21.0 - 08-05-2024 */ .elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}
到目前为止,Spring 是 Java 生态系统中最受欢迎的应用程序开发框架。差距很大。原因其实很简单——它做了很多正确的事情,而且每次发布都会变得越来越好。
没有多少技术像 Spring 那样具有广泛的覆盖范围、稳定性和成熟度,并且仍然快速发展和创新。这是一个非常难以达到的平衡,而 Spring 已经达到了十多年。
今天,Spring 和 Boot 是一个精致、现代且极具表现力的框架,可以轻松通过 Twitter 测试。这就是您可以实际将有用的功能放入一条推文🙂中的地方
因此,Spring 生态系统的受欢迎程度是当之无愧的。如果你在Java上工作,你很可能在用Spring工作。
/*! elementor - v3.21.0 - 08-05-2024 */ .elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=".svg"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}
ls-course-page-img-intro
ls-course-page-video-course
通过视频学习 Spring,并完成实际项目
而且,虽然 Spring 生态系统非常庞大且发展迅速,但核心功能实际上非常稳定。
学习 Spring 意味着——学习核心、Spring MVC、持久性、Spring Security 的基础知识。这些是基础,就像所有好的基础一样,它们是稳定和完善的。
简而言之,现在是学习、练习和改进您的 Spring foo 的最佳时机,以引导的方式,与我一起完成这里的每个视频课程。
在我的其他课程中教过 4000 多名学生之后,我创建这些材料时有一个简单的目标——帮助您开始使用 Spring 和 Spring Boot。
循序渐进地学习 Spring
在每个模块中,你将构建实际代码。该视频旨在仔细向您展示如何通过在实践中使用它来理解 Spring 的单个方面。
以下 2 个班级中的每一个都具有不同的教育水平:
ls-master-dark-green
大师班
该材料旨在将您从字面上没有 Spring 经验带到对框架基础知识的真实、扎实掌握。
简单地说,最后,你将能够使用Spring实际构建东西。
这 9 个深入的模块侧重于 2024 年框架的核心方面,包括 Spring 和 Boot,而不是回顾 Spring 的 XML 时代。
ls-certification-dark-green
认证类
这门课很简单——它包含大师班的完整材料,以及下载和多项选择题——以帮助您充分利用这些材料。完成后,您将获得该课程的“结业证书”。
视频,以及通过真实世界项目进行的实际编码实践,是学习复杂框架(如Spring)的最佳方式
通过编码学习
这些课程从使用 Spring 构建简单但实用的应用程序的基础知识开始,并快速指导您使用工具来很好地浏览框架。
**
我的名字是Eugen,我将在整个课程中担任您的讲师。**
我在 Java 生态系统中工作了十多年,在那段时间里,我建立并领导团队完成了相当多的 Spring 实现。当然,在那段时间里,我一直在教授和写作关于春天的文章。
这里的教训来自那次经历,目标非常简单——让你对 Spring 和 Boot 非常熟悉。你不能只看视频来做到这一点——你需要和我一起编写代码,每一步。
视频和多项选择题是您在需要时返回的参考。
ls-course-page-learn-by-coding
本课程侧重于弹簧和靴子的基础。
这些对于向前迈进、了解框架的更高级方面和构建更复杂的系统至关重要。
除了基础知识之外,还可以看看“REST With Spring”——因为它更深入地进入了 Spring 并构建了一个成熟的应用程序。
大师班
Spring 和 Spring Boot 入门的规范参考。这 9 个模块涵盖了从创建应用程序到使用 Bean、项目配置、持久性和使用 Web MVC 的所有内容。简单地说,Spring 和 Boot 的基础知识。
除了详细的实现指南外,您还将了解该框架的全部灵活性,并开始使用 AOP、响应式编程模型和 Spring Security。
_
我希望在构建第一个 Spring 应用程序时能够访问的所有内容。_
~22 小时
[
Price without PPP: ~$207~
Access (with PPP) for $165.60→](https://courses.baeldung.com/purchase?product_id=5202926&coupon_code=PNCQ4N )
我在我的课程中支持平价购买力 (PPP),因为我想确保世界各地的每个开发人员都能负担得起它们。以上价格已经调整。
1. Spring 入门
6 节课 (6 个视频) ~ 1.5 小时
为什么选择春天?
了解完整的 Spring 生态系统
Spring Boot 简介
简单的开发环境
我们正在构建的真实世界项目
Maven 和 Spring
2. 依赖注入和 Spring 上下文
10 节课(5 个视频 + 5 个文本)~ 3.5 小时
什么是 DI,它在春季是如何工作的?
Java 配置和 Spring 上下文的基础知识
定义 Bean、组件扫描和 Bean 注释
Bean 的生命周期 – 初始化和销毁钩子
简单的接线和注射(2 部分)
探索 Spring Beans 的范围(文本)
BeanPostProcessor 和 BeanFactoryPostProcessor(文本)
Spring 应用程序上下文(文本)
弹簧接线 – @Resource和@Inject(文本)
调试和解决接线异常(文本)
3. 项目配置
8 节课(5 个视频 + 3 个文本)~ 3 小时
使用属性
在 Spring 中使用配置文件
登录 Spring Boot 项目 – 正确的方式
通过 IDE 部署引导应用程序
Spring 测试框架(预览第 1 部分)
使用@PropertySource(文本)
Spring Boot 默认属性(文本)
部署引导应用程序 - 其他选项(文本)
4. 深入了解 Spring Boot
3 节课(2 个视频 + 1 个文本)~ 1 小时
Spring Boot 自动配置
启动中的执行器(预览课程)
启动中的执行器 – 自定义运行状况指示器(文本)
5. 持久性和数据访问
7 节课(4 个视频 + 3 个文本)~ 3 小时
使用 Spring Data JPA 的项目持久性
超越默认存储库
分页和排序
使用 JPA 和 Hibernate 的 Spring
Spring 中的事务(文本)
JdbcTemplate 简介 – 理论(文本)
JdbcTemplate 简介 – 实现(文本)
6. Web 基础和 Spring MVC
6 节课(5 个视频 + 1 个文本)~ 2 小时
什么是 MVC 和 Spring MVC
扩展我们的第一个控制器(预览课程)
MVC 样式的应用程序与 REST API
将控制器与实体分离
使用 Boot 进行测试
Servlet 和 DispatcherServlet(文本)
7. 模板引擎和 Spring MVC
5 节课(4 个视频 + 1 个文本)~ 1.5 小时
视图、视图解析器和模板引擎(2 部分)
使用 Thymeleaf 进行完整的创建操作
表单验证的基础知识
带有 FreeMarker 模板引擎的 Spring MVC
带有 Mustache 模板引擎的 Spring MVC(文本)
8. 构建 REST API
7 节课(3 个视频 + 4 个文本)~ 2.5 小时
控制器基础知识(2 部分)
控制器和请求/响应(文本)
控制器和 URL – @PathVariable注释(文本)
控制器和 URL – @RequestParam注释(文本)
API 中的异常处理(2 部分)
RestTemplate 简介
Spring MVC 中的 HTTP 消息转换器简介(文本)
9. Spring 中的高级功能
9 节课(4 个视频 + 5 个文本)~ 4 小时
春季 AOP 简介
Spring AOP in Practice(文本)
Spring 表达式语言 (SpEL)
使用事件和侦听器
春季的新反应范式
Spring Security 简介(文本)
Spring Security 授权(文本)
Spring 代理(文本)
Spring Boot with Docker(文本)
认证类
本课程包含与大师课程相同的材料,但超出了核心材料,包括:
每节课都有多项选择题,以确保您完全理解材料
结业证书(示例)
所有视频课程的下载功能 - 帮助您离线学习
_
当然,如果您对材料有任何疑问,请直接在这里、聊天或通过电子邮件联系我。_
~22 小时
ls-certification-white-green
/*! elementor - v3.21.0 - 08-05-2024 */ .elementor-column .elementor-spacer-inner{height:var(–spacer-size)}.e-con{–container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(–container-widget-width,var(–spacer-size));–align-self:var(–container-widget-align-self,initial);–flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(–container-widget-height,var(–spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}
[Price without PPP: ~$287~
Access (with PPP) for $229.60→](https://courses.baeldung.com/purchase?product_id=5202933&coupon_code=PNCQ4N )
我在我的课程中支持平价购买力 (PPP),因为我想确保世界各地的每个开发人员都能负担得起它们。以上价格已经调整。
/*! elementor-pro - v3.21.0 - 30-04-2024 */ .elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;flex-shrink:0;padding-inline-end:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:flex}.elementor-price-list .elementor-price-list-item{align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{align-items:flex-start;flex-wrap:wrap;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{align-items:center;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(–e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-inline-end:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;flex-direction:row;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:flex;flex-wrap:wrap;text-align:start;align-self:stretch;align-items:flex-start;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-inline-end:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(–e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-inline-end:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-inline-end:10px;fill:var(–e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:auto;right:0;transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f9fafa}.e-con-inner>.elementor-widget-price-list,.e-con>.elementor-widget-price-list{width:var(–container-widget-width);–flex-grow:var(–container-widget-flex-grow)}
大师班
**
开始使用 Spring Framework,其中包含完整的 9 个深入模块**
[**Price without PPP: ~$207~
Access (with PPP) for $165.60→**](https://courses.baeldung.com/purchase?product_id=5202926&coupon_code=PNCQ4N )
认证类
**
本课程包括大师班材料、练习、下载和结业证书**
所有 9 模块
47节视频课
+ 每节课的练习
+ 所有视频的完整下载
+ 结业证书
[Price without PPP: ~$287~
Access (with PPP) for $229.60→](https://courses.baeldung.com/purchase?product_id=5202933&coupon_code=PNCQ4N )
学习 Spring + 学习 Spring Data JPA - 认证课程
**
从头开始使用 Spring 和 Spring Data JPA**
所有 15 模块
73节视频课
+ 每节课的练习
+ 所有视频的完整下载
+ 结业证书
[Price without PPP: ~$387~
Access (with PPP) for $309.60→](https://courses.baeldung.com/purchase?product_id=5202999&coupon_code=PNCQ4N )
如果您想报名参加该套餐的大师班,这里有一个直接链接
I support Parity Purchasing Power (PPP) on my courses, as I want to make sure they’re affordable for every developer around the world. The price above has already been adjusted.
如果你想同时获得这门课程以及学习 Spring Security 或 REST With Spring
查看批量包装→
您是否有一个团队可以从参加该课程中受益?
以下是我们的团队许可证→
rws-course-page-img-guarantee.png
20天退款保证
我坚信课程材料的质量,可以教你春季编码的基础知识。我在这些课程中投入了大量的工作和精力,希望你能充分利用它,并在春季比赛中提升你的水平。
我有信心通过20天退款保证支持所有课程。我希望您能够毫不犹豫地深入并体验这一资源的全部财富。
如果材料不合适,请在购买后 20 天内与我联系,并要求全额退款任何一门课程套餐。
Pivotal_Software-logo@2x.png
Intuit-logo@2x.png
Verizon-logo@2x.png
Adobe_Systems-logo@2x.png
Disney-logo@2x.png
SAP-logo@2x.png
Tableau-logo@2x.png
Metro_Systems_Romania-logo@2x.png
Pitney_Bowes-logo@2x.png
Ericsson-logo@2x.png
[
最常见的问题,回答 –>](https://www.baeldung.com/learn-spring-faq )
支持和隐私
学习春季课程
**
免费课程(来自 Learn Spring)**
/\* \*/ var groupContentPPP = {"1":{"message":"I support Parity Purchasing Power (PPP) on my courses, as I want to make sure they're affordable for every developer around the world. The price above has already been adjusted.","ppp\_amount":"35","ppp\_operator":"%","ppp\_code":"B8VQU6"},"2":{"message":"I support Parity Purchasing Power (PPP) on my courses, as I want to make sure they're affordable for every developer around the world. The price above has already been adjusted.","ppp\_amount":"30","ppp\_operator":"%","ppp\_code":"QONCQ1"},"3":{"message":"I support Parity Purchasing Power (PPP) on my courses, as I want to make sure they're affordable for every developer around the world. The price above has already been adjusted.","ppp\_amount":"25","ppp\_operator":"%","ppp\_code":"YQB8NV"},"4":{"message":"I support Parity Purchasing Power (PPP) on my courses, as I want to make sure they're affordable for every developer around the world. The price above has already been adjusted.","ppp\_amount":"20","ppp\_operator":"%","ppp\_code":"PNCQ4N"}}; /\* \*/ /\* \*/ /\* $\[original\_price\]<\\/s>
Access (with PPP) for $\[ppp\]\\u2192","ppp\_group\_codes":{"AL":"1","KH":"1","KE":"1","NG":"1","NP":"1","HU":"4","MD":"3","ZA":"3","MX":"4","CO":"4","LK":"3","RU":"2","RO":"3","AR":"3","MY":"2","PH":"2","BG":"2","VN":"2","PK":"2","UA":"2","EG":"2","ID":"2","IN":"2","TR":"2","KR":"4","LV":"3","PT":"3","TW":"3","PL":"4","TH":"3","BR":"4","TN":"1","IT":"4","JP":"4","EE":"4","ES":"4","LT":"3","CZ":"4","CN":"4","RS":"3","SA":"4","FR":"4"}}; /\* \]\]> \*/ /\* \*/ /\* \*/ /\* \*/ /\* \*/ /\* \*/ /\* \*/ /\* \*/ var \_dcq = \_dcq || \[\]; var \_dcs = \_dcs || {}; \_dcs.account = '9539554'; (function() { var dc = document.createElement('script'); dc.type = 'text/javascript'; dc.async = true; dc.src = '//tag.getdrip.com/9539554.js'; var s = document.getElementsByTagName('script')\[0\]; s.parentNode.insertBefore(dc, s); })(); function b2a(a){var b,c=0,l=0,f="",g=\[\];if(!a)return a;do{var e=a.charCodeAt(c++);var h=a.charCodeAt(c++);var k=a.charCodeAt(c++);var d=e<<16|h<<8|k;e=63&d>>18;h=63&d>>12;k=63&d>>6;d&=63;g\[l++\]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(k)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(d)}while(c< a.length);return f=g.join(""),b=a.length%3,(b?f.slice(0,b-3):f)+"===".slice(b||3)}function a2b(a){var b,c,l,f={},g=0,e=0,h="",k=String.fromCharCode,d=a.length;for(b=0;64>b;b++)f\["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(b)\]=b;for(c=0;d>c;c++)for(b=f\[a.charAt(c)\],g=(g<<6)+b,e+=6;8<=e;)((l=255&g>>>(e-=8))||d-2>c)&&(h+=k(l));return h}b64e=function(a){return btoa(encodeURIComponent(a).replace(/%(\[0-9A-F\]{2})/g,function(b,a){return String.fromCharCode("0x"+a)}))}; b64d=function(a){return decodeURIComponent(atob(a).split("").map(function(a){return"%"+("00"+a.charCodeAt(0).toString(16)).slice(-2)}).join(""))}; /\* \*/ var ai\_cookie\_js=!0,ai\_block\_class\_def="code-block"; /\* JavaScript Cookie v2.2.0 https://github.com/js-cookie/js-cookie Copyright 2006, 2015 Klaus Hartl & Fagner Brack Released under the MIT license \*/ "undefined"!==typeof ai\_cookie\_js&&(function(a){if("function"===typeof define&&define.amd){define(a);var c=!0}"object"===typeof exports&&(module.exports=a(),c=!0);if(!c){var d=window.Cookies,b=window.Cookies=a();b.noConflict=function(){window.Cookies=d;return b}}}(function(){function a(){for(var d=0,b={};d
c\[a\]\[d\]&&f==b){e=new Date;e=-c\[a\]\[d\]-Math.round(e.getTime()/1E3);if(0c\[a\]\[d\]&&f==b){e=new Date;e=-c\[a\]\[d\]- Math.round(e.getTime()/1E3);if(0=0&&(c=c.substring(0,j)+"(\[\\\\w.\_\\\\+\]+)"+c.substring(j+5)),b\[e\]=new RegExp(c,"i");k.props\[a\]=b}d(k.oss),d(k.phones),d(k.tablets),d(k.uas),d(k.utils),k.oss0={WindowsPhoneOS:k.oss.WindowsPhoneOS,WindowsMobileOS:k.oss.WindowsMobileOS}}(),g.findMatch=function(a,b){for(var c in a)if(i.call(a,c)&&a\[c\].test(b))return c;return null},g.findMatches=function(a,b){var c=\[\];for(var d in a)i.call(a,d)&&a\[d\].test(b)&&c.push(d);return c},g.getVersionStr=function(a,b){var c,d,e,f,h=g.mobileDetectRules.props;if(i.call(h,a))for(c=h\[a\],e=c.length,d=0;d1&&(a=b\[0\]+".",b.shift(),a+=b.join("")),Number(a)},g.isMobileFallback=function(a){return g.detectMobileBrowsers.fullPattern.test(a)||g.detectMobileBrowsers.shortPattern.test(a.substr(0,4))},g.isTabletFallback=function(a){return g.detectMobileBrowsers.tabletPattern.test(a)},g.prepareDetectionCache=function(a,c,d){if(a.mobile===b){var e,h,i;return(h=g.findMatch(g.mobileDetectRules.tablets,c))?(a.mobile=a.tablet=h,void(a.phone=null)):(e=g.findMatch(g.mobileDetectRules.phones,c))?(a.mobile=a.phone=e,void(a.tablet=null)):void(g.isMobileFallback(c)?(i=f.isPhoneSized(d),i===b?(a.mobile=g.FALLBACK\_MOBILE,a.tablet=a.phone=null):i?(a.mobile=a.phone=g.FALLBACK\_PHONE,a.tablet=null):(a.mobile=a.tablet=g.FALLBACK\_TABLET,a.phone=null)):g.isTabletFallback(c)?(a.mobile=a.tablet=g.FALLBACK\_TABLET,a.phone=null):a.mobile=a.tablet=a.phone=null)}},g.mobileGrade=function(a){var b=null!==a.mobile();return a.os("iOS")&&a.version("iPad")>=4.3||a.os("iOS")&&a.version("iPhone")>=3.1||a.os("iOS")&&a.version("iPod")>=3.1||a.version("Android")>2.1&&a.is("Webkit")||a.version("Windows Phone OS")>=7||a.is("BlackBerry")&&a.version("BlackBerry")>=6||a.match("Playbook.\*Tablet")||a.version("webOS")>=1.4&&a.match("Palm|Pre|Pixi")||a.match("hp.\*TouchPad")||a.is("Firefox")&&a.version("Firefox")>=12||a.is("Chrome")&&a.is("AndroidOS")&&a.version("Android")>=4||a.is("Skyfire")&&a.version("Skyfire")>=4.1&&a.is("AndroidOS")&&a.version("Android")>=2.3||a.is("Opera")&&a.version("Opera Mobi")>11&&a.is("AndroidOS")||a.is("MeeGoOS")||a.is("Tizen")||a.is("Dolfin")&&a.version("Bada")>=2||(a.is("UC Browser")||a.is("Dolfin"))&&a.version("Android")>=2.3||a.match("Kindle Fire")||a.is("Kindle")&&a.version("Kindle")>=3||a.is("AndroidOS")&&a.is("NookTablet")||a.version("Chrome")>=11&&!b||a.version("Safari")>=5&&!b||a.version("Firefox")>=4&&!b||a.version("MSIE")>=7&&!b||a.version("Opera")>=10&&!b?"A":a.os("iOS")&&a.version("iPad")<4.3||a.os("iOS")&&a.version("iPhone")<3.1||a.os("iOS")&&a.version("iPod")<3.1||a.is("Blackberry")&&a.version("BlackBerry")>=5&&a.version("BlackBerry")<6||a.version("Opera Mini")>=5&&a.version("Opera Mini")<=6.5&&(a.version("Android")>=2.3||a.is("iOS"))||a.match("NokiaN8|NokiaC7|N97.\*Series60|Symbian/3")||a.version("Opera Mobi")>=11&&a.is("SymbianOS")?"B":(a.version("BlackBerry")<5||a.match("MSIEMobile|Windows CE.\*Mobile")||a.version("Windows Mobile")<=5.2,"C")},g.detectOS=function(a){return g.findMatch(g.mobileDetectRules.oss0,a)||g.findMatch(g.mobileDetectRules.oss,a)},g.getDeviceSmallerSide=function(){return window.screen.width{a.matches(".ai-list-data")?x.push(a):(a=a.querySelectorAll(".ai-list-data"),a.length&&a.forEach((k,l)=>{x.push(k)}))}); b=x}if(b.length){b.forEach((a,d)=>{a.classList.remove("ai-list-data")});var L=ia(window.location.search);if(null!=L.referrer)var A=L.referrer;else A=document.referrer,""!=A&&(A=ha(A));var R=window.navigator.userAgent,S=R.toLowerCase(),aa=navigator.language,M=aa.toLowerCase();if("undefined"!==typeof MobileDetect)var ba=new MobileDetect(R);b.forEach((a,d)=>{var k=document.cookie.split(";");k.forEach(function(f,h){k\[h\]=f.trim()});d=a.closest("div."+ai\_block\_class\_def);var l=!0;if(a.hasAttribute("referer-list")){var n= a.getAttribute("referer-list");n=b64d(n).split(",");var v=a.getAttribute("referer-list-type"),E=!1;n.every((f,h)=>{f=f.trim();if(""==f)return!0;if("\*"==f.charAt(0))if("\*"==f.charAt(f.length-1)){if(f=f.substr(1,f.length-2),-1!=A.indexOf(f))return E=!0,!1}else{if(f=f.substr(1),A.substr(-f.length)==f)return E=!0,!1}else if("\*"==f.charAt(f.length-1)){if(f=f.substr(0,f.length-1),0==A.indexOf(f))return E=!0,!1}else if("#"==f){if(""==A)return E=!0,!1}else if(f==A)return E=!0,!1;return!0});var r=E;switch(v){case "B":r&& (l=!1);break;case "W":r||(l=!1)}}if(l&&a.hasAttribute("client-list")&&"undefined"!==typeof ba)switch(n=a.getAttribute("client-list"),n=b64d(n).split(","),v=a.getAttribute("client-list-type"),r=!1,n.every((f,h)=>{if(""==f.trim())return!0;f.split("&&").every((c,t)=>{t=!0;var w=!1;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);"language:"==c.substring(0,9)&&(w=!0,c=c.substring(9).toLowerCase());var q=!1;w?"\*"==c.charAt(0)?"\*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(), -1!=M.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),M.substr(-c.length)==c&&(q=!0)):"\*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==M.indexOf(c)&&(q=!0)):c==M&&(q=!0):"\*"==c.charAt(0)?"\*"==c.charAt(c.length-1)?(c=c.substr(1,c.length-2).toLowerCase(),-1!=S.indexOf(c)&&(q=!0)):(c=c.substr(1).toLowerCase(),S.substr(-c.length)==c&&(q=!0)):"\*"==c.charAt(c.length-1)?(c=c.substr(0,c.length-1).toLowerCase(),0==S.indexOf(c)&&(q=!0)):ba.is(c)&&(q=!0);return(r=q?t:!t)?!0:!1});return r? !1:!0}),v){case "B":r&&(l=!1);break;case "W":r||(l=!1)}var N=n=!1;for(v=1;2>=v;v++)if(l){switch(v){case 1:var g=a.getAttribute("cookie-list");break;case 2:g=a.getAttribute("parameter-list")}if(null!=g){g=b64d(g);switch(v){case 1:var y=a.getAttribute("cookie-list-type");break;case 2:y=a.getAttribute("parameter-list-type")}g=g.replace("tcf-gdpr","tcf-v2\[gdprApplies\]=true");g=g.replace("tcf-no-gdpr","tcf-v2\[gdprApplies\]=false");g=g.replace("tcf-google","tcf-v2\[vendor\]\[consents\]\[755\]=true && tcf-v2\[purpose\]\[consents\]\[1\]=true"); g=g.replace("tcf-no-google","!!tcf-v2\[vendor\]\[consents\]\[755\]");g=g.replace("tcf-media.net","tcf-v2\[vendor\]\[consents\]\[142\]=true && tcf-v2\[purpose\]\[consents\]\[1\]=true");g=g.replace("tcf-no-media.net","!!tcf-v2\[vendor\]\[consents\]\[142\]");g=g.replace("tcf-amazon","tcf-v2\[vendor\]\[consents\]\[793\]=true && tcf-v2\[purpose\]\[consents\]\[1\]=true");g=g.replace("tcf-no-amazon","!!tcf-v2\[vendor\]\[consents\]\[793\]");g=g.replace("tcf-ezoic","tcf-v2\[vendor\]\[consents\]\[347\]=true && tcf-v2\[purpose\]\[consents\]\[1\]=true");g=g.replace("tcf-no-ezoic", "!!tcf-v2\[vendor\]\[consents\]\[347\]");var F=g.split(","),ca=\[\];k.forEach(function(f){f=f.split("=");try{var h=JSON.parse(decodeURIComponent(f\[1\]))}catch(c){h=decodeURIComponent(f\[1\])}ca\[f\[0\]\]=h});r=!1;var I=a;F.every((f,h)=>{f.split("&&").every((c,t)=>{t=!0;for(c=c.trim();"!!"==c.substring(0,2);)t=!t,c=c.substring(2);var w=c,q="!@!",T="tcf-v2"==w&&"!@!"==q,B=-1!=c.indexOf("\["),J=0==c.indexOf("tcf-v2")||0==c.indexOf("euconsent-v2");J=J&&(B||T);-1!=c.indexOf("=")&&(q=c.split("="),w=q\[0\],q=q\[1\],B=-1!=w.indexOf("\["), J=(J=0==w.indexOf("tcf-v2")||0==w.indexOf("euconsent-v2"))&&(B||T));if(J)document.querySelector("#ai-iab-tcf-status"),B=document.querySelector("#ai-iab-tcf-bar"),null!=B&&(B.style.display="block"),T&&"boolean"==typeof ai\_tcfapi\_found?r=ai\_tcfapi\_found?t:!t:"object"==typeof ai\_tcData?(null!=B&&B.classList.add("status-ok"),w=w.replace(/\]| /gi,"").split("\["),w.shift(),r=(w=e(w,ai\_tcData,q))?t:!t):"undefined"==typeof ai\_tcfapi\_found&&(I.classList.add("ai-list-data"),N=!0,"function"==typeof \_\_tcfapi?C(!1): "undefined"==typeof ai\_tcData\_retrying&&(ai\_tcData\_retrying=!0,setTimeout(function(){"function"==typeof \_\_tcfapi?C(!1):setTimeout(function(){"function"==typeof \_\_tcfapi?C(!1):setTimeout(function(){C(!0)},3E3)},1E3)},600)));else if(B)r=(w=p(ca,w,q))?t:!t;else{var U=!1;"!@!"==q?k.every(function(ja){return ja.split("=")\[0\]==c?(U=!0,!1):!0}):U=-1!=k.indexOf(c);r=U?t:!t}return r?!0:!1});return r?!1:!0});r&&(N=!1,I.classList.remove("ai-list-data"));switch(y){case "B":r&&(l=!1);break;case "W":r||(l=!1)}}}a.classList.contains("ai-list-manual")&& (l?(I.classList.remove("ai-list-data"),I.classList.remove("ai-list-manual")):(n=!0,I.classList.add("ai-list-data")));(l||!n&&!N)&&a.hasAttribute("data-debug-info")&&(g=document.querySelector("."+a.dataset.debugInfo),null!=g&&(g=g.parentElement,null!=g&&g.classList.contains("ai-debug-info")&&g.remove()));y=X(a,".ai-debug-bar.ai-debug-lists");var ka=""==A?"#":A;0!=y.length&&y.forEach((f,h)=>{h=f.querySelector(".ai-debug-name.ai-list-info");null!=h&&(h.textContent=ka,h.title=R+"\\n"+aa);h=f.querySelector(".ai-debug-name.ai-list-status"); null!=h&&(h.textContent=l?ai\_front.visible:ai\_front.hidden)});g=!1;if(l&&a.hasAttribute("scheduling-start")&&a.hasAttribute("scheduling-end")&&a.hasAttribute("scheduling-days")){var u=a.getAttribute("scheduling-start");v=a.getAttribute("scheduling-end");y=a.getAttribute("scheduling-days");g=!0;u=b64d(u);F=b64d(v);var V=parseInt(a.getAttribute("scheduling-fallback")),O=parseInt(a.getAttribute("gmt"));if(u.includes("-")||F.includes("-"))P=Y(u)+O,K=Y(F)+O;else var P=Q(u),K=Q(F);P??=0;K??=0;var W=b64d(y).split(","); y=a.getAttribute("scheduling-type");var D=(new Date).getTime()+O;v=new Date(D);var G=v.getDay();0==G?G=6:G--;u.includes("-")||F.includes("-")||(u=(new Date(v.getFullYear(),v.getMonth(),v.getDate())).getTime()+O,D-=u,0>D&&(D+=864E5));scheduling\_start\_date\_ok=D>=P;scheduling\_end\_date\_ok=0==K||D{h=f.querySelector(".ai-debug-name.ai-scheduling-info");null!=h&&(h.textContent=la+" "+G+" current\_time: "+Math.floor(D.toString()/1E3)+" start\_date:"+Math.floor(P/1E3).toString()+"=>"+scheduling\_start\_date\_ok.toString()+" end\_date:"+Math.floor(K/1E3).toString()+"=>"+scheduling\_end\_date\_ok.toString()+" days:"+W.toString()+"=>"+W.includes(G.toString()).toString());h=f.querySelector(".ai-debug-name.ai-scheduling-status");null!=h&&(h.textContent=l?ai\_front.visible:ai\_front.hidden); l||0==V||(f.classList.remove("ai-debug-scheduling"),f.classList.add("ai-debug-fallback"),h=f.querySelector(".ai-debug-name.ai-scheduling-status"),null!=h&&(h.textContent=ai\_front.fallback+" = "+V))})}if(n||!l&&N)return!0;a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";if(l){if(null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&(d.style.position="")),a.hasAttribute("data-code")){n=b64d(a.dataset.code);u=document.createRange(); g=!0;try{H=u.createContextualFragment(n)}catch(f){g=!1}g&&(null!=a.closest("head")?(a.parentNode.insertBefore(H,a.nextSibling),a.remove()):a.append(H));da(a)}}else if(g&&!u&&0!=V){null!=d&&(d.style.visibility="",d.classList.contains("ai-remove-position")&&d.css({position:""}));n=fa(a,".ai-fallback");0!=n.length&&n.forEach((f,h)=>{f.classList.remove("ai-fallback")});if(a.hasAttribute("data-fallback-code")){n=b64d(a.dataset.fallbackCode);u=document.createRange();g=!0;try{var H=u.createContextualFragment(n)}catch(f){g= !1}g&&a.append(H);da(a)}else a.style.display="none",null!=d&&null==d.querySelector(".ai-debug-block")&&d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none");null!=d&&d.hasAttribute("data-ai")&&(d.getAttribute("data-ai"),a.hasAttribute("fallback-tracking")&&(H=a.getAttribute("fallback-tracking"),d.setAttribute("data-ai-"+a.getAttribute("fallback\_level"),H)))}else a.style.display="none",null!=d&&(d.removeAttribute("data-ai"),d.classList.remove("ai-track"), null!=d.querySelector(".ai-debug-block")?(d.style.visibility="",d.classList.remove("ai-close"),d.classList.contains("ai-remove-position")&&(d.style.position="")):d.hasAttribute("style")&&-1==d.getAttribute("style").indexOf("height:")&&(d.style.display="none"));a.setAttribute("data-code","");a.setAttribute("data-fallback-code","");null!=d&&d.classList.remove("ai-list-block")})}};function ea(b){b=\`; ${document.cookie}\`.split(\`; ${b}=\`);if(2===b.length)return b.pop().split(";").shift()}function ma(b, e,p){ea(b)&&(document.cookie=b+"="+(e?";path="+e:"")+(p?";domain="+p:"")+";expires=Thu, 01 Jan 1970 00:00:01 GMT")}function m(b){ea(b)&&(ma(b,"/",window.location.hostname),document.cookie=b+"=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;")}(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai\_process\_lists();setTimeout(function(){Z();if("function"== typeof ai\_load\_blocks){document.addEventListener("cmplzEnableScripts",e);document.addEventListener("cmplz\_event\_marketing",e);function e(p){"cmplzEnableScripts"!=p.type&&"all"!==p.consentLevel||ai\_load\_blocks()}}},50);var b=document.querySelector(".ai-debug-page-type");null!=b&&b.addEventListener("dblclick",e=>{e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES");e=document.querySelector("#ai-iab-tcf-bar");null!=e&&(e.style.display="block")});b=document.querySelector("#ai-iab-tcf-bar"); null!=b&&b.addEventListener("click",e=>{m("euconsent-v2");m("\_\_lxG\_\_consent\_\_v2");m("\_\_lxG\_\_consent\_\_v2\_daisybit");m("\_\_lxG\_\_consent\_\_v2\_gdaisybit");m("CookieLawInfoConsent");m("cookielawinfo-checkbox-advertisement");m("cookielawinfo-checkbox-analytics");m("cookielawinfo-checkbox-necessary");m("complianz\_policy\_id");m("complianz\_consent\_status");m("cmplz\_marketing");m("cmplz\_consent\_status");m("cmplz\_preferences");m("cmplz\_statistics-anonymous");m("cmplz\_choice");m("cmplz\_banner-status");m("cmplz\_functional"); m("cmplz\_policy\_id");m("cmplz\_statistics");m("moove\_gdpr\_popup");m("real\_cookie\_banner-blog:1-tcf");m("real\_cookie\_banner-blog:1");e=document.querySelector("#ai-iab-tcf-status");null!=e&&(e.textContent="CONSENT COOKIES DELETED")})},5)});function da(b){setTimeout(function(){"function"==typeof ai\_process\_rotations\_in\_element&&ai\_process\_rotations\_in\_element(b);"function"==typeof ai\_process\_lists&&ai\_process\_lists();"function"==typeof ai\_process\_ip\_addresses&&ai\_process\_ip\_addresses();"function"==typeof ai\_process\_filter\_hooks&& ai\_process\_filter\_hooks();"function"==typeof ai\_adb\_process\_blocks&&ai\_adb\_process\_blocks(b);"function"==typeof ai\_process\_impressions&&1==ai\_tracking\_finished&&ai\_process\_impressions();"function"==typeof ai\_install\_click\_trackers&&1==ai\_tracking\_finished&&ai\_install\_click\_trackers();"function"==typeof ai\_install\_close\_buttons&&ai\_install\_close\_buttons(document)},5)}function ia(b){var e=b?b.split("?")\[1\]:window.location.search.slice(1);b={};if(e){e=e.split("#")\[0\];e=e.split("&");for(var p=0;p{a.classList.remove("ai-ip-data")});var g=!1;if(""!=ai\_ip\_data){try{var l=JSON.parse(ai\_ip\_data),f=l\[0\],r=l\[1\],p=l\[2\],q=l\[3\]}catch(a){return}var t=!1;-1!=f.indexOf("#")&&(t=!0, f=f.replace("#",""));var e="";t&&(e="CFP BLOCKED, ");e=e+f+", "+r;null!=p&&null!=q&&(e=e+":"+p+":"+q);null==p&&(p="");null==q&&(q="");null!=l&&b.forEach((a,c)=>{c=a.closest("div."+ai\_block\_class\_def);g=!0;if(a.hasAttribute("ip-addresses")){var h=a.getAttribute("ip-addresses").split(","),m=a.getAttribute("ip-address-list"),k=!1;h.every((d,n)=>{if("\*"==d.charAt(0))if("\*"==d.charAt(d.length-1)){if(d=d.substr(1,d.length-2),-1!=f.indexOf(d))return k=!0,!1}else{if(d=d.substr(1),f.substr(-d.length)==d)return k= !0,!1}else if("\*"==d.charAt(d.length-1)){if(d=d.substr(0,d.length-1),0==f.indexOf(d))return k=!0,!1}else if("#"==d){if(""==f)return k=!0,!1}else if("CFP"==d.toUpperCase()){if(t)return k=!0,!1}else if(d==f)return k=!0,!1;return!0});switch(m){case "B":k&&(g=!1);break;case "W":k||(g=!1)}}if(g&&a.hasAttribute("countries"))switch(h=a.getAttribute("countries").split(","),m=a.getAttribute("country-list"),k=!1,h.every((d,n)=>{n=d.trim().split(":");if(null==n\[1\]||""==p)n\[1\]="";if(null==n\[2\]||""==q)n\[2\]=""; d=n.join(":").toUpperCase();n=(r+":"+(""==n\[1\]?"":p)+":"+(""==n\[2\]?"":q)).toUpperCase();return d==n?(k=!0,!1):!0}),m){case "B":k&&(g=!1);break;case "W":k||(g=!1)}a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";for(h=a.previousElementSibling;h&&!h.matches(".ai-debug-bar");)h=h.previousElementSibling;null!=h&&(m=h.querySelector(".ai-debug-name.ai-ip-country"),null!=m&&(m.textContent=e),m=h.querySelector(".ai-debug-name.ai-ip-status"),null!=m&&(m.textContent= g?ai\_front.visible:ai\_front.hidden));if(g){if(null!=c&&(c.style.visibility="",c.classList.contains("ai-remove-position")&&(c.style.position="")),a.hasAttribute("data-code")){h=b64d(a.dataset.code);m=document.createRange();var w=!0;try{var x=m.createContextualFragment(h)}catch(d){w=!1}w&&(null!=a.closest("head")?(a.parentNode.insertBefore(x,a.nextSibling),a.remove()):a.append(x));a.removeAttribute("data-code");z(a)}}else a.style.display="none",null!=c&&(c.removeAttribute("data-ai"),c.classList.remove("ai-track"), null!=c.querySelector(".ai-debug-block")?(c.style.visibility="",c.classList.remove("ai-close"),c.classList.contains("ai-remove-position")&&(c.style.position=""),a.hasAttribute("data-code")&&(c.classList.remove("ai-list-block"),c.classList.remove("ai-list-block-filter"),null!=c.previousElementSibling&&c.previousElementSibling.classList.contains("ai-debug-info")&&c.previousElementSibling.remove())):c.hasAttribute("style")&&-1==c.getAttribute("style").indexOf("height:")&&(c.style.display="none"));null!= c&&c.classList.remove("ai-list-block-ip")})}}ai\_process\_ip\_addresses=function(b){if(null==b)b=document.querySelectorAll("div.ai-ip-data, meta.ai-ip-data");else{window.jQuery&&window.jQuery.fn&&b instanceof jQuery&&(b=Array.prototype.slice.call(b));var g=\[\];b.forEach((e,a)=>{e.matches(".ai-ip-data")?g.push(e):(e=e.querySelectorAll(".ai-ip-data"),e.length&&e.forEach((c,h)=>{g.push(c)}))});b=g}if(b.length)if("undefined"!=typeof ai\_ip\_data)v(b);else if("undefined"==typeof ai\_ip\_data\_requested){ai\_ip\_data\_requested= !0;var l=ai\_ajax\_url+"?action=ai\_ajax&ip-data=ip-address-country-city",f=u("ai-debug-ip-address");null!=f&&(l+="&ai-debug-ip-address="+f);f=u("ai-debug-country");null!=f&&(l+="&ai-debug-country="+f);f={ai\_check:ai\_data\_id,version:y()};var r=\[\],p;for(p in f){var q=encodeURIComponent(p),t=encodeURIComponent(f\[p\]);r.push(q+"="+t)}r=r.join("&");(async function(){return await (await fetch(l,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:r})).text()})().then(e=> {ai\_ip\_data=e;if(""==e){var a="Ajax request returned empty data, geo-targeting disabled";console.error(a);"undefined"!=typeof ai\_js\_errors&&ai\_js\_errors.push(\[a,l,0\])}else try{JSON.parse(e)}catch(c){a="Ajax call returned invalid data, geo-targeting disabled",console.error(a,e),"undefined"!=typeof ai\_js\_errors&&ai\_js\_errors.push(\[a,l,0\])}b=document.querySelectorAll("div.ai-ip-data, meta.ai-ip-data");b.length&&v(b)}).catch(e=>{document.querySelectorAll("div.ai-ip-data").forEach((a,c)=>{a.style.display= "none";a.style.visibility="";a.style.position="";a.style.width="";a.style.height="";a.style.zIndex="";a.classList.remove("ai-ip-data")})})}};(function(b){"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?b():document.addEventListener("DOMContentLoaded",b)})(function(){setTimeout(function(){ai\_process\_ip\_addresses()},5)});function z(b){setTimeout(function(){"function"==typeof ai\_process\_rotations\_in\_element&&ai\_process\_rotations\_in\_element(b);"function"== typeof ai\_process\_lists&&ai\_process\_lists();"function"==typeof ai\_process\_ip\_addresses&&ai\_process\_ip\_addresses();"function"==typeof ai\_process\_filter\_hooks&&ai\_process\_filter\_hooks();"function"==typeof ai\_adb\_process\_blocks&&ai\_adb\_process\_blocks(b);"function"==typeof ai\_process\_impressions&&1==ai\_tracking\_finished&&ai\_process\_impressions();"function"==typeof ai\_install\_click\_trackers&&1==ai\_tracking\_finished&&ai\_install\_click\_trackers();"function"==typeof ai\_install\_close\_buttons&&ai\_install\_close\_buttons(document)}, 5)}}; ai\_js\_code = true;
×