CINXE.COM
RcodeZero - Home
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>RcodeZero - Home</title> <link rel="stylesheet" href="/css/tailwind.css?id=a995f08173175a4e0b64ef03df72ee7e"> <link rel="stylesheet" href="/css/app.css?id=55ef07db065a13abd4b152a98ebe2ee3"> <link rel="stylesheet" href="/css/splide.min.css?id=04a712a8602d63c25284d88f84ca24b0"> <link rel="icon" type="image/x-icon" href="https://www.rcodezero.at/favicon.ico"> <!-- Matomo Tag Manager --> <script> var _mtm = window._mtm = window._mtm || []; _mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'}); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src='https://stat.tld-box.at/js/container_AIIggaa2.js'; s.parentNode.insertBefore(g,s); </script> <!-- End Matomo Tag Manager --> <style >.cc-window,.cc-window *{scrollbar-width:none;-webkit-text-size-adjust:100%;-ms-overflow-style:none;-webkit-appearance:initial;-webkit-backdrop-filter:initial;-webkit-backface-visibility:initial;-webkit-background-clip:initial;-webkit-background-composite:initial;-webkit-background-origin:initial;-webkit-background-size:initial;-webkit-border-fit:initial;-webkit-border-horizontal-spacing:initial;-webkit-border-image:initial;-webkit-border-vertical-spacing:initial;-webkit-box-align:initial;-webkit-box-decoration-break:initial;-webkit-box-direction:initial;-webkit-box-flex:initial;-webkit-box-flex-group:initial;-webkit-box-lines:initial;-webkit-box-ordinal-group:initial;-webkit-box-orient:initial;-webkit-box-pack:initial;-webkit-box-reflect:initial;-webkit-box-shadow:initial;-webkit-clip-path:initial;-webkit-column-axis:initial;-webkit-column-progression:initial;-webkit-cursor-visibility:initial;-webkit-font-kerning:initial;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-hyphenate-character:initial;-webkit-hyphenate-limit-after:initial;-webkit-hyphenate-limit-before:initial;-webkit-hyphenate-limit-lines:initial;-webkit-hyphens:initial;-webkit-initial-letter:initial;-webkit-line-align:initial;-webkit-line-box-contain:initial;-webkit-line-clamp:initial;-webkit-line-grid:initial;-webkit-line-snap:initial;-webkit-locale:initial;-webkit-margin-after-collapse:initial;-webkit-margin-before-collapse:initial;-webkit-marquee-direction:initial;-webkit-marquee-increment:initial;-webkit-marquee-repetition:initial;-webkit-marquee-style:initial;-webkit-mask-box-image:initial;-webkit-mask-box-image-outset:initial;-webkit-mask-box-image-repeat:initial;-webkit-mask-box-image-slice:initial;-webkit-mask-box-image-source:initial;-webkit-mask-box-image-width:initial;-webkit-mask-clip:initial;-webkit-mask-composite:initial;-webkit-mask-image:initial;-webkit-mask-origin:initial;-webkit-mask-size:initial;-webkit-mask-source-type:initial;-webkit-nbsp-mode:initial;-webkit-print-color-adjust:initial;-webkit-rtl-ordering:initial;-webkit-text-combine:initial;-webkit-text-decorations-in-effect:initial;-webkit-text-emphasis-color:initial;-webkit-text-emphasis-position:initial;-webkit-text-emphasis-style:initial;-webkit-text-fill-color:initial;-webkit-text-orientation:initial;-webkit-text-security:initial;-webkit-text-stroke-color:initial;-webkit-text-stroke-width:initial;-webkit-text-zoom:initial;-webkit-transform-style:initial;-webkit-user-drag:initial;-webkit-user-modify:initial;-webkit-user-select:initial;-webkit-box-sizing:unset;box-sizing:unset;overflow-wrap:normal;word-wrap:normal}.cc-window::-webkit-scrollbar{display:none}.cc-window ::-webkit-scrollbar{display:none}.cc-window svg{vertical-align:unset}.cc-window td,.cc-window th{border-width:0;letter-spacing:0;text-transform:none}.cc-window tr td:first-child,.cc-window tr th:first-child{border-left-width:0}.cc-window tr:first-child td,.cc-window tr:first-child th{border-top-width:0}.cc-window label{line-height:unset}.cc-window ul li::before{content:none;padding:0;color:unset;background-color:unset}.cc-window ul li{padding:0}.cc-window a{text-decoration:none;border:0 solid transparent;font-family:initial;letter-spacing:initial;outline:initial;text-indent:initial;-webkit-transition:none;transition:none;text-transform:initial}.cc-window hr{height:auto}.cc-window{text-align:left;color:initial}.cc-window a:not(.cc-btn){display:inline} .cc-window.cc-banner,.cc-window.cc-floating{-webkit-box-orient:vertical;-webkit-box-direction:normal}.cc-link,.cc-revoke:hover{text-decoration:underline}.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:1999999999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-ms-flex-direction:column;flex-direction:column}.cc-revoke{padding:.5em}.cc-hide-revoke{display:none!important}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;text-align:center;white-space:normal}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1} .cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:justify;align-content:space-between;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1} .dr-checkmark,.dr-checkmark>span{border-style:solid;position:absolute}.cc-window div,.cc-window li,.cc-window p,.cc-window span{font-style:normal;font-variant:normal;font-weight:400}.cc-window .dr-show-scrollbar{scrollbar-width:auto}.cc-window .dr-show-scrollbar::-webkit-scrollbar{display:block;-webkit-appearance:none;width:7px}.cc-window .dr-flex-centered,.cc-window .dr-flex-spacebetween{display:-webkit-box;display:-ms-flexbox;-webkit-box-orient:horizontal;-webkit-box-direction:normal}.cc-window .dr-show-scrollbar::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(0,0,0,.5);-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}.cc-window .dr-flex-spacebetween{display:flex;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-ms-flex-line-pack:start;align-content:flex-start}.cc-window .dr-flex-centered{display:flex;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-line-pack:center;align-content:center}.cc-window .dr-flex-centered a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-window div.label.dr-category-switch-control span,.cc-window label.dr-category-switch-control span{display:inline-block;width:auto;vertical-align:initial;line-height:initial;white-space:initial}.cc-window li.dr-overview-category-item label.dr-category-overview span.dr-category-overview-text{display:inline-block;width:auto;vertical-align:initial;line-height:unset;white-space:initial}.cc-window .ez-checkbox{display:none}.cc-window li.dr-category-switch span.dr-category-switch-control-slider-before{width:26px}.cc-window .cc-compliance .cc-btn{margin-left:1em}.cc-window .cc-compliance.dr-flex-centered .cc-btn{margin-left:0;margin-right:1em}.cc-window .cc-compliance-nocategory .cc-btn{margin-left:0}.cc-window #dr-categorybanner-btn-show-more-desktop{padding-left:0!important}.dr-category-switch>.dr-category-switch-control>.dr-category-switch-control-slider>.dr-category-switch-off,.dr-category-switch>.dr-category-switch-control>.dr-category-switch-control-slider>.dr-category-switch-on{font-family:Helvetica,Calibri,Arial,sans-serif;font-size:11px;font-weight:400;overflow-wrap:normal;word-wrap:normal}.cc-window div ul li.dr-category-headline,.cc-window ul li .dr-headline-cookie{line-height:initial}.cc-compliance-nocategory{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-ms-flex-line-pack:justify;align-content:space-between;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden}.cc-compliance-nocategory>.cc-btn{-webkit-box-flex:0;-ms-flex:none;flex:none}.dr-invisible-element{display:none}.dr-open-arrow,.dr-open-arrow-small{display:inline-block;border-top-style:solid;border-right-style:solid;margin-right:.3em;margin-bottom:1px}.dr-open-arrow{width:7px;height:7px;border-top-width:2px;border-right-width:2px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:.4s;transition:.4s}.dr-insert-content{width:100%;text-align:center;padding-bottom:.5em}.dr-open-arrow-small{width:6px;height:6px;border-top-width:1px;border-right-width:1px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transition:.4s;transition:.4s}@supports not (-ms-high-contrast:none){.dr-open-arrow-status-open{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.dr-category-switch>.dr-category-switch-control>.dr-category-switch-control-slider>.dr-category-switch-off,.dr-category-switch>.dr-category-switch-control>.dr-category-switch-control-slider>.dr-category-switch-on{height:12px;direction:ltr}}.dr-category-overview{display:block;position:relative;padding-left:35px;margin-bottom:12px;cursor:pointer;font-size:16px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dr-tab-category-morelink{display:block;text-decoration:none}.dr-imprintlink,.dr-privacylink{text-decoration:none}.dr-category-overview input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.dr-checkmark{top:0;left:0;height:25px;width:25px;border-width:2px}.dr-category-overview:hover input~.dr-checkmark{-webkit-filter:brightness(120%);filter:brightness(120%)}.dr-checkmark>span{display:none;left:7px;top:3px;width:7px;height:13px;border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.dr-category-overview input:checked~.dr-checkmark>span,.dr-checkmark-active-readonly>span,.dr-logo-poweredBy,.dr-overview-list{display:block}.dr-checkmark-active-readonly{opacity:.3;filter:alpha(opacity=30);-moz-opacity:.3}.dr-category-switch-control{position:relative;display:inline-block;width:60px;height:24px}.dr-category-switch-control input{opacity:0;width:0;height:0}.dr-category-switch-control-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;-webkit-transition:.4s;transition:.4s}.dr-category-switch-control-slider-readonly{cursor:initial;opacity:.4;filter:alpha(opacity=40);-moz-opacity:.4}.dr-category-switch-control-slider-before{position:absolute;content:"";height:16px;width:26px;left:4px;bottom:4px;-webkit-transition:.4s;transition:.4s;z-index:2;cursor:pointer}.dr-category-switch-off,.dr-category-switch-on{font-size:11px;padding-top:7px;overflow:hidden;line-height:12px;height:24px}input:checked+.dr-category-switch-control-slider-before{-webkit-transform:translateX(26px);transform:translateX(26px)}.dr-category-switch-control-slider-before-always-on{-webkit-transform:translateX(26px);transform:translateX(26px);cursor:initial}.dr-category-switch-on{float:left;padding-left:6px;width:25px}.dr-category-switch-off{float:right;padding-right:6px;width:30px}.dr-btn-show-more{position:absolute;left:1em;text-decoration:none}.dr-btn-show-more-nocat{text-decoration:none}[dir=rtl] .dr-btn-show-more{position:absolute;left:unset;right:1em;text-decoration:none}.dr-btn-show-more>span,.dr-btn-show-more>span:active{text-decoration:none}.dr-btn-show-more-mobile{text-decoration:none;font-weight:700}.dr-noborder-allow,.dr-noborder-deny{margin:2px;border-width:0}.dr-sharpcorners,.dr-sharpcorners-big,.dr-sharpcorners-left,.dr-sharpcorners-right{border-radius:0!important;-moz-border-radius:0!important;-webkit-border-radius:0!important}.dr-btn-flatshadow,.dr-btn-flatshadow:hover,.dr-flatshadow{-webkit-box-shadow:none!important;box-shadow:none!important}.dr-logo-poweredBy{width:3em;margin-top:1em;filter:alpha(opacity=30);-moz-opacity:.3;opacity:.3}.dr-logo-poweredBy:hover{filter:alpha(opacity=80);-moz-opacity:.8;opacity:.8}.dr-overview-list{list-style:none;margin:0;padding:0;position:relative;float:left;width:100%}.dr-overview-svg-size{padding:.2em .25em 0 .15em!important}.dr-overview-svg-size svg{width:1.5em;padding:0;margin:0}.dr-overview-category-item,.dr-overview-item{height:36px;line-height:30px;font-size:15px;margin-right:10px;display:inline-block;cursor:pointer;position:relative}.dr-overview-svg-text{position:relative;padding-bottom:.3em;top:-.5em;padding-left:.5em}.dr-overview-category-item{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;overflow:visible}.dr-overview-item{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;overflow:hidden;font-weight:700!important}.dr-overview-item span.dr-icon,.dr-overview-item span.dr-title{display:block;position:relative;line-height:40px;padding:0 10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dr-overview-item span.dr-left{float:left}.dr-overview-item span.dr-right{float:right}.dr-overview-item span.dr-icon{font-size:20px;min-width:36px;min-height:36px;text-align:center;font-weight:700}.dr-overview-item span.dr-icon svg{width:28px;height:28px;margin-top:4px}.dr-show-mobile{display:none!important}.dr-overview-item:hover{-webkit-filter:brightness(110%);filter:brightness(110%)}.dr-overview-item-inactive span.dr-icon{opacity:.5;-webkit-filter:grayscale(.8);filter:grayscale(.8)}.dr-descriptiontext{font-size:12px;max-height:200px;overflow-y:auto}.dr-overview-item-inactive span.dr-title{opacity:.8;-webkit-filter:grayscale(.8);filter:grayscale(.8)}.dr-overview-item-about-cookies{display:inline-block;padding:.4em .5em .5em;text-align:center;margin:0 0 0 .3em;height:1.5em;width:1.5em}.dr-overview-item-privacy{display:inline-block;padding:.4em .4em .4em .1em;text-align:center;margin:0 0 0 .5em;height:1.5em;width:1.7em}.dr-overview-item-privacy svg{height:1.5em;width:1.7em}.dr-tab-category-details{overflow:scroll;float:left;padding:1em;margin:1em 0 0;position:relative;display:none;max-height:20em}.dr-tab-category-content{list-style:none;margin:0;padding:0;display:block;width:100%;scrollbar-width:none}.dr-tab-category-button,.dr-tab-category-text{padding:.2em 0 0;float:left;scrollbar-width:none}.dr-tab-category-text{margin:0;display:block;font-size:.8em;line-height:1.3;width:100%}.dr-tab-category-button{margin:0 0 1em}.dr-tab-category-text>span{padding-right:100px;display:block}.dr-tab-category-morelink{float:right}.dr-category-separator{clear:both;display:block;width:100%}.cc-window .dr-category-separator>hr{margin:0 0 .5em;padding:.2em 0 0;background:0 0;opacity:.2;-moz-opacity:.2;-webkit-opacity:.2;filter:alpha(opacity=20);border-width:0 0 1px;border-style:solid}.cc-window #dr_webcareCmpLink{display:none;width:100%;padding-top:1em;text-align:center}.cc-window #dr_webcareCmpLink,.cc-window #dr_webcareCmpLink a{font-family:"Courier New",monospace;font-size:12px}.dr-category-headline{clear:both;float:left;width:50%}.dr-category-switch{float:right;width:50%;text-align:right}.dr-tab-details{width:100%;overflow:hidden;float:left;padding:0;margin:0;position:relative;display:block;height:0;opacity:0;-webkit-transition:height 250ms,opacity 1.25s;transition:height 250ms,opacity 1.25s}.dr-tab-details-active{min-height:4em;max-height:10em;display:block;margin-bottom:2em;padding:.5em;height:auto;opacity:1;-webkit-transition:height 250ms,opacity 250ms;transition:height 250ms,opacity 250ms}.dr-tab-details-content{list-style:none;overflow:hidden;margin:0;padding:0;display:block;width:100%;scrollbar-width:none}.dr-tab-details-full-text,.dr-tab-details-text{margin:0;padding:1em;display:block;overflow:scroll;max-height:10em;font-size:.8em;scrollbar-width:none;line-height:1.3}.dr-tab-details-text{width:30%;float:left}.dr-tab-details-full-text{width:95%;float:left}.dr_oneline-banner,.dr_pre-banner{display:none;width:100%}.dr-cut-line,.dr-cut-line span{overflow:hidden;max-height:1em;text-overflow:ellipsis;white-space:nowrap}.cc-window .dr-linebreak-anywhere,.cc-window .dr-linebreak-anywhere span{word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;white-space:initial!important}.cc-window #dr_pre-banner .dr-select-center-container{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-window #dr_pre-banner .dr-select-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-line-pack:stretch;align-content:stretch;padding-bottom:1em;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.cc-window #dr_pre-banner .dr-select-container select{-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none;margin:0 0 1em;outline:0;cursor:pointer;-moz-padding-start:calc(10px - 3px);box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;width:auto;line-height:1.3;background-repeat:no-repeat,repeat;background-position:right .7em top 50%,0 0;background-size:.65em auto,100%;height:auto;background-origin:border-box;padding:.5em 2em .5em 1em}.cc-window #dr_pre-banner .dr-select-container select option{font-weight:400;line-height:1.3}.cc-window #dr_pre-banner .dr-select-container select::-ms-expand{display:none}.cc-window #dr_pre-banner .dr-select-container select:focus::-ms-value{background-color:transparent}.cc-banner .cc-pre-allow{visibility:hidden}#dr_mobilePreviewCookie{width:1.6em;height:1.6em;display:inline!important;enable-background:new 0 0 50 50;pointer-events:none}.dr_ol-button{width:2em;height:2em;display:block;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0;padding:0!important;border-width:0!important;background-color:transparent!important;cursor:pointer}.dr_ol-button:hover{filter:alpha(opacity=70);-moz-opacity:.7;opacity:.7;background-color:rgba(.5,.5,.5,.2)}.dr_ol-left-buttons{float:left;width:18%;position:relative}.dr_ol-left-buttons-alt{float:left;width:40%;position:relative;display:none}.dr_ol-right-buttons{float:right;width:19%;position:relative}.dr_ol-line{float:left;text-align:left;width:60%;min-height:2em;position:relative;line-height:2em;font-size:14px}.dr_ol-details{float:left;margin-right:1em}.dr_ol-powered{float:right;filter:alpha(opacity=30);-moz-opacity:.3;opacity:.3}.dr_ol-imprintLink,.dr_ol-privacyLink{float:left;margin-left:.5em!important;filter:alpha(opacity=30);-moz-opacity:.3;opacity:.3}.dr_ol-deny{float:right;margin-left:1em!important}.dr_ol-allow{float:right;margin-left:.5em!important;padding:2px;-webkit-box-shadow:none!important;box-shadow:none!important}.dr_ol-allow-svg-bg{x:0;y:0;cx:0;cy:0;rx:0;ry:0;r:0}.dr-cookietext{margin-bottom:1em}.dr-headline{font-size:1em;margin-bottom:.5rem!important;font-weight:700;padding-right:0}.dr-cookietext p,.dr-details p{font-size:12px;line-height:1.3}.dr-headline-cookie{margin:0 0 .5rem!important;padding-right:2em}.dr-details p{white-space:pre-wrap}.dr-details{display:none}.dr_poweredBy{position:absolute;left:auto;width:3em;right:.7em;top:.7em;font-size:8pt;filter:alpha(opacity=50);-moz-opacity:.5;opacity:.5}.dr_poweredBySmall{width:2.5em}div.cc-window.cc-middle{width:90%;left:5%;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);padding-top:2em!important;padding-bottom:1.6em!important}div.cc-window.cc-middle.cc-banner-small{width:650px;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}div.cc-window.cc-banner-small .cc-btn{white-space:normal} .dr-category-table thead,.dr-tab-details-table thead{border:0;background-color:transparent}.dr-category-table,.dr-tab-details-table{display:block;overflow:scroll;font-size:.8em;line-height:1.3;font-weight:lighter;scrollbar-width:none;margin:0}.cc-window tbody tr:nth-child(even),.dr-category-table table,.dr-category-table tbody,.dr-category-table thead,.dr-tab-details-table table,.dr-tab-details-table tbody,.dr-tab-details-table thead{background-color:transparent}.dr-category-table{width:100%;padding:0}.dr-category-table thead{padding:2em}.dr-category-table tbody{border-width:0!important}.dr-category-table table{border-width:0}.dr-tab-details-table{padding:0 1em 1em;max-height:10em;width:60%;float:right}.dr-detail-tabledata td,.dr-tableheader-cell{font-size:1em;text-align:left!important;font-weight:400}.dr-tableheader-cell{position:sticky;top:0;margin:0;line-height:normal!important;padding:.5em 1em}.dr-detail-tabledata td{line-height:1.2;max-height:1.5em;padding:.5em 1em .2em}.dr-tab-details-table thead{padding:2em}.dr-tab-details-table tbody{border-width:0!important}.dr-tab-details-table table{table-layout:fixed;width:100%;border-width:0}.dr-tableheader-name{width:25%}.dr-tableheader-provider{width:20%}.dr-tableheader-domain{width:30%}.dr-tableheader-valid{width:15%}.dr-detail-tabledata td{padding-top:.5em}.dr-cookie-purpose,.dr-detail-tabledata-addon{padding-top:0!important}.dr-cookie-name{font-weight:700}@media only screen and (max-width:990px){.dr-tab-details-table{width:92%;overflow:visible;padding:1em;display:block;float:none}.dr-tableheader-cell{position:relative}}@media only screen and (max-width:720px){.dr-cookie-purpose,.dr-tab-details-full-text{width:90%}.dr-category-table thead,.dr-tab-details-table thead{display:none}.dr-category-table td::before,.dr-tab-details-table td::before{content:attr(data-label);word-wrap:break-word;overflow:hidden;min-width:8em;float:left;font-weight:700;text-align:right}.dr-cookie-purpose::before{padding-top:0}.dr-detail-tabledata td{max-height:initial}.dr-tab-details-table tr{float:left;width:100%;margin-bottom:1em}.dr-tab-details-table td{float:left;width:95%;padding:.1em 1em .4em;-webkit-column-span:1;-moz-column-span:1;column-span:1}.dr-tab-details-table td::before{width:25%;padding:1em;margin:-1em 1em -1em -1em}.dr-category-table tr{float:left;width:100%;margin-bottom:1em}.dr-category-table td{float:left;width:95%;padding:.1em 1em .4em;-webkit-column-span:1;-moz-column-span:1;column-span:1}.dr-category-table td::before{width:25%;padding:1em;margin:-1em 1em -1em -1em}} .dr-category-switch-on{width:20px}.dr-category-switch-off{width:20px;padding-top:7px;padding-right:8px} @media only screen and (min-width:1200px){div.cc-window.cc-middle{width:1024px;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}div.cc-window.cc-banner-small{width:650px;left:50%;top:50%;-webkit-transform:translateY(-50%) translateX(-50%);transform:translateY(-50%) translateX(-50%)}}@media only screen and (max-width:990px){.cc-window ul li.dr-tab-details-text{width:90%!important;overflow:visible;padding:1em;margin:0;display:block;float:none}.dr-tab-details{overflow:scroll;width:auto!important}.dr-tab-details-content{overflow:auto!important}}@media only screen and (max-width:780px){.cc-window .dr_ol-right-buttons{float:right;width:59%;padding-top:1.5em;padding-bottom:.5em}.cc-window .dr_ol-left-buttons{display:none}.cc-window .dr_ol-left-buttons-alt{padding-top:1.5em;padding-bottom:.5em;display:block}.cc-window .dr_ol-line{line-height:normal;width:100%;float:none}.cc-window .dr_ol-vertical-center{top:30%}div.cc-window.cc-middle{width:100%;left:0;border-radius:0;padding-bottom:0!important}div.cc-window.cc-middle.cc-banner-small{width:96%;left:2%;border-radius:0;padding-bottom:0!important;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.cc-window .dr-overview-category-item,.cc-window .dr-overview-item{width:48%;margin-right:0}.cc-window .dr-overview-item span.dr-right{float:left;max-width:50%;font-size:14px}.cc-window .dr-overview-item-active{width:100%}.cc-window .dr-overview-item-inactive{display:none}.cc-window .dr-show-mobile{display:inline-block!important}.cc-window .dr-hide-on-mobile{display:none}.cc-compliance,.cc-compliance-nocategory{margin-bottom:.5em}.dr-tab-category-details{overflow:scroll;max-height:10em;margin-top:0;margin-bottom:2em}.cc-window .cc-compliance .cc-btn{margin-left:0!important}}@media only screen and (max-width:620px){.cc-window .dr-overview-item span.dr-right{float:left;max-width:40%;font-size:12px}.cc-window .dr-tab-category-text>span{padding-right:0}.cc-window .dr-tab-category-text{padding-top:.4em}}@media only screen and (max-width:779px){.cc-window .cc-compliance,.cc-window .cc-compliance-nocategory{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.cc-window .cc-compliance-nocategory.dr-infobanner-btnrow .cc-btn{width:calc(100% - 4px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window .cc-compliance .cc-btn,.cc-window .cc-compliance-nocategory .cc-btn{width:100%;margin-left:0;margin-right:0;padding-left:0;padding-right:0}}@media only screen and (max-height:765px){.dr-hide-on-detail-hide{display:none!important}}@media only screen and (max-height:539px){.cc-window .dr-descriptiontext{width:100%!important;max-height:100px}.cc-window .dr-tab-category-details{overflow:scroll;max-height:10em}.cc-window .dr-insert-content{display:none}}@media only screen and (max-height:420px){.cc-window .dr-descriptiontext{max-height:50px}.cc-window .dr-tab-category-details{overflow:scroll;max-height:5em}}@media only screen and (max-height:370px){.cc-window .dr-headline{max-height:26px;overflow-y:auto}.cc-window .dr-descriptiontext{max-height:30px}.cc-window .dr-tab-category-details{overflow:scroll;max-height:4em}.cc-window .dr-tab-details-active{max-height:5em}}@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:639px){.dr-overview{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.dr-overview-section{border-right-width:1px;width:80%;margin-top:2px}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-revoke.cc-bottom{left:0!important;border-top-left-radius:0!important}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}} .cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block} .cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em 2em 1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0} .cc-window .dr-tab-category-details { background-color: #ededed; } .cc-window .dr-category-headline { color: #004477 !important; } .cc-window .dr-checkmark { border-color: #000000; background-color: #fafafa; } .cc-window .dr-checkmark > span { border-color: #000000; } .cc-window .dr-category-switch-control-slider { border-color: #000000; background-color: #000000; } .cc-window .dr-category-switch-control-slider-before { background-color: #ededed; } /* Color the detail switch changes to when active */ .cc-window input:checked ~ .dr-category-switch-control-slider { background-color: #000000; } .cc-window .dr-tab-category-text > span { color: #000000; } .cc-window .dr-tab-category-morelink, .cc-window .dr-tab-category-morelink:hover, .cc-window .dr-tab-category-morelink:visited, .cc-window .dr-tab-category-morelink:active { color: #004477 !important; } .cc-window .dr-privacylink, .cc-window .dr-privacylink:hover, .cc-window .dr-privacylink:visited, .cc-window .dr-privacylink:active { color: #004477 !important; } .cc-window .dr-imprintlink, .cc-window .dr-imprintlink:hover, .cc-window .dr-imprintlink:visited, .cc-window .dr-imprintlink:active { color: #004477 !important; } a.dr-privacylink + a.dr-imprintlink:before { content: ' | '; color: #000000; } .cc-window .dr-btn-show-more, .cc-window .dr-btn-show-more:visited, .cc-window .dr-btn-show-more:hover, .cc-window .dr-btn-show-more:active { color: #004477 !important; } .cc-window .dr-btn-show-more-nocat, .cc-window .dr-btn-show-more-nocat:visited, .cc-window .dr-btn-show-more-nocat:hover, .cc-window .dr-btn-show-more-nocat:active { color: #004477 !important; } .cc-window .dr-btn-show-more-nocat > span { color: #004477; } .cc-window .dr-btn-show-more > span { color: #004477; } #dr_webcareCmpLink a { color: #004477; } #dr_webcareCmpLink { color: #000000; } .cc-window .dr-btn-show-more-mobile, .dr-btn-show-more-mobile:visited, .dr-btn-show-more-mobile:hover, .dr-btn-show-more-mobile:active { color: #004477; } .cc-window .dr-open-arrow { border-top-color: #004477; border-right-color: #004477; } .cc-window .dr-category-switch-on { color:#ededed; } .cc-window .dr-category-switch-off { color:#ededed; } .cc-window .dr-category-separator { border-color: #000000; } .cc-window .dr-overview-category-item { color: #000000; } .cc-window .dr-category-overview > span { color: #000000; } .cc-window .dr-roundcorners-big { border-radius:0px !important; -moz-border-radius:0px !important; -webkit-border-radius:0px !important; } .cc-window .dr-roundcorners { border-radius:0px !important; -moz-border-radius:0px !important; -webkit-border-radius:0px !important; } .cc-window .dr-roundcorners-left { border-radius:0px 0 0 0px !important; -moz-border-radius:0px 0 0 0px !important; -webkit-border-radius:0px 0 0 0px !important; } .cc-window .dr-roundcorners-right { border-radius:0 0px 0px 0 !important; -moz-border-radius:0 0px 0px 0 !important; -webkit-border-radius:0 0px 0px 0 !important; } .cc-window .dr-border-allow { border-width: 2px; border-style: solid; border-color: #fafafa; margin: 0; } .cc-window .dr-noborder-allow { border-width: 0px; border-style: solid; border-color: #fafafa; } .cc-window .dr-border-deny { border-width: 2px; border-style: solid; border-color: #949494; margin: 0; padding-left: 0.8em; margin-left: 0px; } .cc-window .dr-noborder-deny { border-width: 2px; border-style: solid; border-color: #949494; padding-left: 0.8em; margin-left: 0px; } .cc-window .dr-shadow { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); } .cc-window .dr-btn-shadow { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); } .cc-window .dr-btn-shadow:hover { box-shadow: 0 0 0.1em rgba(0.0, 0.0, 0.0, 0.5); } div.cc-window.cc-middle { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); border-radius: 0px; } div.cc-window.cc-middle.cc-banner-small { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); border-radius: 0px; } .cc-window.cc-top { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); } .cc-window.cc-bottom { box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); } .cc-window .dr-overview-item span.dr-icon{ background-color:#004477; color: #fafafa; } .cc-window .dr-overview-item span.dr-title{ background-color:#ededed; color: #000000; } .cc-window .dr-overview-privacy-svg { fill: #fafafa; } .cc-window .dr-overview-imprint-svg { fill: #fafafa; } .cc-window .dr-overview-about-cookie-svg { fill: #fafafa; } .cc-window .dr-overview-item { background-color: #ededed; color: #000000; } .cc-window .dr-overview-item-count { background-color: #004477; color: #ededed; } .cc-window .dr-overview-arrow-down { border-top: 0.5em solid #004477; } .cc-window .dr-overview-arrow-right { border-left: 0.5em solid #004477; } .cc-window .dr-tab-details { background-color: #ededed; } .cc-window .dr-tab-details-text { color: #000000; } .cc-window .dr-descriptiontext { color: #000000 !important; } .cc-window .dr-headline-cookie { color: #000000 !important; } .cc-window .dr-detail-tablecontainer { border: 1px solid #000000; background-color: #ededed; } .cc-window .dr-tableheader-cell { color:#000000; background-color:#f2f2f2; } .cc-window .dr-detail-tabledata td { border-bottom: #f2f2f2; color:#000000; background-color: #ededed; } .cc-window .dr-cookie-purpose { color: #000000 !important; } .cc-window .dr-cookie-name { color: #000000; } .cc-window.cc-color-override-datareporter { background-color: #fafafa; } .cc-revoke { background-color: #fafafa; color: #000000 !important; } .dr_mobilePreviewCookie_fill { fill: #000000 !important; } .cc-window .dr_ol-details-svg { fill: #004477 !important; } .cc-window .dr_ol-powered-svg { fill: #000000; } .cc-window .dr_ol-deny-svg { fill: #949494 !important; } .cc-window .dr_ol-allow-svg { fill: #fafafa !important; } .cc-window .dr_ol-allow-svg-bg { fill: #77bb22; } .cc-window .dr_ol-line { color: #000000; } .cc-window .dr-headline { color: #004477 !important; } .cc-window .dr-cookietext p { margin:0; margin-bottom:1em; color: #000000; } .cc-window .dr-overview-section { color: #000000; background-color: #ededed; border-left: 1px solid #000000; border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-right: 0px solid #000000; } .cc-window .dr-overview-section:hover { background-color: #000000; color: #ededed; } .cc-window .dr-overview-last { border-right: 1px solid #000000; } .cc-window .dr-overview-section i { border: solid #000000; border-width: 0 2px 2px 0; } .cc-window .dr-details p { color: #000000; } .cc-window .dr-detail-tablecontainer { border: 1px solid #000000; background-color: #ededed; } .cc-window .dr-details { } .cc-window .dr-details p { color: #000000; } .cc-window .dr-tableheader-cell { color:#000000; background-color:#f2f2f2; } .cc-window .dr-detail-tabledata td { border-bottom: #f2f2f2; color:#000000; background-color: #ededed; } .cc-banner .cc-deny, .cc-banner cc-deny:focus { color: #949494 !important; background-color: transparent; } .cc-banner .cc-deny:hover { text-decoration: underline; color: #949494 !important; background-color: transparent; border-color: #949494; -o-transition:.5s; -ms-transition:.5s; -moz-transition:.5s; -webkit-transition:.5s; transition:.5s; } .cc-banner .cc-details, .cc-banner cc-details:focus, cc-details:hover { color: #949494 !important; background-color: transparent; } .cc-banner .cc-details:hover { text-decoration: underline; color: #949494 !important; background-color: transparent; border-color: #949494; -o-transition:.5s; -ms-transition:.5s; -moz-transition:.5s; -webkit-transition:.5s; transition:.5s; } .cc-banner .cc-allow, .cc-banner .cc-allow:focus { color: #fafafa !important; background-color: #77bb22; border-color: #fafafa; -o-transition:.5s; -ms-transition:.5s; -moz-transition:.5s; -webkit-transition:.5s; transition:.5s; } .cc-banner .cc-allow:hover { color: #77bb22 !important; background-color: #fafafa; border-color: #77bb22; } /* Deny button (apply) in details */ .cc-banner .dr-tab-category-button .cc-deny, .cc-banner .dr-tab-category-button .cc-deny:focus { color: #fafafa !important; background-color: #77bb22; border-color: #fafafa; } .cc-banner .dr-tab-category-button .cc-deny:hover { color: #77bb22 !important; background-color: #fafafa; border-color: #77bb22; } .cc-banner .cc-allow:hover { text-decoration: underline; } .cc-banner .cc-pre-allow, .cc-banner .cc-pre-allow:focus { color: #fafafa !important; background-color: #77bb22; border-color: #fafafa; -o-transition:.5s; -ms-transition:.5s; -moz-transition:.5s; -webkit-transition:.5s; transition:.5s; } .cc-banner .cc-pre-allow:hover { color: #77bb22 !important; background-color: #fafafa; border-color: #77bb22; } .cc-banner .cc-pre-allow:hover { text-decoration: underline; } .cc-window .dr_privacy_statement_link { color: #004477 ; text-decoration: none !important; } .cc-window .dr_privacy_statement_link:visited { color: #004477 ; text-decoration: none !important; } .cc-window .dr_cookiedetails_link { color: #004477 ; text-decoration: none !important; } .cc-window .dr_poweredBy { color: #000000 ; text-decoration: none !important; } .cc-window .dr_poweredBy a { color: #004477 ; text-decoration: none !important; } .cc-window .dr_poweredBy a:visited { color: #004477 ; text-decoration: none !important; } .cc-window .dr-descriptiontext a, .cc-window .dr-descriptiontext a:visited { color: #004477 ; } #dr_pre-banner .dr-select-container select, #dr_pre-banner .dr-select-container select:focus { color: #000000; background-color: #ededed; background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'); } #dr_pre-banner .dr-select-container select:focus::-ms-value { color: #000000; background-color: #ededed; background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'); } #dr_pre-banner .dr-select-container select option { color: #000000; background-color: #ededed; } .cc-window .dr-cookietext { text-align: unset; } .cc-window .dr-headline-centered { text-align: center; padding-right: 0; } .cc-window .cc-allow { order: 30; } .cc-window .cc-deny { order: 10; } .cc-window .cc-details { order: 20; } .cc-window .dr-keyfocus { box-shadow: inset 0px 0px 0px 2px #fafafa , 0px 0px 0px 2px #77bb22 !important; border-radius:0px !important; } .cc-tag-placeholder { position: relative; background-color: #fafafa; border-radius:0px; -moz-border-radius:0px; -webkit-border-radius:0px; display: flex; flex-direction: column; justify-content: center; align-items: center; padding:1em; scrollbar-width: none; letter-spacing: initial; outline: initial; text-indent: initial; transition: none; text-transform: initial; letter-spacing: initial; outline: initial; text-indent: initial; } .cc-tag-placeholder-maps:after { content: ' '; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; opacity: 0.25; background-image: url('https://webcache-eu.datareporter.eu/images/placeholder/city_background.svg'); background-repeat: no-repeat; background-position: 50% 0; background-size: cover; z-index: 1; border-radius:0px; -moz-border-radius:0px; -webkit-border-radius:0px; } .cc-tag-placeholder-video:after { content: ' '; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; opacity: 0.15; background-image: url('https://webcache-eu.datareporter.eu/images/placeholder/video_background.svg'); background-repeat: no-repeat; background-position: 50% 0; background-size: contain; z-index: 1; border-radius:0px; -moz-border-radius:0px; -webkit-border-radius:0px; } .cc-tag-placeholder-calendar:after { content: ' '; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; opacity: 0.3; background-image: url('https://webcache-eu.datareporter.eu/images/placeholder/calendar_background.svg'); background-repeat: no-repeat; background-position: 50% 0; background-size: contain; z-index: 1; border-radius:0px; -moz-border-radius:0px; -webkit-border-radius:0px; } .cc-tag-placeholder .cc-tag-activate-btn, .cc-tag-placeholder .cc-tag-activate-btn:focus { color: #fafafa; background-color: #77bb22; border-color: #fafafa; font-family:Helvetica, Calibri, Arial, sans-serif; font-size: 0.9em; font-weight: bold; border-width: 0px; border-style: solid; border-color: #fafafa; border-radius:0px; -moz-border-radius:0px; -webkit-border-radius:0px; box-shadow: 0 0 0.5em rgba(0.0, 0.0, 0.0, 0.25); display: block; padding: 0.6em 1.0em; text-align: center; white-space: nowrap; line-height: initial; z-index: 10; margin: 0.5em; margin-bottom: 1em; cursor: pointer; -o-transition:.5s; -ms-transition:.5s; -moz-transition:.5s; -webkit-transition:.5s; transition:.5s; } .cc-tag-placeholder .cc-tag-activate-btn:hover { color: #77bb22 !important; background-color: #fafafa; border-color: #77bb22; } .cc-tag-placeholder .cc-tag-activate-btn:hover { text-decoration: underline; } .cc-tag-placeholder .cc-tag-info { display: block; font-family: Helvetica, Calibri, Arial, sans-serif; font-size: 9pt; font-weight: normal; color: #000000; z-index: 10; width: 100%; word-wrap: break-word; } .cc-tag-placeholder .cc-tag-info a, .cc-tag-placeholder .cc-tag-info a:hover, .cc-tag-placeholder .cc-tag-info a:visited, .cc-tag-placeholder .cc-tag-info a:active { font-family: Helvetica, Calibri, Arial, sans-serif; font-size: 10pt; font-weight: normal; color: #004477; text-decoration: underline; } .cc-window { opacity: 1; -webkit-transition: opacity 1s ease; -moz-transition: opacity 1s ease; -ms-transition: opacity 1s ease; -o-transition: opacity 1s ease; transition: opacity 1s ease; } .cc-window.cc-invisible { opacity: 0; } /* only animate ifhas class 'cc-animate' */ .cc-animate.cc-revoke { -webkit-transition: transform 1s ease; -moz-transition: transform 1s ease; -ms-transition: transform 1s ease; -o-transition: transform 1s ease; transition: transform 1s ease; } .cc-animate.cc-revoke.cc-top { transform: translateY(-2em); } .cc-animate.cc-revoke.cc-bottom { transform: translateY(2em); } .cc-animate.cc-revoke.cc-active.cc-top { transform: translateY(0); } .cc-animate.cc-revoke.cc-active.cc-bottom { transform: translateY(0); } .cc-revoke:hover { transform: translateY(0); } .cc-grower { /* Initially we don't want any height, and we want the contents to be hidden */ max-height: 0; overflow: hidden; /* Set our transitions up. */ -webkit-transition: max-height 1s; -moz-transition: max-height 1s; -ms-transition: max-height 1s; -o-transition: max-height 1s; transition: max-height 1s; } /* Font Face Declarations */ /* Default font definition */ .cc-window, .cc-revoke, .cc-window div, .cc-window p, .cc-window span, .cc-window li { font-family: Helvetica, Calibri, Arial, sans-serif; } /* Headlines (H) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window div p.dr-headline, .cc-window div ul li.dr-category-headline, .cc-window ul li .dr-headline-cookie, .cc-window div#dr_oneline-banner div.dr_ol-line { /*font-family: Helvetica, Calibri, Arial, sans-serif;*/ font-family: Helvetica, Calibri, Arial, sans-serif; } /* Normal texts + Table content (T) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window span .dr-descriptiontext, .cc-window p .dr-descriptiontext, .cc-window div .dr-descriptiontext, .cc-window .dr-descriptiontext span, .cc-window .dr-descriptiontext p, .cc-window .dr-descriptiontext div, .cc-window ul.dr-tab-details-content li, .cc-window ul.dr-tab-category-content li span, .cc-window .dr-detail-tabledata td span, .cc-window ul li table th, .cc-window div.dr-cookietext p.dr-descriptiontext a.dr-privacylink, .cc-window div.dr-cookietext p.dr-descriptiontext a.dr-imprintlink, .cc-window div.cc-compliance a.dr-btn-show-more span, .cc-window li.dr-tab-category-text a.dr-open-link-tech span, #dr_webcareCmpLink, #dr_webcareCmpLink a { font-family: Helvetica, Calibri, Arial, sans-serif; /*font-family: 'Dancing Script', cursive;*/ } /* Category Buttons (B) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window ul.dr-overview-list li span { font-family: Helvetica, Calibri, Arial, sans-serif; /*font-family: 'Dancing Script', cursive;*/ } /* Compliance Buttons (C) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window .cc-compliance a.cc-btn, .cc-window .cc-compliance-nocategory a.cc-btn, div.cc-revoke, .cc-window #dr_pre-banner .dr-select-container select, .cc-window #dr_pre-banner .dr-select-container .cc-pre-allow, .cc-window #dr_pre-banner .dr-select-container select option, .cc-banner .dr-tab-category-button .cc-deny { /*font-family: 'Indie Flower', cursive;*/ font-family:Helvetica, Calibri, Arial, sans-serif; } /* Cookie Banner Main headline (1) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window div p.dr-headline { font-size: 1em; font-weight: bold; } /* Normal multiline text (2) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window .dr-descriptiontext span, .cc-window div .dr-descriptiontext, .cc-window ul.dr-tab-category-content li span, .cc-window ul.dr-tab-details-content li, .cc-window .dr-cookie-purpose span, .cc-window div.cc-compliance a.dr-btn-show-more span, .cc-window .dr-detail-tabledata td span { font-size: 10pt; font-weight: normal; } /* Category Buttons (3) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window ul.dr-overview-list li span.dr-right, .cc-window ul.dr-overview-list li.dr-overview-category-item span { font-size: 1em; font-weight: normal; } /* Table Headlines (4) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window ul li table th, .dr-category-table td::before, .dr-tab-details-table td::before { font-size: 10pt; font-weight: bold; } /* Cookie Banner Cookie Text headline (5) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window ul li .dr-headline-cookie, .cc-window div ul li.dr-category-headline { font-size: 1em; font-weight: bold; } /* Compliance Button Cancel (6) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window .cc-compliance a.cc-deny, .cc-window .cc-compliance-nocategory a.cc-deny, .cc-window .cc-compliance a.cc-details, .cc-window .cc-compliance-nocategory a.cc-details{ font-size: 0.9em; font-weight: bold; } /* Compliance Button Allow (7) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window .cc-compliance a.cc-allow, .cc-window .cc-compliance-nocategory a.cc-allow, .cc-window #dr_pre-banner .dr-select-container select, .cc-window #dr_pre-banner .dr-select-container .cc-pre-allow, .cc-window #dr_pre-banner .dr-select-container select option, .cc-banner .dr-tab-category-button .cc-deny { font-size: 0.9em; font-weight: bold; } /* Cookie Category Counter (8) */ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window ul.dr-overview-list li span.dr-left { font-size: 20px; font-weight: bold; } /* Oneline Text line (9)*/ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ .cc-window div#dr_oneline-banner div.dr_ol-line { font-size: 1em; font-weight: bold; } /* Revoke Button text (10)*/ /* !!IMPORTANT: If you change any of those selectors, also change them in editor-cookie-fonts.html !! */ div.cc-revoke { font-size: 1em; font-weight: bold; } </style> </head> <body> <div x-data="{ mobileMenuOpen: false }" class="fixed inset-x-0 top-0 bg-white border-b-2 border-gray-100" style="z-index: 150;"> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="flex justify-between items-center py-3 md:justify-start md:space-x-6"> <a href="/en" class="flex"> <img class="h-8 w-auto sm:h-10" src="/img/rcodezerodns-product-logo.svg" alt="rcodezero" /> </a> <div class="-mr-2 -my-2 md:hidden"> <button @click="mobileMenuOpen = true" type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out" > <svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" /> </svg> </button> </div> <nav class="hidden md:flex space-x-6"> <div x-data="{ flyoutMenuOpen: false }" @click.away="flyoutMenuOpen = false" class="relative inline-flex"> <button type="button" @click="flyoutMenuOpen = !flyoutMenuOpen" x-state:on="Item active" x-state:off="Item inactive" :class="{ 'text-gray-900': flyoutMenuOpen, 'text-gray-500': !flyoutMenuOpen }" class="inline-flex items-center space-x-2 text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-150 text-gray-500" > <span>Products</span> <svg x-state:on="Item active" x-state:off="Item inactive" class="h-5 w-5 group-hover:text-gray-500 group-focus:text-gray-500 transition ease-in-out duration-150 text-gray-400" x-bind:class="{ 'text-gray-600': flyoutMenuOpen, 'text-gray-400': !flyoutMenuOpen }" viewBox="0 0 20 20" fill="currentColor"> <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path> </svg> </button> <div x-show="flyoutMenuOpen" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 translate-y-1" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-1" class="absolute left-1/2 top-1 transform -translate-x-1/2 mt-3 px-2 w-screen max-w-md sm:px-0" style="display: none;" > <div class="rounded-lg shadow-lg"> <div class="rounded-lg shadow-xs overflow-hidden"> <div class="z-20 relative grid gap-6 bg-white px-5 py-6 sm:gap-8 sm:p-8"> <a href="https://www.rcodezero.at/en/products/enterprise" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-building"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> ENTERPRISES </p> <p class="text-sm leading-5 text-gray-500"> Our STARTER, MEDIUM & LARGE products are available as a cost-effective solution for a small number of zones. </p> </div> </a> <a href="https://www.rcodezero.at/en/products/isp" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-server"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> ISP/REGISTRARS </p> <p class="text-sm leading-5 text-gray-500"> Choose from three different PRO products including 24/7 emergency hotline for highest security. </p> </div> </a> <a href="https://www.rcodezero.at/en/products/tld" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-globe"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> REGISTRIES </p> <p class="text-sm leading-5 text-gray-500"> Use our TLD product as secondary Anycast to your existing DNS infrastructure. </p> </div> </a> </div> </div> </div> </div> </div> <a href="https://www.rcodezero.at/en/references/all" class="inline-flex items-center text-base leading-6 font-medium text-gray-500 hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-150"> References </a> <div x-data="{ flyoutMenuOpen: false }" @click.away="flyoutMenuOpen = false" class="relative inline-flex"> <button type="button" @click="flyoutMenuOpen = !flyoutMenuOpen" x-state:on="Item active" x-state:off="Item inactive" :class="{ 'text-gray-900': flyoutMenuOpen, 'text-gray-500': !flyoutMenuOpen }" class="inline-flex items-center space-x-2 text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-150 text-gray-500" > <span>About us</span> <svg x-state:on="Item active" x-state:off="Item inactive" class="h-5 w-5 group-hover:text-gray-500 group-focus:text-gray-500 transition ease-in-out duration-150 text-gray-400" x-bind:class="{ 'text-gray-600': flyoutMenuOpen, 'text-gray-400': !flyoutMenuOpen }" viewBox="0 0 20 20" fill="currentColor"> <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path> </svg> </button> <div x-show="flyoutMenuOpen" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 translate-y-1" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-1" class="absolute left-1/2 top-1 transform -translate-x-1/2 mt-3 px-2 w-screen max-w-md sm:px-0" style="display: none;" > <div class="rounded-lg shadow-lg"> <div class="rounded-lg shadow-xs overflow-hidden"> <div class="z-20 relative grid gap-6 bg-white px-5 py-6 sm:gap-8 sm:p-8"> <a href="https://www.rcodezero.at/en/about-us/company" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-building"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> Company </p> <p class="text-sm leading-5 text-gray-500"> Information about ipcom. </p> </div> </a> <a href="https://www.rcodezero.at/en/about-us/team-and-contact" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-users"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> Team & Contact </p> <p class="text-sm leading-5 text-gray-500"> Get to know our RcodeZero DNS team. </p> </div> </a> <a href="https://www.rcodezero.at/en/about-us/news-und-events" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-newspaper"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> News & Events </p> <p class="text-sm leading-5 text-gray-500"> Current news and upcoming events. </p> </div> </a> </div> </div> </div> </div> </div> <div x-data="{ flyoutMenuOpen: false }" @click.away="flyoutMenuOpen = false" class="relative inline-flex"> <button type="button" @click="flyoutMenuOpen = !flyoutMenuOpen" x-state:on="Item active" x-state:off="Item inactive" :class="{ 'text-gray-900': flyoutMenuOpen, 'text-gray-500': !flyoutMenuOpen }" class="inline-flex items-center space-x-2 text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 transition ease-in-out duration-150 text-gray-500" > <span>Support</span> <svg x-state:on="Item active" x-state:off="Item inactive" class="h-5 w-5 group-hover:text-gray-500 group-focus:text-gray-500 transition ease-in-out duration-150 text-gray-400" x-bind:class="{ 'text-gray-600': flyoutMenuOpen, 'text-gray-400': !flyoutMenuOpen }" viewBox="0 0 20 20" fill="currentColor"> <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"></path> </svg> </button> <div x-show="flyoutMenuOpen" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 translate-y-1" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-1" class="absolute left-1/2 top-1 transform -translate-x-1/2 mt-3 px-2 w-screen max-w-md sm:px-0" style="display: none;" > <div class="rounded-lg shadow-lg"> <div class="rounded-lg shadow-xs overflow-hidden"> <div class="z-20 relative grid gap-6 bg-white px-5 py-6 sm:gap-8 sm:p-8"> <a href="https://www.rcodezero.at/en/support/faq" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-question-circle"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> FAQ </p> <p class="text-sm leading-5 text-gray-500"> Frequently asked questions and answers about RcodeZero DNS. </p> </div> </a> <a href="https://www.rcodezero.at/en/support/documentation" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-file-alt"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> Documentation </p> <p class="text-sm leading-5 text-gray-500"> Here you can find documentations and workflows. </p> </div> </a> <a href="https://www.rcodezero.at/en/support/contact" class="-m-3 p-3 flex items-start space-x-4 rounded-lg hover:bg-gray-200 transition ease-in-out duration-150" > <div class="flex-shrink-0 h-6 w-6 text-rcodezero-blue-500 text-lg text-center leading-6"> <i class="fas fa-users"></i> </div> <div class="space-y-1"> <p class="text-base leading-6 font-medium text-gray-900"> Contact </p> <p class="text-sm leading-5 text-gray-500"> Do you have any questions? Contact us. </p> </div> </a> </div> </div> </div> </div> </div> </nav> <div class="hidden md:flex items-center justify-end space-x-8 md:flex-1 lg:w-0"> <a href="https://www.rcodezero.at/en/search" class="whitespace-no-wrap text-base leading-6 font-medium text-gray-500 hover:text-gray-900 focus:outline-none focus:text-gray-900 flex items-center" > <svg fill="currentColor" viewBox="0 0 20 20" class="h-4 w-4 mr-1 fill-current"> <path d="M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z" clip-rule="evenodd" fill-rule="evenodd" ></path> </svg> Search </a> <!-- Locale dropdown --> <div x-data="{ flyoutMenuOpen: false }" @click.away="flyoutMenuOpen = false" class="relative inline-block text-left" > <div> <button @click="flyoutMenuOpen = !flyoutMenuOpen" x-state:on="Item active" x-state:off="Item inactive" :class="{ 'text-gray-900': flyoutMenuOpen, 'text-gray-500': !flyoutMenuOpen }" class="flex items-center text-base leading-6 font-medium hover:text-gray-900 focus:outline-none focus:text-gray-900 text-gray-500" > <div class="mr-1"> <i class="fa fa-globe-americas"></i> </div> EN </button> </div> <div x-show="flyoutMenuOpen" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 translate-y-1" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-1" class="origin-top-right absolute right-0 mt-2 w-56 rounded-md shadow-lg" style="display: none;" > <div class="rounded-md bg-white shadow-xs"> <div class="py-1"> <a href="https://www.rcodezero.at/de" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900" > Deutsch </a> <a href="https://www.rcodezero.at/en" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900" > <i class="lineico-check"></i> English </a> </div> </div> </div> </div> <span class="inline-flex rounded-md shadow-sm"> <a href="https://my.rcodezero.at/login" class="whitespace-no-wrap inline-flex items-center justify-center px-4 py-2 border border-transparent text-base leading-6 font-medium rounded-md text-white bg-rcodezero-blue-500 hover:bg-rcodezero-blue-400 focus:outline-none focus:border-rcodezero-blue-600 focus:shadow-outline-rcodezero-blue active:bg-rcodezero-blue-600 transition ease-in-out duration-150" > Login </a> </span> </div> </div> </div> <!-- Mobile menu, show/hide based on mobile menu state. --> <div x-show="mobileMenuOpen" x-transition:enter="duration-200 ease-out" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="duration-100 ease-in" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" class="fixed top-0 inset-0 overflow-y-auto p-2 transition transform origin-top-right md:hidden" style="display: none;" > <div class="rounded-lg shadow-lg"> <div class="rounded-lg shadow-xs bg-white divide-y-2 divide-gray-100"> <div class="pt-5 pb-6 px-5 space-y-6"> <div class="flex items-center justify-between"> <div> <img class="h-10 w-auto sm:h-10" src="/img/rcodezerodns-product-logo.svg" alt="rcodezero" /> </div> <div class="-mr-2"> <button @click="mobileMenuOpen = false" type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out" > <svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> </svg> </button> </div> </div> <div> <nav class="grid row-gap-4"> <a href="https://www.rcodezero.at/en/products" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150" > <div class="text-base leading-6 font-medium text-gray-900"> Products </div> </a> <a href="https://www.rcodezero.at/en/products/enterprise" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> ENTERPRISES </div> </a> <a href="https://www.rcodezero.at/en/products/isp" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> ISP/REGISTRARS </div> </a> <a href="https://www.rcodezero.at/en/products/tld" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> REGISTRIES </div> </a> <a href="https://www.rcodezero.at/en/references/all" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150" > <div class="text-base leading-6 font-medium text-gray-900"> References </div> </a> <a href="https://www.rcodezero.at/en/about-us" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150" > <div class="text-base leading-6 font-medium text-gray-900"> About us </div> </a> <a href="https://www.rcodezero.at/en/about-us/company" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> Company </div> </a> <a href="https://www.rcodezero.at/en/about-us/team-and-contact" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> Team & Contact </div> </a> <a href="https://www.rcodezero.at/en/about-us/news-und-events" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> News & Events </div> </a> <a href="https://www.rcodezero.at/en/support" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150" > <div class="text-base leading-6 font-medium text-gray-900"> Support </div> </a> <a href="https://www.rcodezero.at/en/support/faq" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> FAQ </div> </a> <a href="https://www.rcodezero.at/en/support/documentation" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> Documentation </div> </a> <a href="https://www.rcodezero.at/en/support/contact" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150 pl-10" > <div class="text-base leading-6 font-medium text-gray-900"> Contact </div> </a> <hr class="border-1 border-gray-100 -mx-5 my-2"> <a href="https://www.rcodezero.at/de" class="-m-2 p-2 flex items-center space-x-3 rounded-md hover:bg-gray-50 transition ease-in-out duration-150" > <div class="flex items-center text-base leading-6 font-medium text-gray-900"> <div class="mr-2"> <i class="fa fa-globe-americas"></i> </div> Deutsch </div> </a> </nav> </div> </div> <div class="py-6 px-5 space-y-6"> <div class="space-y-6"> <span class="w-full flex rounded-md shadow-sm"> </span> <p class="text-center text-base leading-6 font-medium text-gray-500"> Already have an account? <a href="https://my.rcodezero.at/login" class="text-rcodezero-blue-500 hover:text-rcodezero-blue-400 transition ease-in-out duration-150" > Login </a> </p> </div> </div> </div> </div> </div> </div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="slide-show"> <div class="slider-image"> <img src="https://www.rcodezero.at/media/files/RcodezeroDNS-Enterprise-Header.jpg"/> <div class="slide-content-wrapper"> <div class="slide-content centered-left-multi "> <div class="block"><strong><span style="color: #ffffff;">FAST. SIMPLE. RESILIENT<br /></span></strong></div> <div class="block"><strong><span style="color: #ffffff;">RCODEZERO DNS FOR ENTERPRISES.</span></strong></div> <p class="block"> </p> <p class="block"><strong><a href="https://www.rcodezero.at/en/products/enterprise-isp" class="cta-button bg-rcodezero-default-500 hover:bg-rcodezero-default-400">TRY FOR FREE </a></strong></p> <p class="block"> </p> </div> </div> </div> <div class="slider-image"> <img src="https://www.rcodezero.at/media/files/RcodeZeroDNS-TLD-Header.jpg"/> <div class="slide-content-wrapper"> <div class="slide-content centered-left-multi "> <div class="block"><strong><span style="color: #ffffff;">ENSURE THE AVAILABILITY OF</span></strong><br /><strong><span style="color: #ffffff;">YOUR TLD-ZONE WITH RCODEZERO DNS</span></strong></div> <p class="block"> </p> <p class="block"><strong><a href="mailto:rcodezero@ipcom.at" class="cta-button bg-rcodezero-default-500 hover:bg-rcodezero-default-400">SEND REQUEST</a></strong></p> </div> </div> </div> <div class="slider-image"> <img src="https://www.rcodezero.at/media/files/Header-ISP.jpg"/> <div class="slide-content-wrapper"> <div class="slide-content centered-left-multi "> <p class="block"><span style="color: #ffffff;"><strong>ATTAIN THE HIGHEST LEVEL OF SECURITY AS AN INTERNET SERVICE PROVIDER OR</strong></span><br /><span style="color: #ffffff;"><strong>REGISTRAR WITH OUR RCODEZERO DNS PRO PRODUCTS.</strong></span><br /> </p> <p class="block"><strong><a href="https://www.rcodezero.at/en/products/isp" class="cta-button cta-button bg-rcodezero-default-500 hover:bg-rcodezero-default-400">MORE INFORMATION</a></strong></p> </div> </div> </div> <div id="slide-controls" > <a class="slide-prev">❮</a> <a class="slide-next">❯</a> <div class="dot-wrapper" style="text-align:center"> <span class="dot" onclick="currentSlide(1)"></span> <span class="dot" onclick="currentSlide(2)"></span> <span class="dot" onclick="currentSlide(3)"></span> </div> </div> </div> </div> <div class="sticky-bar bg-gray-150 hidden sm:block"> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <nav class=""> <div class="relative flex items-center justify-between h-16"> <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start"> <div class="flex"> <a href="#what-is-rcode0" class="active anchor" > What is RcodeZero DNS? </a> <a href="#how-it-works" > How does RcodeZero DNS work? </a> <a href="#features" > Features & advantages </a> <a href="#news" > News & updates </a> </div> </div> </div> </nav> </div> </div> <div class="pt-16"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><h2 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><a id="what-is-rcode0" class="mce-item-anchor" data-mce-style="color: #004477;"></a>What is RcodeZero <span style="color: rgb(119, 187, 34);" data-mce-style="color: #77bb22;">DNS</span>?</span></h2></div><div ><p class="block">Nowadays, the success of a company is significantly influenced by its accessibility on the Internet. All important services are accessed via the Domain Name System (DNS). Therefore, it must be extremely robust and fail-safe. Possible dangers from outdated technologies, DoS attacks, time outs or overloads can severely disrupt your online business.</p><div class="block"><br><strong><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;">With RcodeZero <span style="color: rgb(119, 187, 34);" data-mce-style="color: #77bb22;">DNS</span> you improve the reliability and stability of not only your own internet presence, but also that of your customers.</span></strong></div><p class="block"> <br></p><p class="block"><span style="color: rgb(0, 0, 0);" data-mce-style="color: #000000;">No matter if you are a <a href="https://www.rcodezero.at/en/features/enterprise-isp" data-mce-href="https://www.rcodezero.at/en/features/enterprise-isp">company, an internet service provider</a> or a <a href="https://www.rcodezero.at/en/features/tld" data-mce-href="https://www.rcodezero.at/en/features/tld">registry</a>: We have the right product solution for you.</span></p><p class="block"><span style="color: rgb(0, 0, 0);" data-mce-style="color: #000000;"><br data-mce-bogus="1"></span></p><p class="block"><span style="color: rgb(0, 0, 0);" data-mce-style="color: #000000;"><br data-mce-bogus="1"></span></p><p class="block"><span style="color: rgb(0, 0, 0);" data-mce-style="color: #000000;"><br></span></p></div> </div> <div class="max-w-7xl mx-auto px-4"> <div class="flex flex-1 flex-col sm:flex-row"> <div class="flex-1 mx-2" style="flex-grow: 2"> </div> <div class="flex-1 mx-2 mt-3 sm:mt-0"> </div> </div> </div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="py-6" style="background-color: #ffffff"> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="max-w-xl mx-auto px-4 sm:px-6 lg:max-w-screen-xl lg:px-8"> <div class="lg:grid lg:grid-cols-3 lg:gap-8"> <div> <div class="flex items-center justify-center"> <div class="flex items-center justify-center h-20 w-20 rounded-md text-white" style="background-color: #ffffff; color: #77bb22; font-size: 550%;"> <i class="fal fa-building"></i> </div> </div> <div class="mt-5"> <h3 class="block" style="text-align: center;"><strong>ENTERPRISES</strong></h3> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;">Benefit from our cost-effective solution with the STARTER, MEDIUM, LARGE products if you have a small number of zones.</p> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;"><strong><a href="https://www.rcodezero.at/en/products/enterprise" class="cta-button bg-rcodezero-blue-500 hover:bg-rcodezero-blue-400" data-rev-href="###URLTO:en.products.enterprise.index###">MORE INFORMATION</a></strong></p> </div> </div> <div class="mt-10 lg:mt-0"> <div class="flex items-center justify-center"> <div class="flex items-center justify-center h-20 w-20 rounded-md text-white" style="background-color: #ffffff; color: #408080; font-size: 550%;"> <i class="fal fa-globe"></i> </div> </div> <div class="mt-5"> <h3 class="block" style="text-align: center;"><strong>ISP/REGISTRARS</strong></h3> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;">Choose from 3 different PRO products, perfectly tailored to your needs including 24/7 emergency hotline.</p> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;"><strong><a href="https://www.rcodezero.at/en/products/isp" class="cta-button bg-rcodezero-blue-500 hover:bg-rcodezero-blue-400">MORE INFORMATION</a></strong></p> <p class="block" style="text-align: center;"> </p> </div> </div> <div class="mt-10 lg:mt-0"> <div class="flex items-center justify-center"> <div class="flex items-center justify-center h-20 w-20 rounded-md text-white" style="background-color: #ffffff; color: #ffaa00; font-size: 550%;"> <i class="fal fa-server"></i> </div> </div> <div class="mt-5"> <h3 class="block" style="text-align: center;"><strong>REGISTRIES</strong></h3> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;">Our TLD product is the perfect complement as additional protection to your existing DNS infrastructure.</p> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;"><strong><a href="https://www.rcodezero.at/en/products/tld" title="MORE ABOUT TLD DNS" class="cta-button bg-rcodezero-blue-500 hover:bg-rcodezero-blue-400" data-rev-href="###URLTO:en.products.tld.index###">MORE INFORMATION</a></strong></p> <p class="block" style="text-align: center;"> </p> <p class="block" style="text-align: center;"> </p> </div> </div> </div> </div> </div> </div> </div> <div class="pt-16"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><h2 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><a id="how-it-works" class="mce-item-anchor" data-mce-style="color: #004477;"></a>How does RcodeZero <span style="color: rgb(119, 187, 34);" data-mce-style="color: #77bb22;">DNS</span> work?</span></h2></div> </div> <div class="max-w-7xl mx-auto px-4"> <div class="flex flex-1 flex-col sm:flex-row"> <div class="flex-1 mx-2" style="flex-grow: 2"> <div ><p class="block">The classic addressing method on the Internet is based on unicast technology. This means that each DNS server has a globally unique IP address. All queries to this IP address are sent to one server, no matter where in the world the query originates. This may cause delays or time outs for remote clients. If the server is not reachable for some reason or is victim of a DoS attack, all services under this IP address are affected and stop working. Our product <span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><strong>Rcode</strong>Zero</span><strong><span style="color: rgb(119, 187, 34);" data-mce-style="color: #77bb22;"> DNS</span></strong> uses anycast technology. This ensures that your services are fail-safe, stable and optimally accessible.</p><p class="block"> <br></p><h3 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><strong>RcodeZero <span style="color: rgb(119, 187, 34);" data-mce-style="color: #77bb22;">DNS</span> stands for Anycast technology.</strong></span></h3><p class="block">Our Anycast servers are distributed all over the world and ensure that your online services are available under one and the same IP address. If one server fails, the next one takes over. The big advantage: This not only reduces the response times of the DNS servers, but also spreads the total server load over the entire network.</p><p class="block"> <br></p><div class="block"><strong><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"></span></strong></div></div> </div> <div class="flex-1 mx-2 mt-3 sm:mt-0"> <img class="img-responsive " src="/media//files/RcodeZeroDNS-Anycast-Netzwerk.jpg" /> </div> </div> </div> <div class="pt-16"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="splide"> <div class="splide__track"> <ul class="splide__list"> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/Mark monitor final.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/united domains low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/vaia low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/infomanik low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/Irish Domains low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/Nextlayer low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/Internexum low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/INWX low.jpg"> </li> <li class="splide__slide flex justify-center"> <img class="h-8" src="https://www.rcodezero.at/media/files/Referenzen/Is fun low.jpg"> </li> </ul> </div> </div> <script> document.addEventListener('DOMContentLoaded', function () { new Splide('.splide', { type: 'loop', speed: 1000, gap: 10, perPage: 5, perMove: 5, pagination: false }).mount(); }); </script> </div> <div class="pt-20"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><h2 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;">DNS Tips: Secure operation of authoritative name servers and protection against outages.</span></h2></div> </div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><p class="block">The DNS (Domain Name System) is the basis for all domain-based services, enabling the resolution of IP-addresses for critical services such as your company鈥檚 website, online shops, e-mail communication, internal services like ERP systems, databases, and many more. Given its central role, the stability and resilience of your DNS infrastructure is crucial. Watch the videos for valuable tips and tricks on how to operate authoritative nameservers securely.</p></div> </div> <div class="pt-8"></div> <div class="max-w-7xl mx-auto px-4"> <div class="flex flex-1 flex-col sm:flex-row"> <div class="flex-1 mx-2"> <div class="ytFrameWrapper" style="--aspect-ratio: 3 / 4;"><iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/Ox2dBCsrKNk?si=AIey3D-gE1srTGMl" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div> </div> <div class="flex-1 mx-2 mt-3 sm:mt-0"> <div class="ytFrameWrapper" style="--aspect-ratio: 3 / 4;"> <iframe width="100%" src="https://www.youtube-nocookie.com/embed/CwUIbQlogxg?si=x62UNJgb8PWpGQaH" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> </div> </div> </div> </div> <div class="pt-8"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><h2 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><a id="features" class="mce-item-anchor" data-mce-style="color: #004477;"></a>Features & advantages</span></h2></div> </div> <div class="bg-gray-100 pt-12 sm:pt-16"> <div class="max-w-screen-xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="max-w-4xl mx-auto text-center"> </div> </div> <div class="mt-10 pb-12 bg-white sm:pb-16"> <div class="relative"> <div class="absolute inset-0 h-1/2 bg-gray-100"></div> <div class="relative max-w-screen-xl mx-auto px-4 sm:px-6 lg:px-8"> <div class="max-w-4xl mx-auto"> <div class="rounded-lg bg-white shadow-lg sm:grid sm:grid-cols-4"> <div class="relative flex flex-col border-b border-gray-200 p-6 pb-12 sm:pb-6 text-center justify-center sm:border-0 sm:border-r"> <div class="flex justify-center"> <i class="fad fa-users" style="position: absolute; line-height: 1; top: -2rem; left: 50%; transform: translateX(-50%); font-size: 4rem; color: #77bb22"></i> </div> <div class="flex-1 mt-6"> <dd class="order-1 text-4xl leading-none font-extrabold text-rcodezero-blue-500"> <h3 class="block">EXPERTISE</h3> </dd> <dt class="order-2 mt-4 text-base leading-6 font-medium text-gray-500"> <p class="block">More than 20 years experience in the industry.</p> </dt> </div> </div> <div class="relative flex flex-col border-b border-gray-200 p-6 pb-12 sm:pb-6 text-center justify-center sm:border-0 sm:border-r"> <div class="flex justify-center"> <i class="fad fa-badge-check" style="position: absolute; line-height: 1; top: -2rem; left: 50%; transform: translateX(-50%); font-size: 4rem; color: #77bb22"></i> </div> <div class="flex-1 mt-6"> <dd class="order-1 text-4xl leading-none font-extrabold text-rcodezero-blue-500"> <h3 class="block">SAFETY</h3> </dd> <dt class="order-2 mt-4 text-base leading-6 font-medium text-gray-500"> <p class="block">We have been certified according to ISO 27001:2013 since 2014.</p> </dt> </div> </div> <div class="relative flex flex-col border-b border-gray-200 p-6 pb-12 sm:pb-6 text-center justify-center sm:border-0 sm:border-r"> <div class="flex justify-center"> <i class="fad fa-people-arrows" style="position: absolute; line-height: 1; top: -2rem; left: 50%; transform: translateX(-50%); font-size: 4rem; color: #77bb22"></i> </div> <div class="flex-1 mt-6"> <dd class="order-1 text-4xl leading-none font-extrabold text-rcodezero-blue-500"> <h3 class="block">PERSONAL</h3> </dd> <dt class="order-2 mt-4 text-base leading-6 font-medium text-gray-500"> <p class="block">Individual and personal consulting is very important to us.</p> </dt> </div> </div> <div class="relative flex flex-col border-b border-gray-200 p-6 pb-12 sm:pb-6 text-center justify-center sm:border-0 sm:border-r"> <div class="flex justify-center"> <i class="fad fa-rocket" style="position: absolute; line-height: 1; top: -2rem; left: 50%; transform: translateX(-50%); font-size: 4rem; color: #77bb22"></i> </div> <div class="flex-1 mt-6"> <dd class="order-1 text-4xl leading-none font-extrabold text-rcodezero-blue-500"> <h3 class="block">STATE OF THE ART</h3> </dd> <dt class="order-2 mt-4 text-base leading-6 font-medium text-gray-500"> <p class="block">Through constant development.</p> </dt> </div> </div> </div> </div> </div> </div> </div> </div> <div class="pt-20"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div class="flex flex-col sm:flex-row" style="background-color: #ffffff"> <div class="sm:w-1/3 flex-shrink-0 overflow-hidden"> <div class="md:left-0"> <img class="w-full object-cover" src="https://www.rcodezero.at/media/files/RcodeZero DNS_Schnelligkeit_low.jpg" alt="" /> </div> </div> <div class="sm:w-2/3 flex justify-center flex-col relative max-w-screen-xl mx-auto px-4 py-4 sm:px-6 sm:py-6"> <p class="mt-0 text-lg leading-7 text-gray-300"> <h3 class="block"><strong><span style="color: #004477;">FAST AND RELIABLE</span></strong></h3> <p class="block"><strong><br /></strong>We are proud that <span style="color: #004477;"><strong>Rcode</strong>Zero</span> <strong><span style="color: #77bb22;">DNS</span></strong>, according to external name service monitoring, is almost consistenty number 1 in Europe and always among the top providers worldwide.</p> </p> </div> </div> <div class="flex flex-col sm:flex-row" style="background-color: #dddddd"> <div class="sm:w-1/3 flex-shrink-0 overflow-hidden"> <div class="md:left-0"> <img class="w-full object-cover" src="https://www.rcodezero.at/media/files/RcodeZeroDNS-ISO-Zertifizierung.jpg" alt="" /> </div> </div> <div class="sm:w-2/3 flex justify-center flex-col relative max-w-screen-xl mx-auto px-4 py-4 sm:px-6 sm:py-6"> <p class="mt-0 text-lg leading-7 text-gray-300"> <h3 class="block"><strong><span style="color: #004477;">ISO CERTIFIED</span></strong></h3> <p class="block"><strong><br /></strong>ISO 27001 is the leading international standard that indicates how information security can be guaranteed in a company. Since 2014 we have been certified according to<a href="https://www.nic.at/en/good_to_know/security/isms"> ISO/IEC 27001:2013</a>. </p> </p> </div> </div> <div class="flex flex-col sm:flex-row" style="background-color: #ffffff"> <div class="sm:w-1/3 flex-shrink-0 overflow-hidden"> <div class="md:left-0"> <img class="w-full object-cover" src="https://www.rcodezero.at/media/files/RcodeZero DNS_GDPR-low.jpg" alt="" /> </div> </div> <div class="sm:w-2/3 flex justify-center flex-col relative max-w-screen-xl mx-auto px-4 py-4 sm:px-6 sm:py-6"> <p class="mt-0 text-lg leading-7 text-gray-300"> <h3 class="block"><span style="color: #004477;"><strong>GDPR COMPLIANT</strong></span></h3> <p class="block"> </p> <p class="block">We are a European supplier and are therefore subject to the General Data Protection Regulation in force since 2018. ipcom GmbH is a sister company of <a href="https://www.nic.at/en">nic.at,</a> the Austrian domain registry. Further information about our company can be found <a href="https://www.rcodezero.at/en/about-us/company" data-rev-href="###URLTO:en.about.company.index###">here</a>.</p> </p> </div> </div> </div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> </div> <div class="pt-16"></div> <div class="max-w-7xl mx-auto px-4 sm:px-6"> <div ><h2 class="block"><span style="color: rgb(0, 68, 119);" data-mce-style="color: #004477;"><a id="news" class="mce-item-anchor" data-mce-style="color: #004477;"></a>News & updates</span></h2></div> </div> <div class="max-w-7xl mx-auto px-4"> <div class="flex flex-1 flex-col sm:flex-row"> <div class="flex-1 mx-2"> <div class="flex flex-col rounded-lg shadow-lg overflow-hidden"> <a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-new-location-klagenfurt" > <div class="flex-shrink-0"> <img class="h-48 w-full object-cover" src="https://www.rcodezero.at/media/files/News & Aktuelles/Standort Klagenfurt 400 x 250.jpg" alt="" /> </div> </a> <div class="flex-1 bg-white p-6 flex flex-col justify-between"> <div class="flex-1"> <p class="text-base leading-6 text-gray-500"> <p class="block">14.11.2024</p> <h3 class="block">How the .at zone benefits from the new location (node)</h3> <p class="block">Internet Exchange Points (IXPs) – physical hubs where internet infrastructure companies like network providers connect – are crucial for a registry. Read the article to find out what influence the new location (node) in Klagenfurt has on this.</p> <p class="block"> </p> <p class="block"> </p> <p class="block"><a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-new-location-klagenfurt" target="_blank">Read more >></a></p> </p> </div> </div> </div> </div> <div class="flex-1 mx-2 mt-3 sm:mt-0"> <div class="flex flex-col rounded-lg shadow-lg overflow-hidden"> <a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-explanatory-videos" > <div class="flex-shrink-0"> <img class="h-48 w-full object-cover" src="https://www.rcodezero.at/media/files/News & Aktuelles/Screenhsot Klaus Video.PNG" alt="" /> </div> </a> <div class="flex-1 bg-white p-6 flex flex-col justify-between"> <div class="flex-1"> <p class="text-base leading-6 text-gray-500"> <p class="block">16.09.2024</p> <h3 class="block">New RcodeZero DNS explanatory videos</h3> <p class="block">In the new RcodeZero DNS explanatory videos, our colleague Klaus Darilion provides valuable tips and tricks on how to operate authoritative nameservers securely and protect them from failures. Watch the videos and learn more.<br /><br /><br /><br /></p> <p class="block"><a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-explanatory-videos" title="New server locations" target="_blank">Read more >></a></p> </p> </div> </div> </div> </div> <div class="flex-1 mx-2 mt-3 sm:mt-0"> <div class="flex flex-col rounded-lg shadow-lg overflow-hidden"> <a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-nis2" target="_blank" > <div class="flex-shrink-0"> <img class="h-48 w-full object-cover" src="https://www.rcodezero.at/media/files/News & Aktuelles/RcodeZeroDNS_NIS2_.jpg" alt="" /> </div> </a> <div class="flex-1 bg-white p-6 flex flex-col justify-between"> <div class="flex-1"> <p class="text-base leading-6 text-gray-500"> <p class="block">17.07.2024</p> <h3 class="block">Countdown to NIS2: How prepared are you?</h3> <p class="block">Have you already heard about the NIS2 Directive of the European Parliament that comes into force on October 18, 2024? he NIS2 Directive is a significant update to set measures for a high common level of cybersecurity across critical infrastructure sectors.</p> <p class="block"> <br /><br /></p> <p class="block"><a href="https://www.rcodezero.at/en/about-us/news-und-events/current/rcodezerodns-nis2" target="_blank">Read more >></a></p> </p> </div> </div> </div> </div> </div> </div> <div class="pt-20"></div> <style> .sticky-contact .circle { position: fixed; right: 2rem; bottom: 2rem; display: flex; align-items: center; justify-content: center; height: 2rem; width: 2rem; border-radius: 50%; cursor: pointer; border: 1px solid white; } .sticky-contact .form { right: 1rem; bottom: 6rem; width: calc(100% - 2rem); max-height: calc(100% - 2rem); z-index: 1000; border: 1px solid #d0d0d0; background: #f5f5f5; } @media (min-width: 640px) { .sticky-contact .circle { bottom: 50%; } .sticky-contact .form { right: 6rem; bottom: 50%; transform: translateY(50%); height: auto; width: auto; } } </style> <div class="sticky-contact" x-data="contactData('nN4qhmUBJBPpzEwhLpSR2hNErwOUrRcYxsQRdHys')" @opencontact.window="isOpen = true"> <div @click="toggle()" class="circle text-xl p-6 bg-rcodezero-default-500 text-white"> <i class="fas fa-envelope"></i> </div> <div x-show="isOpen" @click.away="close()" class="form sm:max-w-lg p-4 fixed rounded overflow-y-auto" style="display: none;" x-transition:enter="transition ease-out duration-100" x-transition:enter-start="opacity-0 translate-y-1" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-100" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-1" > <h2 class="text-lg sm:text-2xl leading-9 font-extrabold tracking-tight mb-2 sm:mb-4"> Hello, how can we help you? </h2> <div id="contactForm" class="grid grid-cols-1 row-gap-2 sm:row-gap-6 sm:grid-cols-2 sm:col-gap-8"> <input type="hidden" name="_honeypot"> <div class="sm:col-span-2"> <label for="organisation" class="block text-sm/6 font-medium text-gray-700">Company name</label> <div class="grid grid-cols-1"> <input id="organisation" name="organisation" x-model="organisation" x-bind:disabled="isSending" :class="invalid.includes('organisation') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required> <template x-if="invalid.includes('organisation')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('organisation')"> <p class="mt-1 text-sm text-red-600">This field is required.</p> </template> </div> <div class="mt-2"> <label for="name" class="block text-sm/6 font-medium text-gray-700">Your name</label> <div class="grid grid-cols-1"> <input id="name" name="name" x-model="name" x-bind:disabled="isSending" :class="invalid.includes('name') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required> <template x-if="invalid.includes('name')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('name')"> <p class="mt-1 text-sm text-red-600">This field is required.</p> </template> </div> <div class="mt-2 pl-2"> <div class="flex justify-between"> <label for="phone" class="block text-sm/6 font-medium text-gray-700">Phone number</label> <span class="text-sm/6 text-gray-500" id="email-optional">optional</span> </div> <div class="grid grid-cols-1"> <input id="phone" name="phone" x-model="phone" x-bind:disabled="isSending" :class="invalid.includes('phone') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required> <template x-if="invalid.includes('phone')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('phone')"> <p class="mt-1 text-sm text-red-600">This field is required.</p> </template> </div> <div class="mt-2 sm:col-span-2"> <label for="email" class="block text-sm/6 font-medium text-gray-700">E-mail address</label> <div class="grid grid-cols-1"> <input id="email" name="email" x-model="email" x-bind:disabled="isSending" :class="invalid.includes('email') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required> <template x-if="invalid.includes('email')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('email')"> <p class="mt-1 text-sm text-red-600">Not a valid email address.</p> </template> </div> <div class="mt-2 sm:col-span-2"> <label for="how_can_we_help" class="block text-sm/6 font-medium text-gray-700">Comment</label> <div class="grid grid-cols-1"> <textarea id="how_can_we_help" rows="4" name="comment" x-model="comment" x-bind:disabled="isSending" :class="invalid.includes('comment') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required></textarea> <template x-if="invalid.includes('comment')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('comment')"> <p class="mt-1 text-sm text-red-600">This field is required.</p> </template> </div> <div class="mt-2 sm:col-span-2 flex justify-between"> <label for="phone" class="block text-sm/6 font-medium text-gray-700">Attachments</label> <span class="text-sm/6 text-gray-500" id="email-optional">optional</span> </div> <template x-if="files.length !== 0"> <ul role="list" class="sm:col-span-2 my-1 divide-y divide-gray-400 rounded-md border border-gray-400 file-preview-list"> <template x-for="(value, index) in files"> <li class="flex items-center justify-between py-4 pl-4 pr-5 text-sm leading-6"> <div class="flex w-0 flex-1 items-center"> <svg class="h-5 w-5 flex-shrink-0 text-gray-700" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M15.621 4.379a3 3 0 0 0-4.242 0l-7 7a3 3 0 0 0 4.241 4.243h.001l.497-.5a.75.75 0 0 1 1.064 1.057l-.498.501-.002.002a4.5 4.5 0 0 1-6.364-6.364l7-7a4.5 4.5 0 0 1 6.368 6.36l-3.455 3.553A2.625 2.625 0 1 1 9.52 9.52l3.45-3.451a.75.75 0 1 1 1.061 1.06l-3.45 3.451a1.125 1.125 0 0 0 1.587 1.595l3.454-3.553a3 3 0 0 0 0-4.242Z" clip-rule="evenodd" /> </svg> <div class="ml-4 flex min-w-0 flex-1 gap-2"> <span class="truncate font-medium" x-text="value.name"></span> <span class="flex-shrink-0 text-gray-700"><span x-text="window.formatFileSizeNumber(value.size)"></span></span> </div> </div> <div class="ml-4 flex-shrink-0"> <a href="#" class="font-medium text-red-600 hover:text-red-500" @click="files.splice(index, 1)">remove</a> </div> </li> </template> </ul> </template> <template x-if="files.length < 10"> <div class="sm:col-span-2 flex justify-center rounded-lg border border-dashed border-gray-500 px-4 py-4" x-on:drop.prevent="attach(event.dataTransfer.files)" x-on:dragenter.prevent="drag++" x-on:dragleave.prevent="drag--" x-on:dragover.prevent="" :class="{ 'bg-gray-100': drag }" > <div class="text-center"> <svg class="mx-auto h-12 w-12 text-gray-400" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M1.5 6a2.25 2.25 0 0 1 2.25-2.25h16.5A2.25 2.25 0 0 1 22.5 6v12a2.25 2.25 0 0 1-2.25 2.25H3.75A2.25 2.25 0 0 1 1.5 18V6ZM3 16.06V18c0 .414.336.75.75.75h16.5A.75.75 0 0 0 21 18v-1.94l-2.69-2.689a1.5 1.5 0 0 0-2.12 0l-.88.879.97.97a.75.75 0 1 1-1.06 1.06l-5.16-5.159a1.5 1.5 0 0 0-2.12 0L3 16.061Zm10.125-7.81a1.125 1.125 0 1 1 2.25 0 1.125 1.125 0 0 1-2.25 0Z" clip-rule="evenodd" /> </svg> <div class="flex text-sm/6 font-medium text-gray-700 justify-center"> <label for="file-upload" class="relative cursor-pointer rounded-md font-medium text-green-600 focus-within:outline-none focus-within:ring-2 focus-within:ring-green-600 focus-within:ring-offset-2 hover:text-green-500"> <span>Add a file</span> <input id="file-upload" name="file-upload" type="file" x-on:change="attach(event.target.files)" class="sr-only" multiple x-bind:disabled="isSending"> </label> <p class="pl-1">or drag and drop.</p> </div> <p class="text-sm/6 font-medium text-gray-700">Up to 10MB per file and up to 10 files in total.</p> </div> </div> </template> <div class="my-4 sm:col-span-2"> <div class="mb-1 text-sm/6 font-medium text-gray-700">Please enter the letters from the image below into the field below</div> <div class="flex items-start"> <img src="https://www.rcodezero.at/captcha/default?lSGKhWcq" id="captcha"> <div class="text-right ml-4"> <div class="grid grid-cols-1"> <input id="captcha" name="captcha" x-model="captcha" x-bind:disabled="isSending" :class="invalid.includes('captcha') ? 'text-red-900 outline-red-300 placeholder:text-red-300 focus:outline-red-600 col-start-1 row-start-1 sm:pr-9' : ''" class=" block border-0 w-full rounded-md bg-white px-3 py-1.5 text-base text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 placeholder:text-gray-400 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6 disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500 disabled:outline-gray-200" required> <template x-if="invalid.includes('captcha')"> <svg class="pointer-events-none col-start-1 row-start-1 mr-3 size-5 self-center justify-self-end text-red-500 sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon"> <path fill-rule="evenodd" d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z" clip-rule="evenodd" /> </svg> </template> </div> <template x-if="invalid.includes('captcha')"> <p class="mt-1 text-sm text-red-600">This field is required.</p> </template> <button id="refresh-captcha" class="btn btn-sm mt-1 text-sm/6 font-medium text-gray-700" x-bind:disabled="isSending"><i class="fad fa-redo mr-1 text-xs"></i> new captcha</button> </div> </div> <script> const btn = document.querySelector('#refresh-captcha'); btn.addEventListener('click', (event) => { event.preventDefault(); btn.disabled = true; fetch('/captcha/api') .then(res => res.json()) .then(res => { document.querySelector('#captcha').src = res.img; btn.disabled = false; }); }); </script> </div> <template x-if="error !== ''"> <div x-text="error" class="sm:col-span-2 my-2 rounded-md bg-red-100 p-4 text-sm font-medium text-red-800"/> </template> <div class="mt-2 text-right sm:col-span-2"> <button id="contact-submit" type="button" @click="submit()" x-bind:disabled="isSending" class="items-center w-full inline-flex justify-center py-2 px-4 border border-transparent text-sm leading-5 font-medium rounded-md text-white bg-rcodezero-default-500 focus:outline-none focus:border-rcodezero-default-700 active:bg-rcodezero-default-700 transition duration-150 ease-in-out disabled:bg-gray-400 disabled:text-gray-700"> Submit <template x-if="isSending"> <i class="ml-2 fas fa-spinner fa-spin"></i> </template> </button> </div> </div> <div x-show="showSuccess" class="absolute inset-0 flex flex-col items-center justify-center" style="background: #f5f5f5;"> <div class="rounded-full p-6 bg-rcodezero-default-500 flex text-white text-4xl"> <i class="fas fa-check"></i> </div> <div class="mt-10 px-8 text-center"> Ticket #<span x-text="showSuccessTicketNr"></span> successfully created.<br> You will shortly receive an confirmation Email.<br> <br> If you do not receive an Email, something went wrong. In that case please contact us by other means or try again later. </div> </div> </div> </div> <script> const form = document.getElementById('contactForm'); function contactData(csrf) { return { isOpen: false, showSuccess: false, showSuccessTicketNr: null, FILES_COUNT_MAX: 10, FILE_SIZE_MAX: 10_240_000, drag: 0, isSending: false, files: [], invalid: [], organisation: '', name: '', phone: '', email: '', comment: '', captcha: '', error: '', attach(fileList) { this.drag--; fileList = [...fileList]; if ((this.files.length + fileList.length) > this.FILES_COUNT_MAX) { alert('You can not add more than 10 attachments.'); return; } for (let file of fileList) { if (file.size > this.FILE_SIZE_MAX) { alert('You can only add individual files of up to 10MB'); return; } } this.files.push(...fileList); }, submit() { if (!this.valid()) { return; } let data = new FormData(); data.append('organisation', this.organisation); data.append('name', this.name); data.append('phone', this.phone); data.append('email', this.email); data.append('comment', this.comment); data.append('captcha', this.captcha); this.files.forEach((file) => { data.append('attachments[]', file); }); this.isSending = true; fetch('https://www.rcodezero.at/contact', { method: 'POST', headers: { 'Accept': 'application/json', 'X-CSRF-TOKEN': csrf, }, body: data, }) .then(async response => { if (response.ok) { this.clear(); this.showSuccess = true; this.showSuccessTicketNr = (await response.json())?.ticket; } else if (response.status === 422) { this.error = (await response.json())?.message; } else { this.error = 'Unknown error. Please contact rcodezero@ipcom.at directly.'; } }) .finally(() => this.isSending = false); }, toggle() { if (this.isOpen) { this.close(); } else { this.isOpen = true; } }, close() { if (this.showSuccess) { this.clear(); setTimeout(() => this.showSuccess = false, 150); // delay cause animation } this.isOpen = false; }, clear() { this.files = []; this.organisation = ''; this.name = ''; this.phone = ''; this.email = ''; this.comment = ''; this.captcha = ''; this.error = ''; this.showSuccessTicketNr = null; }, valid() { this.invalid = []; for (let field of [ 'organisation', 'name', 'email', 'comment', 'captcha', ]) { if (this[field] == null || this[field] == '') { this.invalid.push(field); } } if (!this.email.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/)) { this.invalid.push('email'); } return this.invalid.length === 0; } } } </script> <div class="bg-gray-800"> <div class="max-w-screen-xl mx-auto py-12 px-4 sm:px-6 lg:py-16"> <div class="grid grid-cols-2 md:grid-cols-footer"> <div class="mt-10 lg:mt-0"> <h4 class="text-md-left leading-5 font-semibold tracking-wider text-gray-400 uppercase"> Additional nic.at products </h4> <div class="justify-left"> <div class="col-span-1 flex py-1"> <a href="https://nic.at/en" target="_blank"> <img class="max-h-10" src="https://www.rcodezero.at/img/logos/01-at-domain-registry.png"/> </a> </div> <div class="col-span-1 flex py-1"> <a href="https://nic.versicherung/en" target="_blank"> <img class="max-h-8" src="https://www.rcodezero.at/img/logos/02-versicherung.png"/> </a> </div> <div class="col-span-1 flex py-1"> <a href="https://nic.at/en/tldbox" target="_blank"> <img class="max-h-8" src="https://www.rcodezero.at/img/logos/04-tldbox.png"/> </a> </div> </div> </div> <div class="mt-10 lg:mt-0"> <div> <h4 class="text-md-left leading-5 font-semibold tracking-wider text-gray-400 uppercase"> Quicklinks </h4> <div class="mt-4 text-gray-300 text-base leading-6"> <a href="https://www.rcodezero.at/en/products/enterprise">ENTERPRISES</a><br> <a href="https://www.rcodezero.at/en/products/isp">ISP/REGISTRARS</a><br> <a href="https://www.rcodezero.at/en/products/tld">REGISTRIES</a><br> <a href="https://www.rcodezero.at/en/support/faq">FAQ</a><br> <a href="https://my.rcodezero.at/login">Login</a> </div> </div> </div> <div class="mt-10 lg:mt-0"> <div> <h4 class="text-md-left leading-5 font-semibold tracking-wider text-gray-400 uppercase"> Company </h4> <div class="mt-4 text-gray-300 text-base leading-6"> <strong>ipcom GmbH</strong><br> Karlsplatz 1/2/9<br> 1010 Vienna<br> UID-Nr.: ATU61437216 </div> </div> </div> <div class="mt-10 lg:mt-0"> <div> <h4 class="text-md-left leading-5 font-semibold tracking-wider text-gray-400 uppercase"> Contact </h4> <div class="mt-4 text-gray-300 text-base leading-6"> +43 1 294 00 40 -510<br> <span onclick="window.dispatchEvent(new Event('opencontact'))" class="cursor-pointer">Contact form</span> </div> </div> </div> <div class="mt-8 xl:mt-0"> <h4 class="text-md-left leading-5 font-semibold tracking-wider text-gray-400 uppercase"> Subscribe to newsletter </h4> <div class="mt-4" x-data="newsletterData()"> <input x-model="email" aria-label="Email address" type="email" required class="appearance-none px-5 py-3 border border-transparent text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 transition duration-150 ease-in-out flex-grow" placeholder="Enter your e-mail" /> <div class="inline-flex mt-3 rounded-md shadow mt-0 flex-shrink-0"> <button @click="isOpen = true" type="button" class="flex items-center justify-center px-5 py-3 border border-transparent text-base leading-6 font-medium rounded-md text-white bg-rcodezero-blue-500 hover:bg-rcodezero-blue-400 focus:outline-none focus:bg-rcodezero-blue-400 transition duration-150 ease-in-out"> Subscribe </button> </div> <div x-show="isOpen" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center" style="z-index: 150;display: none;" > <div x-show="isOpen" x-description="Background overlay, show/hide based on modal state." x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 transition-opacity" > <div class="absolute inset-0 bg-gray-500 opacity-75"></div> </div> <div x-show="isOpen" x-description="Modal panel, show/hide based on modal state." x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" x-transition:enter-end="opacity-100 translate-y-0 sm:scale-100" x-transition:leave="ease-in duration-200" x-transition:leave-start="opacity-100 translate-y-0 sm:scale-100" x-transition:leave-end="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" class="bg-white rounded-lg overflow-hidden shadow-xl transform transition-all sm:max-w-3xl sm:w-full" role="dialog" aria-modal="true" aria-labelledby="modal-headline" > <div class="bg-white px-6 pt-6 pb-5"> <div class="sm:flex sm:items-start"> <div class="mt-3 text-center sm:mt-0 sm:text-left"> <h3 class="text-lg leading-6 font-medium text-gray-900" id="modal-headline"> Subscribe to newsletter </h3> <div class="mt-2"> <p class="text-gray-900 block"> By submitting this form I give my consent that my provided data will be processed as described in the <a href="https://www.rcodezero.at/en/privacy-policy" target="_blank" title="privacy policy">privacy policy</a> . </p> </div> <div class="flex mt-5 pr-3"> <form action="/newsletter" method="post" class="flex-1" > <input type="hidden" name="_token" value="nN4qhmUBJBPpzEwhLpSR2hNErwOUrRcYxsQRdHys" autocomplete="off"> <input type="hidden" id="changeGuestData" name="changeGuestData" value="False" /> <input type="hidden" name="mw_timestamp" id="mw_timestamp" /> <input type="hidden" name="mw_timestamp1" id="mw_timestamp1" /> <input type="checkbox" id="mw_contact_company_if_available" name="mw_contact_company_if_available" value="1" style="display:none !important" tabindex="-1" autocomplete="off" /> <div class="flex items-center"> <select name="salutation" class="mt-3 mr-1 flex-1 form-select block w-full px-5 py-3 text-base leading-6 border-gray-300 focus:outline-none focus:shadow-outline-blue focus:border-blue-300" > <option value="Herr" selected>Mr</option> <option value="Frau">Mrs</option> </select> <input aria-label="Titel" type="text" class="mt-3 ml-1 flex-1 appearance-none w-full px-5 py-3 border border-gray-300 text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:shadow-outline focus:border-blue-300 transition duration-150 ease-in-out" placeholder="Title" name="title" > </div> <div class="flex items-center"> <input aria-label="Vorname" type="text" required="" class="mt-3 mr-1 flex-1 appearance-none w-full px-5 py-3 border border-gray-300 text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:shadow-outline focus:border-blue-300 transition duration-150 ease-in-out" placeholder="First name" name="firstname" > <input aria-label="Nachname" type="text" required="" class="mt-3 ml-1 flex-1 appearance-none w-full px-5 py-3 border border-gray-300 text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:shadow-outline focus:border-blue-300 transition duration-150 ease-in-out" placeholder="Last name" name="lastname" > </div> <div class="flex items-center"> <input aria-label="Organisation" type="text" required="" class="mt-3 mr-1 flex-1 appearance-none w-full px-5 py-3 border border-gray-300 text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:shadow-outline focus:border-blue-300 transition duration-150 ease-in-out" placeholder="Company" name="organisation" > <input aria-label="E-Mail" type="email" required="" class="mt-3 ml-1 flex-1 appearance-none w-full px-5 py-3 border border-gray-300 text-base leading-6 rounded-md text-gray-900 bg-white placeholder-gray-500 focus:outline-none focus:shadow-outline focus:border-blue-300 transition duration-150 ease-in-out" placeholder="E-mail" x-model="email" name="email" > </div> </form> </div> </div> </div> </div> <div class="bg-gray-200 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> <span class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto"> <button @click="isOpen = false; newsletterRegistration()" type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-rcodezero-default-600 text-base leading-6 font-medium text-white shadow-sm hover:bg-rcodezero-default-500 focus:outline-none focus:border-rcodezero-default-700 focus:shadow-outline-rcodezero-default transition ease-in-out duration-150 sm:text-sm sm:leading-5" > Subscribe </button> </span> <span class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto"> <button @click="isOpen = false" type="button" class="inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-base leading-6 font-medium text-gray-700 shadow-sm hover:text-gray-500 focus:outline-none focus:border-blue-300 focus:shadow-outline-blue transition ease-in-out duration-150 sm:text-sm sm:leading-5" > Cancel </button> </span> </div> </div> </div> <script> function newsletterRegistration() { const form = document.querySelector('form[action="/newsletter"]'); const XHR = new XMLHttpRequest(); const FD = new FormData(form); const queryParams = new URLSearchParams(FD).toString(); XHR.addEventListener('load', function () { form.reset(); }); XHR.open('GET', 'https://www.rcodezero.at/newsletter?' + queryParams); XHR.send(FD); // GA event dataLayer.push({'event': 'newsletter'}); } </script> </div> </div> </div> <div class="mt-8 border-t border-gray-700 pt-6 md:flex md:items-center md:justify-between"> <div class="flex md:order-2 md:items-center"> <a href="https://www.facebook.com/nicat" class="text-gray-400 hover:text-gray-300" target="_blank"> <span class="sr-only">Facebook</span> <i class="fab fa-facebook-square text-2xl"></i> </a> <a href="https://www.youtube.com/user/theaustrianregistry" class="ml-6 text-gray-400 hover:text-gray-300" target="_blank"> <span class="sr-only">YouTube</span> <i class="fab fa-youtube-square text-2xl"></i> </a> <a href="https://linkedin.com/company/nic.at" class="ml-6 text-gray-400 hover:text-gray-300" target="_blank"> <span class="sr-only">LinkedIn</span> <i class="fab fa-linkedin text-2xl"></i> </a> </div> <p class="mt-8 text-base leading-6 text-gray-400 md:mt-0 md:order-1"> © 2020 - 2025 RcodeZero DNS | <a href="https://www.rcodezero.at/en/imprint" title="Imprint">Imprint</a> | <a href="https://www.rcodezero.at/en/terms-of-service" title="Terms of Service">Terms of Service</a> | <a href="https://www.rcodezero.at/en/privacy-policy" title="Privacy Policy">Privacy Policy</a> | <a href="https://www.rcodezero.at/en/sitemap" title="Sitemap">Sitemap</a> </p> </div> </div> </div> <script> // temporary function newsletterData() { return { isOpen: false, isSending: false, showSuccess: false, salutation: 'Herr', title: '', firstname: '', lastname: '', organisation: '', email: '', send() { const _this = this; this.isSending = true; const XHR = new XMLHttpRequest(); const FD = new FormData(); FD.append('salutation', this.salutation); FD.append('title', this.title); FD.append('firstname', this.firstname); FD.append('lastname', this.lastname); FD.append('organisation', this.organisation); FD.append('email', this.email); XHR.addEventListener('load', function (event) { _this.isSending = false; _this.showSuccess = true; setTimeout(function() { _this.isOpen = false; }, 2000); setTimeout(function () { _this.showSuccess = false; }, 2150); }); XHR.addEventListener('error', function (event) { _this.isSending = false; }); XHR.open('POST', 'https://sys.mailworx.info/sys/form_submit.aspx?frm=75641260-3f51-4e36-ab3b-e831f0dc70d6'); XHR.send(FD); }, } } </script> <script type="text/javascript" charset="utf-8" > if (dr_generated_banner) { throw new Error("Cookie banner integration was included more than once!"); } (function(cc) { // stop from running again, if accidently included more than once. if (cc.hasInitialised) return; var util = { // https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex escapeRegExp: function(str) { return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); }, hasClass: function(element, selector) { var s = ' '; return ( element.nodeType === 1 && (s + element.className + s) .replace(/[\n\t]/g, s) .indexOf(s + selector + s) >= 0 ); }, addClass: function(element, className) { element.className += ' ' + className; }, removeClass: function(element, className) { var regex = new RegExp('\\b' + this.escapeRegExp(className) + '\\b'); element.className = element.className.replace(regex, ''); }, interpolateString: function(str, callback) { var marker = /{{([a-z][a-z0-9\-_]*)}}/gi; return str.replace(marker, function(matches) { return callback(arguments[1]) || ''; }); }, getCookie: function(name) { if (dr_cookiebanner_options) { if (dr_cookiebanner_options.cookieLocalStorage === true) { return localStorage.getItem(name); } } var value = '; ' + document.cookie; var parts = value.split('; ' + name + '='); var result = parts.length < 2 ? undefined : parts .pop() .split(';') .shift(); if (dr_cookiebanner_options) { dr_cookiebanner_options.log("GetCookie " + name + "=" + result); } return result; }, setCookie: function(name, value, expiryDays, domain, path, secure) { if (dr_cookiebanner_options) { if (dr_cookiebanner_options.cookieLocalStorage === true) { if (value == null || value === "") { localStorage.removeItem(name); } else { localStorage.setItem(name, value); } return; } } var exdate = new Date(); exdate.setDate(exdate.getDate() + (expiryDays || 365)); var cookie = [ name + '=' + value, 'expires=' + exdate.toUTCString(), 'path=' + (path || '/') ]; if (domain) { cookie.push('domain=' + domain); } /* if (secure) { cookie.push('secure'); }*/ if (location.protocol === 'https:') { cookie.push('secure'); cookie.push('SameSite=none'); } document.cookie = cookie.join(';'); if (dr_cookiebanner_options) { dr_cookiebanner_options.logJson("SetCookie", cookie); } }, // only used for extending the initial options deepExtend: function(target, source) { for (var prop in source) { if (source.hasOwnProperty(prop)) { if ( prop in target && this.isPlainObject(target[prop]) && this.isPlainObject(source[prop]) ) { this.deepExtend(target[prop], source[prop]); } else { target[prop] = source[prop]; } } } return target; }, // only used for throttling the 'mousemove' event (used for animating the revoke button when `animateRevokable` is true) throttle: function(callback, limit) { var wait = false; return function() { if (!wait) { callback.apply(this, arguments); wait = true; setTimeout(function() { wait = false; }, limit); } }; }, // only used for hashing json objects (used for hash mapping palette objects, used when custom colours are passed through JavaScript) hash: function(str) { var hash = 0, i, chr, len; if (str.length === 0) return hash; for (i = 0, len = str.length; i < len; ++i) { chr = str.charCodeAt(i); hash = (hash << 5) - hash + chr; hash |= 0; } return hash; }, normaliseHex: function(hex) { if (hex[0] == '#') { hex = hex.substr(1); } if (hex.length == 3) { hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; } return hex; }, // used to get text colors if not set getContrast: function(hex) { hex = this.normaliseHex(hex); var r = parseInt(hex.substr(0, 2), 16); var g = parseInt(hex.substr(2, 2), 16); var b = parseInt(hex.substr(4, 2), 16); var yiq = (r * 299 + g * 587 + b * 114) / 1000; return yiq >= 128 ? '#000' : '#fff'; }, // used to change color on highlight getLuminance: function(hex) { var num = parseInt(this.normaliseHex(hex), 16), amt = 38, R = (num >> 16) + amt, B = ((num >> 8) & 0x00ff) + amt, G = (num & 0x0000ff) + amt; var newColour = ( 0x1000000 + (R < 255 ? (R < 1 ? 0 : R) : 255) * 0x10000 + (B < 255 ? (B < 1 ? 0 : B) : 255) * 0x100 + (G < 255 ? (G < 1 ? 0 : G) : 255) ) .toString(16) .slice(1); return '#' + newColour; }, isMobile: function() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ); }, isPlainObject: function(obj) { // The code "typeof obj === 'object' && obj !== null" allows Array objects return ( typeof obj === 'object' && obj !== null && obj.constructor == Object ); }, traverseDOMPath: function(elem, className) { if (!elem || !elem.parentNode) return null; if (util.hasClass(elem, className)) return elem; return this.traverseDOMPath(elem.parentNode, className); } }; // valid cookie values cc.status = { deny: 'deny', allow: 'allow', dismiss: 'dismiss' }; // detects the `transitionend` event name cc.transitionEnd = (function() { var el = document.createElement('div'); var trans = { t: 'transitionend', OT: 'oTransitionEnd', msT: 'MSTransitionEnd', MozT: 'transitionend', WebkitT: 'webkitTransitionEnd' }; for (var prefix in trans) { if ( trans.hasOwnProperty(prefix) && typeof el.style[prefix + 'ransition'] != 'undefined' ) { return trans[prefix]; } } return ''; })(); cc.hasTransition = !!cc.transitionEnd; // array of valid regexp escaped statuses var __allowedStatuses = Object.keys(cc.status).map(util.escapeRegExp); // contains references to the custom <style> tags cc.customStyles = {}; cc.Popup = (function() { var defaultOptions = { // if false, this prevents the popup from showing (useful for giving to control to another piece of code) enabled: true, // optional (expecting a HTML element) if passed, the popup is appended to this element. default is `document.body` container: null, // defaults cookie options - it is RECOMMENDED to set these values to correspond with your server cookie: { // This is the name of this cookie - you can ignore this name: 'cookieconsent_status', // This is the url path that the cookie 'name' belongs to. The cookie can only be read at this location path: '/', // This is the domain that the cookie 'name' belongs to. The cookie can only be read on this domain. // - Guide to cookie domains - https://www.mxsasha.eu/blog/2014/03/04/definitive-guide-to-cookie-domains/ domain: '', // The cookies expire date, specified in days (specify -1 for no expiry) expiryDays: 365, // If true the cookie will be created with the secure flag. Secure cookies will only be transmitted via HTTPS. secure: false }, // these callback hooks are called at certain points in the program execution onPopupOpen: function() {}, onPopupClose: function() {}, onInitialise: function(status) {}, onStatusChange: function(status, chosenBefore) {}, onRevokeChoice: function() {}, onNoCookieLaw: function(countryCode, country) {}, // each item defines the inner text for the element that it references content: { header: 'Cookies used on the website!', message: 'This website uses cookies to ensure you get the best experience on our website.', dismiss: 'Got it!', allow: 'Allow cookies', deny: 'Decline', link: 'Learn more', href: 'https://cookiesandyou.com', close: '❌', target: '_blank', policy: 'Cookie Policy', mobilePolicy: "Mobile", }, // This is the HTML for the elements above. The string {{header}} will be replaced with the equivalent text below. // You can remove "{{header}}" and write the content directly inside the HTML if you want. // // - ARIA rules suggest to ensure controls are tabbable (so the browser can find the first control), // and to set the focus to the first interactive control (https://w3c.github.io/using-aria/) elements: { header: '<span class="cc-header">{{header}}</span> ', message: '<span id="cookieconsent:desc" class="cc-message">{{message}}</span>', messagelink: '<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a></span>', dismiss: '<a aria-label="dismiss cookie message" role=button tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>', allow: '<a aria-label="allow cookies" role=button tabindex="0" class="cc-btn cc-allow">{{allow}}</a>', deny: '<a aria-label="deny cookies" role=button tabindex="0" class="cc-btn cc-deny">{{deny}}</a>', link: '<a aria-label="learn more about cookies" role=button tabindex="0" class="cc-link" href="{{href}}" rel="noopener noreferrer nofollow" target="{{target}}">{{link}}</a>', close: '<span aria-label="dismiss cookie message" role=button tabindex="0" class="cc-close">{{close}}</span>' //compliance: compliance is also an element, but it is generated by the application, depending on `type` below }, // The placeholders {{classes}} and {{children}} both get replaced during initialisation: // - {{classes}} is where additional classes get added // - {{children}} is where the HTML children are placed window: '<div role="dialog" aria-live="polite" aria-label="cookieconsent" aria-describedby="cookieconsent:desc" class="cc-window {{classes}}"><!--googleoff: all-->{{children}}<!--googleon: all--></div>', // This is the html for the revoke button. This only shows up after the user has selected their level of consent // It can be enabled of disabled using the `revokable` option revokeBtn: '<div class="cc-revoke {{classes}}" aria-label="Show cookie consent settings" >{{policy}}</div>', // define types of 'compliance' here. '{{value}}' strings in here are linked to `elements` compliance: { info: '<div class="cc-compliance">{{dismiss}}</div>', 'opt-in': '<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>', 'opt-out': '<div class="cc-compliance cc-highlight">{{deny}}{{allow}}</div>' }, // select your type of popup here type: 'info', // refers to `compliance` (in other words, the buttons that are displayed) // define layout layouts here layouts: { // the 'block' layout tend to be for square floating popups basic: '{{messagelink}}{{compliance}}', 'basic-close': '{{messagelink}}{{compliance}}{{close}}', 'basic-header': '{{header}}{{message}}{{link}}{{compliance}}' // add a custom layout here, then add some new css with the class '.cc-layout-my-cool-layout' //'my-cool-layout': '<div class="my-special-layout">{{message}}{{compliance}}</div>{{close}}', }, // default layout (see above) layout: 'basic', // this refers to the popup windows position. we currently support: // - banner positions: top, bottom // - floating positions: top-left, top-right, bottom-left, bottom-right // // adds a class `cc-floating` or `cc-banner` which helps when styling position: 'bottom', // default position is 'bottom' policyPosition: 'bottom', // MIKE: default popup policy position // Available styles // -block (default, no extra classes) // -edgeless // -classic // use your own style name and use `.cc-theme-STYLENAME` class in CSS to edit. // Note: style "wire" is used for the configurator, but has no CSS styles of its own, only palette is used. theme: 'block', // The popup is `fixed` by default, but if you want it to be static (inline with the page content), set this to false // Note: by default, we animate the height of the popup from 0 to full size static: false, // if you want custom colours, pass them in here. this object should look like this. // ideally, any custom colours/themes should be created in a separate style sheet, as this is more efficient. // { // popup: {background: '#000000', text: '#fff', link: '#fff'}, // button: {background: 'transparent', border: '#f8e71c', text: '#f8e71c'}, // highlight: {background: '#f8e71c', border: '#f8e71c', text: '#000000'}, // } // `highlight` is optional and extends `button`. if it exists, it will apply to the first button // only background needs to be defined for every element. if not set, other colors can be calculated from it palette: null, // Some countries REQUIRE that a user can change their mind. You can configure this yourself. // Most of the time this should be false, but the `cookieconsent.law` can change this to `true` if it detects that it should revokable: false, // if true, the revokable button will tranlate in and out animateRevokable: true, // used to disable link on existing layouts // replaces element messagelink with message and removes content of link showLink: true, // set value as scroll range to enable dismissOnScroll: false, // set value as time in milliseconds to autodismiss after set time dismissOnTimeout: false, // set value as click anything on the page, excluding the `ignoreClicksFrom` below (if we click on the revoke button etc) dismissOnWindowClick: false, // If `dismissOnWindowClick` is true, we can click on 'revoke' and we'll still dismiss the banner, so we need exceptions. // should be an array of class names (not CSS selectors) ignoreClicksFrom: ['cc-revoke', 'cc-btn'], // already includes the revoke button and the banner itself // The application automatically decide whether the popup should open. // Set this to false to prevent this from happening and to allow you to control the behaviour yourself autoOpen: true, // By default the created HTML is automatically appended to the container (which defaults to <body>). You can prevent this behaviour // by setting this to false, but if you do, you must attach the `element` yourself, which is a public property of the popup instance: // // var instance = cookieconsent.factory(options); // document.body.appendChild(instance.element); // autoAttach: true, // simple whitelist/blacklist for pages. specify page by: // - using a string : '/index.html' (matches '/index.html' exactly) OR // - using RegExp : /\/page_[\d]+\.html/ (matched '/page_1.html' and '/page_2.html' etc) whitelistPage: [], blacklistPage: [], // If this is defined, then it is used as the inner html instead of layout. This allows for ultimate customisation. // Be sure to use the classes `cc-btn` and `cc-allow`, `cc-deny` or `cc-dismiss`. They enable the app to register click // handlers. You can use other pre-existing classes too. See `src/styles` folder. overrideHTML: null }; function CookiePopup() { this.initialise.apply(this, arguments); } CookiePopup.prototype.initialise = function(options) { if (this.options) { this.destroy(); // already rendered } // ---- START MIKE: change in original code to prevent opening twice ---- if (options._optionsWereUsed == true) { this.destroy(); // already rendered return; } else { options._optionsWereUsed = true; } // ---- END MIKE window.dr_isInitialized = false; // set options back to default options util.deepExtend((this.options = {}), defaultOptions); // merge in user options if (util.isPlainObject(options)) { util.deepExtend(this.options, options); } // configure debug logging py parameter if (this.options.configureDebugLogOutput) { this.options.configureDebugLogOutput(); } if (this.options.dr_autoAcceptCookies) { if (this.options.dr_autoAcceptCookies == "allow") { window.CookiesOK = true; } else if (this.options.dr_autoAcceptCookies == "deny") { window.CookiesDeny = true; } } let scriptelm = document.currentScript; if (!scriptelm) { scriptelm = document.querySelector('script[nonce]') } if (scriptelm) { let snonce; if (scriptelm.nonce) { snonce = scriptelm.nonce; } else { snonce = scriptelm.getAttribute("nonce"); } if (snonce) { this.options.cspNonce = snonce; window._drCspNonce = snonce; } } // check for bots, autoAllow if it is a bot (as there are no humans involved) var botPattern = "(googlebot\/|bot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google|bingbot|msnbot|teoma|ia_archiver|GingerCrawler|webcrawler|grub.org|UsineNouvelleCrawler|antibot|netresearchserver|speedy|fluffy|bibnum.bnf|findlink|msrbot|panscient|yacybot|AISearchBot|IOI|ips-agent|tagoobot|MJ12bot|dotbot|woriobot|yanga|buzzbot|mlbot|yandexbot|purebot|Linguee Bot|Voyager|CyberPatrol|voilabot|baiduspider|citeseerxbot|spbot|twengabot|postrank|turnitinbot|scribdbot|page2rss|sitebot|linkdex|Adidxbot|blekkobot|ezooms|dotbot|Mail.RU_Bot|discobot|heritrix|findthatfile|europarchive.org|NerdByNature.Bot|sistrix crawler|ahrefsbot|Aboundex|domaincrawler|wbsearchbot|summify|ccbot|edisterbot|seznambot|ec2linkfinder|gslfbot|aihitbot|intelium_bot|facebookexternalhit|yeti|RetrevoPageAnalyzer|lb-spider|sogou|lssbot|careerbot|wotbox|wocbot|ichiro|DuckDuckBot|lssrocketcrawler|drupact|webcompanycrawler|acoonbot|openindexspider|gnam gnam spider|web-archive-net.com.bot|backlinkcrawler|coccoc|integromedb|content crawler spider|toplistbot|seokicks-robot|it2media-domain-crawler|ip-web-crawler.com|siteexplorer.info|elisabot|proximic|changedetection|blexbot|arabot|WeSEE:Search|niki-bot|CrystalSemanticsBot|rogerbot|360Spider|psbot|InterfaxScanBot|Lipperhey SEO Service|CC Metadata Scaper|g00g1e.net|GrapeshotCrawler|urlappendbot|brainobot|fr-crawler|binlar|SimpleCrawler|Livelapbot|Twitterbot|cXensebot|smtbot|bnf.fr_bot|A6-Indexer|ADmantX|Facebot|Twitterbot|OrangeBot|memorybot|AdvBot|MegaIndex|SemanticScholarBot|ltx71|nerdybot|xovibot|BUbiNG|Qwantify|archive.org_bot|Applebot|TweetmemeBot|crawler4j|findxbot|SemrushBot|yoozBot|lipperhey|y!j-asr|Domain Re-Animator Bot|AddThis)"; var re = new RegExp(botPattern, 'i'); var userAgent = navigator.userAgent; var userAgentIsBot = false; if (re.test(userAgent)) { // the user agent is a crawler bot window.CookiesOK = true; userAgentIsBot = true; } if (webcareCmp) { webcareCmp.initConsent(); } if (window.drExternalCmp) { window.drExternalCmp.init(); } // remove cookies that are on the remove list if (dr_cookiebanner_options.dr_removeJsCookies != null && dr_cookie_erase) { dr_cookie_erase.cookies = dr_cookiebanner_options.dr_removeJsCookies; dr_cookie_erase.installService(); } this.options.cookie.name = this.options.cookieConsentName; if (!this.hasConsented()) { // check for url parameters var pconsent = this.options.dr_getConsentFromUrlParameter(); if (pconsent) { if (pconsent.drAllow) { this.setStatus("allow"); dr_cookiebanner_options.dr_acceptedCategories = ["statistic", "marketing", "unclassified"]; } else { this.setStatus("deny"); dr_cookiebanner_options.dr_acceptedCategories = []; if (pconsent.statistic === true) { dr_cookiebanner_options.dr_acceptedCategories.push("statistic"); } if (pconsent.marketing === true) { dr_cookiebanner_options.dr_acceptedCategories.push("marketing"); } if (pconsent.unknown === true) { dr_cookiebanner_options.dr_acceptedCategories.push("unclassified"); } } var c = this.options.cookie; if (c) { util.setCookie( this.options.cookieConsentModeName, JSON.stringify(dr_cookiebanner_options.dr_acceptedCategories), c.expiryDays, c.domain, c.path, c.secure ); } } } // returns true if `onComplete` was called if (checkCallbackHooks.call(this)) { // user has already answered this.options.enabled = false; } // apply blacklist / whitelist if (arrayContainsMatches(this.options.blacklistPage, location.pathname)) { this.options.enabled = false; } if (arrayContainsMatches(this.options.whitelistPage, location.pathname)) { this.options.enabled = true; } // the full markup either contains the wrapper or it does not (for multiple instances) var cookiePopup = this.options.window .replace('{{classes}}', getPopupClasses.call(this).join(' ')) .replace('{{children}}', getPopupInnerMarkup.call(this)); // if user passes html, use it instead var customHTML = this.options.overrideHTML; if (typeof customHTML == 'string' && customHTML.length) { cookiePopup = customHTML; } if (userAgentIsBot != true) { if (cookiePopup && cookiePopup.length > 5) { if (cookiePopup[0] == 'h' && cookiePopup[1] == 't' && cookiePopup[2] == 't' && cookiePopup[3] == 'p') { this.dynamicLoad(cookiePopup); } else { this.initialiseWaitForCSS(cookiePopup); } } else { this.initialiseWaitForCSS(null); } } else { console.log("WebCare deactivated for Crawlers and Bots") } } CookiePopup.prototype.dynamicLoad = function (contentUrl) { console.debug("Dynamically load " + contentUrl); var caller = this; var xhr = new XMLHttpRequest(); xhr.open('GET', contentUrl); xhr.timeout = 5000; xhr.send(); xhr.onload = function() { var success = false; if (xhr.status == 200) { if (xhr.response && xhr.response.length > 200) { success = true; } } if (success) { caller.initialiseWaitForCSS(xhr.response); } else { caller.initialiseWaitForCSS(null); } }; xhr.onprogress = function(event) { /* if (event.lengthComputable) { console.log("Received + " + event.loaded + " of " + event.total +" bytes"); } else { console.log("Received " + event.loaded + " bytes"); }*/ }; xhr.onerror = function() { console.error("Could not load language version: " + contentUrl); caller.initialiseWaitForCSS(null); }; } CookiePopup.prototype.initialiseWaitForCSS = function (cookiePopup) { var caller = this; caller.initialise2(cookiePopup); } CookiePopup.prototype.initialise2 = function (cookiePopup) { if (cookiePopup == null || cookiePopup.length < 200) { if (dr_generated_banner["en"] && dr_generated_banner["en"].length > 200) { cookiePopup = dr_generated_banner["en"]; } else if (dr_generated_banner["de"] && dr_generated_banner["de"].length > 200) { cookiePopup = dr_generated_banner["de"]; } else { cookiePopup = dr_generated_banner[0]; } } // now we have to update CSP nonce in HTML code to allow inline styling and execution if (this.options.cspNonce) { cookiePopup = cookiePopup.replace(/__csp:replace_nonce__/g, this.options.cspNonce); } // if static, we need to grow the element from 0 height so it doesn't jump the page // content. we wrap an element around it which will mask the hidden content if (this.options.static) { // `grower` is a wrapper div with a hidden overflow whose height is animated var wrapper = appendMarkup.call( this, '<div class="cc-grower">' + cookiePopup + '</div>' ); wrapper.style.display = ''; // set it to visible (because appendMarkup hides it) this.element = wrapper.firstChild; // get the `element` reference from the wrapper this.element.style.display = 'none'; util.addClass(this.element, 'cc-invisible'); } else { this.element = appendMarkup.call(this, cookiePopup); } // add custom logo if defined if (this.options.insertTopLogo != null && this.options.insertTopLogo.length > 0) { var insElm = document.getElementById("dr-insert-content"); if (insElm) { insElm.innerHTML = this.options.insertTopLogo; util.removeClass(insElm, "dr-invisible-element"); } insElm = document.getElementById("dr-pre-insert-content"); if (insElm) { insElm.innerHTML = this.options.insertTopLogo; util.removeClass(insElm, "dr-invisible-element"); } } this.options.dr_generateCountrySelectOptions(); // associate all events in current banner with corresponding functions // this is a replacement for inline functions because of CSP rules dr_associateAllEventHandlersInBanner(); applyAutoDismiss.call(this); if (this.options.cookieDomain) { if (this.options.cookieDomain.length > 0) { this.options.cookie.domain = this.options.cookieDomain; } } if (this.options.cookieConsentName) { if (this.options.cookieConsentName.length > 0) { this.options.cookie.name = this.options.cookieConsentName; } } applyRevokeButton.call(this); window.dr_isInitialized = true; if (this.options.autoOpen) { this.autoOpen(); } }; CookiePopup.prototype.destroy = function() { if (this.onButtonClick && this.element) { this.element.removeEventListener('click', this.onButtonClick); this.onButtonClick = null; } if (this.dismissTimeout) { clearTimeout(this.dismissTimeout); this.dismissTimeout = null; } if (this.onWindowScroll) { window.removeEventListener('scroll', this.onWindowScroll); this.onWindowScroll = null; } if (this.onWindowClick) { window.removeEventListener('click', this.onWindowClick); this.onWindowClick = null; } if (this.onMouseMove) { window.removeEventListener('mousemove', this.onMouseMove); this.onMouseMove = null; } if (this.element && this.element.parentNode) { this.element.parentNode.removeChild(this.element); } this.element = null; if (this.revokeBtn && this.revokeBtn.parentNode) { this.revokeBtn.parentNode.removeChild(this.revokeBtn); } this.revokeBtn = null; this.options = null; }; CookiePopup.prototype.open = function(callback) { if (!this.element) return; if (!this.isOpen()) { if (this.options.animateBanner === false) { this.element.style.display = ''; util.removeClass(this.element, 'cc-invisible'); } else { if (cc.hasTransition) { this.fadeIn(); } else { this.element.style.display = ''; } } if (this.options.revokable) { this.toggleRevokeButton(); } this.options.onPopupOpen.call(this); } return this; }; CookiePopup.prototype.close = function(showRevoke) { if (!this.element) return; if (this.isOpen()) { if (this.options.animateBanner === false) { this.element.style.display = 'none'; } else { if (cc.hasTransition) { this.fadeOut(); } else { this.element.style.display = 'none'; } } if (showRevoke && this.options.revokable) { this.toggleRevokeButton(true); } // execute tags with close activation mode if (window.drExternalCmp) { window.drExternalCmp.closegui(true); } this.options.dr_activateTags(this.options.dr_hasConsent("statistic"), this.options.dr_hasConsent("marketing"), true); if (window.drExternalCmp) { window.drExternalCmp.closegui(false); } this.options.onPopupClose.call(this); } // do redirect after consent decision if (dr_cookiebanner_options.onRedirectAfterConsent) { // call event callback instead of redirecting if (window.dr_redirectAfterConsentOption) { var c = dr_cookiebanner_options.dr_getConsentFromBanner(this.getStatus(), dr_cookiebanner_options.dr_acceptedCategories); parameters = dr_cookiebanner_options.dr_addConsentParameterToUrl(" ", c).substring(2); var o = { key: window.dr_redirectAfterConsentOption.key, description: window.dr_redirectAfterConsentOption.description, redirect: window.dr_redirectAfterConsentOption.redirect, consent: parameters } setTimeout(function () { dr_cookiebanner_options.onRedirectAfterConsent(o); }, 100); } } else { if (window.dr_redirectAfterConsent) { var redirectUrl = window.dr_redirectAfterConsent; var c = dr_cookiebanner_options.dr_getConsentFromBanner(this.getStatus(), dr_cookiebanner_options.dr_acceptedCategories); redirectUrl = dr_cookiebanner_options.dr_addConsentParameterToUrl(redirectUrl, c); setTimeout(function () { location.href = redirectUrl; }, 100); } } return this; }; CookiePopup.prototype.fadeIn = function() { var el = this.element; if (!cc.hasTransition || !el) return; // This should always be called AFTER fadeOut (which is governed by the 'transitionend' event). // 'transitionend' isn't all that reliable, so, if we try and fadeIn before 'transitionend' has // has a chance to run, then we run it ourselves if (this.afterTransition) { afterFadeOut.call(this, el); } if (util.hasClass(el, 'cc-invisible')) { el.style.display = ''; if (this.options.static) { var height = this.element.clientHeight; this.element.parentNode.style.maxHeight = height + 'px'; } var fadeInTimeout = 20; // (ms) DO NOT MAKE THIS VALUE SMALLER. See below // Although most browsers can handle values less than 20ms, it should remain above this value. // This is because we are waiting for a "browser redraw" before we remove the 'cc-invisible' class. // If the class is remvoed before a redraw could happen, then the fadeIn effect WILL NOT work, and // the popup will appear from nothing. Therefore we MUST allow enough time for the browser to do // its thing. The actually difference between using 0 and 20 in a set timeout is neglegible anyway this.openingTimeout = setTimeout( afterFadeIn.bind(this, el), fadeInTimeout ); } }; CookiePopup.prototype.fadeOut = function() { var el = this.element; if (!cc.hasTransition || !el) return; if (this.openingTimeout) { clearTimeout(this.openingTimeout); afterFadeIn.bind(this, el); } if (!util.hasClass(el, 'cc-invisible')) { if (this.options.static) { this.element.parentNode.style.maxHeight = ''; } this.afterTransition = afterFadeOut.bind(this, el); el.addEventListener(cc.transitionEnd, this.afterTransition); util.addClass(el, 'cc-invisible'); } }; CookiePopup.prototype.isOpen = function() { return ( this.element && this.element.style.display == '' && (cc.hasTransition ? !util.hasClass(this.element, 'cc-invisible') : true) ); }; CookiePopup.prototype.toggleRevokeButton = function(show) { if (this.options.dr_button_policy_hide) { if (this.options.dr_button_policy_hide == "true") { show = false; } } if (this.revokeBtn) this.revokeBtn.style.display = show ? '' : 'none'; }; CookiePopup.prototype.revokeChoice = function(preventOpen) { this.options.enabled = true; this.clearStatus(); this.options.onRevokeChoice.call(this); if (!preventOpen) { this.autoOpen(); } }; // returns true if the cookie has a valid value CookiePopup.prototype.hasAnswered = function(options) { return Object.keys(cc.status).indexOf(this.getStatus()) >= 0; }; // returns true if the cookie indicates that consent has been given CookiePopup.prototype.hasConsented = function(options) { if (window.CookiesOK) { return true; } if (window.CookiesDeny) { return false; } var val = this.getStatus(); return val == cc.status.allow || val == cc.status.dismiss; }; // opens the popup if no answer has been given CookiePopup.prototype.autoOpen = function(options) { if (!this.hasAnswered() && this.options.enabled) { this.open(); } else if (this.hasAnswered() && this.options.revokable) { this.toggleRevokeButton(true); } }; CookiePopup.prototype.setStatus = function(status) { var c = this.options.cookie; var value = util.getCookie(c.name); var chosenBefore = Object.keys(cc.status).indexOf(value) >= 0; // if `status` is valid if (Object.keys(cc.status).indexOf(status) >= 0) { util.setCookie( c.name, status, c.expiryDays, c.domain, c.path, c.secure ); this.options.onStatusChange.call(this, status, chosenBefore); } else { this.clearStatus(); } }; CookiePopup.prototype.getStatus = function() { return util.getCookie(this.options.cookie.name); }; CookiePopup.prototype.clearStatus = function() { let c = this.options.cookie; util.setCookie(c.name, '', -1, c.domain, c.path); util.setCookie(c.name, "", -1, null, c.path); let cdomain = window.location.hostname; let maxCount = 10; while ((maxCount--) > 0) { let idx = cdomain.indexOf('.'); if (idx < 0) { break; } try { util.setCookie(c.name, "", -1, cdomain, "/"); } catch (e) { } cdomain = cdomain.substring(idx + 1); } }; // This needs to be called after 'fadeIn'. This is the code that actually causes the fadeIn to work // There is a good reason why it's called in a timeout. Read 'fadeIn'; function afterFadeIn(el) { this.openingTimeout = null; util.removeClass(el, 'cc-invisible'); } // This is called on 'transitionend' (only on the transition of the fadeOut). That's because after we've faded out, we need to // set the display to 'none' (so there aren't annoying invisible popups all over the page). If for whenever reason this function // is not called (lack of support), the open/close mechanism will still work. function afterFadeOut(el) { el.style.display = 'none'; // after close and before open, the display should be none el.removeEventListener(cc.transitionEnd, this.afterTransition); this.afterTransition = null; } // this function calls the `onComplete` hook and returns true (if needed) and returns false otherwise function checkCallbackHooks() { var complete = this.options.onInitialise.bind(this); if (!window.navigator.cookieEnabled) { complete(cc.status.deny); return true; } if (window.CookiesOK || window.navigator.CookiesOK) { complete(cc.status.allow); return true; } if (window.CookiesDeny || window.navigator.CookiesDeny) { complete(cc.status.deny); return true; } var allowed = Object.keys(cc.status); var answer = this.getStatus(); var match = allowed.indexOf(answer) >= 0; if (match) { complete(answer); } return match; } function getPositionClasses() { var positions = this.options.position.split('-'); // top, bottom, left, right var classes = []; // top, left, right, bottom positions.forEach(function(cur) { classes.push('cc-' + cur); }); return classes; } function getPopupClasses() { var opts = this.options; var positionStyle = opts.position == 'top' || opts.position == 'bottom' ? 'banner' : 'floating'; if (util.isMobile()) { positionStyle = 'floating'; } var classes = [ 'cc-' + positionStyle, // floating or banner 'cc-type-' + opts.type, // add the compliance type 'cc-theme-' + opts.theme // add the theme ]; if (opts.static) { classes.push('cc-static'); } classes.push.apply(classes, getPositionClasses.call(this)); // we only add extra styles if `palette` has been set to a valid value var didAttach = attachCustomPalette.call(this, this.options.palette); // if we override the palette, add the class that enables this if (this.customStyleSelector) { classes.push(this.customStyleSelector); } return classes; } function getPopupInnerMarkup() { var interpolated = {}; var opts = this.options; // removes link if showLink is false if (!opts.showLink) { opts.elements.link = ''; opts.elements.messagelink = opts.elements.message; } Object.keys(opts.elements).forEach(function(prop) { interpolated[prop] = util.interpolateString( opts.elements[prop], function(name) { var str = opts.content[name]; return name && typeof str == 'string' && str.length ? str : ''; } ); }); // checks if the type is valid and defaults to info if it's not var complianceType = opts.compliance[opts.type]; if (!complianceType) { complianceType = opts.compliance.info; } // build the compliance types from the already interpolated `elements` interpolated.compliance = util.interpolateString(complianceType, function( name ) { return interpolated[name]; }); // checks if the layout is valid and defaults to basic if it's not var layout = opts.layouts[opts.layout]; if (!layout) { layout = opts.layouts.basic; } return util.interpolateString(layout, function(match) { return interpolated[match]; }); } function appendMarkup(markup) { var opts = this.options; var div = document.createElement('div'); var cont = opts.container && opts.container.nodeType === 1 ? opts.container : document.body; if (cont) { // all OK } else { console.error("WebCare Integration Error: Please make sure to place the Cookie Banner Code in the BODY section of the page.") } div.innerHTML = markup; var el = div.children[0]; el.style.display = 'none'; if (util.hasClass(el, 'cc-window') && cc.hasTransition) { util.addClass(el, 'cc-invisible'); } // save ref to the function handle so we can unbind it later this.onButtonClick = handleButtonClick.bind(this); el.addEventListener('click', this.onButtonClick); if (opts.autoAttach) { if (!cont.firstChild) { cont.appendChild(el); } else { cont.insertBefore(el, cont.firstChild); } } return el; } function handleButtonClick(event) { // returns the parent element with the specified class, or the original element - null if not found var btn = util.traverseDOMPath(event.target, 'cc-btn') || event.target; if (btn && btn.dataset) { if(btn.dataset["denymode"] === "strict") { // in this mode its not "save current checkbox settings" but deny statistic, marketing and unclassified cookies dr_enableCheckbox("statistic", false); dr_enableCheckbox("marketing", false); dr_enableCheckbox("unclassified", false); } } if (util.hasClass(btn, 'cc-btn')) { var matches = btn.className.match( new RegExp('\\bcc-(' + __allowedStatuses.join('|') + ')\\b') ); var match = (matches && matches[1]) || false; if (match) { this.setStatus(match); this.close(true); } } if (util.hasClass(btn, 'cc-close')) { this.setStatus(cc.status.dismiss); this.close(true); } if (util.hasClass(btn, 'cc-revoke')) { this.revokeChoice(); } } // I might change this function to use inline styles. I originally chose a stylesheet because I could select many elements with a // single rule (something that happened a lot), the apps has changed slightly now though, so inline styles might be more applicable. function attachCustomPalette(palette) { var hash = util.hash(JSON.stringify(palette)); var selector = 'cc-color-override-' + hash; var isValid = util.isPlainObject(palette); this.customStyleSelector = isValid ? selector : null; if (isValid) { addCustomStyle(hash, palette, '.' + selector); } return isValid; } function addCustomStyle(hash, palette, prefix) { // only add this if a style like it doesn't exist if (cc.customStyles[hash]) { // custom style already exists, so increment the reference count ++cc.customStyles[hash].references; return; } var colorStyles = {}; var popup = palette.popup; var button = palette.button; var highlight = palette.highlight; // needs background colour, text and link will be set to black/white if not specified if (popup) { // assumes popup.background is set popup.text = popup.text ? popup.text : util.getContrast(popup.background); popup.link = popup.link ? popup.link : popup.text; colorStyles[prefix + '.cc-window'] = [ 'color: ' + popup.text, 'background-color: ' + popup.background ]; colorStyles[prefix + '.cc-revoke'] = [ 'color: ' + popup.text, 'background-color: ' + popup.background ]; colorStyles[ prefix + ' .cc-link,' + prefix + ' .cc-link:active,' + prefix + ' .cc-link:visited' ] = ['color: ' + popup.link]; if (button) { // assumes button.background is set button.text = button.text ? button.text : util.getContrast(button.background); button.border = button.border ? button.border : 'transparent'; colorStyles[prefix + ' .cc-btn'] = [ 'color: ' + button.text, 'border-color: ' + button.border, 'background-color: ' + button.background ]; if (button.padding) { colorStyles[prefix + ' .cc-btn'].push('padding: ' + button.padding); } if (button.background != 'transparent') { colorStyles[ prefix + ' .cc-btn:hover, ' + prefix + ' .cc-btn:focus' ] = [ 'background-color: ' + (button.hover || getHoverColour(button.background)) ]; } if (highlight) { //assumes highlight.background is set highlight.text = highlight.text ? highlight.text : util.getContrast(highlight.background); highlight.border = highlight.border ? highlight.border : 'transparent'; colorStyles[prefix + ' .cc-highlight .cc-btn:first-child'] = [ 'color: ' + highlight.text, 'border-color: ' + highlight.border, 'background-color: ' + highlight.background ]; } else { // sets highlight text color to popup text. background and border are transparent by default. colorStyles[prefix + ' .cc-highlight .cc-btn:first-child'] = [ 'color: ' + popup.text ]; } } } // this will be interpretted as CSS. the key is the selector, and each array element is a rule var style = document.createElement('style'); document.head.appendChild(style); // custom style doesn't exist, so we create it cc.customStyles[hash] = { references: 1, element: style.sheet }; var ruleIndex = -1; for (var prop in colorStyles) { if (colorStyles.hasOwnProperty(prop)) { style.sheet.insertRule( prop + '{' + colorStyles[prop].join(';') + '}', ++ruleIndex ); } } } function getHoverColour(hex) { hex = util.normaliseHex(hex); // for black buttons if (hex === '000000') { return '#222'; } return util.getLuminance(hex); } function arrayContainsMatches(array, search) { for (var i = 0, l = array.length; i < l; ++i) { var str = array[i]; // if regex matches or string is equal, return true if ( (str instanceof RegExp && str.test(search)) || (typeof str == 'string' && str.length && str === search) ) { return true; } } return false; } function applyAutoDismiss() { var setStatus = this.setStatus.bind(this); var close = this.close.bind(this); var delay = this.options.dismissOnTimeout; if (typeof delay == 'number' && delay >= 0) { this.dismissTimeout = window.setTimeout(function() { setStatus(cc.status.dismiss); close(true); }, Math.floor(delay)); } var scrollRange = this.options.dismissOnScroll; if (typeof scrollRange == 'number' && scrollRange >= 0) { var onWindowScroll = function(evt) { if (window.pageYOffset > Math.floor(scrollRange)) { setStatus(cc.status.dismiss); close(true); window.removeEventListener('scroll', onWindowScroll); this.onWindowScroll = null; } }; if (this.options.enabled) { this.onWindowScroll = onWindowScroll; window.addEventListener('scroll', onWindowScroll); } } var windowClick = this.options.dismissOnWindowClick; var ignoredClicks = this.options.ignoreClicksFrom; if (windowClick) { var onWindowClick = function(evt) { var isIgnored = false; var pathLen = evt.path.length; var ignoredLen = ignoredClicks.length; for (var i = 0; i < pathLen; i++) { if (isIgnored) continue; for (var i2 = 0; i2 < ignoredLen; i2++) { if (isIgnored) continue; isIgnored = util.hasClass(evt.path[i], ignoredClicks[i2]); } } if (!isIgnored) { setStatus(cc.status.dismiss); close(true); window.removeEventListener('click', onWindowClick); this.onWindowClick = null; } }.bind(this); if (this.options.enabled) { this.onWindowClick = onWindowClick; window.addEventListener('click', onWindowClick); } } } function applyRevokeButton() { // revokable is true if advanced compliance is selected if (this.options.type != 'info') this.options.revokable = true; // animateRevokable false for mobile devices if (util.isMobile()) { this.options.animateRevokable = false; } if (this.options.revokable) { if (this.options.position == "middle") { var classes = []; if (this.options.policyPosition === "top") { classes.push("cc-top"); } else { classes.push("cc-bottom"); } } else { var classes = getPositionClasses.call(this); } if (util.isMobile()) { if (this.options.revokeOnMobile === false) { classes.push('cc-hide-revoke'); } } if (this.options.animateRevokable) { classes.push('cc-animate'); } if (this.customStyleSelector) { classes.push(this.customStyleSelector); } var usePolicy = this.options.content.policy; if (util.isMobile() && this.options.content.mobilePolicy) { usePolicy = this.options.content.mobilePolicy; } if (this.options.useRevokeCookieIcon === "true") { usePolicy = this.options.content.mobilePolicy; } if (usePolicy) { // now we have to update CSP nonce in HTML/SVG code to allow inline styling (prevent FOUC) if (this.options.cspNonce) { usePolicy = usePolicy.replace(/__csp:replace_nonce__/g, this.options.cspNonce); } } var revokeBtn = this.options.revokeBtn .replace('{{classes}}', classes.join(' ')) .replace('{{policy}}', usePolicy); this.revokeBtn = appendMarkup.call(this, revokeBtn); var btn = this.revokeBtn; if (this.options.animateRevokable) { var wait = false; var onMouseMove = util.throttle(function(evt) { var active = false; var minY = 20; var maxY = window.innerHeight - 20; if (util.hasClass(btn, 'cc-top') && evt.clientY < minY) active = true; if (util.hasClass(btn, 'cc-bottom') && evt.clientY > maxY) active = true; if (active) { if (!util.hasClass(btn, 'cc-active')) { util.addClass(btn, 'cc-active'); } } else { if (util.hasClass(btn, 'cc-active')) { util.removeClass(btn, 'cc-active'); } } }, 200); this.onMouseMove = onMouseMove; if (window.document.documentMode) { // IE of some version window.addEventListener('mousemove', onMouseMove); } else { window.addEventListener('mousemove', onMouseMove, {passive: true}); } } } } return CookiePopup; })(); // export utils (no point in hiding them, so we may as well expose them) cc.utils = util; // retrieves the current status of the consent by cookie and array // usage: window.cookieconsent.currentConsentStatus(); cc.currentConsentStatus = function() { let status = null; let consentModeArray = []; if (this.utils && dr_cookiebanner_options) { status = this.utils.getCookie(dr_cookiebanner_options.cookieConsentName); consentModeArray = dr_cookiebanner_options.dr_acceptedCategories } let result = { tech: true, preferences: true, statistic: false, marketing: false, unknown: false, drAllow: false, drDeny: false }; if (status === "allow") { result.statistic = true; result.marketing = true; result.unknown = true; result.drAllow = true; } else { if (consentModeArray) { for (let i=0; i < consentModeArray.length; i++) { if ("statistic" === consentModeArray[i]) { result.statistic = true; } else if ("marketing" === consentModeArray[i]) { result.marketing = true; } else if ("unclassified" === consentModeArray[i]) { result.unknown = true; } } } } return result; } // Initialize the banner cc.initialise = function(options, complete, error) { if (!complete) complete = function() {}; if (!error) error = function() {}; var allowed = Object.keys(cc.status); var answer = util.getCookie(options.cookieConsentName); var match = allowed.indexOf(answer) >= 0; // if they have already answered if (match) { complete(new cc.Popup(options)); return; } options.revokable = true; options.dismissOnScroll = false; options.dismissOnTimeout = false; complete(new cc.Popup(options)); }; // prevent this code from being run twice cc.hasInitialised = true; window.cookieconsent = cc; })(window.cookieconsent || {}); function dr_selectTab(id) { var selected = id; if (dr_hasClass("#dr_tab_" + id, "dr-overview-item-active")) { selected = -1; } for (var i=1; i<=7; i++) { if (i == selected || selected == -1) { // select tab dr_removeCssClass("#dr_tab_" + i, "dr-overview-item-inactive"); dr_removeCssClass("#dr_tab_" + i +" .dr-overview-item-count", "dr-overview-item-count-inactive"); if (selected == -1) { dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); dr_removeCssClass("#dr_tab_" + i, "dr-overview-item-active"); dr_addCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-right"); dr_removeCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-right-inactive"); dr_removeCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-down"); dr_removeCssClass("#dr-tab-" + i + "-details", "dr-tab-details-active"); } else { dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); dr_addCssClass("#dr_tab_" + i, "dr-overview-item-active"); dr_removeCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-right"); dr_removeCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-right-inactive"); dr_addCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-down"); dr_addCssClass("#dr-tab-" + i + "-details", "dr-tab-details-active"); } } else { // deselect tab dr_addCssClass("#dr_tab_" + i, "dr-overview-item-inactive"); dr_addCssClass("#dr_tab_" + i +" .dr-overview-item-count", "dr-overview-item-count-inactive"); dr_removeCssClass("#dr_tab_" + i, "dr-overview-item-active"); dr_removeCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-down"); dr_addCssClass("#dr_tab_" + i + " .dr-arrow-id", "dr-overview-arrow-right-inactive"); dr_removeCssClass("#dr-tab-" + i + "-details", "dr-tab-details-active"); } } } function dr_addCssClass(query, className) { var element, arr; var elements = dr_select(query); for (var i=0; i<elements.length; i++) { element = elements[i]; if (element) { if (element.classList) { element.classList.add(className); } } } } function dr_removeCssClass(query, className) { var elements = dr_select(query); for (var i=0; i<elements.length; i++) { var element = elements[i]; if (element) { if (element.classList) { element.classList.remove(className); // maybe IE9 incompatible } } } } function dr_hasClass(query, className) { var elements = dr_select(query); for (var i=0; i<elements.length; i++) { var element = elements[i]; if (element) { if (element.classList) { if (element.classList.contains(className)) { return true; } } } } return false; } function dr_select(query) { var result = document.querySelectorAll(query); if (result) { return result; } else { return []; } } /** * Tool to reload all iframes on page (typically used when closing the consent banner) * @param conf Configuration (optional): * * { * debugOutput: true | false, * appendConsent: true | false, * blacklist: [list of iframe urls or part of urls to ignore completely] * whitelist: [list of iframe urls or part of urls to include] - null or undefined to include all urls except blacklisted * whitelistAppendUrls: [list of urls to append to] - null or undefined to include all urls except blacklisted * blacklistAppendUrls: [list of urls to not append to] * } * */ function dr_reloadAllIframesOnPage(conf) { var f_list = document.getElementsByTagName('iframe'); if (f_list) { for (var i = 0; i < f_list.length; i++) { var f = f_list[i]; if (f && f.src) { var doReload = true; var appendConsent = false; var debugOutput = false; if (conf) { if (conf.debugOutput === true) { debugOutput = true; } if (conf.appendConsent === true) { appendConsent = true; } if (conf.blacklist) { doReload = !dr_arrayFoundInUrl(conf.blacklist, f.src); } if (doReload === true) { if (conf.whitelist) { doReload = dr_arrayFoundInUrl(conf.whitelist, f.src); } } if (doReload === true) { if (conf.blacklistAppendUrls) { appendConsent = !dr_arrayFoundInUrl(conf.blacklistAppendUrls, f.src); } if (doReload === true) { if (conf.whitelistAppendUrls) { appendConsent = dr_arrayFoundInUrl(conf.whitelistAppendUrls, f.src); } } } } if (doReload === true) { var src = f.src; if (appendConsent === true) { src = dr_cookiebanner_options.dr_removeConsentParameterFromUrl(src); var status = null; if (window.cookieconsent && window.cookieconsent.utils) { status = window.cookieconsent.utils.getCookie(dr_cookiebanner_options.cookieConsentName); } var consent = dr_cookiebanner_options.dr_getConsentFromBanner(status, dr_cookiebanner_options.dr_acceptedCategories); src = dr_cookiebanner_options.dr_addConsentParameterToUrl(src, consent); } if (debugOutput === true) { console.debug("iFrame reload with url: " + src); } if (document._jestActive) { f.srcReload = true; } f.src = src; } } } } } /** * External function: adds current consent to any given url * @param url - url to add the consent to * @returns {*} */ function dr_filterUrlAddConsent(url) { var src = url; src = dr_cookiebanner_options.dr_removeConsentParameterFromUrl(src); var status = null; if (window.cookieconsent && window.cookieconsent.utils) { status = window.cookieconsent.utils.getCookie(dr_cookiebanner_options.cookieConsentName); } var consent = dr_cookiebanner_options.dr_getConsentFromBanner(status, dr_cookiebanner_options.dr_acceptedCategories); src = dr_cookiebanner_options.dr_addConsentParameterToUrl(src, consent); return src; } function dr_stringContains(haystack, needle) { if (haystack && needle) { if (haystack.search(new RegExp(needle, "i")) === -1) { return false; } else { return true; } } else { return false; } } function dr_arrayFoundInUrl(needleArray, url) { if (needleArray && Array.isArray(needleArray) && needleArray.length > 0 && url) { for (var i=0; i<needleArray.length; i++) { var part = needleArray[i]; if (dr_stringContains(url, part)) { return true; } } return false; } else { return false; } } function dr_showCookiebar() { var cbar = document.getElementById("dr-cookieBar"); var cshow = document.getElementById("dr-cookieShow"); if (cbar && cshow) { cbar.style.display = "flex"; cbar.style.display = "-ms-flexbox"; cbar.style.display = "-webkit-box"; cshow.style.display = "none"; } } function dr_ol_showDetails() { var oneline = document.getElementById("dr_oneline-banner"); var details = document.getElementById("dr_detailed-banner"); if (oneline && details) { oneline.style.display = "none"; details.style.display = "block"; } } function dr_pre_showDetails() { var pre = document.getElementById("dr_pre-banner"); var details = document.getElementById("dr_detailed-banner"); var option = dr_cookiebanner_options.dr_getSelectedPreBannerOption(); if (option) { window.dr_redirectAfterConsentOption = option; if (option.redirect) { window.dr_redirectAfterConsent = option.redirect; } } if (pre && details) { pre.style.display = "none"; details.style.display = "block"; } } function dr_pre_selectCountry() { var pre = document.getElementById("dr-selectCountry-input"); var btn = document.getElementById("dr-selectCountry-btn"); if (pre) { if (btn) { if (pre.value && pre.value !== "") { btn.style.visibility="visible"; } else { btn.style.visibility="hidden"; } } } } function dr_parseLinkUrl(url) { var result = { url: null, target:null }; if (url) { var suffix = ";samewindow"; if (url.length >=suffix.length && url.indexOf(suffix, url.length - suffix.length) !== -1) { url = url.substr(0, url.length - suffix.length); result.url = url; result.target = null; } else { result.url = url; result.target = "_blank"; } if (result.url === "") { result.url = null; } } return result; } function dr_openNewWindow(url) { var openUrl = dr_parseLinkUrl(url); if (openUrl && openUrl.url != null) { if (openUrl.target == null) { location.href = openUrl.url; } else { window.open(openUrl.url); } } } function dr_removePrefix(str, prefix) { if (str === null || prefix === null) { return str; } return str.startsWith(prefix) ? str.substring(prefix.length) : str; } function dr_removeWebCacheBasePath(url) { return dr_removePrefix(url, "https://webcache-eu.datareporter.eu/c/"); } function dr_loadWithDocViewer(docPath) { if (typeof window.drShowDocumentViewer === 'function') { window.drShowDocumentViewer(docPath); } else { let exelist = []; let loaderCode = "window.drShowDocumentViewer('" + docPath + "');"; exelist.push({type: "exe", script: {text: loaderCode }, done: false, removeAfterExe: false}); dr_loadJs("https://webcachex-eu.datareporter.eu/docview/v1/docview.js", exelist); } } function dr_openPrivacyLink(url) { if (dr_cookiebanner_options.openPrivacyLinkInDocViewer === true && dr_cookiebanner_options.applicationPath && dr_cookiebanner_options.applicationPath.length > 0) { let docPath = dr_removeWebCacheBasePath(dr_cookiebanner_options.applicationPath) + "privacynotice"; dr_loadWithDocViewer(docPath) } else { if (dr_cookiebanner_options.privacyLinkUrl) { if (dr_cookiebanner_options.privacyLinkUrl.length > 0) { url = dr_cookiebanner_options.privacyLinkUrl; } } dr_openNewWindow(url); } } function dr_openImprintLink(url) { if (dr_cookiebanner_options.openImprintLinkInDocViewer === true && dr_cookiebanner_options.companyPath && dr_cookiebanner_options.companyPath.length > 0) { let docPath = dr_removeWebCacheBasePath(dr_cookiebanner_options.companyPath) + "imprint"; dr_loadWithDocViewer(docPath) } else { if (dr_cookiebanner_options.imprintLinkUrl) { if (dr_cookiebanner_options.imprintLinkUrl.length > 0) { url = dr_cookiebanner_options.imprintLinkUrl; } } dr_openNewWindow(url); } } function dr_changeCheckbox(cb, type) { var headlineCb = document.getElementById("dr-cb-headline-" + type); var detailsCb = document.getElementById("dr-cb-details-" + type); if (headlineCb) { if (headlineCb.checked !== cb.checked) { headlineCb.checked = cb.checked; } } if (detailsCb) { if (detailsCb.checked !== cb.checked) { detailsCb.checked = cb.checked; } } } function dr_enableCheckbox(type, enable) { var headlineCb = document.getElementById("dr-cb-headline-" + type); var detailsCb = document.getElementById("dr-cb-details-" + type); if (headlineCb) { headlineCb.checked = enable; } if (detailsCb) { detailsCb.checked = enable; } } function dr_onShowCategoryDetailsHide() { var cat = document.getElementById("dr-tab-category-details"); if (cat) { if (cat.style.display === "block") { cat.style.display = "none"; dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); } else { cat.style.display = "block"; dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); // only hide details button in non editor mode if (window.dr_webcare_editor_active !== "true") { var details = document.querySelectorAll(".cc-banner-hidden .cc-details"); if (details && details.length > 0) { for (var i = 0; i < details.length; i++) { details[i].style.display = "none"; } } var compliance = document.querySelector(".cc-banner-hidden .dr-flex-centered"); if (compliance) { compliance.style.justifyContent = "flex-start"; compliance.style.alignContent = "flex-start"; } } } } } function dr_onShowCategoryDetails() { var cat = document.getElementById("dr-tab-category-details"); if (cat) { if (cat.style.display === "block") { cat.style.display = "none"; dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); dr_removeCssClass(".dr-btn-show-more > span.dr-open-arrow", "dr-open-arrow-status-open"); dr_removeCssClass(".dr-btn-show-more-mobile > span.dr-open-arrow", "dr-open-arrow-status-open"); dr_removeCssClass(".dr-btn-show-more-nocat > span.dr-open-arrow", "dr-open-arrow-status-open"); } else { cat.style.display = "block"; dr_addCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-hide"); dr_removeCssClass(".cc-window .dr-hide-on-detail", "dr-hide-on-detail-show"); dr_addCssClass(".dr-btn-show-more > span.dr-open-arrow", "dr-open-arrow-status-open"); dr_addCssClass(".dr-btn-show-more-mobile > span.dr-open-arrow", "dr-open-arrow-status-open"); dr_addCssClass(".dr-btn-show-more-nocat > span.dr-open-arrow", "dr-open-arrow-status-open"); } } } function dr_showCategoryTableDetails(type) { let tabs = ["tech", "statistic", "marketing", "unclassified",]; for (var i=0; i< tabs.length; i++) { var tb = document.getElementById("dr-category-table-" + tabs[i]); if (tb) { var openState = false; if (type === tabs[i]) { if (tb.style.display === "block") { tb.style.display = "none"; } else { tb.style.display = "block"; openState = true; } } else { tb.style.display = "none"; } if (openState) { dr_addCssClass("#dr-open-link-" + tabs[i] + " > span", "dr-open-arrow-status-open"); } else { dr_removeCssClass("#dr-open-link-" + tabs[i] + " > span", "dr-open-arrow-status-open"); } } } } function dr_revokeChoice() { var elements = document.getElementsByClassName("cc-revoke"); if (elements) { for (var i=0; i<elements.length; i++) { if (elements[i]) { elements[i].click(); } } } } function dr_denyChoice() { var elements = document.getElementsByClassName("cc-deny"); if (elements) { for (var i=0; i<elements.length; i++) { if (elements[i]) { elements[i].click(); } } } } function dr_allowChoice() { var elements = document.getElementsByClassName("cc-allow"); if (elements) { for (var i=0; i<elements.length; i++) { if (elements[i]) { elements[i].click(); } } } } function dr_associateEventHandler(id, type, handler, dataParameterName) { var helem = document.getElementById(id); if (helem) { if (dataParameterName) { // has a data-<dataParameterName> attribute that will be sent to handler var pcontent = helem.dataset[dataParameterName]; if (pcontent) { helem.addEventListener(type, function (e) { handler(pcontent); e.preventDefault(); }) } else { helem.addEventListener(type, function(e) { handler(); e.preventDefault(); }); } } else { helem.addEventListener(type, function(e) { handler(); e.preventDefault(); }); } } } function dr_associateCheckboxEventHandler(id, handler, category) { var helem = document.getElementById(id); if (helem) { var drcat = category; helem.addEventListener("change", function(e) { handler(helem, drcat); e.preventDefault(); }); } } function dr_associateAllEventHandlersInBanner() { // Global Buttons/Links dr_associateEventHandler("dr-privacylink-id", "click", dr_openPrivacyLink, "url"); dr_associateEventHandler("dr-imprintlink-id", "click", dr_openImprintLink, "url"); // Infobanner Buttons dr_associateEventHandler("dr-infobanner-btn-show-more-nocat", "click", dr_onShowCategoryDetails); dr_associateEventHandler("dr-infobanner-show-tech-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-infobanner-show-statistic-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-infobanner-show-marketing-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-infobanner-show-unclassified-details-id", "click", dr_showCategoryTableDetails, "category"); // Category Banner dr_associateEventHandler("dr-categorybanner-btn-show-more-mobile", "click", dr_onShowCategoryDetails); dr_associateEventHandler("dr-categorybanner-btn-show-more-desktop", "click", dr_onShowCategoryDetails); dr_associateEventHandler("dr-categorybanner-show-tech-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-categorybanner-show-statistic-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-categorybanner-show-marketing-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-categorybanner-show-unclassified-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateCheckboxEventHandler("dr-cb-headline-statistic", dr_changeCheckbox, "statistic"); dr_associateCheckboxEventHandler("dr-cb-details-statistic", dr_changeCheckbox, "statistic"); dr_associateCheckboxEventHandler("dr-cb-headline-marketing", dr_changeCheckbox, "marketing"); dr_associateCheckboxEventHandler("dr-cb-details-marketing", dr_changeCheckbox, "marketing"); dr_associateCheckboxEventHandler("dr-cb-headline-unclassified", dr_changeCheckbox, "unclassified"); dr_associateCheckboxEventHandler("dr-cb-details-unclassified", dr_changeCheckbox, "unclassified"); // Detailed banner dr_associateEventHandler("dr_tab_1", "click", dr_selectTab, "tabid"); dr_associateEventHandler("dr_tab_2", "click", dr_selectTab, "tabid"); dr_associateEventHandler("dr_tab_3", "click", dr_selectTab, "tabid"); dr_associateEventHandler("dr_tab_4", "click", dr_selectTab, "tabid"); dr_associateEventHandler("dr_tab_5", "click", dr_selectTab, "tabid"); dr_associateEventHandler("dr_tab_6", "click", dr_openPrivacyLink, "url"); dr_associateEventHandler("dr_tab_7", "click", dr_openImprintLink, "url"); // Hidden Category Banner dr_associateEventHandler("dr-hiddencat-btn-show-more-hide", "click", dr_onShowCategoryDetailsHide); dr_associateEventHandler("dr-hiddencat-show-tech-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-hiddencat-show-statistic-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-hiddencat-show-marketing-details-id", "click", dr_showCategoryTableDetails, "category"); dr_associateEventHandler("dr-hiddencat-show-unclassified-details-id", "click", dr_showCategoryTableDetails, "category"); // Oneline Banner dr_associateEventHandler("dr-oneline-btn-show-more", "click", dr_ol_showDetails); dr_associateEventHandler("dr-oneline-btn-show-more-alt", "click", dr_ol_showDetails); dr_associateEventHandler("dr-oneline-privacylink-id", "click", dr_openPrivacyLink, "url"); dr_associateEventHandler("dr-oneline-imprintlink-id", "click", dr_openImprintLink, "url"); // Countryselect pre-banner dr_associateEventHandler("dr-selectCountry-input", "change", dr_pre_selectCountry); dr_associateEventHandler("dr-selectCountry-btn", "click", dr_pre_showDetails); } var dr_swarmCrawler = { siteInfo : { version:1, protocol: null, domain: null, port: null, path: null, cookies: [], scripts: [], stylesheets: [], }, activate : function() { dr_cookiebanner_options.log("SC.activate()"); dr_swarmCrawler.gatherSiteInfo(); dr_cookiebanner_options.logJson("SC: SiteInfo", dr_swarmCrawler.siteInfo); /* let url = "https://swarmcrawler.datareporter.eu/v1/CrowdCrawler/register"; if (dr_cookiebanner_options.swarmCrawlerVersion === 2) { url = "https://swarmcrawler.datareporter.eu/v1/swarmcrawler-redirect"; } */ let url = "https://swarmcrawler.datareporter.eu/v1/swarmcrawler-redirect"; try { let xhr = new XMLHttpRequest(); xhr.open('PUT', url, true); xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); xhr.setRequestHeader('x-api-key', '6txg8Su4Zy1bD6jhFbAMfEeP2XrRk546e5XsqoVi'); xhr.timeout = 5000; xhr.onload = function () { // do nothing }; xhr.send(JSON.stringify(dr_swarmCrawler.siteInfo)); } catch (e) { dr_cookiebanner_options.log("SC.error: " + e); } }, gatherSiteInfo: function() { dr_cookiebanner_options.log("SC.gatherSiteInfo()"); var server = [location.protocol, '//', location.host].join(''); dr_swarmCrawler.siteInfo.protocol = location.protocol; dr_swarmCrawler.siteInfo.domain = location.hostname; dr_swarmCrawler.siteInfo.port = location.port; dr_swarmCrawler.siteInfo.path = location.pathname; // gather cookies let theCookies = document.cookie.split(';'); for (let i = 0; i < theCookies.length; i++) { var cname = theCookies[i].split('='); if (cname && cname.length > 0) { var drcookieName = dr_swarmCrawler.cookieOK(cname[0]); if (drcookieName !== false) { dr_swarmCrawler.addStringToArray(drcookieName, dr_swarmCrawler.siteInfo.cookies); } } } // gather loaded scripts let scripts = document.getElementsByTagName('script'); if (scripts && scripts.length > 0) { for (let i = 0; i < scripts.length; i++) { if (scripts[i].src) { // only locals if (!dr_swarmCrawler.startsWith(scripts[i].src, server, 0)) { if (dr_swarmCrawler.scriptOK(scripts[i].src)) { dr_swarmCrawler.addStringToArray(dr_swarmCrawler.getHostPathFromUrl(scripts[i].src), dr_swarmCrawler.siteInfo.scripts); } } } } } // gather loaded iframes as scripts let iframes = document.getElementsByTagName('iframe'); if (iframes && iframes.length > 0) { for (let i = 0; i < iframes.length; i++) { if (iframes[i].src) { // only locals if (!dr_swarmCrawler.startsWith(iframes[i].src, server, 0)) { if (dr_swarmCrawler.iframeOK(iframes[i].src)) { dr_swarmCrawler.addStringToArray("iframe:" + dr_swarmCrawler.getHostPathFromUrl(iframes[i].src), dr_swarmCrawler.siteInfo.scripts); } } } } } // gather loaded stylesheets let stylesheets = document.getElementsByTagName('link'); if (stylesheets && stylesheets.length > 0) { for (var i = 0; i < stylesheets.length; i++) { if (stylesheets[i].href) { // only locals if (stylesheets[i].rel === "stylesheet") { if (!dr_swarmCrawler.startsWith(stylesheets[i].href, server, 0)) { if (dr_swarmCrawler.styleOK(stylesheets[i].href)) { dr_swarmCrawler.addStringToArray(dr_swarmCrawler.getHostPathFromUrl(stylesheets[i].href), dr_swarmCrawler.siteInfo.stylesheets) } } } } } } }, cookieOK : function (name) { if (name) { name = dr_swarmCrawler.trim(name); if (dr_swarmCrawler.startsWith(name, "gd15")) { return "gd15"; } if (dr_swarmCrawler.startsWith(name, "gd16")) { return "gd16"; } if (dr_swarmCrawler.startsWith(name, "__ZEHIC")) { return "__ZEHIC"; } if (dr_swarmCrawler.startsWith(name, "__zjc")) { return "__zjc"; } if (name === "m") { // stripe cookie return name; } if (name.length <= 1) { return false; } } else { return false; } return name; }, scriptOK : function (name) { if (name) { name = dr_swarmCrawler.trim(name); if (name.length <= 1) { return false; } } else { return false; } return true; }, iframeOK : function (name) { if (name) { name = dr_swarmCrawler.trim(name); if (name.length <= 1) { return false; } } else { return false; } return true; }, styleOK : function (name) { if (name) { name = dr_swarmCrawler.trim(name); if (name.length <= 1) { return false; } } else { return false; } return true; }, getHostPathFromUrl : function(url) { if (url == null || url.length === 0) { return null; } if (url) { var param = url.indexOf('?'); if (param > 0) { url = url.substring(0, param); } param = url.indexOf('#'); if (param > 0) { url = url.substring(0, param); } param = url.indexOf(';'); if (param > 0) { url = url.substring(0, param); } } return url; }, // utility function startsWith : function(str, searchString, position) { position = position || 0; return str.indexOf(searchString, position) === position; }, trim : function(x) { if (x != null) { return x.replace(/^\s+|\s+$/gm, ''); } else { return null; } }, addStringToArray: function(str, arr) { if (arr != null && str != null) { if (arr.indexOf(str) < 0) { arr.push(str); } } } } function dr_initIntegrationTags(tags) { if (tags) { for (let i=0; i<tags.length; i++) { let tag = tags[i]; dr_initIntegrationTag(0, tag); } } } function dr_getTagElementsWithId(id) { if (id) { let modId = id.trim(); if (modId.length > 0) { if (modId.charAt(0) === '.') { return document.querySelectorAll(modId); } else { return document.querySelectorAll("#" + modId); } } } return undefined; } function dr_initIntegrationTag(iterationNr, tag) { if (iterationNr >= 4) { return; } if (tag) { if (tag.active !== true && tag.divId && tag.divId.length > 0) { let eList = dr_getTagElementsWithId(tag.divId); if (eList && eList.length > 0) { for (let i=0; i<eList.length; i++) { dr_replaceTagElementWithPlaceholder(eList[i], tag); } } else { setTimeout(function () { dr_initIntegrationTag(iterationNr + 1, tag); }, 100 + (iterationNr * 600)); } } } } function dr_replaceTagElementWithPlaceholder(e, tag) { if (e && tag) { if (tag.placeholderDesign === "user") { // just link button let selector = tag.divId + " .cc-tag-activate-btn"; if (tag.divId && tag.divId.length > 0) { if (tag.divId.charAt(0) === '.' || tag.divId.charAt(0) === '#') { // seems selector is ok } else { selector ="#" + selector; } } let bList = document.querySelectorAll(selector); if (bList && bList.length > 0) { for (let i=0; i<bList.length; i++) { let btn = bList[i]; if (btn) { btn.setAttribute("dr_tagname", tag.divId); btn.addEventListener("click", dr_activateTagWithClick, true); } } } } else { if (tag.placeholderDesign === "map") { e.classList.add("cc-tag-placeholder-maps"); } else if (tag.placeholderDesign === "video") { e.classList.add("cc-tag-placeholder-video"); } else if (tag.placeholderDesign === "calendar") { e.classList.add("cc-tag-placeholder-calendar"); } e.classList.add("cc-tag-placeholder"); let privacyText = null; let buttonText = null; if ("de" === dr_getBannerLanguage()) { if (tag.privacyTextDe && tag.privacyTextDe.length > 0) { placeholderText = tag.privacyTextDe; } buttonText = tag.buttonTextDe; } else { if (tag.privacyTextEn && tag.privacyTextEn.length > 0) { placeholderText = tag.privacyTextEn; } buttonText = tag.buttonTextEn; } e.innerHTML = ""; let btn = document.createElement('div'); btn.className = "cc-tag-activate-btn"; btn.setAttribute("dr_tagname", tag.divId); btn.innerHTML = buttonText; btn.addEventListener("click", dr_activateTagWithClick, true); let description = document.createElement("div"); description.className = "cc-tag-info"; description.innerHTML = placeholderText; e.appendChild(btn); e.appendChild(description); } } } function dr_activateTagWithClick(e) { let divId = e.target.getAttribute("dr_tagname"); if (dr_generated_tags) { for (let i = 0; i < dr_generated_tags.length; i++) { let tag = dr_generated_tags[i]; if (tag && tag.active !== true && tag.divId === divId) { tag.active = true; let eList = dr_getTagElementsWithId(tag.divId); //var e = document.getElementById(tag.divId); if (eList && eList.length > 0) { for (let j=0; j<eList.length; j++) { let el = eList[j]; if (el) { dr_cleanElementFromPlaceholder(el); let code = dr_codeTemplateEngine(el, tag.code); if (tag.mode === "insert") { dr_cookiebanner_options.logJson("insert tag code", tag); el.innerHTML = code; //dr_insertTag(0, tag.divId, code); } else { dr_cookiebanner_options.logJson("dr_activateTag()", tag); dr_activateTag(code); } } } } } } } } function dr_codeTemplateEngine(e, originalCode) { if (e && originalCode) { let code = originalCode.replace(new RegExp("<", 'g'), "<"); for (let j = 0; j < e.attributes.length; j++) { // Store reference to current attr let attr = e.attributes[j]; // If attribute nodeName starts with 'data-' if (/^data-/.test(attr.nodeName)) { let key = "{" + attr.nodeName.replace(/^data-/, '') + "}"; let val = attr.nodeValue; code = code.split("$" + key).join(val); } } return code; } } function dr_cleanElementFromPlaceholder(e) { if (e) { e.classList.remove("cc-tag-placeholder"); e.classList.remove("cc-tag-placeholder-maps"); e.classList.remove("cc-tag-placeholder-video"); e.classList.remove("cc-tag-placeholder-calendar"); e.innerHTML = ""; e.removeEventListener("click", dr_activateTagWithClick); } } function dr_insertTagOnStartup(iterationNr, divId, htmlCode) { let elList = dr_getTagElementsWithId(divId); if (elList && elList.length > 0) { for (let i=0; i<elList.length; i++) { if (elList[i]) { dr_cleanElementFromPlaceholder(elList[i]); elList[i].innerHTML = dr_codeTemplateEngine(elList[i], htmlCode); } } } else { setTimeout(function () { dr_insertTagOnStartup(iterationNr + 1, divId, htmlCode); }, 100 + (iterationNr * 600)); } } function dr_activateInsertionTagOnStartup(iterationNr, divId, htmlCode) { let elList = dr_getTagElementsWithId(divId); if (elList && elList.length > 0) { for (let i=0; i<elList.length; i++) { if (elList[i]) { dr_cleanElementFromPlaceholder(elList[i]); dr_activateTag(dr_codeTemplateEngine(elList[i], htmlCode)); } } } else { setTimeout(function () { dr_activateInsertionTagOnStartup(iterationNr + 1, divId, htmlCode); }, 100 + (iterationNr * 600)); } } function dr_activateTag(htmlCode, removeAfterExecution) { let domelement = document.createElement('span'); domelement.innerHTML = htmlCode; let exelist = []; let children = domelement.childNodes; for (const node of children) { if (node) { let added=false; if (dr_nodeName(node, "script")) { if (node.src) { if (node.src.length > 0) { const attrib = {}; if (node.id) { attrib.id = node.id; } if (node.getAttribute("async") || node.getAttribute("async") === "") { attrib.async = true; } if (node.getAttribute("defer") || node.getAttribute("defer") === "") { attrib.defer = true; } if (node.dataset) { const dataset = {}; let hasProperties = false; for (const key in node.dataset) { if (node.dataset.hasOwnProperty(key)) { dataset[key] = node.dataset[key]; hasProperties = true; } } if (hasProperties) { attrib.dataset = dataset; } } exelist.push({ type: "script_load", url: node.src, async: attrib.async || attrib.defer, done: false, removeAfterExe: false, attributes: attrib }); added = true; } } if (!added) { exelist.push({type: "exe", script: node, done: false, removeAfterExe: removeAfterExecution}); added = true; } } else if (dr_nodeName(node, "link")) { if (node.href) { if (node.href.length > 0) { exelist.push({type: "css_load", url: node.href, async: false, done: false, removeAfterExe: false}); added=true; } } } if (!added) { exelist.push({type: "append", node:node, async: false, done: false, removeAfterExe: false}); added=true; } } } // now execute scripts dr_executeScripts(exelist); } function dr_nodeName( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); } function dr_executeScripts(exelist) { if (exelist) { for (let i=0; i<exelist.length; i++) { let exe = exelist[i]; if (!exe.done) { exe.done = true; if (exe.type === "script_load") { if (exe.async) { dr_loadJs(exe.url, null, exe.attributes); } else { dr_loadJs(exe.url, exelist, exe.attributes); return; } } else if (exe.type === "css_load") { dr_loadCss(exe.url, exelist); } else if(exe.type === "append") { if (exe.node) { document.body.appendChild(exe.node); } } else { dr_evalScript(exe, exe.removeAfterExe); } } } } } function dr_loadResourceReady(exelist) { // continue executing dr_executeScripts(exelist); } function dr_evalScript( scriptElem, removeAfterExe ) { let elem = scriptElem.script; let data = ( elem.text || elem.textContent || elem.innerHTML || "" ); let head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if (window._drCspNonce) { script.nonce = window._drCspNonce; } script.appendChild( document.createTextNode( data ) ); head.insertBefore( script, head.firstChild ); if (removeAfterExe === true) { head.removeChild(script); } if ( elem.parentNode ) { elem.parentNode.removeChild( elem ); } } const dr_loadJs = function(url, exelist, attributes){ //url is URL of external file, implementationCode is the code //to be called from the file, location is the location to //insert the <script> element let scriptTag = document.createElement('script'); scriptTag.src = url; if (attributes) { if (attributes.id) { scriptTag.id = attributes.id; } if (attributes.dataset) { for (const key in attributes.dataset) { scriptTag.dataset[key] = attributes.dataset[key]; } } if (attributes.async) { scriptTag.setAttribute("async", true); } if (attributes.defer) { scriptTag.setAttribute("defer", true); } } if (exelist) { scriptTag.onload = function() { dr_loadResourceReady(exelist); }; scriptTag.onreadystatechange = function() { dr_loadResourceReady(exelist); }; } document.head.appendChild(scriptTag); }; const dr_loadCss = function(url, exelist){ //url is URL of external file, implementationCode is the code //to be called from the file, location is the location to //insert the <script> element let cssTag = document.createElement('link'); cssTag.href = url; cssTag.rel = "stylesheet"; cssTag.type="text/css"; cssTag.media="all"; cssTag.onload = function() { dr_loadResourceReady(exelist); }; cssTag.onreadystatechange = function() { dr_loadResourceReady(exelist); }; document.head.appendChild(cssTag); }; const dr_directTagActivation = function(statistics, marketing, closePopup) { try { if (document.readyState === "loading") { let s = statistics; let m = marketing; let c = closePopup; document.addEventListener('readystatechange', function () { dr_directTagActivation(s,m,c); }); } else { if (statistics || marketing || closePopup) { const scriptTags = document.querySelectorAll('script[type="text/plain"]'); if (scriptTags) { for (let i = 0; i < scriptTags.length; i++) { const st = scriptTags[i]; let exe = false; if (st && st.dataset && st.dataset.webcare) { if (st.dataset.webcare === "statistic") { if (statistics) { exe = true; } } else if (st.dataset.webcare === "marketing") { if (marketing) { exe = true; } } else if (st.dataset.webcare === "any") { if (statistics || marketing) { exe = true; } } else if (st.dataset.webcare === "close") { if (closePopup) { exe = true; } } if (exe) { dr_directTagExecute(st); } } } } } } } catch(err) { console.error(err); } } const dr_directTagExecute = function(element) { if (element) { const parent = element.parentNode; element.remove(); element.type="text/javascript"; element.dataset.webcare = "executed"; parent.appendChild(element); } } var webcareCmp = { webcareConsentServer : "https://c.datareporter.eu", webcareConsentMandant : "4717d4de-be2f-4229-b113-de0ce538bc21", webcareConsentOrg : "R59CqEJYydvY", webcareConsentVersion : "01", webcareConsentMode : "", // consent, stat, null _apiKey: "1g6rt_4c4b-93z", _event: null, _init: false, consentId: null, _consentKey: "_webcare_consentid", registerEvent: function(handler) { this._event = handler; // have to inform handlers when they register after consent id was changed if (handler && this.consentId) { handler({ event: "cid-change", cid: this.consentId }); } }, unregisterEvent: function() { this._event = null; }, initConsent : function() { if (this._init === false) { if (this.webcareConsentMode === "consent") { this.consentId = this._getSavedConsentId(); if (this._isValidConsentId(this.consentId)) { this._sendEvent({ event: "cid-change", cid: this.consentId }); } } else if (this.webcareConsentMode === "stat") { this.consentId = "--"; this._sendEvent({ event: "cid-change", cid: this.consentId }); } else { this.consentId = null; this._sendEvent({ event: "cid-change", cid: this.consentId }); } this._init = true; } }, _sendEvent: function(e) { if (this._event) { this._event(e); } }, _getConsentUrl : function(consent) { this.initConsent(); var cid = this.consentId; if (cid === undefined || cid === null || cid.length <= 10 ) { cid = "-"; } if (this.webcareConsentMode === "stat") { cid = "--"; } return this.webcareConsentServer + "/e/1/" + this.webcareConsentMandant + "/" + this.webcareConsentOrg + "/" + this.webcareConsentVersion + "/" + this._chks(this.webcareConsentMandant, this.webcareConsentOrg, this.webcareConsentVersion, consent, cid) + "/" + consent + "/" + cid; }, _performConsentRequest : function(consent) { if (this.webcareConsentMode === "stat" || this.webcareConsentMode === "consent") { var oReq = new XMLHttpRequest(); var self = this; oReq.addEventListener("load", function () { if (self._isValidConsentId(this.responseText)) { if (this.responseText !== self.consentId) { self.consentId = this.responseText.trim().toLowerCase(); self._saveConsentId(); self._sendEvent({ event: "cid-change", cid: self.consentId }); } self._sendEvent({ event: "consent-ok", operation: consent, cid: self.consentId }); } }); oReq.open("GET", this._getConsentUrl(consent)); oReq.setRequestHeader("authentication", this._apiKey); oReq.setRequestHeader("hostname", location.hostname); oReq.send(); } }, /** * Clears all Consent IDs */ clear : function() { var sendEvent = false; if (this.consentId != null) { sendEvent = true; } this.consentId = null; this._saveConsentId(); if (sendEvent) { this._sendEvent({ event: "cid-change", cid: this.consentId }); } }, /** * Register operation "Open GUI" * Called when the CMP GUI is shown */ opengui : function() { this.initConsent(); this._performConsentRequest("o"); }, /** * Register operation "Allow" * Called when the User selects "Allow all cookies" */ allow : function() { this.initConsent(); this._performConsentRequest("allow"); }, /** * Register operation "Apply" * Called when the User selects some classes and chooses "Apply" * consent string can be allow, tpsmu, deny */ apply : function(consent) { this.initConsent(); this._performConsentRequest(consent); }, /** * Called when user chooses Deny * Only necessary cookies are allowed (same as tp) * @param consent */ deny : function() { this.initConsent(); this._performConsentRequest("deny"); }, /** * Called when the user revokes his choice and the GUI is shown again */ revoke : function() { this.initConsent(); this._performConsentRequest("revoke"); }, getConsentDetailLink : function() { if (this._isValidConsentId(this.consentId)) { return "https://conserve.datareporter.eu/consent-history/" + this.consentId; } else { return null; } }, getConsentId : function() { if (this._isValidConsentId(this.consentId)) { return this.consentId; } else { return null; } }, _chks : function(mandant, org, version, consent, consentId) { if (mandant && org && version && consent) { let s = "wcc:" + mandant + "_" + org + "_" + version + "_" + consent + "_" + consentId; var chk = 0xD0000000; var len = s.length; chk += 0x71210; for (var i = 0; i < len; i++) { chk += (s.charCodeAt(i) * (i + 1)); } return (chk & 0xff).toString(26); } else { return null; } }, _getSavedConsentId : function() { let cookieId = this._getCookie(this._consentKey); let localStorageId = localStorage.getItem(this._consentKey); if (this._isValidConsentId(cookieId)) { if (this._isValidConsentId(localStorageId)) { if (cookieId === localStorageId) { // do nothing, return one of the equals return localStorageId; } else { // not equal, take local storage and set cookie this._setCookie(this._consentKey, localStorageId); return localStorageId; } } else { // cookie must be it localStorage.setItem(this._consentKey, cookieId); return cookieId; } } else { if (this._isValidConsentId(localStorageId)) { // take local storage and set cookie this._setCookie(this._consentKey, localStorageId); return localStorageId; } else { // no valid id in here return null; } } }, _isValidConsentId : function(c_id) { if (c_id && c_id.trim().length === 36) { return true; } else { return false; } }, _saveConsentId : function() { // set cookie and local storage localStorage.setItem(this._consentKey, this.consentId); this._setCookie(this._consentKey, this.consentId); }, _getCookie: function(name) { var value = '; ' + document.cookie; var parts = value.split('; ' + name + '='); var result = parts.length < 2 ? undefined : parts .pop() .split(';') .shift(); return result; }, _setCookie: function(name, value) { var exdate = new Date(); exdate.setDate(exdate.getDate() + 365); var cookie = [ name + '=' + value, 'expires=' + exdate.toUTCString(), 'path=' + '/' ]; if (location.protocol === 'https:') { cookie.push('secure'); cookie.push('SameSite=none'); } document.cookie = cookie.join(';'); }, }; window.drExternalCmp = { _lastConsentStatus: null, _externalCmp: [], registerCmp : function(cmp) { if (cmp && typeof(cmp.onCmpRegister) === "function" && !this._externalCmp.includes(cmp)) { cmp.onCmpRegister(); this._externalCmp.push(cmp); } }, init: function() { this._updateConsentStatus("init"); }, opengui : function() { this._updateConsentStatus("opengui"); }, closegui : function(preTagActivation) { this._updateConsentStatus("closegui", preTagActivation); }, consentChange : function(preTagActivation) { this._updateConsentStatus("change", preTagActivation); }, revoke : function() { this._updateConsentStatus("revoke"); }, _updateConsentStatus : function(hint, preTagActivation) { if (hint) { let newConsentStatus = window.cookieconsent.currentConsentStatus(); if (newConsentStatus && newConsentStatus.tech !== undefined) { let consentDidChange = false; if (this._lastConsentStatus == null) { this._lastConsentStatus = newConsentStatus; consentDidChange = true; } else { if (JSON.stringify(this._lastConsentStatus) !== JSON.stringify(newConsentStatus)) { this._lastConsentStatus = newConsentStatus; consentDidChange = true; } } this._notifyAll(hint, newConsentStatus, preTagActivation, consentDidChange); } } }, _notifyAll : function(hint, currentConsentStatus, preTagActivation, consentDidChange) { if (this._externalCmp && this._externalCmp.length > 0) { for (let cmp of this._externalCmp) { try { if (consentDidChange) { if (cmp && typeof (cmp.onConsentChange) === "function") { cmp.onConsentChange(hint, currentConsentStatus); } } } catch (exc) { console.error(exc); } try { if (preTagActivation === true) { if (cmp && typeof (cmp.onBeforeTagActivation) === "function") { cmp.onBeforeTagActivation(hint, currentConsentStatus); } } else if (preTagActivation === false) { if (cmp && typeof (cmp.onAfterTagActivation) === "function") { cmp.onAfterTagActivation(hint, currentConsentStatus); } } else { if (cmp && typeof (cmp.onEvent) === "function") { cmp.onEvent(hint, currentConsentStatus); } } } catch (exc) { console.error(exc); } } } } }; window.dataLayer = window.dataLayer || []; if (window.drExternalCmp) { window.drExternalCmp.registerCmp({ _consentUpdate: true, _consentModeActive: true, onCmpRegister : function() { if (window.disableGc2 === true) { this._consentModeActive = false; } if (this._consentModeActive === true) { this._gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); } return "Google Consent Mode v2"; }, onBeforeTagActivation: function(hint, consent) { //console.log("GCM2(PRE TAG): " + hint + " " + JSON.stringify(consent)); this._updateConsentToGtag(consent); }, onAfterTagActivation: function(hint, consent) { //console.log("GCM2(POST TAG): " + hint + " " + JSON.stringify(consent)); }, onEvent: function(hint, consent) { //console.log("GCM2(EVENT): " + hint + " " + JSON.stringify(consent)); }, onConsentChange : function(hint, consent) { //console.log("GCM2(CHANGE): " + hint + " " + JSON.stringify(consent)); this._consentUpdate = true; }, _updateConsentToGtag: function(consent) { if (this._consentModeActive === true) { if (this._consentUpdate) { if (consent) { this._gtag('consent', 'update', { 'ad_storage': consent.marketing ? 'granted' : 'denied', 'ad_user_data': consent.marketing ? 'granted' : 'denied', 'ad_personalization': consent.marketing ? 'granted' : 'denied', 'analytics_storage': consent.statistic ? 'granted' : 'denied' }); } this._consentUpdate = false; } } }, _gtag : function() { //console.debug("GC2 Push: " + JSON.stringify(arguments)); if (window.dataLayer) { window.dataLayer.push(arguments); } } }); } if (window.drExternalCmp) { window.drExternalCmp.registerCmp({ onCmpRegister : function() { return "miniTCF"; }, onBeforeTagActivation: function(hint, consent) { if (typeof(window.miniTcfConsent) === "function" && typeof window.__tcfapi !== "undefined") { window.miniTcfConsent(consent.statistic, consent.marketing); } }, onAfterTagActivation: function(hint, consent) { }, onEvent: function(hint, consent) { if (hint === "opengui") { if (typeof(window.miniTcfShowGui) === "function" && typeof window.__tcfapi !== "undefined") { window.miniTcfShowGui(); } } }, onConsentChange : function(hint, consent) { this._consentUpdate = true; }, }); } /* */ window.dr_keyNav = { _focusMode: false, _focusedElement: null, _focuslist: null, activateNav: function() { if (this._focuslist === null) { this._gatherFocusList(); } document.addEventListener("keyup", this._keyListener); }, deactivateNav: function() { document.removeEventListener("keyup", this._keyListener); this._focus(null); }, _gatherFocusList: function() { this._focuslist = []; var elements = document.querySelectorAll(".dr-key-tabable"); if (elements && elements.length > 0) { for (var i=0; i < elements.length; i++ ) { var elm = elements[i]; if (elm && elm.tabIndex > 0) { this._focuslist.push(elm); } } } this._focuslist.sort(function(a, b) { var idxA = 0; var idxB = 0; if (a) { idxA = a.tabIndex; } if (b) { idxB = b.tabIndex; } return idxA - idxB; }); }, _firstFocus : function() { var that = window.dr_keyNav; if (that._focuslist != null && that._focuslist.length > 0) { that._nextFocus(true); } }, _nextFocus : function(initial) { var that = window.dr_keyNav; var idx = -1; if (initial !== true) { idx = that._currentFocusIndex(); } if (idx !== null) { var overflowcount = 0; do { idx++; if (idx >= that._focuslist.length) { idx = 0; overflowcount++; if (overflowcount === 2) { return; // cannot focus } } } while (!that._canFocus(that._focuslist[idx])); that._focus(that._focuslist[idx]); } }, _previousFocus : function() { var that = window.dr_keyNav; var idx = that._currentFocusIndex(); if (idx !== null) { var overflowcount = 0; do { idx--; if (idx < 0) { idx = that._focuslist.length - 1; overflowcount++; if (overflowcount === 2) { return; // cannot focus } } } while (!that._canFocus(that._focuslist[idx])); that._focus(that._focuslist[idx]); } }, _currentFocusIndex : function() { var that = window.dr_keyNav; var result = 0; if (that._focuslist && that._focuslist.length > 0) { if (that._focusedElement) { for (var i = 0; i < that._focuslist.length; i++) { if (that._focuslist[i] === that._focusedElement) { result = i; break; } } } } else { result = null; } return result; }, _canFocus : function(el) { if (el) { if (el.offsetWidth > 0 && el.offsetHeight > 0) { return true; } } return false; }, _keyListener : function(event) { var that = window.dr_keyNav; var key = event.code; if (that._focusMode === true) { event.stopPropagation(); if (key === "ArrowUp" || key === "ArrowLeft" || (key === "Tab" && event.shiftKey === true)) { that._previousFocus(); } if (key === "ArrowDown" || key === "ArrowRight" || (key === "Tab" && event.shiftKey !== true)) { that._nextFocus(); } if (key === "Escape") { that._focus(null); } if (key === "Space" || key === "Enter") { that._activateCurrentFocus(key); } } else { if (key === "Tab" || key === "Space" || key === "ArrowRight" || key === "ArrowLeft" ) { event.stopPropagation(); that._firstFocus(); } else if (key === "Escape") { var elementDeny = document.querySelector(".cc-window .cc-deny"); if (elementDeny) { elementDeny.click(); } } else if (key === "Enter") { var elementAllow = document.querySelector(".cc-window .cc-allow"); if (elementAllow) { elementAllow.click(); } } } }, _focus : function(selector) { var that = window.dr_keyNav; dr_removeCssClass(".cc-window .dr-keyfocus", "dr-keyfocus"); that._focusedElement = null; if (selector) { that._focusMode = true; var element = null; if (typeof selector === "string") { element = document.querySelector(".cc-window " + selector); } else { element = selector; } if (element && element.classList) { element.classList.add("dr-keyfocus"); element.focus(); that._focusedElement = element; } else { } } else { that._focusMode = false; } }, _activateCurrentFocus : function(key) { var that = window.dr_keyNav; if (that._focusedElement) { var exe = "click"; if (that._focusedElement.dataset && that._focusedElement.dataset["keytab"] === "noreturn" && key === "Enter") { exe = null; } if (that._focusedElement.dataset && that._focusedElement.dataset["keytab"] === "checkbox" && that._focusedElement.dataset["keytabid"]) { exe = null; var cb = document.getElementById(that._focusedElement.dataset["keytabid"]); if (cb) { cb.click(); } } if (exe === "click") { that._focusedElement.click(); } } } } var dr_generated_banner = { "de" : "<div role=\"dialog\" aria-modal=\"true\" aria-live=\"polite\" aria-label=\"cookie consent\" aria-describedby=\"cookieconsent:desc\" class=\"cc-window cc-banner cc-type-opt-out cc-theme-block cc-middle cc-color-override-datareporter \" id=\"dr_cookie_banner_container\"> <style nonce=\"__csp:replace_nonce__\">" + " #dr_detailed-banner {" + " width:100%;margin:0;padding:0;border:0;;" + " }" + " #dr-category-table-tech, #dr-category-table-statistic, #dr-category-table-marketing, #dr-category-table-unclassified {" + " display:none;" + " }" + "</style> <div id=\"dr_detailed-banner\"> <div id=\"cookieconsent:desc\" class=\"cc-message\"> <div role=\"presentation\" class=\"dr-insert-content dr-invisible-element dr-hide-on-detail\" id=\"dr-insert-content\"></div> <div class=\"dr-cookietext\"> <p role=\"heading\" aria-level=\"1\" class=\"dr-headline\">Unsere Webseite nutzt Cookies</p> <p role=\"main\" class=\"dr-descriptiontext dr-hide-on-detail\"><span>Weitere Informationen zu Cookies erhalten Sie in diesem Cookiebanner und in unserer Datenschutzerklärung (siehe Footer). Klicken Sie auf \"Alle Cookies erlauben\", um alle Arten von Cookies zu akzeptieren oder klicken Sie auf \"Nur erforderliche Cookies erlauben\" um nur jene Cookies zu zulassen, die für den Betrieb und Funktion der Webseite unbedingt erforderlich sind. </span> <a id=\"dr-privacylink-id\" data-url=\"https://www.rcodezero.at/de/datenschutz\" class=\"dr-privacylink dr-key-tabable\" tabindex=\"98\" title=\"Zur Datenschutzerklärung\" href=\"#\"> Zur Datenschutzerklärung</a> </p> <ul class=\"dr-overview-list\"> <li role=\"presentation\" class=\"dr-overview-category-item dr-hide-on-detail\"> <label class=\"dr-category-overview\"><span class=\"dr-category-overview-text\">Erforderlich</span> <span class=\"dr-checkmark dr-roundcorners dr-checkmark-active-readonly\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-hide-on-detail \"> <label class=\"dr-category-overview dr-key-tabable\" tabindex=\"1\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-headline-statistic\"><span class=\"dr-category-overview-text\">Statistik</span> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-headline-statistic\"> <span class=\"dr-checkmark dr-roundcorners\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-hide-on-detail \"> <label class=\"dr-category-overview dr-key-tabable\" tabindex=\"2\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-headline-marketing\"><span class=\"dr-category-overview-text\">Marketing</span> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-headline-marketing\"> <span class=\"dr-checkmark dr-roundcorners\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-show-mobile\"> <a role=\"button\" aria-labelledby=\"dr-categorybanner-btn-show-more-mobile\" id=\"dr-categorybanner-btn-show-more-mobile\" href=\"#\" class=\"dr-btn-show-more-mobile dr-key-tabable\" data-keytab=\"noreturn\" tabindex=\"10\"><span class=\"dr-open-arrow\"></span><span>Details anzeigen</span></a> </li> </ul> </div> </div> <div class=\"cc-compliance cc-highlight\"> <a role=\"button\" aria-labelledby=\"dr-categorybanner-btn-show-more-desktop\" id=\"dr-categorybanner-btn-show-more-desktop\" tabindex=\"11\" href=\"#\" class=\"cc-btn dr-btn-show-more dr-hide-on-mobile dr-key-tabable\" data-keytab=\"noreturn\"><span class=\"dr-open-arrow\"></span><span>Details anzeigen</span></a> <a role=\"button\" id=\"cc-deny-01\" aria-labelledby=\"cc-deny-01\" class=\"cc-btn cc-deny dr-roundcorners dr-noborder-deny dr-key-tabable\" tabindex=\"12\">Nur erforderliche Cookies erlauben</a> <a role=\"button\" id=\"cc-allow-01\" aria-labelledby=\"cc-allow-01\" class=\"cc-btn cc-allow dr-roundcorners dr-btn-shadow dr-noborder-allow dr-key-tabable\" tabindex=\"13\">Alle Cookies erlauben</a> </div> <div class=\"dr-tab-category-details dr-roundcorners dr-shadow \" id=\"dr-tab-category-details\"> <ul class=\"dr-tab-category-content\"> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Erforderlich (5)</li> <li class=\"dr-category-switch\"> </li> <li class=\"dr-tab-category-text\"> <span>Technisch notwendige Cookies dienen dazu, um den technischen Betrieb einer Webseite zu ermöglichen und diese für Sie funktional nutzbar zu machen. Die Nutzung erfolgt aufgrund unseres berechtigten Interesses eine technisch einwandfreie Webseite anzubieten. Sie können jedoch generell die Cookie Nutzung in Ihrem Browser deaktivieren.<br/></span> <a id=\"dr-categorybanner-show-tech-details-id\" data-category=\"tech\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"20\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Details anzeigen</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-tech\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Name</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Ersteller</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Speicherdauer</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"(ID)\">(ID)</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 Stunden\">2 Stunden</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>stellt die Funktionsfähigkeit und Bedienbarkeit der Seite sicher und dient zur Nachverfolgung von Fehlern.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"cookieconsent_mode\">cookieconsent_mode</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"DataReporter GmbH\">DataReporter GmbH</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"12 Monate\">12 Monate</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>enthält die Informationen, inwieweit der Nutzer die Verwendung von Cookies bestätigt hat.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"cookieconsent_status\">cookieconsent_status</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"DataReporter GmbH\">DataReporter GmbH</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"12 Monate\">12 Monate</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>enthält die Informationen, inwieweit der Nutzer die Verwendung von Cookies bestätigt hat.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"rcodezero_session\">rcodezero_session</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 Stunden\">2 Stunden</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>zählt die Anzahl der Sitzung und weist jedem Besucher eine anonyme Kennung zu. </span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"XSRF-TOKEN\">XSRF-TOKEN</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 Stunden\">2 Stunden</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>stellt die Funktionsfähigkeit und Bedienbarkeit der Seite sicher und dient zur Nachverfolgung von Fehlern.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Statistik (3)</li> <li class=\"dr-category-switch\"> <label class=\"dr-category-switch-control dr-key-tabable\" tabindex=\"21\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-details-statistic\"> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-details-statistic\"> <span class=\"dr-category-switch-control-slider-before dr-roundcorners\"></span> <span role=\"presentation\" class=\"dr-category-switch-control-slider dr-roundcorners-big\"> <span class=\"dr-category-switch-on\">ON</span> <span class=\"dr-category-switch-off\">OFF</span> </span> </label> </li> <li class=\"dr-tab-category-text \"> <span>Statistik-Cookies sammeln Informationen darüber, wie Webseiten genutzt werden, um folglich deren Attraktivität, Inhalt und Funktionalität zu verbessern. Eine Nutzung erfolgt nur mit Ihrer Einwilligung und zwar nur solange Sie das jeweilige Cookie nicht deaktiviert haben.</span> <a id=\"dr-categorybanner-show-statistic-details-id\" data-category=\"statistic\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"22\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Details anzeigen</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-statistic\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Name</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Ersteller</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Speicherdauer</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_(ID)\">_pk_(ID)</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"1 Jahr\">1 Jahr</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>enthält Informationen um die Unterscheidung von Nutzern der Seite zu ermöglichen. Sammelt Daten über Besuche des Nutzers, wie zum Beispiel welche Seiten von Relevanz sind.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_ref.(ID)\">_pk_ref.(ID)</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Sitzung\">Sitzung</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>enthält Informationen um die Unterscheidung von Nutzern der Seite zu ermöglichen. Sammelt Daten über Besuche des Nutzers, wie zum Beispiel welche Seiten von Relevanz sind.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_ses.(ID)\">_pk_ses.(ID)</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"30 Minuten\">30 Minuten</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>enthält Informationen um die Unterscheidung von Nutzern der Seite zu ermöglichen. Sammelt Daten über Besuche des Nutzers, wie zum Beispiel welche Seiten von Relevanz sind.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Marketing (1)</li> <li class=\"dr-category-switch\"> <label class=\"dr-category-switch-control dr-key-tabable\" tabindex=\"23\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-details-marketing\"> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-details-marketing\"> <span class=\"dr-category-switch-control-slider-before dr-roundcorners\"></span> <span role=\"presentation\" class=\"dr-category-switch-control-slider dr-roundcorners-big\"> <span class=\"dr-category-switch-on\">ON</span> <span class=\"dr-category-switch-off\">OFF</span> </span> </label> </li> <li class=\"dr-tab-category-text \"> <span>Marketing-Cookies stammen von externen Werbeunternehmen und werden verwendet, um Informationen über die vom Benutzer besuchten Webseiten zu sammeln. Eine Nutzung erfolgt nur mit Ihrer Einwilligung und zwar nur solange Sie das jeweilige Cookie nicht deaktiviert haben.</span> <a id=\"dr-categorybanner-show-marketing-details-id\" data-category=\"marketing\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"24\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Details anzeigen</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-marketing\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Name</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Ersteller</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Speicherdauer</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Name\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"NID\">NID</span></td> <td data-label=\"Ersteller\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Google\">Google</span></td> <td data-label=\"Speicherdauer\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.google.com\">www.google.com</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>registriert eine eindeutige ID, die den Nutzer identifiziert und wieder erkennt. Wird für gezielte Werbung eingesetzt.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Über Cookies</li> <li class=\"dr-tab-category-text \"> <span>Sie können Ihren Browser so einstellen, dass das Speichern von Cookies generell verhindert wird bzw. Sie jedesmal gefragt werden, ob Sie mit dem Setzen von Cookies einverstanden sind. Einmal gesetzte Cookies können Sie jederzeit wieder löschen. Wie das funktioniert, finden Sie in der Hilfe-Funktion Ihres Browsers.</span> <span id=\"dr_webcareCmpLink\"></span> </li> <li class=\"dr-category-separator\"> </li> </ul> </div> <div class=\"dr_poweredBy\"> <a class=\"dr-logo-poweredBy\" href=\"https://www.datareporter.eu/?mtm_campaign=Banner\" target=\"_blank\" rel=\"nofollow noreferrer\" aria-label=\"powered by Datareporter\" title=\"powered by Datareporter\"> <style nonce=\"__csp:replace_nonce__\"> #dr_svg_datareporter_id { enable-background:new 0 0 47.89 42.56; max-width: 40px; max-height:40px; } </style> <svg id=\"dr_svg_datareporter_id\" width=\"100%\" height=\"100%\" viewBox=\"0 0 591 591\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"> <g transform=\"matrix(1.28314,0,0,1.28314,-92.2943,-96.4456)\"> <path class=\"dr_ol-powered-svg\" d=\"M302.047,99.703C415.509,99.703 507.626,191.82 507.626,305.282C507.626,418.745 415.509,510.862 302.047,510.862C188.585,510.862 96.468,418.745 96.468,305.282C96.468,191.82 188.585,99.703 302.047,99.703ZM358.5,216.93L296.96,216.93C256.48,216.93 212.715,246.953 212.715,306.104C212.715,363.163 253.941,393.784 296.96,393.784L358.5,393.784L358.5,216.93Z\"/> </g> </svg> </a> </div> </div> </div>", "en" : "<div role=\"dialog\" aria-modal=\"true\" aria-live=\"polite\" aria-label=\"cookie consent\" aria-describedby=\"cookieconsent:desc\" class=\"cc-window cc-banner cc-type-opt-out cc-theme-block cc-middle cc-color-override-datareporter \" id=\"dr_cookie_banner_container\"> <style nonce=\"__csp:replace_nonce__\">" + " #dr_detailed-banner {" + " width:100%;margin:0;padding:0;border:0;;" + " }" + " #dr-category-table-tech, #dr-category-table-statistic, #dr-category-table-marketing, #dr-category-table-unclassified {" + " display:none;" + " }" + "</style> <div id=\"dr_detailed-banner\"> <div id=\"cookieconsent:desc\" class=\"cc-message\"> <div role=\"presentation\" class=\"dr-insert-content dr-invisible-element dr-hide-on-detail\" id=\"dr-insert-content\"></div> <div class=\"dr-cookietext\"> <p role=\"heading\" aria-level=\"1\" class=\"dr-headline\">Our website uses cookies</p> <p role=\"main\" class=\"dr-descriptiontext dr-hide-on-detail\"><span>You can find more information about cookies in this cookie banner and in our privacy policy (see footer). Click on \"Allow all cookies\" to accept all types of cookies or click on \"Only allow required cookies\" to allow only those cookies that are absolutely necessary for the operation and function of the website.</span> <a id=\"dr-privacylink-id\" data-url=\"https://www.rcodezero.at/en/privacy-policy\" class=\"dr-privacylink dr-key-tabable\" tabindex=\"98\" title=\"Privacy statement\" href=\"#\"> Privacy statement</a> </p> <ul class=\"dr-overview-list\"> <li role=\"presentation\" class=\"dr-overview-category-item dr-hide-on-detail\"> <label class=\"dr-category-overview\"><span class=\"dr-category-overview-text\">Required</span> <span class=\"dr-checkmark dr-roundcorners dr-checkmark-active-readonly\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-hide-on-detail \"> <label class=\"dr-category-overview dr-key-tabable\" tabindex=\"1\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-headline-statistic\"><span class=\"dr-category-overview-text\">Statistics</span> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-headline-statistic\"> <span class=\"dr-checkmark dr-roundcorners\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-hide-on-detail \"> <label class=\"dr-category-overview dr-key-tabable\" tabindex=\"2\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-headline-marketing\"><span class=\"dr-category-overview-text\">Marketing</span> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-headline-marketing\"> <span class=\"dr-checkmark dr-roundcorners\"> <span></span> </span> </label> </li> <li class=\"dr-overview-category-item dr-show-mobile\"> <a role=\"button\" aria-labelledby=\"dr-categorybanner-btn-show-more-mobile\" id=\"dr-categorybanner-btn-show-more-mobile\" href=\"#\" class=\"dr-btn-show-more-mobile dr-key-tabable\" data-keytab=\"noreturn\" tabindex=\"10\"><span class=\"dr-open-arrow\"></span><span>Show details</span></a> </li> </ul> </div> </div> <div class=\"cc-compliance cc-highlight\"> <a role=\"button\" aria-labelledby=\"dr-categorybanner-btn-show-more-desktop\" id=\"dr-categorybanner-btn-show-more-desktop\" tabindex=\"11\" href=\"#\" class=\"cc-btn dr-btn-show-more dr-hide-on-mobile dr-key-tabable\" data-keytab=\"noreturn\"><span class=\"dr-open-arrow\"></span><span>Show details</span></a> <a role=\"button\" id=\"cc-deny-01\" aria-labelledby=\"cc-deny-01\" class=\"cc-btn cc-deny dr-roundcorners dr-noborder-deny dr-key-tabable\" tabindex=\"12\">Only allow required cookies</a> <a role=\"button\" id=\"cc-allow-01\" aria-labelledby=\"cc-allow-01\" class=\"cc-btn cc-allow dr-roundcorners dr-btn-shadow dr-noborder-allow dr-key-tabable\" tabindex=\"13\">Allow all cookies</a> </div> <div class=\"dr-tab-category-details dr-roundcorners dr-shadow \" id=\"dr-tab-category-details\"> <ul class=\"dr-tab-category-content\"> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Required (5)</li> <li class=\"dr-category-switch\"> </li> <li class=\"dr-tab-category-text\"> <span>Technically necessary cookies are used to enable the technical operation of a website and make it functional for you. The use is based on our legitimate interest to provide a technically flawless website. However, you can generally disable the use of cookies in your browser. </span> <a id=\"dr-categorybanner-show-tech-details-id\" data-category=\"tech\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"20\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Show details</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-tech\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Surname</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Creator</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Storage time</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"(ID)\">(ID)</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 hours\">2 hours</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>ensures the functionality and usability of the page and is used to track errors.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"cookieconsent_mode\">cookieconsent_mode</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"DataReporter GmbH\">DataReporter GmbH</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"12 months\">12 months</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>ensures the functionality and usability of the page and is used to track errors.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"cookieconsent_status\">cookieconsent_status</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"DataReporter GmbH\">DataReporter GmbH</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"12 months\">12 months</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>ensures the functionality and usability of the page and is used to track errors.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"rcodezero_session\">rcodezero_session</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 hours\">2 hours</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>counts the number of sessions and assigns an anonymous identifier to each visitor.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"XSRF-TOKEN\">XSRF-TOKEN</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"2 hours\">2 hours</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>ensures the functionality and usability of the page and is used to track errors.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Statistics (3)</li> <li class=\"dr-category-switch\"> <label class=\"dr-category-switch-control dr-key-tabable\" tabindex=\"21\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-details-statistic\"> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-details-statistic\"> <span class=\"dr-category-switch-control-slider-before dr-roundcorners\"></span> <span role=\"presentation\" class=\"dr-category-switch-control-slider dr-roundcorners-big\"> <span class=\"dr-category-switch-on\">ON</span> <span class=\"dr-category-switch-off\">OFF</span> </span> </label> </li> <li class=\"dr-tab-category-text \"> <span>Statistics cookies collect information about how websites are used to improve their attractiveness, content and functionality. A use takes place only with your consent and only as long as you have not deactivated the respective cookie.</span> <a id=\"dr-categorybanner-show-statistic-details-id\" data-category=\"statistic\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"22\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Show details</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-statistic\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Surname</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Creator</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Storage time</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_(ID)\">_pk_(ID)</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"1 year\">1 year</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>Contains information to help distinguish users from the page. Gathers data about user visits, such as which pages are relevant.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_ref.(ID)\">_pk_ref.(ID)</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Session\">Session</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>Contains information to help distinguish users from the page. Gathers data about user visits, such as which pages are relevant.</span></td> </tr> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"_pk_ses.(ID)\">_pk_ses.(ID)</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Matomo/Piwik\">Matomo/Piwik</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"30 minutes\">30 minutes</span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.rcodezero.at\">www.rcodezero.at</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>Contains information to help distinguish users from the page. Gathers data about user visits, such as which pages are relevant.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">Marketing (1)</li> <li class=\"dr-category-switch\"> <label class=\"dr-category-switch-control dr-key-tabable\" tabindex=\"23\" data-keytab=\"checkbox\" data-keytabid=\"dr-cb-details-marketing\"> <input type=\"checkbox\" class=\"jcf-ignore\" id=\"dr-cb-details-marketing\"> <span class=\"dr-category-switch-control-slider-before dr-roundcorners\"></span> <span role=\"presentation\" class=\"dr-category-switch-control-slider dr-roundcorners-big\"> <span class=\"dr-category-switch-on\">ON</span> <span class=\"dr-category-switch-off\">OFF</span> </span> </label> </li> <li class=\"dr-tab-category-text \"> <span>Marketing cookies come from external advertising companies and are used to collect information about the websites visited by the user. A use takes place only with your consent and only as long as you have not deactivated the respective cookie.</span> <a id=\"dr-categorybanner-show-marketing-details-id\" data-category=\"marketing\" class=\"dr-tab-category-morelink dr-key-tabable\" tabindex=\"24\" data-keytab=\"noreturn\" href=\"#\"><span class=\"dr-open-arrow-small\"></span><span>Show details</span></a> </li> <li class=\"dr-category-table\" id=\"dr-category-table-marketing\"> <table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"> <thead> <tr class=\"dr-tableheader-row\"> <th class=\"dr-tableheader-cell dr-tableheader-name dr-roundcorners-left\">Surname</th> <th class=\"dr-tableheader-cell dr-tableheader-provider\">Creator</th> <th class=\"dr-tableheader-cell dr-tableheader-valid\">Storage time</th> <th class=\"dr-tableheader-cell dr-tableheader-domain dr-roundcorners-right\">Domain</th> </tr> </thead> <tbody> <tr class=\"dr-detail-tabledata\"> <td data-label=\"Surname\" class=\"dr-cut-line dr-linebreak-anywhere\"><span class=\" dr-cookie-name\" title=\"NID\">NID</span></td> <td data-label=\"Creator\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"Google\">Google</span></td> <td data-label=\"Storage time\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"\"></span></td> <td data-label=\"Domain\" class=\"dr-cut-line dr-linebreak-anywhere\"><span title=\"www.google.com\">www.google.com</span></td> </tr> <tr class=\"dr-detail-tabledata dr-detail-tabledata-addon\"> <td class=\"dr-hide-on-mobile\"> </td> <td data-label=\"\" colspan=\"3\" class=\"dr-cookie-purpose\"><span>registers a unique ID that identifies and recognizes the user. Used for targeted advertising.</span></td> </tr> </tbody> </table> </li> <li class=\"dr-category-separator\"><hr/></li> <li role=\"heading\" aria-level=\"2\" class=\"dr-category-headline\">About cookies</li> <li class=\"dr-tab-category-text \"> <span>You can set your browser so that the storage of cookies is generally prevented or you are asked each time whether you agree to the setting of cookies. Once set, you can delete cookies at any time. How this works can be found in the help function of your browser. </span> <span id=\"dr_webcareCmpLink\"></span> </li> <li class=\"dr-category-separator\"> </li> </ul> </div> <div class=\"dr_poweredBy\"> <a class=\"dr-logo-poweredBy\" href=\"https://www.datareporter.eu/?mtm_campaign=Banner\" target=\"_blank\" rel=\"nofollow noreferrer\" aria-label=\"powered by Datareporter\" title=\"powered by Datareporter\"> <style nonce=\"__csp:replace_nonce__\"> #dr_svg_datareporter_id { enable-background:new 0 0 47.89 42.56; max-width: 40px; max-height:40px; } </style> <svg id=\"dr_svg_datareporter_id\" width=\"100%\" height=\"100%\" viewBox=\"0 0 591 591\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"> <g transform=\"matrix(1.28314,0,0,1.28314,-92.2943,-96.4456)\"> <path class=\"dr_ol-powered-svg\" d=\"M302.047,99.703C415.509,99.703 507.626,191.82 507.626,305.282C507.626,418.745 415.509,510.862 302.047,510.862C188.585,510.862 96.468,418.745 96.468,305.282C96.468,191.82 188.585,99.703 302.047,99.703ZM358.5,216.93L296.96,216.93C256.48,216.93 212.715,246.953 212.715,306.104C212.715,363.163 253.941,393.784 296.96,393.784L358.5,393.784L358.5,216.93Z\"/> </g> </svg> </a> </div> </div> </div>", }; var dr_generated_policies = { "de" : "Cookie Einstellungen verwalten", "en" : "Cookie settings", }; var dr_generated_tags = [ ]; var dr_ignore_cookies = ['cookieconsent_status', 'cookieconsent_mode', '_webcare_consentid','(ID)','cookieconsent_mode','cookieconsent_status','rcodezero_session','XSRF-TOKEN']; var dr_delete_cookies = [{name:'_pk_(ID)', path:'/', category:'statistic' },{name:'_pk_ref.(ID)', path:'/', category:'statistic' },{name:'_pk_ses.(ID)', path:'/', category:'statistic' },{name:'NID', path:'/', category:'marketing' }]; var dr_deleteCookieMode = "categories"; // all (all cookies except ignore), manual (none), auto (only marketing/statistic) or categories (manual category choose) var dr_bannerLanguage = dr_getBannerLanguage(); var cookieMobileImage = "<style nonce='__csp:replace_nonce__'>#dr_mobilePreviewCookie {display:none;}</style><svg role='presentation' version='1.1' id='dr_mobilePreviewCookie' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 50 50' xml:space='preserve'><g id='surface1' class='dr_mobilePreviewCookie_fill'><path d='M25,33.7c-0.5-0.2-2.1-1-4.1-3.2c-2.2-2.5-4.3-6.6-4.5-13c1.9-0.2,3.4-0.8,4.6-1.4c1.3-0.7,2.3-1.3,4-1.3V33.7z M14.5,16.7 M15.5,15.8'/><path d='M25,8.2c-3.1,0-5.3,1.2-7.2,2.3s-3.6,1.9-6.8,1.9H9.6v1.4c0,10.8,3.6,17.8,7.3,22.1s7.5,5.8,7.5,5.8l0.5,0.2 l0.5-0.2c0,0,3.8-1.5,7.5-5.8s7.3-11.3,7.3-22.1v-1.4H39c-3.2,0-4.9-0.9-6.8-1.9C30.3,9.4,28.1,8.2,25,8.2z M25,11 c2.4,0,3.9,0.9,5.8,1.9c1.7,0.9,3.9,1.8,6.7,2.1c-0.3,9.5-3.4,15.5-6.6,19.1c-2.9,3.3-5.3,4.4-5.9,4.7c-0.7-0.3-3.1-1.4-5.9-4.7 c-3.2-3.6-6.3-9.6-6.6-19.1c2.8-0.3,5-1.2,6.7-2.1C21.1,11.8,22.6,11,25,11z'/></g></svg>"; var dr_cookiebanner_options = { version: "2024_02.b538", type: 'opt-out', position: 'middle', policyPosition: "bottom", applicationPath : 'https://webcache-eu.datareporter.eu/c/4717d4de-be2f-4229-b113-de0ce538bc21/R59CqEJYydvY/bVW/', companyPath : 'https://webcache-eu.datareporter.eu/c/4717d4de-be2f-4229-b113-de0ce538bc21/R59CqEJYydvY/', imprintDivName : "dr-imprint-div", imprintScript: "imprint_gtm.js", privacyDivName : "dr-privacynotice-div", privacyScript : "privacynotice_gtm.js", privacyLinkUrl : null, openPrivacyLinkInDocViewer: false, openImprintLinkInDocViewer: false, debugLogActive: false, googleDataLayerName: "dataLayer", useRevokeCookieIcon: "true", dr_removeJsCookies : null, cookieDomain: ".rcodezero.at", cookieConsentModeName: "cookieconsent_mode", cookieConsentName: "cookieconsent_status", cookieLocalStorage: false, insertTopLogo: "", previewMode: false, overrideHTML: dr_generated_banner[dr_bannerLanguage], animateRevokable: true, animateBanner: true, preBannerOptions: null, revokeOnMobile: true, dr_purgeRunning :false, // is the cookie purge daemon running? dr_cookiesEnabled: false, // are cookies currently enabled? dr_button_policy_hide : 'false', // hide the policy button if configured dr_autoAcceptCookies: '', // 'allow' to not show cookie banner and accept all cookies, 'deny' to not show and deny all cookies dr_acceptedCategories : [], // strings with accepted categories (statistic, marketing, unclassified) onRedirectAfterConsent : null, // eventhandler - called when a redirect from countryselect banner occures instead of redirecting swarmCrawlerVersion: 2, content: { policy: dr_generated_policies[dr_bannerLanguage], mobilePolicy: cookieMobileImage, }, cookieBlockTiming : { delay: 200, incrementDelay: 200, incrementFactor: 2.0, maxDelay: 15000, }, swarmCrawlerTiming: { min: 1000, rnd: 10000, }, gtmInitTiming: { delay: 1000, maxRetry: 10, }, log: function(msg) { if (dr_cookiebanner_options.debugLogActive) { console.debug(new Date().toLocaleTimeString() + " " + msg); } }, logJson: function(msg, jsonObject) { if (dr_cookiebanner_options.debugLogActive) { console.debug(new Date().toLocaleTimeString() + " " + msg + " -------- Start --------"); console.debug(jsonObject); console.debug(new Date().toLocaleTimeString() + " " + msg + " -------- End --------"); } }, configureDebugLogOutput: function() { var debugParam = dr_getParameterByName("_webcare_debug") if (debugParam === "true") { dr_cookiebanner_options.debugLogActive = true; } }, gtmInit : function() { dr_cookiebanner_options.log("gtmInit()"); var foundInsertion = false; var o = dr_cookiebanner_options; var elem = document.getElementById(o.imprintDivName); if (elem) { o.loadJsModule(o.companyPath + o.imprintScript, o.activateImprint, document.body); foundInsertion = true; } var elem = document.getElementById(o.privacyDivName); if (elem) { o.loadJsModule(o.companyPath + o.privacyScript, o.activatePrivacy, document.body); foundInsertion = true; } if (!foundInsertion) { // retry the insertion up to 15 seconds o.gtmInitTiming.maxRetry -= 1; if (o.gtmInitTiming.maxRetry >= 0) { setTimeout(o.gtmInit, o.gtmInitTiming.delay); } } }, activateImprint : function() { dr_cookiebanner_options.log("activateImprint()"); if (dr_webcare_imprint) { dr_webcare_imprint.integrateWithElementId(dr_cookiebanner_options.imprintDivName); } }, activatePrivacy : function() { dr_cookiebanner_options.log("activatePrivacy()"); if (dr_webcare_privacynotice) { dr_webcare_privacynotice.integrateWithElementId(dr_cookiebanner_options.privacyDivName); } }, loadJsModule : function(url, implementationCode, location){ dr_cookiebanner_options.log("loadJsModule()"); var scriptTag = document.createElement('script'); scriptTag.src = url; scriptTag.onload = implementationCode; scriptTag.onreadystatechange = implementationCode; location.appendChild(scriptTag); }, onPopupOpen : function() { dr_cookiebanner_options.log("onPopupOpen()"); dr_cookiebanner_options.log("Cookie Block Mode:", dr_deleteCookieMode); dr_cookiebanner_options.logJson("Ignore Cookies:", dr_ignore_cookies); dr_cookiebanner_options.logJson("Delete Cookies:", dr_delete_cookies); if (webcareCmp) { webcareCmp.opengui(); } if (window.drExternalCmp) { window.drExternalCmp.opengui(); } if (dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen && dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen.length > 0) { dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-statistic", dr_cookiebanner_options.dr_hasPreSelectedConsent("statistic")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-statistic", dr_cookiebanner_options.dr_hasPreSelectedConsent("statistic")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-marketing", dr_cookiebanner_options.dr_hasPreSelectedConsent("marketing")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-marketing", dr_cookiebanner_options.dr_hasPreSelectedConsent("marketing")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-unclassified", dr_cookiebanner_options.dr_hasPreSelectedConsent("unclassified")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-unclassified", dr_cookiebanner_options.dr_hasPreSelectedConsent("unclassified")); dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen = null; } else { dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-statistic", dr_cookiebanner_options.dr_hasConsent("statistic")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-statistic", dr_cookiebanner_options.dr_hasConsent("statistic")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-marketing", dr_cookiebanner_options.dr_hasConsent("marketing")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-marketing", dr_cookiebanner_options.dr_hasConsent("marketing")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-headline-unclassified", dr_cookiebanner_options.dr_hasConsent("unclassified")); dr_cookiebanner_options.dr_checkCheckbox("dr-cb-details-unclassified", dr_cookiebanner_options.dr_hasConsent("unclassified")); } dr_cookiebanner_options.dr_acceptedCategories = []; dr_cookiebanner_options.dr_enableCookies(false); if (true) { let e = document.getElementById("dr_blocking_div"); if (e) { e.style.display = "block"; } else { let elem = document.createElement('div'); elem.id = "dr_blocking_div"; elem.className = "cc-overlay cookie-popup-overlay message-overlay"; elem.style.cssText = 'background-color: rgba(0, 0, 0, 0.5); z-index:90089 !important; width:200%; height:200%; position:fixed; left:0; top:0;'; document.body.appendChild(elem); } } if (webcareCmp) { let e = document.getElementById("dr_webcareCmpLink"); if (e) { let consentId = webcareCmp.getConsentId(); let consentDetailUrl = webcareCmp.getConsentDetailLink(); if (consentId && consentDetailUrl) { e.innerHTML = "Consent ID: <a href='" + consentDetailUrl + "' target='_blank'>" + consentId + "</a>"; e.style.display = "block"; } else { e.innerHTML = ""; e.style.display = "none"; } } } if (window.dr_keyNav) { window.dr_keyNav.activateNav(); } }, onPopupClose : function() { dr_cookiebanner_options.log("onPopupClose()"); if (true) { let e = document.getElementById("dr_blocking_div"); if (e) { e.style.display = "none"; } } if (window.dr_keyNav) { window.dr_keyNav.deactivateNav(); } }, onInitialise: function (status) { dr_cookiebanner_options.log("onInitialise()"); // only called if the banner is loaded with an active consent (allow or deny) dr_cookiebanner_options.dr_acceptedCategories = []; var allowed = window.cookieconsent.utils.getCookie(dr_cookiebanner_options.cookieConsentModeName); if (allowed) { var allowed_array = JSON.parse(allowed); if (allowed_array) { dr_cookiebanner_options.dr_acceptedCategories = allowed_array; } } var didConsent = this.hasConsented(); if (didConsent) { dr_cookiebanner_options.log("Enable Cookies"); // enable cookies dr_cookiebanner_options.dr_enableCookies(true); if (dr_cookiebanner_options.previewMode === true) { dr_cookiebanner_options.log("Disable Swarm Crawler in Preview Mode"); } else { if (dr_swarmCrawler) { var timing = dr_cookiebanner_options.swarmCrawlerTiming.min + (Math.random() * dr_cookiebanner_options.swarmCrawlerTiming.rnd); dr_cookiebanner_options.log("Starting SwarmCrawler after " + timing + "ms"); setTimeout(dr_swarmCrawler.activate, timing); } } } else { dr_cookiebanner_options.log("Disable Cookies"); // disable cookies dr_cookiebanner_options.dr_enableCookies(false); } }, onStatusChange: function(status, chosenBefore) { dr_cookiebanner_options.log("onStatusChange()"); var didConsent = this.hasConsented(); if (didConsent) { // in category mode set the cookie with details dr_cookiebanner_options.dr_acceptedCategories = ["statistic", "marketing", "unclassified"]; // enable cookies dr_cookiebanner_options.dr_enableCookies(true); if (webcareCmp) { webcareCmp.allow(); } } else { dr_cookiebanner_options.dr_acceptedCategories = []; var consentString = "tp"; var cb = document.getElementById("dr-cb-headline-statistic"); if (cb && cb.checked) { dr_cookiebanner_options.dr_acceptedCategories.push("statistic"); consentString += "s"; } cb = document.getElementById("dr-cb-headline-marketing"); if (cb && cb.checked) { dr_cookiebanner_options.dr_acceptedCategories.push("marketing"); consentString += "m"; } cb = document.getElementById("dr-cb-headline-unclassified"); if (cb && cb.checked) { dr_cookiebanner_options.dr_acceptedCategories.push("unclassified"); consentString += "u"; } // disable cookies dr_cookiebanner_options.dr_enableCookies(false); if (webcareCmp) { if (consentString === "tp") { webcareCmp.deny(); } else { webcareCmp.apply(consentString); } } } var c = this.options.cookie; if (c) { window.cookieconsent.utils.setCookie( dr_cookiebanner_options.cookieConsentModeName, JSON.stringify(dr_cookiebanner_options.dr_acceptedCategories), c.expiryDays, c.domain, c.path, c.secure ); } }, onRevokeChoice: function() { dr_cookiebanner_options.log("onRevokeChoice()"); if (webcareCmp) { webcareCmp.revoke(); } if (window.drExternalCmp) { window.drExternalCmp.revoke(); } // disable cookies to be sure dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen = dr_cookiebanner_options.dr_acceptedCategories; dr_cookiebanner_options.dr_acceptedCategories = []; dr_cookiebanner_options.dr_enableCookiesInternal(false, false); var c = this.options.cookie; if (c) { window.cookieconsent.utils.setCookie(dr_cookiebanner_options.cookieConsentModeName, '', -1, c.domain, c.path); } }, dr_checkCheckbox : function(cbName, checked) { dr_cookiebanner_options.log("dr_checkCheckbox(" + cbName + ", " + checked + ")"); var cb = document.getElementById(cbName); if (cb) { cb.checked = checked; } }, dr_hasConsent : function(category) { dr_cookiebanner_options.log("dr_hasConsent()"); if (dr_cookiebanner_options.dr_acceptedCategories) { return dr_cookiebanner_options.dr_includes(dr_cookiebanner_options.dr_acceptedCategories, category); } return false; }, dr_hasPreSelectedConsent : function(category) { dr_cookiebanner_options.log("dr_hasConsent()"); if (dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen) { return dr_cookiebanner_options.dr_includes(dr_cookiebanner_options.dr_preSelectCategoriesOnPopupOpen, category); } return false; }, dr_includes : function(container, value) { dr_cookiebanner_options.log("dr_includes()"); // needed for IE11 var returnValue = false; var pos = container.indexOf(value); if (pos >= 0) { returnValue = true; } return returnValue; }, dr_enableCookies : function(enableCookies) { dr_cookiebanner_options.log("dr_enableCookies(" + enableCookies + ")"); dr_cookiebanner_options.dr_enableCookiesInternal(enableCookies, true); }, dr_enableCookiesInternal : function(enableCookies, enableTagManagerEvent) { dr_cookiebanner_options.log("dr_enableCookiesInternal(" + enableCookies + ", " + enableTagManagerEvent + ")"); if (enableCookies) { // enable all dr_cookiebanner_options.dr_acceptedCategories = ["statistic", "marketing", "unclassified"]; } if (window.drExternalCmp) { window.drExternalCmp.consentChange(true); } // data layer action for google tag manager if (enableTagManagerEvent) { var dlName = dr_cookiebanner_options.googleDataLayerName; window[dlName] = window[dlName] || []; if (dr_cookiebanner_options.dr_hasConsent("statistic")) { window[dlName].push({'event': 'cookie_consent_statistic_enabled'}); dr_cookiebanner_options.log("PUSH TAG Manager Event: cookie_consent_statistic_enabled"); } else { window[dlName].push({'event': 'cookie_consent_statistic_disabled'}); dr_cookiebanner_options.log("PUSH TAG Manager Event: cookie_consent_statistic_disabled"); //console.log("stat -"); } if (dr_cookiebanner_options.dr_hasConsent("marketing")) { window[dlName].push({'event': 'cookie_consent_marketing_enabled'}); dr_cookiebanner_options.log("PUSH TAG Manager Event: cookie_consent_marketing_enabled"); //console.log("markt +"); } else { window[dlName].push({'event': 'cookie_consent_marketing_disabled'}); dr_cookiebanner_options.log("PUSH TAG Manager Event: cookie_consent_marketing_disabled"); //console.log("markt -"); } } // activate tags if needed dr_cookiebanner_options.dr_activateTags(dr_cookiebanner_options.dr_hasConsent("statistic"), dr_cookiebanner_options.dr_hasConsent("marketing"), false); if (window.drExternalCmp) { window.drExternalCmp.consentChange(false); } // configure cookie blocking policies dr_cookiebanner_options.dr_cookiesEnabled = enableCookies; if (!enableCookies) { if (dr_deleteCookieMode !== "manual" && dr_cookiebanner_options.dr_purgeRunning === false) { dr_cookiebanner_options.dr_purgeRunning = true; setTimeout(dr_cookiebanner_options.dr_removeCookiesAfterLoading, dr_cookiebanner_options.cookieBlockTiming.delay); } } if (dr_cookiebanner_options.dr_onEnableCookies) { dr_cookiebanner_options.dr_onEnableCookies(enableCookies) } }, dr_removeCookiesAfterLoading : function() { dr_cookiebanner_options.log("dr_removeCookiesAfterLoading()"); if (dr_cookiebanner_options.dr_cookiesEnabled) { dr_cookiebanner_options.dr_purgeRunning = false; } else { dr_cookiebanner_options.dr_purgeCookies(); dr_cookiebanner_options.cookieBlockTiming.delay += (dr_cookiebanner_options.cookieBlockTiming.incrementDelay); if (dr_cookiebanner_options.cookieBlockTiming.delay > dr_cookiebanner_options.cookieBlockTiming.maxDelay) { dr_cookiebanner_options.cookieBlockTiming.delay = dr_cookiebanner_options.cookieBlockTiming.maxDelay; } else { dr_cookiebanner_options.cookieBlockTiming.incrementDelay = dr_cookiebanner_options.cookieBlockTiming.incrementDelay * dr_cookiebanner_options.cookieBlockTiming.incrementFactor; } dr_cookiebanner_options.log("Cookie Block timing: next call in " + dr_cookiebanner_options.cookieBlockTiming.delay + "ms"); //setTimeout(dr_cookiebanner_options.dr_removeCookiesAfterLoading, 15 * 1000); // redelete every 15 seconds setTimeout(dr_cookiebanner_options.dr_removeCookiesAfterLoading, dr_cookiebanner_options.cookieBlockTiming.delay); } }, dr_startsWith : function(str, searchString) { return str.indexOf(searchString, 0) === 0; }, dr_purgeCookies : function() { dr_cookiebanner_options.log("dr_purgeCookies()"); if (dr_deleteCookieMode === "manual") { return; } var hostDomains = dr_cookiebanner_options.dr_getHostDomains(window.location.hostname); if (dr_deleteCookieMode === "all") { // delete all but the ignored cookies var theCookies = document.cookie.split(';'); for (var i = 1; i <= theCookies.length; i++) { var cname = dr_cookiebanner_options.dr_getCookieNameFromBrowserCookieString(theCookies[i-1]); if (cname && cname != null) { var foundIgnore = false; for (var j = 0; j < dr_ignore_cookies.length; j++) { if (dr_ignore_cookies[j] === cname) { foundIgnore = true; break; } if (dr_cookiebanner_options.dr_startsWith(cname, dr_ignore_cookies[j])) { foundIgnore = true; break; } } if (!foundIgnore) { dr_cookiebanner_options.dr_removeCookie(cname, "/", hostDomains); } } } for (var j = 0; j < dr_delete_cookies.length; j++) { dr_cookiebanner_options.dr_removeCookie(dr_delete_cookies[j].name, dr_delete_cookies[j].path, hostDomains); } } if (dr_deleteCookieMode == "auto") { for (var j = 0; j < dr_delete_cookies.length; j++) { dr_cookiebanner_options.dr_removeCookie(dr_delete_cookies[j].name, dr_delete_cookies[j].path, hostDomains); } } if (dr_deleteCookieMode == "categories") { for (var j = 0; j < dr_delete_cookies.length; j++) { var remove = true; var c = dr_delete_cookies[j]; if (c) { if (c.category) { if (c.category == "statistic" && dr_cookiebanner_options.dr_hasConsent("statistic")) { remove = false; } if (c.category == "marketing" && dr_cookiebanner_options.dr_hasConsent("marketing")) { remove = false; } if (c.category == "unclassified" && dr_cookiebanner_options.dr_hasConsent("unclassified")) { remove = false; } } if (remove) { //console.log("Removing Cookie " + c.name + " (cat: " + c.category + ")"); dr_cookiebanner_options.dr_removeCookie(c.name, c.path, hostDomains); } else { //console.log("Allowing Cookie " + c.name + " (cat: " + c.category + ")"); } } } } }, dr_existsCookie : function (cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return true; //c.substring(name.length, c.length); } } return false; }, dr_getCookieNameFromBrowserCookieString : function(browserCookie) { var result = browserCookie.split('='); if (result && result.length > 0) { return result[0].replace(/^\s+|\s+$/gm,''); // trim } return null; }, dr_removeCookie : function (cookiename, path, hostDomains) { dr_cookiebanner_options.log("dr_removeCookie(" + cookiename + ")"); if (cookiename != null) { if (dr_cookiebanner_options.dr_existsCookie(cookiename)) { document.cookie = cookiename + '=; Path=' + path + '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; if (hostDomains && hostDomains.length > 0) { for (var ihd = 0; ihd < hostDomains.length; ihd++) { document.cookie = cookiename + '=; domain=' + hostDomains[ihd] + '; Path=' + path + '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } } } } }, dr_getHostDomains : function(hostname) { var result = []; if (hostname && hostname.length > 0) { result.push(hostname); var domainParts = hostname.split("."); if (domainParts && domainParts.length > 2) { for (var i=0; i<(domainParts.length - 2); i++) { domainParts[i] = ""; var url = ""; for (var j=0; j<domainParts.length; j++) { if (domainParts[j] && domainParts[j].length >0) { url += "." + domainParts[j]; } } result.push(url); } } } return result; }, dr_addIgnoreCookies : function(cookies) { dr_cookiebanner_options.log("dr_addIgnoreCookies()"); for (var j = 0; j<cookies.length; j++) { var cookiename = cookies[j]; // add to ignore list for "all" delete mode dr_ignore_cookies.push(cookiename); // remove from delete list (for "auto" delete mode) for (var k = 0; k< dr_delete_cookies.length; k++) { var cdel = dr_delete_cookies[k]; if (cdel && cdel.name != null) { if (cdel.name == cookiename) { cdel.name = null; } else if (cdel.name.indexOf(cookiename, 0) === 0) { cdel.name = null; } } } } }, dr_activateTags : function(pStatistics, pMarketing, closingPopup) { dr_cookiebanner_options.log("dr_activateTags(" + (pStatistics?"STAT ":"") + (pMarketing?"MARK ":"") + (closingPopup?"CLOSE ":"") + ")"); dr_directTagActivation(pStatistics, pMarketing, closingPopup); if (dr_generated_tags) { for (var i=0; i<dr_generated_tags.length; i++) { tag = dr_generated_tags[i]; if (tag) { if (!tag.active) { execute = false; if (closingPopup === true) { if (tag.activationMode === "close") { execute = true; } } else { // category mode if (tag.category === "marketing" && pMarketing) { execute = true; } else if (tag.category === "statistic" && pStatistics) { execute = true; } else if (tag.category === "") { execute = true; } // activation mode if (tag.activationMode === "always") { execute = true; } else if (tag.activationMode === "reject") { if (tag.category === "marketing" && !pMarketing) { execute = true; } else if (tag.category === "statistic" && !pStatistics) { execute = true; } else { execute = false; } } else if (tag.activationMode === "") { if (tag.category === "" && !(pMarketing || pStatistics)) { // do not execute if its technical and no category is active execute = false; } } else if (tag.activationMode === "close") { execute = false; } } if (execute) { try { var removeAfterExecution = false; if (tag.activationMode !== "close") { // on "close" handler always activate this tag tag.active = true; } else { removeAfterExecution = true; // to execute multiple times } if (tag.ignoreCookies) { dr_cookiebanner_options.dr_addIgnoreCookies(tag.ignoreCookies); } var code = tag.code; code = code.replace(new RegExp("<", 'g'), "<"); if (tag.mode === "insert") { if (tag.divId) { dr_insertTagOnStartup(0, tag.divId, code); } } else { if (tag.divId && tag.divId.length > 0) { dr_cookiebanner_options.logJson("dr_activateInsertionTag()", tag); dr_activateInsertionTagOnStartup(0, tag.divId, code); } else { dr_cookiebanner_options.logJson("dr_activateTag()", tag); dr_activateTag(code, removeAfterExecution); } } } catch(exc) { console.error("WebCare Tag Execution problem", exc); } } } } } // now activate integration tags (if they werent already executed because of normal tag activation) dr_initIntegrationTags(dr_generated_tags); } }, dr_generateCountrySelectOptions : function() { var hasAnyOptions = false; var options = dr_cookiebanner_options.preBannerOptions; if (options != null) { var browserLanguage = navigator.language || navigator.userLanguage; var browserCountry = null; if (browserLanguage.length > 2) { if (browserLanguage.length > 4) { browserCountry = browserLanguage.substring(3, 5); } browserLanguage = browserLanguage.substring(0, 2); } if (browserLanguage) { browserLanguage = browserLanguage.toLowerCase(); } if (browserCountry) { browserCountry = browserCountry.toLowerCase(); } var url = location.host + location.pathname; var selectedOptionLanguage = null; var selectedOptionCountry = null; var selectedOptionUrl = null; for (var i = 0; i < options.length; i++) { var option = options[i]; if (browserLanguage != null) { if (option.select) { if (option.select.languages) { for (var j = 0; j < option.select.languages.length; j++) { if (browserLanguage == option.select.languages[j]) { selectedOptionLanguage = option; break; } } } } } if (browserCountry != null) { if (option.select) { if (option.select.countries) { for (var j = 0; j < option.select.countries.length; j++) { if (browserCountry == option.select.countries[j]) { selectedOptionCountry = option; break; } } } } } if (url != null) { if (option.select) { if (option.select.urls) { for (var j = 0; j < option.select.urls.length; j++) { if (url.indexOf(option.select.urls[j]) >= 0) { selectedOptionUrl = option; break; } } } } } } var selectedOption = selectedOptionLanguage; if (selectedOptionCountry != null) { selectedOption = selectedOptionCountry; } if (selectedOptionUrl != null) { selectedOption = selectedOptionUrl; } var selectElem = document.getElementById("dr-selectCountry-input"); if (selectElem) { var optionHtml = selectElem.innerHTML; for (var i = 0; i < options.length; i++) { var option = options[i]; var selected = ""; if (option == selectedOption) { selected = " selected"; } optionHtml += "<option" + selected + " value='" + option.key + "'>" + option.description + "</option>"; hasAnyOptions = true; } selectElem.innerHTML = optionHtml; } if (hasAnyOptions) { dr_pre_selectCountry(); } } if (!hasAnyOptions) { // hide select and show button to proceed var pre = document.getElementById("dr-selectCountry-input"); if (pre) { pre.style.display = "none"; } var btn = document.getElementById("dr-selectCountry-btn"); if (btn) { btn.style.visibility="visible"; } } }, dr_getSelectedPreBannerOption : function() { var options = dr_cookiebanner_options.preBannerOptions; var selectElem = document.getElementById("dr-selectCountry-input"); if (selectElem && selectElem.value) { if (options != null) { for (var i = 0; i < options.length; i++) { var option = options[i]; if (option.key === selectElem.value) { var needsRedirect = true; var url = location.host + location.pathname; if (url != null) { if (option.select) { if (option.select.urls) { for (var j = 0; j < option.select.urls.length; j++) { if (url.indexOf(option.select.urls[j]) >= 0) { needsRedirect = false; } } } } } if (needsRedirect) { return option; } else { return null; } break; } } } } return null; }, dr_getUrlVarsAsArray : function() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; }, dr_getUrlParam : function(parameter, defaultvalue){ var urlparameter = defaultvalue; if(window.location.href.indexOf(parameter) > -1){ urlparameter = this.dr_getUrlVarsAsArray()[parameter]; } return urlparameter; }, dr_getConsentFromBanner : function(status, consentModeArray) { var result = { tech: true, preferences: true, statistic: false, marketing: false, unknown: false, drAllow: false, drDeny: false }; if (status === "allow") { result.statistic = true; result.marketing = true; result.unknown = true; result.drAllow = true; } else { if (consentModeArray) { for (var i=0; i < consentModeArray.length; i++) { if ("statistic" === consentModeArray[i]) { result.statistic = true; } else if ("marketing" === consentModeArray[i]) { result.marketing = true; } else if ("unclassified" === consentModeArray[i]) { result.unknown = true; } } } } return result; }, dr_getConsentFromUrlParameter : function() { var result = { tech: true, preferences: true, statistic: false, marketing: false, unknown: false, drAllow: false, drDeny: false }; var cs = this.dr_getUrlParam("__drconsent", null); if (cs) { if (cs === "allow") { result.preferences=true; result.statistic=true; result.marketing=true; result.unknown=true; result.drAllow = true; } else if (cs === "deny") { result.preferences = false; result.drDeny = true; } else { result.preferences = (cs.indexOf('p') > -1); result.statistic = (cs.indexOf('s') > -1); result.marketing = (cs.indexOf('m') > -1); result.unknown = (cs.indexOf('u') > -1); } return result; } else { return null; // no parameter found } }, dr_addConsentParameterToUrl : function(url, consent) { if (url) { var result = url; if (consent) { } else { consent = { tech: true, preferences: true, statistic: false, marketing: false, unknown: false, drAllow: false, drDeny: false }; } var consentContent = "deny"; if (consent.drAllow) { consentContent = "allow"; } else if (consent.drDeny) { consentContent = "deny"; } else { consentContent = ""; if (consent.preferences) { consentContent += "p"; } if (consent.statistic) { consentContent += "s"; } if (consent.marketing) { consentContent += "m"; } if (consent.unknown) { consentContent += "u"; } } var spacer = "?" if (result.indexOf("?") > -1) { spacer = "&"; } result += spacer + "__drconsent=" + consentContent; return result; } }, dr_removeConsentParameterFromUrl : function(url) { if (url) { var idx = url.indexOf("__drconsent="); if (idx > 0) { var preUrl = url.substr(0, idx); // prior to tag var postUrl = ""; // after tag var startIdx = idx + "&__drconsent=".length; var add = false; // add chars when ?&# is found for (var i=startIdx; i<url.length; i++) { var c = url.charAt(i); if (c === '#') { add = true; } if (add) { postUrl += c; } else { if (c === "&" || c === "?") { add = true; } } } // if ends with ?& and starts with # remove ?& alltogether (no params) if (preUrl.length > 0 && preUrl.charAt(preUrl.length - 1) === '?' || preUrl.charAt(preUrl.length - 1) === '&') { if (postUrl.length > 0 && postUrl.charAt(0) === '#') { preUrl = preUrl.substr(0, preUrl.length - 1); } } url = preUrl + postUrl; // if it ends with ?& remove this char if (url.charAt(url.length - 1) === "?" || url.charAt(url.length - 1) === "&") { url = url.substr(0, url.length - 1); } } } return url; } }; function dr_getBannerLanguage() { let defaultLanguage = "en"; let langParam = dr_existsLanguage(dr_getParameterByName("lang")); if (langParam) { return langParam; } langParam = dr_existsLanguage(document.documentElement.lang); if (langParam) { return langParam; } langParam = dr_existsLanguage(navigator.language || navigator.userLanguage); if (langParam) { return langParam; } langParam = dr_existsLanguage(defaultLanguage); if (langParam) { return langParam; } return 0; // get first language } function dr_loadIfExternalLanguage(langIso) { sleep() return true; } function dr_existsLanguage(lang) { if (lang) { lang = lang.toLowerCase(); } if (lang && lang.length >= 2) { if (dr_generated_banner[lang]) { return lang; // can include country code } if (lang.length > 2) { lang = lang.substring(0,2); } lang = lang.toLowerCase(); if (dr_generated_banner[lang]) { return lang; } } } function dr_getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } // remove cookies when leaving the page window.addEventListener("beforeunload", function (e) { if (!dr_cookiebanner_options.dr_cookiesEnabled) { dr_cookiebanner_options.dr_purgeCookies(); } return undefined; }); var dr_cookie_erase={cookies:[],maxIterations:5,interval:1e3,add_interval:1500,log:!1,cookieEraser:function(){this.log&&console.info("Erasing Cookies");for(var e=document.cookie.split(";"),o=1;o<=e.length;o++){var i=this.getCookieNameFromBrowserCookieString(e[o-1]);if(i&&null!=i)for(var r=0;r<this.cookies.length;r++){var t=this.cookies[r];t&&this.stringContains(i,t)&&this.eraseCookie(i)}}},getCookieNameFromBrowserCookieString:function(e){if(e){var o=e.split("=");if(o&&o.length>0)return o[0].replace(/^\s+|\s+$/gm,"")}return null},stringContains:function(e,o){return this.log&&console.info("Find "+o+" in "+e),!(!e||!o)&&("="==o[0]?e===o.substring(1):-1!==e.toLowerCase().indexOf(o.toLowerCase()))},eraseCookie:function(e){this.log&&console.info("Erasing "+e);var o=new Date;o.setDate(o.getDate()-1);var i=[e+"=","expires="+o.toUTCString(),"path=/"];"https:"===location.protocol&&(i.push("secure"),i.push("SameSite=none")),document.cookie=i.join(";")},installService:function(){dr_cookie_erase.cookieEraser(),dr_cookie_erase.maxIterations--,dr_cookie_erase.maxIterations>0?(setTimeout(dr_cookie_erase.installService,dr_cookie_erase.interval),dr_cookie_erase.interval+=dr_cookie_erase.add_interval):this.log&&console.log("Ending service")}}; </script><script >window.cookieconsent && window.cookieconsent.initialise(dr_cookiebanner_options);</script> <script src="/js/tailwindui.native.js?id=e8aaaec70370a6c889e8c8d065df3401"></script> <script type="module" src="/js/alpine.min.js?id=83029a2208000adc26a782812d99d8c2"></script> <script nomodule src="/js/alpine-ie11.min.js?id=b1c7467a314be967d557d87f08a0ec71" defer></script> <script src="/js/splide.min.js?id=b6eaf76803c0db2d21b16e23b9cda96b"></script> </body> </html>