Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md8
-rw-r--r--core/Db/Schema/Mysql.php1
-rw-r--r--core/Settings/Measurable/MeasurableProperty.php2
-rw-r--r--core/Settings/Storage/Backend/SitesTable.php5
-rw-r--r--core/Tracker/TrackerCodeGenerator.php18
-rw-r--r--core/Updates/4.12.0-b1.php49
-rw-r--r--core/Version.php2
-rw-r--r--js/piwik.js86
-rw-r--r--js/piwik.min.js84
-rw-r--r--matomo.js84
-rw-r--r--piwik.js84
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js76
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js10
-rw-r--r--plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue24
-rw-r--r--plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png4
-rw-r--r--plugins/Referrers/Columns/Base.php100
-rw-r--r--plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php104
-rw-r--r--plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original2
-rw-r--r--plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.originalbin3718 -> 3751 bytes
-rw-r--r--plugins/SitesManager/API.php340
-rw-r--r--plugins/SitesManager/Controller.php13
-rw-r--r--plugins/SitesManager/SiteUrls.php61
-rw-r--r--plugins/SitesManager/SitesManager.php24
-rw-r--r--plugins/SitesManager/lang/en.json7
-rw-r--r--plugins/SitesManager/tests/Fixtures/ManySites.php20
-rw-r--r--plugins/SitesManager/tests/Integration/ApiTest.php649
-rw-r--r--plugins/SitesManager/tests/Integration/ModelTest.php62
-rw-r--r--plugins/SitesManager/tests/Integration/SiteUrlsTest.php289
-rw-r--r--plugins/SitesManager/tests/Integration/SitesManagerTest.php29
-rw-r--r--plugins/SitesManager/tests/Integration/TrackingTest.php13
-rw-r--r--plugins/SitesManager/tests/System/ApiTest.php70
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml11
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml20
-rw-r--r--plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml2
-rw-r--r--plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png4
-rw-r--r--plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png4
-rw-r--r--plugins/SitesManager/tests/Unit/APITest.php25
-rw-r--r--plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php11
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.js100
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.min.js16
-rw-r--r--plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts1
-rw-r--r--plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts3
-rw-r--r--plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue40
-rw-r--r--plugins/WebsiteMeasurable/MeasurableSettings.php139
-rw-r--r--tests/PHPUnit/Fixtures/OmniFixture.php1
-rw-r--r--tests/PHPUnit/Framework/Fixture.php24
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getAvailableMeasurableTypes.xml40
-rw-r--r--tests/UI/expected-screenshots/MeasurableManager_add_measurable_view.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png4
-rw-r--r--tests/javascript/index.php63
-rw-r--r--tests/javascript/matomotest.js1
51 files changed, 1836 insertions, 997 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c7a2a0c131..23d5aac869 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,14 @@ This is the Developer Changelog for Matomo platform developers. All changes in o
The Product Changelog at **[matomo.org/changelog](https://matomo.org/changelog)** lets you see more details about any Matomo release, such as the list of new guides and FAQs, security fixes, and links to all closed issues.
+## Matomo 4.12.0
+
+### JavaScript Tracker
+
+#### New APIs
+
+* The methods `setExcludedReferrers` and `getExcludedReferrers` have been added to the JavaScript tracker. They allow setting and receiving the referrers the JavaScript tracker should ignore. If a referrer matches an entry on that list, it will not be passed with the tracking requests and the attribution cookie will stay unchanged. This can for example be used if you need to forward your users to an external service like SSO or payment and don't want any visits or conversions being attributed to those services.
+
## Matomo 4.10.0
### Breaking Changes
diff --git a/core/Db/Schema/Mysql.php b/core/Db/Schema/Mysql.php
index 00fb8c31e9..71bd54f39e 100644
--- a/core/Db/Schema/Mysql.php
+++ b/core/Db/Schema/Mysql.php
@@ -105,6 +105,7 @@ class Mysql implements SchemaInterface
excluded_ips TEXT NOT NULL,
excluded_parameters TEXT NOT NULL,
excluded_user_agents TEXT NOT NULL,
+ excluded_referrers TEXT NOT NULL,
`group` VARCHAR(250) NOT NULL,
`type` VARCHAR(255) NOT NULL,
keep_url_fragment TINYINT NOT NULL DEFAULT 0,
diff --git a/core/Settings/Measurable/MeasurableProperty.php b/core/Settings/Measurable/MeasurableProperty.php
index a1c9fa5534..415bd6e73c 100644
--- a/core/Settings/Measurable/MeasurableProperty.php
+++ b/core/Settings/Measurable/MeasurableProperty.php
@@ -31,7 +31,7 @@ class MeasurableProperty extends \Piwik\Settings\Setting
private $allowedNames = array(
'ecommerce', 'sitesearch', 'sitesearch_keyword_parameters',
- 'sitesearch_category_parameters',
+ 'sitesearch_category_parameters', 'excluded_referrers',
'exclude_unknown_urls', 'excluded_ips', 'excluded_parameters',
'excluded_user_agents', 'keep_url_fragment', 'urls', 'group'
);
diff --git a/core/Settings/Storage/Backend/SitesTable.php b/core/Settings/Storage/Backend/SitesTable.php
index c81f42fcc2..ccfc494311 100644
--- a/core/Settings/Storage/Backend/SitesTable.php
+++ b/core/Settings/Storage/Backend/SitesTable.php
@@ -28,14 +28,15 @@ class SitesTable implements BackendInterface
'sitesearch_category_parameters',
'excluded_user_agents',
'excluded_parameters',
- 'excluded_ips'
+ 'excluded_ips',
+ 'excluded_referrers'
);
// these fields are standard fields of a site and cannot be adjusted via a setting
private $allowedNames = array(
'ecommerce', 'sitesearch', 'sitesearch_keyword_parameters',
'sitesearch_category_parameters', 'exclude_unknown_urls',
- 'excluded_ips', 'excluded_parameters',
+ 'excluded_ips', 'excluded_parameters', 'excluded_referrers',
'excluded_user_agents', 'keep_url_fragment', 'urls'
);
diff --git a/core/Tracker/TrackerCodeGenerator.php b/core/Tracker/TrackerCodeGenerator.php
index 6bfba7894d..f6989f305c 100644
--- a/core/Tracker/TrackerCodeGenerator.php
+++ b/core/Tracker/TrackerCodeGenerator.php
@@ -48,6 +48,7 @@ class TrackerCodeGenerator
* @param bool $trackNoScript
* @param bool $crossDomain
* @param bool $excludedQueryParams
+ * @param array $excludedReferrers
* @return string Javascript code.
*/
public function generate(
@@ -64,7 +65,8 @@ class TrackerCodeGenerator
$disableCookies = false,
$trackNoScript = false,
$crossDomain = false,
- $excludedQueryParams = false
+ $excludedQueryParams = false,
+ $excludedReferrers = []
) {
// changes made to this code should be mirrored in plugins/CoreAdminHome/javascripts/jsTrackingGenerator.js var generateJsCode
@@ -144,11 +146,19 @@ class TrackerCodeGenerator
// Add any excluded query parameters to the tracker options
if ($excludedQueryParams) {
-
if (!is_array($excludedQueryParams)) {
- $excludedQueryParams = explode(',',$excludedQueryParams);
+ $excludedQueryParams = explode(',', $excludedQueryParams);
}
- $options .= ' _paq.push(["setExcludedQueryParams", '.json_encode($excludedQueryParams).']);'."\n";
+ $options .= ' _paq.push(["setExcludedQueryParams", ' . json_encode($excludedQueryParams) . ']);' . "\n";
+ }
+
+ // Add any ignored referrer to the tracker options
+ if ($excludedReferrers) {
+ if (!is_array($excludedReferrers)) {
+ $excludedReferrers = explode(',', $excludedReferrers);
+ }
+
+ $options .= ' _paq.push(["setExcludedReferrers", ' . json_encode($excludedReferrers) . ']);' . "\n";
}
if ($disableCookies) {
diff --git a/core/Updates/4.12.0-b1.php b/core/Updates/4.12.0-b1.php
new file mode 100644
index 0000000000..aa4059de67
--- /dev/null
+++ b/core/Updates/4.12.0-b1.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+
+namespace Piwik\Updates;
+
+use Piwik\Updater;
+use Piwik\Updates as PiwikUpdates;
+use Piwik\Updater\Migration;
+use Piwik\Updater\Migration\Factory as MigrationFactory;
+
+/**
+ * Update for version 4.12.0-b1
+ */
+class Updates_4_12_0_b1 extends PiwikUpdates
+{
+ /**
+ * @var MigrationFactory
+ */
+ private $migration;
+
+ public function __construct(MigrationFactory $factory)
+ {
+ $this->migration = $factory;
+ }
+
+ /**
+ * @param Updater $updater
+ *
+ * @return Migration[]
+ */
+ public function getMigrations(Updater $updater)
+ {
+ return [
+ $this->migration->db->addColumn('site', 'excluded_referrers', 'TEXT NOT NULL', 'excluded_user_agents')
+ ];
+ }
+
+ public function doUpdate(Updater $updater)
+ {
+ $updater->executeMigrations(__FILE__, $this->getMigrations($updater));
+ }
+}
diff --git a/core/Version.php b/core/Version.php
index b4a96877dd..9a5e30e677 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -21,7 +21,7 @@ final class Version
* The current Matomo version.
* @var string
*/
- const VERSION = '4.11.0-rc1';
+ const VERSION = '4.12.0-b1';
const MAJOR_VERSION = 4;
diff --git a/js/piwik.js b/js/piwik.js
index f2126a3d14..0bc90bee21 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -65,6 +65,7 @@
deleteCustomVariables, deleteCustomDimension, setDownloadExtensions, addDownloadExtensions, removeDownloadExtensions,
setDomains, setIgnoreClasses, setRequestMethod, setRequestContentType, setGenerationTimeMs, setPagePerformanceTiming,
setReferrerUrl, setCustomUrl, setAPIUrl, setDocumentTitle, setPageViewId, getPiwikUrl, getMatomoUrl, getCurrentUrl,
+ setExcludedReferrers, getExcludedReferrers,
setDownloadClasses, setLinkClasses,
setCampaignNameKey, setCampaignKeywordKey,
getConsentRequestsQueue, requireConsent, getRememberedConsent, hasRememberedConsent, isConsentRequired,
@@ -2247,6 +2248,9 @@ if (typeof window.Matomo !== 'object') {
// HTML anchor element classes to not track
configIgnoreClasses = [],
+ // Referrer URLs that should be excluded
+ configExcludedReferrers = [],
+
// Query parameters to be excluded
configExcludedQueryParams = [],
@@ -2723,6 +2727,49 @@ if (typeof window.Matomo !== 'object') {
return false;
}
+ /**
+ * Whether the specified referrer url matches one of the configured excluded referrers.
+ *
+ * @param string referrerUrl
+ * @returns {boolean}
+ */
+ function isReferrerExcluded(referrerUrl)
+ {
+ var i,
+ host,
+ path,
+ aliasHost,
+ aliasPath;
+
+ if (!referrerUrl.length || !configExcludedReferrers.length) {
+ return false;
+ }
+
+ host = getHostName(referrerUrl);
+ path = getPathName(referrerUrl);
+
+ // ignore www subdomain
+ if (host.indexOf('www.') === 0) {
+ host = host.substr(4);
+ }
+
+ for (i = 0; i < configExcludedReferrers.length; i++) {
+ aliasHost = domainFixup(configExcludedReferrers[i]);
+ aliasPath = getPathName(configExcludedReferrers[i]);
+
+ // ignore www subdomain
+ if (aliasHost.indexOf('www.') === 0) {
+ aliasHost = aliasHost.substr(4);
+ }
+
+ if (isSameHost(host, aliasHost) && isSitePath(path, aliasPath)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
/*
* Send image request to Matomo server using GET.
* The infamous web bug (or beacon) is a transparent, single pixel (1x1) image
@@ -3688,12 +3735,16 @@ if (typeof window.Matomo !== 'object') {
currentReferrerHostName = getHostName(configReferrerUrl);
originalReferrerHostName = referralUrl.length ? getHostName(referralUrl) : '';
- if (currentReferrerHostName.length && // there is a referrer
- !isSiteHostName(currentReferrerHostName) && // domain is not the current domain
- (!configConversionAttributionFirstReferrer || // attribute to last known referrer
- !originalReferrerHostName.length || // previously empty
- isSiteHostName(originalReferrerHostName))
- ) { // previously set but in current domain
+ if (currentReferrerHostName.length // there is a referrer
+ && !isSiteHostName(currentReferrerHostName) // domain is not the current domain
+ && !isReferrerExcluded(configReferrerUrl) // referrer is excluded
+ && (
+ !configConversionAttributionFirstReferrer // attribute to last known referrer
+ || !originalReferrerHostName.length // previously empty
+ || isSiteHostName(originalReferrerHostName) // previously set but in current domain
+ || isReferrerExcluded(referralUrl) // previously set but excluded
+ )
+ ) {
referralUrl = configReferrerUrl;
}
@@ -3767,7 +3818,7 @@ if (typeof window.Matomo !== 'object') {
'&r=' + String(Math.random()).slice(2, 8) + // keep the string to a minimum
'&h=' + now.getHours() + '&m=' + now.getMinutes() + '&s=' + now.getSeconds() +
'&url=' + encodeWrapper(purify(currentUrl)) +
- (configReferrerUrl.length ? '&urlref=' + encodeWrapper(purify(configReferrerUrl)) : '') +
+ (configReferrerUrl.length && !isReferrerExcluded(configReferrerUrl) ? '&urlref=' + encodeWrapper(purify(configReferrerUrl)) : '') +
(isNumberOrHasLength(configUserId) ? '&uid=' + encodeWrapper(configUserId) : '') +
'&_id=' + cookieVisitorIdValues.uuid +
'&_idn=' + cookieVisitorIdValues.newVisitor + // currently unused
@@ -4970,6 +5021,9 @@ if (typeof window.Matomo !== 'object') {
this.getDomains = function () {
return configHostsAlias;
};
+ this.getExcludedReferrers = function () {
+ return configExcludedReferrers;
+ };
this.getConfigIdPageView = function () {
return configIdPageView;
};
@@ -5564,6 +5618,22 @@ if (typeof window.Matomo !== 'object') {
}
};
+ /**
+ * Set array of domains to be excluded as referrer. Also supports path, eg '.matomo.org/subsite1'. In this
+ * case all referrers that don't match '*.matomo.org/subsite1/ *' would still be used as referrer.
+ * For example 'matomo.org/' or 'matomo.org/subsite2' would both be used as referrer.
+ *
+ * Also supports page wildcard, eg 'matomo.org/index*'. In this case all referrers
+ * that don't match matomo.org/index* would still be treated as referrer.
+ *
+ * Domains added with setDomains will automatically be excluded as referrers.
+ *
+ * @param string|array excludedReferrers
+ */
+ this.setExcludedReferrers = function(excludedReferrers) {
+ configExcludedReferrers = isString(excludedReferrers) ? [excludedReferrers] : excludedReferrers;
+ };
+
/**
* Enables cross domain linking. By default, the visitor ID that identifies a unique visitor is stored in
* the browser's first party cookies. This means the cookie can only be accessed by pages on the same domain.
@@ -7163,7 +7233,7 @@ if (typeof window.Matomo !== 'object') {
* Constructor
************************************************************/
- var applyFirst = ['addTracker', 'forgetCookieConsentGiven', 'requireCookieConsent','disableBrowserFeatureDetection', 'disableCookies', 'setTrackerUrl', 'setAPIUrl', 'enableCrossDomainLinking', 'setCrossDomainLinkingTimeout', 'setSessionCookieTimeout', 'setVisitorCookieTimeout', 'setCookieNamePrefix', 'setCookieSameSite', 'setSecureCookie', 'setCookiePath', 'setCookieDomain', 'setDomains', 'setUserId', 'setVisitorId', 'setSiteId', 'alwaysUseSendBeacon', 'disableAlwaysUseSendBeacon', 'enableLinkTracking', 'setCookieConsentGiven', 'requireConsent', 'setConsentGiven', 'disablePerformanceTracking', 'setPagePerformanceTiming', 'setExcludedQueryParams'];
+ var applyFirst = ['addTracker', 'forgetCookieConsentGiven', 'requireCookieConsent','disableBrowserFeatureDetection', 'disableCookies', 'setTrackerUrl', 'setAPIUrl', 'enableCrossDomainLinking', 'setCrossDomainLinkingTimeout', 'setSessionCookieTimeout', 'setVisitorCookieTimeout', 'setCookieNamePrefix', 'setCookieSameSite', 'setSecureCookie', 'setCookiePath', 'setCookieDomain', 'setDomains', 'setUserId', 'setVisitorId', 'setSiteId', 'alwaysUseSendBeacon', 'disableAlwaysUseSendBeacon', 'enableLinkTracking', 'setCookieConsentGiven', 'requireConsent', 'setConsentGiven', 'disablePerformanceTracking', 'setPagePerformanceTiming', 'setExcludedQueryParams', 'setExcludedReferrers'];
function createFirstTracker(matomoUrl, siteId)
{
diff --git a/js/piwik.min.js b/js/piwik.min.js
index ce0247be92..6893f82409 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -29,47 +29,47 @@ at=ai.findFirstNodeHavingAttribute(au,this.CONTENT_PIECE_ATTR);if(!at){at=ai.fin
}if(aw){aw+="&ca=1"}return aw},buildContentBlock:function(av){if(!av){return}var at=this.findContentName(av);var au=this.findContentPiece(av);var aw=this.findContentTarget(av);at=this.trim(at);au=this.trim(au);aw=this.trim(aw);return{name:at||"Unknown",piece:au||"Unknown",target:aw||""}},collectContent:function(aw){if(!aw||!aw.length){return[]}var av=[];var at,au;for(at=0;at<aw.length;at++){au=this.buildContentBlock(aw[at]);if(M(au)){av.push(au)}}return av},setLocation:function(at){this.location=at},getLocation:function(){var at=this.location||W.location;if(!at.origin){at.origin=at.protocol+"//"+at.hostname+(at.port?":"+at.port:"")}return at},toAbsoluteUrl:function(au){if((!au||String(au)!==au)&&au!==""){return au}if(""===au){return this.getLocation().href}if(au.search(/^\/\//)!==-1){return this.getLocation().protocol+au}if(au.search(/:\/\//)!==-1){return au}if(0===au.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+au}if(0===au.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+au
}if(0===au.search("^[a-zA-Z]{2,11}:")){return au}if(au.search(/^\//)!==-1){return this.getLocation().origin+au}var at="(.*/)";var av=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(at))[0];return av+au},isUrlToCurrentDomain:function(au){var av=this.toAbsoluteUrl(au);if(!av){return false}var at=this.getLocation().origin;if(at===av){return true}if(0===String(av).indexOf(at)){if(":"===String(av).substr(at.length,1)){return false}return true}return false},setHrefAttribute:function(au,at){if(!au||!at){return}ai.setAnyAttribute(au,"href",at)},shouldIgnoreInteraction:function(at){if(ai.hasNodeAttribute(at,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ai.hasNodeCssClass(at,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ai.hasNodeCssClass(at,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function aa(au,ax){if(ax){return ax}au=w.toAbsoluteUrl(au);if(A(au,"?")){var aw=au.indexOf("?");au=au.slice(0,aw)}if(U(au,"matomo.php")){au=f(au,"matomo.php".length)
}else{if(U(au,"piwik.php")){au=f(au,"piwik.php".length)}else{if(U(au,".php")){var at=au.lastIndexOf("/");var av=1;au=au.slice(0,at+av)}}}if(U(au,"/js/")){au=f(au,"js/".length)}return au}function R(az){var aB="Matomo_Overlay";var au=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=[^&]*)?");var av=au.exec(J.referrer);if(av){var ax=av[1];if(ax!==String(az)){return false}var ay=av[2],at=av[3],aw=av[4];if(!aw){aw=""}else{if(aw.indexOf("&segment=")===0){aw=aw.substr("&segment=".length)}}W.name=aB+"###"+ay+"###"+at+"###"+aw}var aA=W.name.split("###");return aA.length===4&&aA[0]===aB}function ad(au,az,av){var ay=W.name.split("###"),ax=ay[1],at=ay[2],aw=ay[3],aA=aa(au,az);o(aA+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aA,av,ax,at,aw)})}function v(){var av;try{av=W.frameElement}catch(au){return true}if(M(av)){return(av&&String(av.nodeName).toLowerCase()==="iframe")?true:false}try{return W.self!==W.top
-}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cL="mtm_cookie_consent",cU="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c2=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c0=false,cn="GET",dk=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cE=aM,aI=cj||"",bO="",c9="",ct="",cc=cf||"",bF="",bU="",ba,bp="",dg=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c2],bG=[],co=[],bR=[],be=[],bQ=500,c5=true,cR,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c7,bw,bY=false,aN="Lax",bs=false,cY,bk,bC,cS=33955200000,cu=1800000,df=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cA={},da={},dh={},cg=[],ck=false,cJ=false,au=false,di=false,cV=false,aS=false,bi=v(),cF=null,c8=null,aW,bI,cd=aq,bv,aQ,bH=false,cx=0,bB=["id","ses","cvar","ref"],cI=false,bJ=null,cT=[],cz=[],aB=X++,aA=false,c6=true;
-try{bp=J.title}catch(cG){bp=""}function aH(dw){if(bs){return 0}var du=new RegExp("(^|;)[ ]*"+dw+"=([^;]*)"),dv=du.exec(J.cookie);return dv?V(dv[2]):0}bJ=!aH(cU);function dp(dy,dz,dC,dB,dw,dx,dA){if(bs&&dy!==cU){return}var dv;if(dC){dv=new Date();dv.setTime(dv.getTime()+dC)}if(!dA){dA="Lax"}J.cookie=dy+"="+t(dz)+(dC?";expires="+dv.toGMTString():"")+";path="+(dB||"/")+(dw?";domain="+dw:"")+(dx?";secure":"")+";SameSite="+dA;if((!dC||dC>=0)&&aH(dy)!==String(dz)){var du="There was an error setting cookie `"+dy+"`. Please check domain and path.";ao(du)}}function b8(du){var dw,dv;du=j(du,az);for(dv=0;dv<co.length;dv++){du=j(du,co[dv])}if(bV){dw=new RegExp("#.*");return du.replace(dw,"")}return du}function b1(dw,du){var dx=s(du),dv;if(dx){return du}if(du.slice(0,1)==="/"){return s(dw)+"://"+d(dw)+du}dw=b8(dw);dv=dw.indexOf("?");if(dv>=0){dw=dw.slice(0,dv)}dv=dw.lastIndexOf("/");if(dv!==dw.length-1){dw=dw.slice(0,dv+1)}return dw+du}function cP(dw,du){var dv;dw=String(dw).toLowerCase();du=String(du).toLowerCase();
-if(dw===du){return true}if(du.slice(0,1)==="."){if(dw===du.slice(1)){return true}dv=dw.length-du.length;if((dv>0)&&(dw.slice(dv)===du)){return true}}return false}function cr(du){var dv=document.createElement("a");if(du.indexOf("//")!==0&&du.indexOf("http")!==0){if(du.indexOf("*")===0){du=du.substr(1)}if(du.indexOf(".")===0){du=du.substr(1)}du="http://"+du}dv.href=w.toAbsoluteUrl(du);if(dv.pathname){return dv.pathname}return""}function a9(dv,du){if(!an(du,"/")){du="/"+du}if(!an(dv,"/")){dv="/"+dv}var dw=(du==="/"||du==="/*");if(dw){return true}if(dv===du){return true}du=String(du).toLowerCase();dv=String(dv).toLowerCase();if(U(du,"*")){du=du.slice(0,-1);dw=(!du||du==="/");if(dw){return true}if(dv===du){return true}return dv.indexOf(du)===0}if(!U(dv,"/")){dv+="/"}if(!U(du,"/")){du+="/"}return dv.indexOf(du)===0}function aw(dy,dA){var dv,du,dw,dx,dz;for(dv=0;dv<aC.length;dv++){dx=O(aC[dv]);dz=cr(aC[dv]);if(cP(dy,dx)&&a9(dA,dz)){return true}}return false}function a1(dx){var dv,du,dw;for(dv=0;
-dv<aC.length;dv++){du=O(aC[dv].toLowerCase());if(dx===du){return true}if(du.slice(0,1)==="."){if(dx===du.slice(1)){return true}dw=dx.length-du.length;if((dw>0)&&(dx.slice(dw)===du)){return true}}}return false}function cv(du,dw){du=du.replace("send_image=0","send_image=1");var dv=new Image(1,1);dv.onload=function(){H=0;if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:true})}};dv.onerror=function(){if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:false})}};dv.src=aI+(aI.indexOf("?")<0?"?":"&")+du}function cM(du){if(dk==="POST"){return true}return du&&(du.length>2000||du.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dy,dB,dA){var dw=aP();if(!dw){return false}var dx={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dC=false;var dv=aI;try{var du=new Blob([dy],dx);if(dA&&!cM(dy)){du=new Blob([],dx);dv=dv+(dv.indexOf("?")<0?"?":"&")+dy}dC=g.sendBeacon(dv,du)}catch(dz){return false
-}if(dC&&typeof dB==="function"){dB({request:dy,trackerUrl:aI,success:true,isSendBeacon:true})}return dC}function de(dv,dw,du){if(!M(du)||null===du){du=true}if(m&&bc(dv,dw,du)){return}setTimeout(function(){if(m&&bc(dv,dw,du)){return}var dz;try{var dy=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dy.open("POST",aI,true);dy.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dA=m&&bc(dv,dw,du);if(!dA&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dw==="function")){dw({request:dv,trackerUrl:aI,success:true,xhr:this})}}};dy.setRequestHeader("Content-Type",cE);dy.withCredentials=true;dy.send(dv)}catch(dx){dz=m&&bc(dv,dw,du);if(!dz&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false})}}}},50)}function cl(dv){var du=new Date();var dw=du.getTime()+dv;if(!r||dw>r){r=dw}}function bg(){bi=true;
-cF=new Date().getTime()}function dn(){var du=new Date().getTime();return !cF||(du-cF)>bb}function aD(){if(dn()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dn()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dr(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dn()){bX()}}})}function cK(dy){var dv=new Date();var du=dv.getTime();c8=du;if(cJ&&du<cJ){var dw=cJ-du;setTimeout(dy,dw);cl(dw+50);cJ+=50;return}if(cJ===false){var dx=800;cJ=du+dx}dy()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dv,du,dw){aT();if(!bJ){cT.push(dv);return}aA=true;if(!cY&&dv){if(cI&&bJ){dv+="&consent=1"}cK(function(){if(c5&&bc(dv,dw,true)){cl(100);return}if(cM(dv)){de(dv,dw)}else{cv(dv,dw)}cl(du)})}if(!aS){dr()}}function cq(du){if(cY){return false}return(du&&du.length)}function dd(du,dy){if(!dy||dy>=du.length){return[du]}var dv=0;var dw=du.length;var dx=[];
-for(dv;dv<dw;dv+=dy){dx.push(du.slice(dv,dv+dy))}return dx}function dq(dv,du){if(!cq(dv)){return}if(!bJ){cT.push(dv);return}aA=true;cK(function(){var dy=dd(dv,50);var dw=0,dx;for(dw;dw<dy.length;dw++){dx='{"requests":["?'+dy[dw].join('","?')+'"],"send_image":0}';if(c5&&bc(dx,null,false)){cl(100)}else{de(dx,null,false)}}cl(du)})}function aY(du){return bq+du+"."+cc+"."+bv}function b5(dw,dv,du){dp(dw,"",-129600000,dv,du)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var du=bq+"testcookie";dp(du,"1",undefined,bw,c7,bY,aN);var dv=aH(du)==="1"?"1":"0";b5(du);return dv}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var dv,dx,dy={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dv in dy){if(Object.prototype.hasOwnProperty.call(dy,dv)){dx=g.mimeTypes[dy[dv]];
-dh[dv]=(dx&&dx.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dw=parseInt(ab.width,10);var du=parseInt(ab.height,10);dh.res=parseInt(dw,10)+"x"+parseInt(du,10);return dh}function b3(){var dv=aY("cvar"),du=aH(dv);if(du&&du.length){du=W.JSON.parse(du);if(Z(du)){return du}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dv=bl();var dw=aF();var du=String(dv)+dw;return du}function dc(dw){dw=String(dw);var dz=aF();var dx=dz.length;var dy=dw.substr(-1*dx,dx);
-var dv=parseInt(dw.substr(0,dw.length-dx),10);if(dv&&dy&&dy===dz){var du=bl();if(a5<=0){return true}if(du>=dv&&du<=(dv+a5)){return true}}return false}function ds(du){if(!cV){return""}var dy=e(du,az);if(!dy){return""}dy=String(dy);var dw=new RegExp("^[a-zA-Z0-9]+$");if(dy.length===32&&dw.test(dy)){var dv=dy.substr(16,32);if(dc(dv)){var dx=dy.substr(0,16);return dx}}return""}function cW(){if(!bU){bU=ds(bT)}var dw=new Date(),du=Math.round(dw.getTime()/1000),dv=aY("id"),dz=aH(dv),dy,dx;if(dz){dy=dz.split(".");dy.unshift("0");if(bU.length){dy[1]=bU}return dy}if(bU.length){dx=bU}else{if("0"===cb()){dx=""}else{dx=cZ()}}dy=["1",dx,du];return dy}function a4(){var dx=cW(),dv=dx[0],dw=dx[1],du=dx[2];return{newVisitor:dv,uuid:dw,createTs:du}}function aL(){var dx=new Date(),dv=dx.getTime(),dy=a4().createTs;var du=parseInt(dy,10);var dw=(du*1000)+cS-dv;return dw}function aR(du){if(!cc){return}var dw=new Date(),dv=Math.round(dw.getTime()/1000);if(!M(du)){du=a4()}var dx=du.uuid+"."+du.createTs+".";dp(aY("id"),dx,aL(),bw,c7,bY,aN)
-}function bS(){var du=aH(aY("ref"));if(du.length){try{du=W.JSON.parse(du);if(Z(du)){return du}}catch(dv){}}return["","",0,""]}function bD(dw){var dv=bq+"testcookie_domain";var du="testvalue";dp(dv,du,10000,null,dw,bY,aN);if(aH(dv)===du){b5(dv,null,dw);return true}return false}function aJ(){var dv=bs;bs=false;var du,dw;for(du=0;du<bB.length;du++){dw=aY(bB[du]);if(dw!==cU&&dw!==bj&&0!==aH(dw)){b5(dw,bw,c7)}}bs=dv}function b9(du){cc=du}function dt(dy){if(!dy||!Z(dy)){return}var dx=[];var dw;for(dw in dy){if(Object.prototype.hasOwnProperty.call(dy,dw)){dx.push(dw)}}var dz={};dx.sort();var du=dx.length;var dv;for(dv=0;dv<du;dv++){dz[dx[dv]]=dy[dx[dv]]}return dz}function ci(){dp(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dx="";var dv="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dw=dv.length;var du;for(du=0;du<6;du++){dx+=dv.charAt(Math.floor(Math.random()*dw))}return dx}function aE(dv){if(ct!==""){dv+=ct;bn=true;return dv}if(!h){return dv}var dw=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
-if(!dw){dw=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dw){return dv}var du="";if(dw.connectEnd&&dw.fetchStart){if(dw.connectEnd<dw.fetchStart){return dv}du+="&pf_net="+Math.round(dw.connectEnd-dw.fetchStart)}if(dw.responseStart&&dw.requestStart){if(dw.responseStart<dw.requestStart){return dv}du+="&pf_srv="+Math.round(dw.responseStart-dw.requestStart)}if(dw.responseStart&&dw.responseEnd){if(dw.responseEnd<dw.responseStart){return dv}du+="&pf_tfr="+Math.round(dw.responseEnd-dw.responseStart)}if(M(dw.domLoading)){if(dw.domInteractive&&dw.domLoading){if(dw.domInteractive<dw.domLoading){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.domLoading)}}else{if(dw.domInteractive&&dw.responseEnd){if(dw.domInteractive<dw.responseEnd){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.responseEnd)}}if(dw.domComplete&&dw.domInteractive){if(dw.domComplete<dw.domInteractive){return dv}du+="&pf_dm2="+Math.round(dw.domComplete-dw.domInteractive)
-}if(dw.loadEventEnd&&dw.loadEventStart){if(dw.loadEventEnd<dw.loadEventStart){return dv}du+="&pf_onl="+Math.round(dw.loadEventEnd-dw.loadEventStart)}return dv+du}function dj(){var dE,dx=new Date(),dy=Math.round(dx.getTime()/1000),dJ,dw,dz=1024,dG,dA,dv=aY("ses"),dD=aY("ref"),dC=aH(dv),du=bS(),dI=ba||bT,dF,dB,dH={};dF=du[0];dB=du[1];dJ=du[2];dw=du[3];if(!dC){if(!bC||!dF.length){for(dE in cw){if(Object.prototype.hasOwnProperty.call(cw,dE)){dF=e(dI,cw[dE]);if(dF.length){break}}}for(dE in bN){if(Object.prototype.hasOwnProperty.call(bN,dE)){dB=e(dI,bN[dE]);if(dB.length){break}}}}dG=d(bu);dA=dw.length?d(dw):"";if(dG.length&&!a1(dG)&&(!bC||!dA.length||a1(dA))){dw=bu}if(dw.length||dF.length){dJ=dy;du=[dF,dB,dJ,b8(dw.slice(0,dz))];dp(dD,W.JSON.stringify(du),df,bw,c7,bY,aN)}}if(dF.length){dH._rcn=t(dF)}if(dB.length){dH._rck=t(dB)}dH._refts=dJ;if(String(dw).length){dH._ref=t(b8(dw.slice(0,dz)))}return dH}function cy(dv,dG,dH){var dF,du=new Date(),dE=aV,dA=aY("cvar"),dI=ba||bT;if(bs){aJ()}if(cY){return""
-}var dB=a4();var dy=J.characterSet||J.charset;if(!dy||dy.toLowerCase()==="utf-8"){dy=null}dv+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+du.getHours()+"&m="+du.getMinutes()+"&s="+du.getSeconds()+"&url="+t(b8(dI))+(bu.length?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dB.uuid+"&_idn="+dB.newVisitor+(dy?"&cs="+t(dy):"")+"&send_image=0";var dD=dj();for(dF in dD){if(Object.prototype.hasOwnProperty.call(dD,dF)){dv+="&"+dF+"="+dD[dF]}}var dK=cQ();for(dF in dK){if(Object.prototype.hasOwnProperty.call(dK,dF)){dv+="&"+dF+"="+dK[dF]}}var dL=[];if(dG){for(dF in dG){if(Object.prototype.hasOwnProperty.call(dG,dF)&&/^dimension\d+$/.test(dF)){var dw=dF.replace("dimension","");dL.push(parseInt(dw,10));dL.push(String(dw));dv+="&"+dF+"="+t(dG[dF]);delete dG[dF]}}}if(dG&&D(dG)){dG=null}for(dF in cA){if(Object.prototype.hasOwnProperty.call(cA,dF)){dv+="&"+dF+"="+t(cA[dF])}}for(dF in bt){if(Object.prototype.hasOwnProperty.call(bt,dF)){var dz=(-1===P(dL,dF));if(dz){dv+="&dimension"+dF+"="+t(bt[dF])
-}}}if(dG){dv+="&data="+t(W.JSON.stringify(dG))}else{if(at){dv+="&data="+t(W.JSON.stringify(at))}}function dx(dM,dN){var dO=W.JSON.stringify(dM);if(dO.length>2){return"&"+dN+"="+t(dO)}return""}var dJ=dt(b2);var dC=dt(cs);dv+=dx(dJ,"cvar");dv+=dx(dC,"e_cvar");if(aV){dv+=dx(aV,"_cvar");for(dF in dE){if(Object.prototype.hasOwnProperty.call(dE,dF)){if(aV[dF][0]===""||aV[dF][1]===""){delete aV[dF]}}}if(bW){dp(dA,W.JSON.stringify(aV),cu,bw,c7,bY,aN)}}if(a8&&bL&&!bn){dv=aE(dv);bn=true}if(aQ){dv+="&pv_id="+aQ}aR(dB);ci();dv+=ag(dH,{tracker:bP,request:dv});if(c9.length){dv+="&"+c9}if(C(ch)){dv=ch(dv)}return dv}bX=function bd(){var du=new Date();du=du.getTime();if(!c8){return false}if(c8+bb<=du){bP.ping();return true}return false};function bx(dx,dw,dB,dy,du,dE){var dA="idgoal=0",dv=new Date(),dC=[],dD,dz=String(dx).length;if(dz){dA+="&ec_id="+t(dx)}dA+="&revenue="+dw;if(String(dB).length){dA+="&ec_st="+dB}if(String(dy).length){dA+="&ec_tx="+dy}if(String(du).length){dA+="&ec_sh="+du}if(String(dE).length){dA+="&ec_dt="+dE
-}if(da){for(dD in da){if(Object.prototype.hasOwnProperty.call(da,dD)){if(!M(da[dD][1])){da[dD][1]=""}if(!M(da[dD][2])){da[dD][2]=""}if(!M(da[dD][3])||String(da[dD][3]).length===0){da[dD][3]=0}if(!M(da[dD][4])||String(da[dD][4]).length===0){da[dD][4]=1}dC.push(da[dD])}}dA+="&ec_items="+t(W.JSON.stringify(dC))}dA=cy(dA,at,"ecommerce");bM(dA,bQ);if(dz){da={}}}function b4(du,dy,dx,dw,dv,dz){if(String(du).length&&M(dy)){bx(du,dy,dx,dw,dv,dz)}}function bz(du){if(M(du)){bx("",du,"","","","")}}function b6(dv,dx,dw){if(!bH){aQ=bm()}var du=cy("action_name="+t(ap(dv||bp)),dx,"log");if(a8&&!bn){du=aE(du)}bM(du,bQ,dw)}function a6(dw,dv){var dx,du="(^| )(piwik[_-]"+dv+"|matomo[_-]"+dv;if(dw){for(dx=0;dx<dw.length;dx++){du+="|"+dw[dx]}}du+=")( |$)";return new RegExp(du)}function aZ(du){return(aI&&du&&0===String(du).indexOf(aI))}function cC(dy,du,dz,dv){if(aZ(du)){return 0}var dx=a6(bR,"download"),dw=a6(be,"link"),dA=new RegExp("\\.("+dg.join("|")+")([?&#]|$)","i");if(dw.test(dy)){return"link"}if(dv||dx.test(dy)||dA.test(du)){return"download"
-}if(dz){return 0}return"link"}function ay(dv){var du;du=dv.parentNode;while(du!==null&&M(du)){if(ai.isLinkElement(dv)){break}dv=du;du=dv.parentNode}return dv}function dm(dz){dz=ay(dz);if(!ai.hasNodeAttribute(dz,"href")){return}if(!M(dz.href)){return}var dy=ai.getAttributeValueFromNode(dz,"href");var dv=dz.pathname||cr(dz.href);var dA=dz.hostname||d(dz.href);var dB=dA.toLowerCase();var dw=dz.href.replace(dA,dB);var dx=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dx.test(dw)){var du=cC(dz.className,dw,aw(dB,dv),ai.hasNodeAttribute(dz,"download"));if(du){return{type:du,href:dw}}}}function aU(du,dv,dw,dx){var dy=w.buildInteractionRequestParams(du,dv,dw,dx);if(!dy){return}return cy(dy,null,"contentInteraction")}function bh(du,dv){if(!du||!dv){return false}var dw=w.findTargetNode(du);if(w.shouldIgnoreInteraction(dw)){return false}dw=w.findTargetNodeNoDefault(du);if(dw&&!Y(dw,dv)){return false}return true}function cB(dw,dv,dy){if(!dw){return}var du=w.findParentContentNode(dw);
-if(!du){return}if(!bh(du,dw)){return}var dx=w.buildContentBlock(du);if(!dx){return}if(!dx.target&&dy){dx.target=dy}return w.buildInteractionRequestParams(dv,dx.name,dx.piece,dx.target)}function a2(dv){if(!cg||!cg.length){return false}var du,dw;for(du=0;du<cg.length;du++){dw=cg[du];if(dw&&dw.name===dv.name&&dw.piece===dv.piece&&dw.target===dv.target){return true}}return false}function a3(du){return function(dy){if(!du){return}var dw=w.findParentContentNode(du);var dv;if(dy){dv=dy.target||dy.srcElement}if(!dv){dv=du}if(!bh(dw,dv)){return}if(!dw){return false}var dz=w.findTargetNode(dw);if(!dz||w.shouldIgnoreInteraction(dz)){return false}var dx=dm(dz);if(di&&dx&&dx.type){return dx.type}return bP.trackContentInteractionNode(dv,"click")}}function b7(dw){if(!dw||!dw.length){return}var du,dv;for(du=0;du<dw.length;du++){dv=w.findTargetNode(dw[du]);if(dv&&!dv.contentInteractionTrackingSetupDone){dv.contentInteractionTrackingSetupDone=true;ar(dv,"click",a3(dv))}}}function bE(dw,dx){if(!dw||!dw.length){return[]
-}var du,dv;for(du=0;du<dw.length;du++){if(a2(dw[du])){dw.splice(du,1);du--}else{cg.push(dw[du])}}if(!dw||!dw.length){return[]}b7(dx);var dy=[];for(du=0;du<dw.length;du++){dv=cy(w.buildImpressionRequestParams(dw[du].name,dw[du].piece,dw[du].target),undefined,"contentImpressions");if(dv){dy.push(dv)}}return dy}function cH(dv){var du=w.collectContent(dv);return bE(du,dv)}function bf(dv){if(!dv||!dv.length){return[]}var du;for(du=0;du<dv.length;du++){if(!w.isNodeVisible(dv[du])){dv.splice(du,1);du--}}if(!dv||!dv.length){return[]}return cH(dv)}function aK(dw,du,dv){var dx=w.buildImpressionRequestParams(dw,du,dv);return cy(dx,null,"contentImpression")}function dl(dx,dv){if(!dx){return}var du=w.findParentContentNode(dx);var dw=w.buildContentBlock(du);if(!dw){return}if(!dv){dv="Unknown"}return aU(dv,dw.name,dw.piece,dw.target)}function cX(dv,dx,du,dw){return"e_c="+t(dv)+"&e_a="+t(dx)+(M(du)?"&e_n="+t(du):"")+(M(dw)?"&e_v="+t(dw):"")+"&ca=1"}function ax(dw,dy,du,dx,dA,dz){if(!ac(dw)||!ac(dy)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");
-return false}var dv=cy(cX(dw,dy,du,dx),dA,"event");bM(dv,bQ,dz)}function ce(du,dx,dv,dy){var dw=cy("search="+t(du)+(dx?"&search_cat="+t(dx):"")+(M(dv)?"&search_count="+dv:""),dy,"sitesearch");bM(dw,bQ)}function c1(du,dy,dx,dw){var dv=cy("idgoal="+du+(dy?"&revenue="+dy:""),dx,"goal");bM(dv,bQ,dw)}function db(dx,du,dB,dA,dw){var dz=du+"="+t(b8(dx));var dv=cB(dw,"click",dx);if(dv){dz+="&"+dv}var dy=cy(dz,dB,"link");bM(dy,bQ,dA)}function b0(dv,du){if(dv!==""){return dv+du.charAt(0).toUpperCase()+du.slice(1)}return du}function cm(dz){var dy,du,dx=["","webkit","ms","moz"],dw;if(!bk){for(du=0;du<dx.length;du++){dw=dx[du];if(Object.prototype.hasOwnProperty.call(J,b0(dw,"hidden"))){if(J[b0(dw,"visibilityState")]==="prerender"){dy=true}break}}}if(dy){ar(J,dw+"visibilitychange",function dv(){J.removeEventListener(dw+"visibilitychange",dv,false);dz()});return}dz()}function by(){var dv=bP.getVisitorId();var du=aO();return dv+du}function cp(du){if(!du){return}if(!ai.hasNodeAttribute(du,"href")){return
-}var dv=ai.getAttributeValueFromNode(du,"href");if(!dv||aZ(dv)){return}if(!bP.getVisitorId()){return}dv=j(dv,az);var dw=by();dv=I(dv,az,dw);ai.setAnyAttribute(du,"href",dv)}function br(dx){var dy=ai.getAttributeValueFromNode(dx,"href");if(!dy){return false}dy=String(dy);var dv=dy.indexOf("//")===0||dy.indexOf("http://")===0||dy.indexOf("https://")===0;if(!dv){return false}var du=dx.pathname||cr(dx.href);var dw=(dx.hostname||d(dx.href)).toLowerCase();if(aw(dw,du)){if(!cP(c2,O(dw))){return true}return false}return false}function cO(du){var dv=dm(du);if(dv&&dv.type){dv.href=p(dv.href);db(dv.href,dv.type,undefined,null,du);return}if(cV){du=ay(du);if(br(du)){cp(du)}}}function cD(){return J.all&&!J.addEventListener}function c3(du){var dw=du.which;var dv=(typeof du.button);if(!dw&&dv!=="undefined"){if(cD()){if(du.button&1){dw=1}else{if(du.button&2){dw=3}else{if(du.button&4){dw=2}}}}else{if(du.button===0||du.button==="0"){dw=1}else{if(du.button&1){dw=2}else{if(du.button&2){dw=3}}}}}return dw}function bZ(du){switch(c3(du)){case 1:return"left";
-case 2:return"middle";case 3:return"right"}}function a7(du){return du.target||du.srcElement}function c4(du){return du==="A"||du==="AREA"}function aG(du){function dv(dx){var dy=a7(dx);var dz=dy.nodeName;var dw=a6(bG,"ignore");while(!c4(dz)&&dy&&dy.parentNode){dy=dy.parentNode;dz=dy.nodeName}if(dy&&c4(dz)&&!dw.test(dy.className)){return dy}}return function(dy){dy=dy||W.event;var dz=dv(dy);if(!dz){return}var dx=bZ(dy);if(dy.type==="click"){var dw=false;if(du&&dx==="middle"){dw=true}if(dz&&!dw){cO(dz)}}else{if(dy.type==="mousedown"){if(dx==="middle"&&dz){aW=dx;bI=dz}else{aW=bI=null}}else{if(dy.type==="mouseup"){if(dx===aW&&dz===bI){cO(dz)}aW=bI=null}else{if(dy.type==="contextmenu"){cO(dz)}}}}}}function av(dx,dw,du){var dv=typeof dw;if(dv==="undefined"){dw=true}ar(dx,"click",aG(dw),du);if(dw){ar(dx,"mouseup",aG(dw),du);ar(dx,"mousedown",aG(dw),du);ar(dx,"contextmenu",aG(dw),du)}}function aX(dv,dy,dz){if(ck){return true}ck=true;var dA=false;var dx,dw;function du(){dA=true}n(function(){function dB(dD){setTimeout(function(){if(!ck){return
-}dA=false;dz.trackVisibleContentImpressions();dB(dD)},dD)}function dC(dD){setTimeout(function(){if(!ck){return}if(dA){dA=false;dz.trackVisibleContentImpressions()}dC(dD)},dD)}if(dv){dx=["scroll","resize"];for(dw=0;dw<dx.length;dw++){if(J.addEventListener){J.addEventListener(dx[dw],du,false)}else{W.attachEvent("on"+dx[dw],du)}}dC(100)}if(dy&&dy>0){dy=parseInt(dy,10);dB(dy)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var du=this.requests;this.requests=[];if(du.length===1){bM(du[0],bQ)}else{dq(du,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dv){if(!this.canQueue()){dq(dv,bQ);return}var du;for(du=0;du<dv.length;du++){this.push(dv[du])}},push:function(du){if(!du){return}if(!this.canQueue()){bM(du,bQ);return}bK.requests.push(du);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dv="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dv)){b[dv]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)
-}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(du){aI=du};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dw,dv){if(!M(dw)||null===dw){dw=this.getTrackerUrl()}var du=new T(dw,dv);L.push(du);u.trigger("TrackerAdded",[this]);return du};this.getSiteId=function(){return cc};this.setSiteId=function(du){b9(du)};this.resetUserId=function(){bF=""};this.setUserId=function(du){if(ac(du)){bF=du}};this.setVisitorId=function(dv){var du=/[0-9A-Fa-f]{16}/g;
-if(x(dv)&&du.test(dv)){bU=dv}else{ao("Invalid visitorId set"+dv)}};this.getUserId=function(){return bF};this.setCustomData=function(du,dv){if(Z(du)){at=du}else{if(!at){at={}}at[du]=dv}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(du){ch=du};this.appendToTrackingUrl=function(du){c9=du};this.getRequest=function(du){return cy(du)};this.addPlugin=function(du,dv){b[du]=dv};this.setCustomDimension=function(du,dv){du=parseInt(du,10);if(du>0){if(!M(dv)){dv=""}if(!x(dv)){dv=String(dv)}bt[du]=dv}};this.getCustomDimension=function(du){du=parseInt(du,10);if(du>0&&Object.prototype.hasOwnProperty.call(bt,du)){return bt[du]}};this.deleteCustomDimension=function(du){du=parseInt(du,10);if(du>0){delete bt[du]}};this.setCustomVariable=function(dv,du,dy,dw){var dx;if(!M(dw)){dw="visit"}if(!M(du)){return}if(!M(dy)){dy=""}if(dv>0){du=!x(du)?String(du):du;dy=!x(dy)?String(dy):dy;dx=[du.slice(0,bA),dy.slice(0,bA)];if(dw==="visit"||dw===2){cN();aV[dv]=dx}else{if(dw==="page"||dw===3){b2[dv]=dx
-}else{if(dw==="event"){cs[dv]=dx}}}}};this.getCustomVariable=function(dv,dw){var du;if(!M(dw)){dw="visit"}if(dw==="page"||dw===3){du=b2[dv]}else{if(dw==="event"){du=cs[dv]}else{if(dw==="visit"||dw===2){cN();du=aV[dv]}}}if(!M(du)||(du&&du[0]==="")){return false}return du};this.deleteCustomVariable=function(du,dv){if(this.getCustomVariable(du,dv)){this.setCustomVariable(du,"","",dv)}};this.deleteCustomVariables=function(du){if(du==="page"||du===3){b2={}}else{if(du==="event"){cs={}}else{if(du==="visit"||du===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(du){bQ=du};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(du){if(x(du)){du=du.split("|")}dg=du};this.addDownloadExtensions=function(dv){var du;if(x(dv)){dv=dv.split("|")}for(du=0;du<dv.length;du++){dg.push(dv[du])}};this.removeDownloadExtensions=function(dw){var dv,du=[];if(x(dw)){dw=dw.split("|")}for(dv=0;dv<dg.length;dv++){if(P(dw,dg[dv])===-1){du.push(dg[dv])
-}}dg=du};this.setDomains=function(du){aC=x(du)?[du]:du;var dy=false,dw=0,dv;for(dw;dw<aC.length;dw++){dv=String(aC[dw]);if(cP(c2,O(dv))){dy=true;break}var dx=cr(dv);if(dx&&dx!=="/"&&dx!=="/*"){dy=true;break}}if(!dy){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(du){a5=du};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(du){bG=x(du)?[du]:du};this.setRequestMethod=function(du){if(du){dk=String(du).toUpperCase()}else{dk=cn}if(dk==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(du){cE=du||aM};this.setGenerationTimeMs=function(du){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dy,dA,dz,dv,dB,dw){var dx={pf_net:dy,pf_srv:dA,pf_tfr:dz,pf_dm1:dv,pf_dm2:dB,pf_onl:dw};
-try{dx=Q(dx,M);dx=B(dx);ct=l(dx);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(du){ao("setPagePerformanceTiming: "+du.toString())}};this.setReferrerUrl=function(du){bu=du};this.setCustomUrl=function(du){ba=b1(bT,du)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(du){bp=du};this.setPageViewId=function(du){aQ=du;bH=true};this.setAPIUrl=function(du){bO=du};this.setDownloadClasses=function(du){bR=x(du)?[du]:du};this.setLinkClasses=function(du){be=x(du)?[du]:du};this.setCampaignNameKey=function(du){cw=x(du)?[du]:du};this.setCampaignKeywordKey=function(du){bN=x(du)?[du]:du};this.discardHashTag=function(du){bV=du};this.setCookieNamePrefix=function(du){bq=du;if(aV){aV=b3()}};this.setCookieDomain=function(du){var dv=O(du);if(!bs&&!bD(dv)){ao("Can't write cookie on domain "+du)}else{c7=dv;bo()}};this.setExcludedQueryParams=function(du){co=x(du)?[du]:du
-};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dw,dv,du){if(!dw){throw new Error("Missing cookie name")}if(!M(du)){du=cu}bB.push(dw);dp(aY(dw),dv,du,bw,c7,bY,aN)};this.getCookie=function(dv){var du=aH(aY(dv));if(du===0){return null}return du};this.setCookiePath=function(du){bw=du;bo()};this.getCookiePath=function(du){return bw};this.setVisitorCookieTimeout=function(du){cS=du*1000};this.setSessionCookieTimeout=function(du){cu=du*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(du){df=du*1000};this.setConversionAttributionFirstReferrer=function(du){bC=du};this.setSecureCookie=function(du){if(du&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=du};this.setCookieSameSite=function(du){du=String(du);du=du.charAt(0).toUpperCase()+du.toLowerCase().slice(1);if(du!=="None"&&du!=="Lax"&&du!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");
-return}if(du==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");du="Lax"}}aN=du};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var du=cy("ping=1",null,"ping");bM(du,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}this.setCookieConsentGiven();var du=new Date().getTime();dp(cL,du,dv,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dv){var du=g.doNotTrack||g.msDoNotTrack;cY=dv&&(du==="yes"||du==="1");if(cY){this.disableCookies()
-}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(dv,du){av(dv,du,false)};this.enableLinkTracking=function(dv){if(di){return}di=true;var du=this;q(function(){au=true;var dw=J.body;av(dw,dv,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var du=W.onerror;W.onerror=function(dz,dx,dw,dy,dv){cm(function(){var dA="JavaScript Errors";var dB=dx+":"+dw;if(dy){dB+=":"+dy}if(P(cz,dA+dB+dz)===-1){cz.push(dA+dB+dz);ax(dA,dB,dz)}});if(du){return du(dz,dx,dw,dy,dv)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(du){du=Math.max(du||15,5);bb=du*1000;if(c8!==null){dr()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)
-}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(du){if(W.location.protocol==="file:"){W.location=du}};this.setCountPreRendered=function(du){bk=du};this.trackGoal=function(du,dx,dw,dv){cm(function(){c1(du,dx,dw,dv)})};this.trackLink=function(dv,du,dx,dw){cm(function(){db(dv,du,dx,dw)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(du,dw,dv){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(du,dw,dv)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var du=w.findContentNodes();var dv=cH(du);bK.pushMultiple(dv)})})};this.trackVisibleContentImpressions=function(du,dv){if(R(cc)){return}if(!M(du)){du=true}if(!M(dv)){dv=750}aX(du,dv,this);cm(function(){n(function(){var dw=w.findContentNodes();
-var dx=bf(dw);bK.pushMultiple(dx)})})};this.trackContentImpression=function(dw,du,dv){if(R(cc)){return}dw=a(dw);du=a(du);dv=a(dv);if(!dw){return}du=du||"Unknown";cm(function(){var dx=aK(dw,du,dv);bK.push(dx)})};this.trackContentImpressionsWithinNode=function(du){if(R(cc)||!du){return}cm(function(){if(ck){n(function(){var dv=w.findContentNodesWithinNode(du);var dw=bf(dv);bK.pushMultiple(dw)})}else{q(function(){var dv=w.findContentNodesWithinNode(du);var dw=cH(dv);bK.pushMultiple(dw)})}})};this.trackContentInteraction=function(dw,dx,du,dv){if(R(cc)){return}dw=a(dw);dx=a(dx);du=a(du);dv=a(dv);if(!dw||!dx){return}du=du||"Unknown";cm(function(){var dy=aU(dw,dx,du,dv);if(dy){bK.push(dy)}})};this.trackContentInteractionNode=function(dw,dv){if(R(cc)||!dw){return}var du=null;cm(function(){du=dl(dw,dv);if(du){bK.push(du)}});return du};this.logAllContentBlocksOnPage=function(){var dw=w.findContentNodes();var du=w.collectContent(dw);var dv=typeof console;if(dv!=="undefined"&&console&&console.log){console.log(du)
-}};this.trackEvent=function(dv,dx,du,dw,dz,dy){cm(function(){ax(dv,dx,du,dw,dz,dy)})};this.trackSiteSearch=function(du,dw,dv,dx){cg=[];cm(function(){ce(du,dw,dv,dx)})};this.setEcommerceView=function(dy,du,dw,dv){cA={};if(ac(dw)){dw=String(dw)}if(!M(dw)||dw===null||dw===false||!dw.length){dw=""}else{if(dw instanceof Array){dw=W.JSON.stringify(dw)}}var dx="_pkc";cA[dx]=dw;if(M(dv)&&dv!==null&&dv!==false&&String(dv).length){dx="_pkp";cA[dx]=dv}if(!ac(dy)&&!ac(du)){return}if(ac(dy)){dx="_pks";cA[dx]=dy}if(!ac(du)){du=""}dx="_pkn";cA[dx]=du};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dy,du,dw,dv,dx){if(ac(dy)){da[dy]=[String(dy),du,dw,dv,dx]}};this.removeEcommerceItem=function(du){if(ac(du)){du=String(du);delete da[du]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(du,dy,dx,dw,dv,dz){b4(du,dy,dx,dw,dv,dz)};this.trackEcommerceCartUpdate=function(du){bz(du)};this.trackRequest=function(dv,dx,dw,du){cm(function(){var dy=cy(dv,dx,du);
-bM(dy,bQ,dw)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(du){if(du<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=du};this.queueRequest=function(du){cm(function(){var dv=cy(du);bK.push(dv)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var du=aH(bj);if(aH(cU)){if(du){b5(bj,bw,c7)}return null}if(!du||du===0){return null}return du};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dv){bJ=true;c6=true;b5(cU,bw,c7);var dw,du;for(dw=0;dw<cT.length;dw++){du=typeof cT[dw];if(du==="string"){bM(cT[dw],bQ)}else{if(du==="object"){dq(cT[dw],bQ)}}}cT=[];if(!M(dv)||dv){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dw){if(dw){dw=dw*60*60*1000
-}else{dw=30*365*24*60*60*1000}var du=true;this.setConsentGiven(du);var dv=new Date().getTime();dp(bj,dv,dw,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var du=30*365*24*60*60*1000;b5(bj,bw,c7);dp(cU,new Date().getTime(),du,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dj()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")
-}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);
-Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()
-}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
+}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cN="mtm_cookie_consent",cW="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c4=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c2=false,cn="GET",dm=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cF=aM,aI=cj||"",bO="",db="",ct="",cc=cf||"",bF="",bU="",ba,bp="",di=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c4],bG=[],cG=[],co=[],bR=[],be=[],bQ=500,c7=true,cT,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c9,bw,bY=false,aN="Lax",bs=false,c0,bk,bC,cU=33955200000,cu=1800000,dh=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cB={},dc={},dj={},cg=[],ck=false,cL=false,au=false,dk=false,cX=false,aS=false,bi=v(),cH=null,da=null,aW,bI,cd=aq,bv,aQ,bH=false,cy=0,bB=["id","ses","cvar","ref"],cK=false,bJ=null,cV=[],cA=[],aB=X++,aA=false,c8=true;
+try{bp=J.title}catch(cI){bp=""}function aH(dy){if(bs){return 0}var dw=new RegExp("(^|;)[ ]*"+dy+"=([^;]*)"),dx=dw.exec(J.cookie);return dx?V(dx[2]):0}bJ=!aH(cW);function dr(dA,dB,dE,dD,dy,dz,dC){if(bs&&dA!==cW){return}var dx;if(dE){dx=new Date();dx.setTime(dx.getTime()+dE)}if(!dC){dC="Lax"}J.cookie=dA+"="+t(dB)+(dE?";expires="+dx.toGMTString():"")+";path="+(dD||"/")+(dy?";domain="+dy:"")+(dz?";secure":"")+";SameSite="+dC;if((!dE||dE>=0)&&aH(dA)!==String(dB)){var dw="There was an error setting cookie `"+dA+"`. Please check domain and path.";ao(dw)}}function b8(dw){var dy,dx;dw=j(dw,az);for(dx=0;dx<co.length;dx++){dw=j(dw,co[dx])}if(bV){dy=new RegExp("#.*");return dw.replace(dy,"")}return dw}function b1(dy,dw){var dz=s(dw),dx;if(dz){return dw}if(dw.slice(0,1)==="/"){return s(dy)+"://"+d(dy)+dw}dy=b8(dy);dx=dy.indexOf("?");if(dx>=0){dy=dy.slice(0,dx)}dx=dy.lastIndexOf("/");if(dx!==dy.length-1){dy=dy.slice(0,dx+1)}return dy+dw}function cR(dy,dw){var dx;dy=String(dy).toLowerCase();dw=String(dw).toLowerCase();
+if(dy===dw){return true}if(dw.slice(0,1)==="."){if(dy===dw.slice(1)){return true}dx=dy.length-dw.length;if((dx>0)&&(dy.slice(dx)===dw)){return true}}return false}function cr(dw){var dx=document.createElement("a");if(dw.indexOf("//")!==0&&dw.indexOf("http")!==0){if(dw.indexOf("*")===0){dw=dw.substr(1)}if(dw.indexOf(".")===0){dw=dw.substr(1)}dw="http://"+dw}dx.href=w.toAbsoluteUrl(dw);if(dx.pathname){return dx.pathname}return""}function a9(dx,dw){if(!an(dw,"/")){dw="/"+dw}if(!an(dx,"/")){dx="/"+dx}var dy=(dw==="/"||dw==="/*");if(dy){return true}if(dx===dw){return true}dw=String(dw).toLowerCase();dx=String(dx).toLowerCase();if(U(dw,"*")){dw=dw.slice(0,-1);dy=(!dw||dw==="/");if(dy){return true}if(dx===dw){return true}return dx.indexOf(dw)===0}if(!U(dx,"/")){dx+="/"}if(!U(dw,"/")){dw+="/"}return dx.indexOf(dw)===0}function aw(dA,dC){var dx,dw,dy,dz,dB;for(dx=0;dx<aC.length;dx++){dz=O(aC[dx]);dB=cr(aC[dx]);if(cR(dA,dz)&&a9(dC,dB)){return true}}return false}function a1(dz){var dx,dw,dy;for(dx=0;
+dx<aC.length;dx++){dw=O(aC[dx].toLowerCase());if(dz===dw){return true}if(dw.slice(0,1)==="."){if(dz===dw.slice(1)){return true}dy=dz.length-dw.length;if((dy>0)&&(dz.slice(dy)===dw)){return true}}}return false}function cx(dw){var dx,dz,dB,dy,dA;if(!dw.length||!cG.length){return false}dz=d(dw);dB=cr(dw);if(dz.indexOf("www.")===0){dz=dz.substr(4)}for(dx=0;dx<cG.length;dx++){dy=O(cG[dx]);dA=cr(cG[dx]);if(dy.indexOf("www.")===0){dy=dy.substr(4)}if(cR(dz,dy)&&a9(dB,dA)){return true}}return false}function cv(dw,dy){dw=dw.replace("send_image=0","send_image=1");var dx=new Image(1,1);dx.onload=function(){H=0;if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:true})}};dx.onerror=function(){if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:false})}};dx.src=aI+(aI.indexOf("?")<0?"?":"&")+dw}function cO(dw){if(dm==="POST"){return true}return dw&&(dw.length>2000||dw.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob
+}function bc(dA,dD,dC){var dy=aP();if(!dy){return false}var dz={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dE=false;var dx=aI;try{var dw=new Blob([dA],dz);if(dC&&!cO(dA)){dw=new Blob([],dz);dx=dx+(dx.indexOf("?")<0?"?":"&")+dA}dE=g.sendBeacon(dx,dw)}catch(dB){return false}if(dE&&typeof dD==="function"){dD({request:dA,trackerUrl:aI,success:true,isSendBeacon:true})}return dE}function dg(dx,dy,dw){if(!M(dw)||null===dw){dw=true}if(m&&bc(dx,dy,dw)){return}setTimeout(function(){if(m&&bc(dx,dy,dw)){return}var dB;try{var dA=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dA.open("POST",aI,true);dA.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dC=m&&bc(dx,dy,dw);if(!dC&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dy==="function")){dy({request:dx,trackerUrl:aI,success:true,xhr:this})}}};
+dA.setRequestHeader("Content-Type",cF);dA.withCredentials=true;dA.send(dx)}catch(dz){dB=m&&bc(dx,dy,dw);if(!dB&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false})}}}},50)}function cl(dx){var dw=new Date();var dy=dw.getTime()+dx;if(!r||dy>r){r=dy}}function bg(){bi=true;cH=new Date().getTime()}function dq(){var dw=new Date().getTime();return !cH||(dw-cH)>bb}function aD(){if(dq()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dq()){bX()}else{if(J.visibilityState==="visible"){cH=new Date().getTime()}}}function dt(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dq()){bX()}}})}function cM(dA){var dx=new Date();var dw=dx.getTime();da=dw;if(cL&&dw<cL){var dy=cL-dw;setTimeout(dA,dy);cl(dy+50);cL+=50;return}if(cL===false){var dz=800;cL=dw+dz}dA()}function aT(){if(aH(cW)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dx,dw,dy){aT();if(!bJ){cV.push(dx);
+return}aA=true;if(!c0&&dx){if(cK&&bJ){dx+="&consent=1"}cM(function(){if(c7&&bc(dx,dy,true)){cl(100);return}if(cO(dx)){dg(dx,dy)}else{cv(dx,dy)}cl(dw)})}if(!aS){dt()}}function cq(dw){if(c0){return false}return(dw&&dw.length)}function df(dw,dA){if(!dA||dA>=dw.length){return[dw]}var dx=0;var dy=dw.length;var dz=[];for(dx;dx<dy;dx+=dA){dz.push(dw.slice(dx,dx+dA))}return dz}function ds(dx,dw){if(!cq(dx)){return}if(!bJ){cV.push(dx);return}aA=true;cM(function(){var dA=df(dx,50);var dy=0,dz;for(dy;dy<dA.length;dy++){dz='{"requests":["?'+dA[dy].join('","?')+'"],"send_image":0}';if(c7&&bc(dz,null,false)){cl(100)}else{dg(dz,null,false)}}cl(dw)})}function aY(dw){return bq+dw+"."+cc+"."+bv}function b5(dy,dx,dw){dr(dy,"",-129600000,dx,dw)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dw=bq+"testcookie";dr(dw,"1",undefined,bw,c9,bY,aN);var dx=aH(dw)==="1"?"1":"0";b5(dw);return dx}function bo(){bv=cd((c9||c4)+(bw||"/")).slice(0,4)}function cS(){if(!c8){return{}
+}if(M(dj.res)){return dj}var dx,dz,dA={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dx in dA){if(Object.prototype.hasOwnProperty.call(dA,dx)){dz=g.mimeTypes[dA[dx]];dj[dx]=(dz&&dz.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dj.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dj.cookie=g.cookieEnabled?"1":"0"}else{dj.cookie=cb()}}var dy=parseInt(ab.width,10);var dw=parseInt(ab.height,10);dj.res=parseInt(dy,10)+"x"+parseInt(dw,10);return dj}function b3(){var dx=aY("cvar"),dw=aH(dx);if(dw&&dw.length){dw=W.JSON.parse(dw);if(Z(dw)){return dw}}return{}}function cP(){if(aV===false){aV=b3()}}function c1(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)+(new Date()).getTime()+Math.random()).slice(0,16)
+}function aF(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dx=bl();var dy=aF();var dw=String(dx)+dy;return dw}function de(dy){dy=String(dy);var dB=aF();var dz=dB.length;var dA=dy.substr(-1*dz,dz);var dx=parseInt(dy.substr(0,dy.length-dz),10);if(dx&&dA&&dA===dB){var dw=bl();if(a5<=0){return true}if(dw>=dx&&dw<=(dx+a5)){return true}}return false}function du(dw){if(!cX){return""}var dA=e(dw,az);if(!dA){return""}dA=String(dA);var dy=new RegExp("^[a-zA-Z0-9]+$");if(dA.length===32&&dy.test(dA)){var dx=dA.substr(16,32);if(de(dx)){var dz=dA.substr(0,16);return dz}}return""}function cY(){if(!bU){bU=du(bT)}var dy=new Date(),dw=Math.round(dy.getTime()/1000),dx=aY("id"),dB=aH(dx),dA,dz;if(dB){dA=dB.split(".");dA.unshift("0");if(bU.length){dA[1]=bU}return dA}if(bU.length){dz=bU}else{if("0"===cb()){dz=""}else{dz=c1()}}dA=["1",dz,dw];return dA}function a4(){var dz=cY(),dx=dz[0],dy=dz[1],dw=dz[2];
+return{newVisitor:dx,uuid:dy,createTs:dw}}function aL(){var dz=new Date(),dx=dz.getTime(),dA=a4().createTs;var dw=parseInt(dA,10);var dy=(dw*1000)+cU-dx;return dy}function aR(dw){if(!cc){return}var dy=new Date(),dx=Math.round(dy.getTime()/1000);if(!M(dw)){dw=a4()}var dz=dw.uuid+"."+dw.createTs+".";dr(aY("id"),dz,aL(),bw,c9,bY,aN)}function bS(){var dw=aH(aY("ref"));if(dw.length){try{dw=W.JSON.parse(dw);if(Z(dw)){return dw}}catch(dx){}}return["","",0,""]}function bD(dy){var dx=bq+"testcookie_domain";var dw="testvalue";dr(dx,dw,10000,null,dy,bY,aN);if(aH(dx)===dw){b5(dx,null,dy);return true}return false}function aJ(){var dx=bs;bs=false;var dw,dy;for(dw=0;dw<bB.length;dw++){dy=aY(bB[dw]);if(dy!==cW&&dy!==bj&&0!==aH(dy)){b5(dy,bw,c9)}}bs=dx}function b9(dw){cc=dw}function dv(dA){if(!dA||!Z(dA)){return}var dz=[];var dy;for(dy in dA){if(Object.prototype.hasOwnProperty.call(dA,dy)){dz.push(dy)}}var dB={};dz.sort();var dw=dz.length;var dx;for(dx=0;dx<dw;dx++){dB[dz[dx]]=dA[dz[dx]]}return dB}function ci(){dr(aY("ses"),"1",cu,bw,c9,bY,aN)
+}function bm(){var dz="";var dx="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dy=dx.length;var dw;for(dw=0;dw<6;dw++){dz+=dx.charAt(Math.floor(Math.random()*dy))}return dz}function aE(dx){if(ct!==""){dx+=ct;bn=true;return dx}if(!h){return dx}var dy=(typeof h.timing==="object")&&h.timing?h.timing:undefined;if(!dy){dy=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dy){return dx}var dw="";if(dy.connectEnd&&dy.fetchStart){if(dy.connectEnd<dy.fetchStart){return dx}dw+="&pf_net="+Math.round(dy.connectEnd-dy.fetchStart)}if(dy.responseStart&&dy.requestStart){if(dy.responseStart<dy.requestStart){return dx}dw+="&pf_srv="+Math.round(dy.responseStart-dy.requestStart)}if(dy.responseStart&&dy.responseEnd){if(dy.responseEnd<dy.responseStart){return dx}dw+="&pf_tfr="+Math.round(dy.responseEnd-dy.responseStart)}if(M(dy.domLoading)){if(dy.domInteractive&&dy.domLoading){if(dy.domInteractive<dy.domLoading){return dx
+}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.domLoading)}}else{if(dy.domInteractive&&dy.responseEnd){if(dy.domInteractive<dy.responseEnd){return dx}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.responseEnd)}}if(dy.domComplete&&dy.domInteractive){if(dy.domComplete<dy.domInteractive){return dx}dw+="&pf_dm2="+Math.round(dy.domComplete-dy.domInteractive)}if(dy.loadEventEnd&&dy.loadEventStart){if(dy.loadEventEnd<dy.loadEventStart){return dx}dw+="&pf_onl="+Math.round(dy.loadEventEnd-dy.loadEventStart)}return dx+dw}function dl(){var dG,dz=new Date(),dA=Math.round(dz.getTime()/1000),dL,dy,dB=1024,dI,dC,dx=aY("ses"),dF=aY("ref"),dE=aH(dx),dw=bS(),dK=ba||bT,dH,dD,dJ={};dH=dw[0];dD=dw[1];dL=dw[2];dy=dw[3];if(!dE){if(!bC||!dH.length){for(dG in cw){if(Object.prototype.hasOwnProperty.call(cw,dG)){dH=e(dK,cw[dG]);if(dH.length){break}}}for(dG in bN){if(Object.prototype.hasOwnProperty.call(bN,dG)){dD=e(dK,bN[dG]);if(dD.length){break}}}}dI=d(bu);dC=dy.length?d(dy):"";if(dI.length&&!a1(dI)&&!cx(bu)&&(!bC||!dC.length||a1(dC)||cx(dy))){dy=bu
+}if(dy.length||dH.length){dL=dA;dw=[dH,dD,dL,b8(dy.slice(0,dB))];dr(dF,W.JSON.stringify(dw),dh,bw,c9,bY,aN)}}if(dH.length){dJ._rcn=t(dH)}if(dD.length){dJ._rck=t(dD)}dJ._refts=dL;if(String(dy).length){dJ._ref=t(b8(dy.slice(0,dB)))}return dJ}function cz(dx,dI,dJ){var dH,dw=new Date(),dG=aV,dC=aY("cvar"),dK=ba||bT;if(bs){aJ()}if(c0){return""}var dD=a4();var dA=J.characterSet||J.charset;if(!dA||dA.toLowerCase()==="utf-8"){dA=null}dx+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+dw.getHours()+"&m="+dw.getMinutes()+"&s="+dw.getSeconds()+"&url="+t(b8(dK))+(bu.length&&!cx(bu)?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dD.uuid+"&_idn="+dD.newVisitor+(dA?"&cs="+t(dA):"")+"&send_image=0";var dF=dl();for(dH in dF){if(Object.prototype.hasOwnProperty.call(dF,dH)){dx+="&"+dH+"="+dF[dH]}}var dM=cS();for(dH in dM){if(Object.prototype.hasOwnProperty.call(dM,dH)){dx+="&"+dH+"="+dM[dH]}}var dN=[];if(dI){for(dH in dI){if(Object.prototype.hasOwnProperty.call(dI,dH)&&/^dimension\d+$/.test(dH)){var dy=dH.replace("dimension","");
+dN.push(parseInt(dy,10));dN.push(String(dy));dx+="&"+dH+"="+t(dI[dH]);delete dI[dH]}}}if(dI&&D(dI)){dI=null}for(dH in cB){if(Object.prototype.hasOwnProperty.call(cB,dH)){dx+="&"+dH+"="+t(cB[dH])}}for(dH in bt){if(Object.prototype.hasOwnProperty.call(bt,dH)){var dB=(-1===P(dN,dH));if(dB){dx+="&dimension"+dH+"="+t(bt[dH])}}}if(dI){dx+="&data="+t(W.JSON.stringify(dI))}else{if(at){dx+="&data="+t(W.JSON.stringify(at))}}function dz(dO,dP){var dQ=W.JSON.stringify(dO);if(dQ.length>2){return"&"+dP+"="+t(dQ)}return""}var dL=dv(b2);var dE=dv(cs);dx+=dz(dL,"cvar");dx+=dz(dE,"e_cvar");if(aV){dx+=dz(aV,"_cvar");for(dH in dG){if(Object.prototype.hasOwnProperty.call(dG,dH)){if(aV[dH][0]===""||aV[dH][1]===""){delete aV[dH]}}}if(bW){dr(dC,W.JSON.stringify(aV),cu,bw,c9,bY,aN)}}if(a8&&bL&&!bn){dx=aE(dx);bn=true}if(aQ){dx+="&pv_id="+aQ}aR(dD);ci();dx+=ag(dJ,{tracker:bP,request:dx});if(db.length){dx+="&"+db}if(C(ch)){dx=ch(dx)}return dx}bX=function bd(){var dw=new Date();dw=dw.getTime();if(!da){return false}if(da+bb<=dw){bP.ping();
+return true}return false};function bx(dz,dy,dD,dA,dw,dG){var dC="idgoal=0",dx=new Date(),dE=[],dF,dB=String(dz).length;if(dB){dC+="&ec_id="+t(dz)}dC+="&revenue="+dy;if(String(dD).length){dC+="&ec_st="+dD}if(String(dA).length){dC+="&ec_tx="+dA}if(String(dw).length){dC+="&ec_sh="+dw}if(String(dG).length){dC+="&ec_dt="+dG}if(dc){for(dF in dc){if(Object.prototype.hasOwnProperty.call(dc,dF)){if(!M(dc[dF][1])){dc[dF][1]=""}if(!M(dc[dF][2])){dc[dF][2]=""}if(!M(dc[dF][3])||String(dc[dF][3]).length===0){dc[dF][3]=0}if(!M(dc[dF][4])||String(dc[dF][4]).length===0){dc[dF][4]=1}dE.push(dc[dF])}}dC+="&ec_items="+t(W.JSON.stringify(dE))}dC=cz(dC,at,"ecommerce");bM(dC,bQ);if(dB){dc={}}}function b4(dw,dA,dz,dy,dx,dB){if(String(dw).length&&M(dA)){bx(dw,dA,dz,dy,dx,dB)}}function bz(dw){if(M(dw)){bx("",dw,"","","","")}}function b6(dx,dz,dy){if(!bH){aQ=bm()}var dw=cz("action_name="+t(ap(dx||bp)),dz,"log");if(a8&&!bn){dw=aE(dw)}bM(dw,bQ,dy)}function a6(dy,dx){var dz,dw="(^| )(piwik[_-]"+dx+"|matomo[_-]"+dx;if(dy){for(dz=0;
+dz<dy.length;dz++){dw+="|"+dy[dz]}}dw+=")( |$)";return new RegExp(dw)}function aZ(dw){return(aI&&dw&&0===String(dw).indexOf(aI))}function cD(dA,dw,dB,dx){if(aZ(dw)){return 0}var dz=a6(bR,"download"),dy=a6(be,"link"),dC=new RegExp("\\.("+di.join("|")+")([?&#]|$)","i");if(dy.test(dA)){return"link"}if(dx||dz.test(dA)||dC.test(dw)){return"download"}if(dB){return 0}return"link"}function ay(dx){var dw;dw=dx.parentNode;while(dw!==null&&M(dw)){if(ai.isLinkElement(dx)){break}dx=dw;dw=dx.parentNode}return dx}function dp(dB){dB=ay(dB);if(!ai.hasNodeAttribute(dB,"href")){return}if(!M(dB.href)){return}var dA=ai.getAttributeValueFromNode(dB,"href");var dx=dB.pathname||cr(dB.href);var dC=dB.hostname||d(dB.href);var dD=dC.toLowerCase();var dy=dB.href.replace(dC,dD);var dz=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dz.test(dy)){var dw=cD(dB.className,dy,aw(dD,dx),ai.hasNodeAttribute(dB,"download"));if(dw){return{type:dw,href:dy}}}}function aU(dw,dx,dy,dz){var dA=w.buildInteractionRequestParams(dw,dx,dy,dz);
+if(!dA){return}return cz(dA,null,"contentInteraction")}function bh(dw,dx){if(!dw||!dx){return false}var dy=w.findTargetNode(dw);if(w.shouldIgnoreInteraction(dy)){return false}dy=w.findTargetNodeNoDefault(dw);if(dy&&!Y(dy,dx)){return false}return true}function cC(dy,dx,dA){if(!dy){return}var dw=w.findParentContentNode(dy);if(!dw){return}if(!bh(dw,dy)){return}var dz=w.buildContentBlock(dw);if(!dz){return}if(!dz.target&&dA){dz.target=dA}return w.buildInteractionRequestParams(dx,dz.name,dz.piece,dz.target)}function a2(dx){if(!cg||!cg.length){return false}var dw,dy;for(dw=0;dw<cg.length;dw++){dy=cg[dw];if(dy&&dy.name===dx.name&&dy.piece===dx.piece&&dy.target===dx.target){return true}}return false}function a3(dw){return function(dA){if(!dw){return}var dy=w.findParentContentNode(dw);var dx;if(dA){dx=dA.target||dA.srcElement}if(!dx){dx=dw}if(!bh(dy,dx)){return}if(!dy){return false}var dB=w.findTargetNode(dy);if(!dB||w.shouldIgnoreInteraction(dB)){return false}var dz=dp(dB);if(dk&&dz&&dz.type){return dz.type
+}return bP.trackContentInteractionNode(dx,"click")}}function b7(dy){if(!dy||!dy.length){return}var dw,dx;for(dw=0;dw<dy.length;dw++){dx=w.findTargetNode(dy[dw]);if(dx&&!dx.contentInteractionTrackingSetupDone){dx.contentInteractionTrackingSetupDone=true;ar(dx,"click",a3(dx))}}}function bE(dy,dz){if(!dy||!dy.length){return[]}var dw,dx;for(dw=0;dw<dy.length;dw++){if(a2(dy[dw])){dy.splice(dw,1);dw--}else{cg.push(dy[dw])}}if(!dy||!dy.length){return[]}b7(dz);var dA=[];for(dw=0;dw<dy.length;dw++){dx=cz(w.buildImpressionRequestParams(dy[dw].name,dy[dw].piece,dy[dw].target),undefined,"contentImpressions");if(dx){dA.push(dx)}}return dA}function cJ(dx){var dw=w.collectContent(dx);return bE(dw,dx)}function bf(dx){if(!dx||!dx.length){return[]}var dw;for(dw=0;dw<dx.length;dw++){if(!w.isNodeVisible(dx[dw])){dx.splice(dw,1);dw--}}if(!dx||!dx.length){return[]}return cJ(dx)}function aK(dy,dw,dx){var dz=w.buildImpressionRequestParams(dy,dw,dx);return cz(dz,null,"contentImpression")}function dn(dz,dx){if(!dz){return
+}var dw=w.findParentContentNode(dz);var dy=w.buildContentBlock(dw);if(!dy){return}if(!dx){dx="Unknown"}return aU(dx,dy.name,dy.piece,dy.target)}function cZ(dx,dz,dw,dy){return"e_c="+t(dx)+"&e_a="+t(dz)+(M(dw)?"&e_n="+t(dw):"")+(M(dy)?"&e_v="+t(dy):"")+"&ca=1"}function ax(dy,dA,dw,dz,dC,dB){if(!ac(dy)||!ac(dA)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var dx=cz(cZ(dy,dA,dw,dz),dC,"event");bM(dx,bQ,dB)}function ce(dw,dz,dx,dA){var dy=cz("search="+t(dw)+(dz?"&search_cat="+t(dz):"")+(M(dx)?"&search_count="+dx:""),dA,"sitesearch");bM(dy,bQ)}function c3(dw,dA,dz,dy){var dx=cz("idgoal="+dw+(dA?"&revenue="+dA:""),dz,"goal");bM(dx,bQ,dy)}function dd(dz,dw,dD,dC,dy){var dB=dw+"="+t(b8(dz));var dx=cC(dy,"click",dz);if(dx){dB+="&"+dx}var dA=cz(dB,dD,"link");bM(dA,bQ,dC)}function b0(dx,dw){if(dx!==""){return dx+dw.charAt(0).toUpperCase()+dw.slice(1)}return dw}function cm(dB){var dA,dw,dz=["","webkit","ms","moz"],dy;
+if(!bk){for(dw=0;dw<dz.length;dw++){dy=dz[dw];if(Object.prototype.hasOwnProperty.call(J,b0(dy,"hidden"))){if(J[b0(dy,"visibilityState")]==="prerender"){dA=true}break}}}if(dA){ar(J,dy+"visibilitychange",function dx(){J.removeEventListener(dy+"visibilitychange",dx,false);dB()});return}dB()}function by(){var dx=bP.getVisitorId();var dw=aO();return dx+dw}function cp(dw){if(!dw){return}if(!ai.hasNodeAttribute(dw,"href")){return}var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx||aZ(dx)){return}if(!bP.getVisitorId()){return}dx=j(dx,az);var dy=by();dx=I(dx,az,dy);ai.setAnyAttribute(dw,"href",dx)}function br(dz){var dA=ai.getAttributeValueFromNode(dz,"href");if(!dA){return false}dA=String(dA);var dx=dA.indexOf("//")===0||dA.indexOf("http://")===0||dA.indexOf("https://")===0;if(!dx){return false}var dw=dz.pathname||cr(dz.href);var dy=(dz.hostname||d(dz.href)).toLowerCase();if(aw(dy,dw)){if(!cR(c4,O(dy))){return true}return false}return false}function cQ(dw){var dx=dp(dw);if(dx&&dx.type){dx.href=p(dx.href);
+dd(dx.href,dx.type,undefined,null,dw);return}if(cX){dw=ay(dw);if(br(dw)){cp(dw)}}}function cE(){return J.all&&!J.addEventListener}function c5(dw){var dy=dw.which;var dx=(typeof dw.button);if(!dy&&dx!=="undefined"){if(cE()){if(dw.button&1){dy=1}else{if(dw.button&2){dy=3}else{if(dw.button&4){dy=2}}}}else{if(dw.button===0||dw.button==="0"){dy=1}else{if(dw.button&1){dy=2}else{if(dw.button&2){dy=3}}}}}return dy}function bZ(dw){switch(c5(dw)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dw){return dw.target||dw.srcElement}function c6(dw){return dw==="A"||dw==="AREA"}function aG(dw){function dx(dz){var dA=a7(dz);var dB=dA.nodeName;var dy=a6(bG,"ignore");while(!c6(dB)&&dA&&dA.parentNode){dA=dA.parentNode;dB=dA.nodeName}if(dA&&c6(dB)&&!dy.test(dA.className)){return dA}}return function(dA){dA=dA||W.event;var dB=dx(dA);if(!dB){return}var dz=bZ(dA);if(dA.type==="click"){var dy=false;if(dw&&dz==="middle"){dy=true}if(dB&&!dy){cQ(dB)}}else{if(dA.type==="mousedown"){if(dz==="middle"&&dB){aW=dz;
+bI=dB}else{aW=bI=null}}else{if(dA.type==="mouseup"){if(dz===aW&&dB===bI){cQ(dB)}aW=bI=null}else{if(dA.type==="contextmenu"){cQ(dB)}}}}}}function av(dz,dy,dw){var dx=typeof dy;if(dx==="undefined"){dy=true}ar(dz,"click",aG(dy),dw);if(dy){ar(dz,"mouseup",aG(dy),dw);ar(dz,"mousedown",aG(dy),dw);ar(dz,"contextmenu",aG(dy),dw)}}function aX(dx,dA,dB){if(ck){return true}ck=true;var dC=false;var dz,dy;function dw(){dC=true}n(function(){function dD(dF){setTimeout(function(){if(!ck){return}dC=false;dB.trackVisibleContentImpressions();dD(dF)},dF)}function dE(dF){setTimeout(function(){if(!ck){return}if(dC){dC=false;dB.trackVisibleContentImpressions()}dE(dF)},dF)}if(dx){dz=["scroll","resize"];for(dy=0;dy<dz.length;dy++){if(J.addEventListener){J.addEventListener(dz[dy],dw,false)}else{W.attachEvent("on"+dz[dy],dw)}}dE(100)}if(dA&&dA>0){dA=parseInt(dA,10);dD(dA)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dw=this.requests;this.requests=[];if(dw.length===1){bM(dw[0],bQ)
+}else{ds(dw,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dx){if(!this.canQueue()){ds(dx,bQ);return}var dw;for(dw=0;dw<dx.length;dw++){this.push(dx[dw])}},push:function(dw){if(!dw){return}if(!this.canQueue()){bM(dw,bQ);return}bK.requests.push(dw);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dx="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dx)){b[dx]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cY()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]
+};this.setTrackerUrl=function(dw){aI=dw};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dy,dx){if(!M(dy)||null===dy){dy=this.getTrackerUrl()}var dw=new T(dy,dx);L.push(dw);u.trigger("TrackerAdded",[this]);return dw};this.getSiteId=function(){return cc};this.setSiteId=function(dw){b9(dw)};this.resetUserId=function(){bF=""};this.setUserId=function(dw){if(ac(dw)){bF=dw}};this.setVisitorId=function(dx){var dw=/[0-9A-Fa-f]{16}/g;if(x(dx)&&dw.test(dx)){bU=dx}else{ao("Invalid visitorId set"+dx)}};this.getUserId=function(){return bF};this.setCustomData=function(dw,dx){if(Z(dw)){at=dw}else{if(!at){at={}}at[dw]=dx}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dw){ch=dw};this.appendToTrackingUrl=function(dw){db=dw};this.getRequest=function(dw){return cz(dw)};this.addPlugin=function(dw,dx){b[dw]=dx};this.setCustomDimension=function(dw,dx){dw=parseInt(dw,10);
+if(dw>0){if(!M(dx)){dx=""}if(!x(dx)){dx=String(dx)}bt[dw]=dx}};this.getCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0&&Object.prototype.hasOwnProperty.call(bt,dw)){return bt[dw]}};this.deleteCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0){delete bt[dw]}};this.setCustomVariable=function(dx,dw,dA,dy){var dz;if(!M(dy)){dy="visit"}if(!M(dw)){return}if(!M(dA)){dA=""}if(dx>0){dw=!x(dw)?String(dw):dw;dA=!x(dA)?String(dA):dA;dz=[dw.slice(0,bA),dA.slice(0,bA)];if(dy==="visit"||dy===2){cP();aV[dx]=dz}else{if(dy==="page"||dy===3){b2[dx]=dz}else{if(dy==="event"){cs[dx]=dz}}}}};this.getCustomVariable=function(dx,dy){var dw;if(!M(dy)){dy="visit"}if(dy==="page"||dy===3){dw=b2[dx]}else{if(dy==="event"){dw=cs[dx]}else{if(dy==="visit"||dy===2){cP();dw=aV[dx]}}}if(!M(dw)||(dw&&dw[0]==="")){return false}return dw};this.deleteCustomVariable=function(dw,dx){if(this.getCustomVariable(dw,dx)){this.setCustomVariable(dw,"","",dx)}};this.deleteCustomVariables=function(dw){if(dw==="page"||dw===3){b2={}
+}else{if(dw==="event"){cs={}}else{if(dw==="visit"||dw===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dw){bQ=dw};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dw){if(x(dw)){dw=dw.split("|")}di=dw};this.addDownloadExtensions=function(dx){var dw;if(x(dx)){dx=dx.split("|")}for(dw=0;dw<dx.length;dw++){di.push(dx[dw])}};this.removeDownloadExtensions=function(dy){var dx,dw=[];if(x(dy)){dy=dy.split("|")}for(dx=0;dx<di.length;dx++){if(P(dy,di[dx])===-1){dw.push(di[dx])}}di=dw};this.setDomains=function(dw){aC=x(dw)?[dw]:dw;var dA=false,dy=0,dx;for(dy;dy<aC.length;dy++){dx=String(aC[dy]);if(cR(c4,O(dx))){dA=true;break}var dz=cr(dx);if(dz&&dz!=="/"&&dz!=="/*"){dA=true;break}}if(!dA){aC.push(c4)}};this.setExcludedReferrers=function(dw){cG=x(dw)?[dw]:dw};this.enableCrossDomainLinking=function(){cX=true};this.disableCrossDomainLinking=function(){cX=false};this.isCrossDomainLinkingEnabled=function(){return cX
+};this.setCrossDomainLinkingTimeout=function(dw){a5=dw};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dw){bG=x(dw)?[dw]:dw};this.setRequestMethod=function(dw){if(dw){dm=String(dw).toUpperCase()}else{dm=cn}if(dm==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dw){cF=dw||aM};this.setGenerationTimeMs=function(dw){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dA,dC,dB,dx,dD,dy){var dz={pf_net:dA,pf_srv:dC,pf_tfr:dB,pf_dm1:dx,pf_dm2:dD,pf_onl:dy};try{dz=Q(dz,M);dz=B(dz);ct=l(dz);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dw){ao("setPagePerformanceTiming: "+dw.toString())}};this.setReferrerUrl=function(dw){bu=dw};this.setCustomUrl=function(dw){ba=b1(bT,dw)
+};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dw){bp=dw};this.setPageViewId=function(dw){aQ=dw;bH=true};this.setAPIUrl=function(dw){bO=dw};this.setDownloadClasses=function(dw){bR=x(dw)?[dw]:dw};this.setLinkClasses=function(dw){be=x(dw)?[dw]:dw};this.setCampaignNameKey=function(dw){cw=x(dw)?[dw]:dw};this.setCampaignKeywordKey=function(dw){bN=x(dw)?[dw]:dw};this.discardHashTag=function(dw){bV=dw};this.setCookieNamePrefix=function(dw){bq=dw;if(aV){aV=b3()}};this.setCookieDomain=function(dw){var dx=O(dw);if(!bs&&!bD(dx)){ao("Can't write cookie on domain "+dw)}else{c9=dx;bo()}};this.setExcludedQueryParams=function(dw){co=x(dw)?[dw]:dw};this.getCookieDomain=function(){return c9};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dy,dx,dw){if(!dy){throw new Error("Missing cookie name")}if(!M(dw)){dw=cu}bB.push(dy);dr(aY(dy),dx,dw,bw,c9,bY,aN)};this.getCookie=function(dx){var dw=aH(aY(dx));if(dw===0){return null}return dw};this.setCookiePath=function(dw){bw=dw;
+bo()};this.getCookiePath=function(dw){return bw};this.setVisitorCookieTimeout=function(dw){cU=dw*1000};this.setSessionCookieTimeout=function(dw){cu=dw*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dw){dh=dw*1000};this.setConversionAttributionFirstReferrer=function(dw){bC=dw};this.setSecureCookie=function(dw){if(dw&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dw};this.setCookieSameSite=function(dw){dw=String(dw);dw=dw.charAt(0).toUpperCase()+dw.toLowerCase().slice(1);if(dw!=="None"&&dw!=="Lax"&&dw!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dw==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dw="Lax"}}aN=dw};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!c0){bs=false;
+c8=true;if(cc&&aA){aR();var dw=cz("ping=1",null,"ping");bM(dw,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cN)};this.forgetCookieConsentGiven=function(){b5(cN,bw,c9);this.disableCookies()};this.rememberCookieConsentGiven=function(dx){if(dx){dx=dx*60*60*1000}else{dx=30*365*24*60*60*1000}this.setCookieConsentGiven();var dw=new Date().getTime();dr(cN,dw,dx,bw,c9,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dx){var dw=g.doNotTrack||g.msDoNotTrack;c0=dx&&(dw==="yes"||dw==="1");if(c0){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c7=true};this.disableAlwaysUseSendBeacon=function(){c7=false};this.addListener=function(dx,dw){av(dx,dw,false)};this.enableLinkTracking=function(dx){if(dk){return}dk=true;var dw=this;q(function(){au=true;var dy=J.body;av(dy,dx,true)})};this.enableJSErrorTracking=function(){if(c2){return}c2=true;
+var dw=W.onerror;W.onerror=function(dB,dz,dy,dA,dx){cm(function(){var dC="JavaScript Errors";var dD=dz+":"+dy;if(dA){dD+=":"+dA}if(P(cA,dC+dD+dB)===-1){cA.push(dC+dD+dB);ax(dC,dD,dB)}});if(dw){return dw(dB,dz,dy,dA,dx)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dw){dw=Math.max(dw||15,5);bb=dw*1000;if(da!==null){dt()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dw){if(W.location.protocol==="file:"){W.location=dw}};this.setCountPreRendered=function(dw){bk=dw};this.trackGoal=function(dw,dz,dy,dx){cm(function(){c3(dw,dz,dy,dx)})};this.trackLink=function(dx,dw,dz,dy){cm(function(){dd(dx,dw,dz,dy)
+})};this.getNumTrackedPageViews=function(){return cy};this.trackPageView=function(dw,dy,dx){cg=[];cV=[];cA=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cy++;b6(dw,dy,dx)})}};this.disableBrowserFeatureDetection=function(){c8=false};this.enableBrowserFeatureDetection=function(){c8=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dw=w.findContentNodes();var dx=cJ(dw);bK.pushMultiple(dx)})})};this.trackVisibleContentImpressions=function(dw,dx){if(R(cc)){return}if(!M(dw)){dw=true}if(!M(dx)){dx=750}aX(dw,dx,this);cm(function(){n(function(){var dy=w.findContentNodes();var dz=bf(dy);bK.pushMultiple(dz)})})};this.trackContentImpression=function(dy,dw,dx){if(R(cc)){return}dy=a(dy);dw=a(dw);dx=a(dx);if(!dy){return}dw=dw||"Unknown";cm(function(){var dz=aK(dy,dw,dx);bK.push(dz)})};this.trackContentImpressionsWithinNode=function(dw){if(R(cc)||!dw){return}cm(function(){if(ck){n(function(){var dx=w.findContentNodesWithinNode(dw);var dy=bf(dx);
+bK.pushMultiple(dy)})}else{q(function(){var dx=w.findContentNodesWithinNode(dw);var dy=cJ(dx);bK.pushMultiple(dy)})}})};this.trackContentInteraction=function(dy,dz,dw,dx){if(R(cc)){return}dy=a(dy);dz=a(dz);dw=a(dw);dx=a(dx);if(!dy||!dz){return}dw=dw||"Unknown";cm(function(){var dA=aU(dy,dz,dw,dx);if(dA){bK.push(dA)}})};this.trackContentInteractionNode=function(dy,dx){if(R(cc)||!dy){return}var dw=null;cm(function(){dw=dn(dy,dx);if(dw){bK.push(dw)}});return dw};this.logAllContentBlocksOnPage=function(){var dy=w.findContentNodes();var dw=w.collectContent(dy);var dx=typeof console;if(dx!=="undefined"&&console&&console.log){console.log(dw)}};this.trackEvent=function(dx,dz,dw,dy,dB,dA){cm(function(){ax(dx,dz,dw,dy,dB,dA)})};this.trackSiteSearch=function(dw,dy,dx,dz){cg=[];cm(function(){ce(dw,dy,dx,dz)})};this.setEcommerceView=function(dA,dw,dy,dx){cB={};if(ac(dy)){dy=String(dy)}if(!M(dy)||dy===null||dy===false||!dy.length){dy=""}else{if(dy instanceof Array){dy=W.JSON.stringify(dy)}}var dz="_pkc";
+cB[dz]=dy;if(M(dx)&&dx!==null&&dx!==false&&String(dx).length){dz="_pkp";cB[dz]=dx}if(!ac(dA)&&!ac(dw)){return}if(ac(dA)){dz="_pks";cB[dz]=dA}if(!ac(dw)){dw=""}dz="_pkn";cB[dz]=dw};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(dc))};this.addEcommerceItem=function(dA,dw,dy,dx,dz){if(ac(dA)){dc[dA]=[String(dA),dw,dy,dx,dz]}};this.removeEcommerceItem=function(dw){if(ac(dw)){dw=String(dw);delete dc[dw]}};this.clearEcommerceCart=function(){dc={}};this.trackEcommerceOrder=function(dw,dA,dz,dy,dx,dB){b4(dw,dA,dz,dy,dx,dB)};this.trackEcommerceCartUpdate=function(dw){bz(dw)};this.trackRequest=function(dx,dz,dy,dw){cm(function(){var dA=cz(dx,dz,dw);bM(dA,bQ,dy)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dw){if(dw<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dw};this.queueRequest=function(dw){cm(function(){var dx=cz(dw);
+bK.push(dx)})};this.isConsentRequired=function(){return cK};this.getRememberedConsent=function(){var dw=aH(bj);if(aH(cW)){if(dw){b5(bj,bw,c9)}return null}if(!dw||dw===0){return null}return dw};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cK=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dx){bJ=true;c8=true;b5(cW,bw,c9);var dy,dw;for(dy=0;dy<cV.length;dy++){dw=typeof cV[dy];if(dw==="string"){bM(cV[dy],bQ)}else{if(dw==="object"){ds(cV[dy],bQ)}}}cV=[];if(!M(dx)||dx){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dy){if(dy){dy=dy*60*60*1000}else{dy=30*365*24*60*60*1000}var dw=true;this.setConsentGiven(dw);var dx=new Date().getTime();dr(bj,dx,dy,bw,c9,bY,aN)};this.forgetConsentGiven=function(){var dw=30*365*24*60*60*1000;b5(bj,bw,c9);dr(cW,new Date().getTime(),dw,bw,c9,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
+};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dl()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams","setExcludedReferrers"];
+function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
+}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
+}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()
-}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)
-}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;
+for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());
+if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/matomo.js b/matomo.js
index ce0247be92..6893f82409 100644
--- a/matomo.js
+++ b/matomo.js
@@ -29,47 +29,47 @@ at=ai.findFirstNodeHavingAttribute(au,this.CONTENT_PIECE_ATTR);if(!at){at=ai.fin
}if(aw){aw+="&ca=1"}return aw},buildContentBlock:function(av){if(!av){return}var at=this.findContentName(av);var au=this.findContentPiece(av);var aw=this.findContentTarget(av);at=this.trim(at);au=this.trim(au);aw=this.trim(aw);return{name:at||"Unknown",piece:au||"Unknown",target:aw||""}},collectContent:function(aw){if(!aw||!aw.length){return[]}var av=[];var at,au;for(at=0;at<aw.length;at++){au=this.buildContentBlock(aw[at]);if(M(au)){av.push(au)}}return av},setLocation:function(at){this.location=at},getLocation:function(){var at=this.location||W.location;if(!at.origin){at.origin=at.protocol+"//"+at.hostname+(at.port?":"+at.port:"")}return at},toAbsoluteUrl:function(au){if((!au||String(au)!==au)&&au!==""){return au}if(""===au){return this.getLocation().href}if(au.search(/^\/\//)!==-1){return this.getLocation().protocol+au}if(au.search(/:\/\//)!==-1){return au}if(0===au.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+au}if(0===au.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+au
}if(0===au.search("^[a-zA-Z]{2,11}:")){return au}if(au.search(/^\//)!==-1){return this.getLocation().origin+au}var at="(.*/)";var av=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(at))[0];return av+au},isUrlToCurrentDomain:function(au){var av=this.toAbsoluteUrl(au);if(!av){return false}var at=this.getLocation().origin;if(at===av){return true}if(0===String(av).indexOf(at)){if(":"===String(av).substr(at.length,1)){return false}return true}return false},setHrefAttribute:function(au,at){if(!au||!at){return}ai.setAnyAttribute(au,"href",at)},shouldIgnoreInteraction:function(at){if(ai.hasNodeAttribute(at,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ai.hasNodeCssClass(at,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ai.hasNodeCssClass(at,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function aa(au,ax){if(ax){return ax}au=w.toAbsoluteUrl(au);if(A(au,"?")){var aw=au.indexOf("?");au=au.slice(0,aw)}if(U(au,"matomo.php")){au=f(au,"matomo.php".length)
}else{if(U(au,"piwik.php")){au=f(au,"piwik.php".length)}else{if(U(au,".php")){var at=au.lastIndexOf("/");var av=1;au=au.slice(0,at+av)}}}if(U(au,"/js/")){au=f(au,"js/".length)}return au}function R(az){var aB="Matomo_Overlay";var au=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=[^&]*)?");var av=au.exec(J.referrer);if(av){var ax=av[1];if(ax!==String(az)){return false}var ay=av[2],at=av[3],aw=av[4];if(!aw){aw=""}else{if(aw.indexOf("&segment=")===0){aw=aw.substr("&segment=".length)}}W.name=aB+"###"+ay+"###"+at+"###"+aw}var aA=W.name.split("###");return aA.length===4&&aA[0]===aB}function ad(au,az,av){var ay=W.name.split("###"),ax=ay[1],at=ay[2],aw=ay[3],aA=aa(au,az);o(aA+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aA,av,ax,at,aw)})}function v(){var av;try{av=W.frameElement}catch(au){return true}if(M(av)){return(av&&String(av.nodeName).toLowerCase()==="iframe")?true:false}try{return W.self!==W.top
-}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cL="mtm_cookie_consent",cU="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c2=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c0=false,cn="GET",dk=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cE=aM,aI=cj||"",bO="",c9="",ct="",cc=cf||"",bF="",bU="",ba,bp="",dg=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c2],bG=[],co=[],bR=[],be=[],bQ=500,c5=true,cR,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c7,bw,bY=false,aN="Lax",bs=false,cY,bk,bC,cS=33955200000,cu=1800000,df=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cA={},da={},dh={},cg=[],ck=false,cJ=false,au=false,di=false,cV=false,aS=false,bi=v(),cF=null,c8=null,aW,bI,cd=aq,bv,aQ,bH=false,cx=0,bB=["id","ses","cvar","ref"],cI=false,bJ=null,cT=[],cz=[],aB=X++,aA=false,c6=true;
-try{bp=J.title}catch(cG){bp=""}function aH(dw){if(bs){return 0}var du=new RegExp("(^|;)[ ]*"+dw+"=([^;]*)"),dv=du.exec(J.cookie);return dv?V(dv[2]):0}bJ=!aH(cU);function dp(dy,dz,dC,dB,dw,dx,dA){if(bs&&dy!==cU){return}var dv;if(dC){dv=new Date();dv.setTime(dv.getTime()+dC)}if(!dA){dA="Lax"}J.cookie=dy+"="+t(dz)+(dC?";expires="+dv.toGMTString():"")+";path="+(dB||"/")+(dw?";domain="+dw:"")+(dx?";secure":"")+";SameSite="+dA;if((!dC||dC>=0)&&aH(dy)!==String(dz)){var du="There was an error setting cookie `"+dy+"`. Please check domain and path.";ao(du)}}function b8(du){var dw,dv;du=j(du,az);for(dv=0;dv<co.length;dv++){du=j(du,co[dv])}if(bV){dw=new RegExp("#.*");return du.replace(dw,"")}return du}function b1(dw,du){var dx=s(du),dv;if(dx){return du}if(du.slice(0,1)==="/"){return s(dw)+"://"+d(dw)+du}dw=b8(dw);dv=dw.indexOf("?");if(dv>=0){dw=dw.slice(0,dv)}dv=dw.lastIndexOf("/");if(dv!==dw.length-1){dw=dw.slice(0,dv+1)}return dw+du}function cP(dw,du){var dv;dw=String(dw).toLowerCase();du=String(du).toLowerCase();
-if(dw===du){return true}if(du.slice(0,1)==="."){if(dw===du.slice(1)){return true}dv=dw.length-du.length;if((dv>0)&&(dw.slice(dv)===du)){return true}}return false}function cr(du){var dv=document.createElement("a");if(du.indexOf("//")!==0&&du.indexOf("http")!==0){if(du.indexOf("*")===0){du=du.substr(1)}if(du.indexOf(".")===0){du=du.substr(1)}du="http://"+du}dv.href=w.toAbsoluteUrl(du);if(dv.pathname){return dv.pathname}return""}function a9(dv,du){if(!an(du,"/")){du="/"+du}if(!an(dv,"/")){dv="/"+dv}var dw=(du==="/"||du==="/*");if(dw){return true}if(dv===du){return true}du=String(du).toLowerCase();dv=String(dv).toLowerCase();if(U(du,"*")){du=du.slice(0,-1);dw=(!du||du==="/");if(dw){return true}if(dv===du){return true}return dv.indexOf(du)===0}if(!U(dv,"/")){dv+="/"}if(!U(du,"/")){du+="/"}return dv.indexOf(du)===0}function aw(dy,dA){var dv,du,dw,dx,dz;for(dv=0;dv<aC.length;dv++){dx=O(aC[dv]);dz=cr(aC[dv]);if(cP(dy,dx)&&a9(dA,dz)){return true}}return false}function a1(dx){var dv,du,dw;for(dv=0;
-dv<aC.length;dv++){du=O(aC[dv].toLowerCase());if(dx===du){return true}if(du.slice(0,1)==="."){if(dx===du.slice(1)){return true}dw=dx.length-du.length;if((dw>0)&&(dx.slice(dw)===du)){return true}}}return false}function cv(du,dw){du=du.replace("send_image=0","send_image=1");var dv=new Image(1,1);dv.onload=function(){H=0;if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:true})}};dv.onerror=function(){if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:false})}};dv.src=aI+(aI.indexOf("?")<0?"?":"&")+du}function cM(du){if(dk==="POST"){return true}return du&&(du.length>2000||du.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dy,dB,dA){var dw=aP();if(!dw){return false}var dx={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dC=false;var dv=aI;try{var du=new Blob([dy],dx);if(dA&&!cM(dy)){du=new Blob([],dx);dv=dv+(dv.indexOf("?")<0?"?":"&")+dy}dC=g.sendBeacon(dv,du)}catch(dz){return false
-}if(dC&&typeof dB==="function"){dB({request:dy,trackerUrl:aI,success:true,isSendBeacon:true})}return dC}function de(dv,dw,du){if(!M(du)||null===du){du=true}if(m&&bc(dv,dw,du)){return}setTimeout(function(){if(m&&bc(dv,dw,du)){return}var dz;try{var dy=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dy.open("POST",aI,true);dy.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dA=m&&bc(dv,dw,du);if(!dA&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dw==="function")){dw({request:dv,trackerUrl:aI,success:true,xhr:this})}}};dy.setRequestHeader("Content-Type",cE);dy.withCredentials=true;dy.send(dv)}catch(dx){dz=m&&bc(dv,dw,du);if(!dz&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false})}}}},50)}function cl(dv){var du=new Date();var dw=du.getTime()+dv;if(!r||dw>r){r=dw}}function bg(){bi=true;
-cF=new Date().getTime()}function dn(){var du=new Date().getTime();return !cF||(du-cF)>bb}function aD(){if(dn()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dn()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dr(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dn()){bX()}}})}function cK(dy){var dv=new Date();var du=dv.getTime();c8=du;if(cJ&&du<cJ){var dw=cJ-du;setTimeout(dy,dw);cl(dw+50);cJ+=50;return}if(cJ===false){var dx=800;cJ=du+dx}dy()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dv,du,dw){aT();if(!bJ){cT.push(dv);return}aA=true;if(!cY&&dv){if(cI&&bJ){dv+="&consent=1"}cK(function(){if(c5&&bc(dv,dw,true)){cl(100);return}if(cM(dv)){de(dv,dw)}else{cv(dv,dw)}cl(du)})}if(!aS){dr()}}function cq(du){if(cY){return false}return(du&&du.length)}function dd(du,dy){if(!dy||dy>=du.length){return[du]}var dv=0;var dw=du.length;var dx=[];
-for(dv;dv<dw;dv+=dy){dx.push(du.slice(dv,dv+dy))}return dx}function dq(dv,du){if(!cq(dv)){return}if(!bJ){cT.push(dv);return}aA=true;cK(function(){var dy=dd(dv,50);var dw=0,dx;for(dw;dw<dy.length;dw++){dx='{"requests":["?'+dy[dw].join('","?')+'"],"send_image":0}';if(c5&&bc(dx,null,false)){cl(100)}else{de(dx,null,false)}}cl(du)})}function aY(du){return bq+du+"."+cc+"."+bv}function b5(dw,dv,du){dp(dw,"",-129600000,dv,du)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var du=bq+"testcookie";dp(du,"1",undefined,bw,c7,bY,aN);var dv=aH(du)==="1"?"1":"0";b5(du);return dv}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var dv,dx,dy={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dv in dy){if(Object.prototype.hasOwnProperty.call(dy,dv)){dx=g.mimeTypes[dy[dv]];
-dh[dv]=(dx&&dx.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dw=parseInt(ab.width,10);var du=parseInt(ab.height,10);dh.res=parseInt(dw,10)+"x"+parseInt(du,10);return dh}function b3(){var dv=aY("cvar"),du=aH(dv);if(du&&du.length){du=W.JSON.parse(du);if(Z(du)){return du}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dv=bl();var dw=aF();var du=String(dv)+dw;return du}function dc(dw){dw=String(dw);var dz=aF();var dx=dz.length;var dy=dw.substr(-1*dx,dx);
-var dv=parseInt(dw.substr(0,dw.length-dx),10);if(dv&&dy&&dy===dz){var du=bl();if(a5<=0){return true}if(du>=dv&&du<=(dv+a5)){return true}}return false}function ds(du){if(!cV){return""}var dy=e(du,az);if(!dy){return""}dy=String(dy);var dw=new RegExp("^[a-zA-Z0-9]+$");if(dy.length===32&&dw.test(dy)){var dv=dy.substr(16,32);if(dc(dv)){var dx=dy.substr(0,16);return dx}}return""}function cW(){if(!bU){bU=ds(bT)}var dw=new Date(),du=Math.round(dw.getTime()/1000),dv=aY("id"),dz=aH(dv),dy,dx;if(dz){dy=dz.split(".");dy.unshift("0");if(bU.length){dy[1]=bU}return dy}if(bU.length){dx=bU}else{if("0"===cb()){dx=""}else{dx=cZ()}}dy=["1",dx,du];return dy}function a4(){var dx=cW(),dv=dx[0],dw=dx[1],du=dx[2];return{newVisitor:dv,uuid:dw,createTs:du}}function aL(){var dx=new Date(),dv=dx.getTime(),dy=a4().createTs;var du=parseInt(dy,10);var dw=(du*1000)+cS-dv;return dw}function aR(du){if(!cc){return}var dw=new Date(),dv=Math.round(dw.getTime()/1000);if(!M(du)){du=a4()}var dx=du.uuid+"."+du.createTs+".";dp(aY("id"),dx,aL(),bw,c7,bY,aN)
-}function bS(){var du=aH(aY("ref"));if(du.length){try{du=W.JSON.parse(du);if(Z(du)){return du}}catch(dv){}}return["","",0,""]}function bD(dw){var dv=bq+"testcookie_domain";var du="testvalue";dp(dv,du,10000,null,dw,bY,aN);if(aH(dv)===du){b5(dv,null,dw);return true}return false}function aJ(){var dv=bs;bs=false;var du,dw;for(du=0;du<bB.length;du++){dw=aY(bB[du]);if(dw!==cU&&dw!==bj&&0!==aH(dw)){b5(dw,bw,c7)}}bs=dv}function b9(du){cc=du}function dt(dy){if(!dy||!Z(dy)){return}var dx=[];var dw;for(dw in dy){if(Object.prototype.hasOwnProperty.call(dy,dw)){dx.push(dw)}}var dz={};dx.sort();var du=dx.length;var dv;for(dv=0;dv<du;dv++){dz[dx[dv]]=dy[dx[dv]]}return dz}function ci(){dp(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dx="";var dv="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dw=dv.length;var du;for(du=0;du<6;du++){dx+=dv.charAt(Math.floor(Math.random()*dw))}return dx}function aE(dv){if(ct!==""){dv+=ct;bn=true;return dv}if(!h){return dv}var dw=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
-if(!dw){dw=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dw){return dv}var du="";if(dw.connectEnd&&dw.fetchStart){if(dw.connectEnd<dw.fetchStart){return dv}du+="&pf_net="+Math.round(dw.connectEnd-dw.fetchStart)}if(dw.responseStart&&dw.requestStart){if(dw.responseStart<dw.requestStart){return dv}du+="&pf_srv="+Math.round(dw.responseStart-dw.requestStart)}if(dw.responseStart&&dw.responseEnd){if(dw.responseEnd<dw.responseStart){return dv}du+="&pf_tfr="+Math.round(dw.responseEnd-dw.responseStart)}if(M(dw.domLoading)){if(dw.domInteractive&&dw.domLoading){if(dw.domInteractive<dw.domLoading){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.domLoading)}}else{if(dw.domInteractive&&dw.responseEnd){if(dw.domInteractive<dw.responseEnd){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.responseEnd)}}if(dw.domComplete&&dw.domInteractive){if(dw.domComplete<dw.domInteractive){return dv}du+="&pf_dm2="+Math.round(dw.domComplete-dw.domInteractive)
-}if(dw.loadEventEnd&&dw.loadEventStart){if(dw.loadEventEnd<dw.loadEventStart){return dv}du+="&pf_onl="+Math.round(dw.loadEventEnd-dw.loadEventStart)}return dv+du}function dj(){var dE,dx=new Date(),dy=Math.round(dx.getTime()/1000),dJ,dw,dz=1024,dG,dA,dv=aY("ses"),dD=aY("ref"),dC=aH(dv),du=bS(),dI=ba||bT,dF,dB,dH={};dF=du[0];dB=du[1];dJ=du[2];dw=du[3];if(!dC){if(!bC||!dF.length){for(dE in cw){if(Object.prototype.hasOwnProperty.call(cw,dE)){dF=e(dI,cw[dE]);if(dF.length){break}}}for(dE in bN){if(Object.prototype.hasOwnProperty.call(bN,dE)){dB=e(dI,bN[dE]);if(dB.length){break}}}}dG=d(bu);dA=dw.length?d(dw):"";if(dG.length&&!a1(dG)&&(!bC||!dA.length||a1(dA))){dw=bu}if(dw.length||dF.length){dJ=dy;du=[dF,dB,dJ,b8(dw.slice(0,dz))];dp(dD,W.JSON.stringify(du),df,bw,c7,bY,aN)}}if(dF.length){dH._rcn=t(dF)}if(dB.length){dH._rck=t(dB)}dH._refts=dJ;if(String(dw).length){dH._ref=t(b8(dw.slice(0,dz)))}return dH}function cy(dv,dG,dH){var dF,du=new Date(),dE=aV,dA=aY("cvar"),dI=ba||bT;if(bs){aJ()}if(cY){return""
-}var dB=a4();var dy=J.characterSet||J.charset;if(!dy||dy.toLowerCase()==="utf-8"){dy=null}dv+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+du.getHours()+"&m="+du.getMinutes()+"&s="+du.getSeconds()+"&url="+t(b8(dI))+(bu.length?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dB.uuid+"&_idn="+dB.newVisitor+(dy?"&cs="+t(dy):"")+"&send_image=0";var dD=dj();for(dF in dD){if(Object.prototype.hasOwnProperty.call(dD,dF)){dv+="&"+dF+"="+dD[dF]}}var dK=cQ();for(dF in dK){if(Object.prototype.hasOwnProperty.call(dK,dF)){dv+="&"+dF+"="+dK[dF]}}var dL=[];if(dG){for(dF in dG){if(Object.prototype.hasOwnProperty.call(dG,dF)&&/^dimension\d+$/.test(dF)){var dw=dF.replace("dimension","");dL.push(parseInt(dw,10));dL.push(String(dw));dv+="&"+dF+"="+t(dG[dF]);delete dG[dF]}}}if(dG&&D(dG)){dG=null}for(dF in cA){if(Object.prototype.hasOwnProperty.call(cA,dF)){dv+="&"+dF+"="+t(cA[dF])}}for(dF in bt){if(Object.prototype.hasOwnProperty.call(bt,dF)){var dz=(-1===P(dL,dF));if(dz){dv+="&dimension"+dF+"="+t(bt[dF])
-}}}if(dG){dv+="&data="+t(W.JSON.stringify(dG))}else{if(at){dv+="&data="+t(W.JSON.stringify(at))}}function dx(dM,dN){var dO=W.JSON.stringify(dM);if(dO.length>2){return"&"+dN+"="+t(dO)}return""}var dJ=dt(b2);var dC=dt(cs);dv+=dx(dJ,"cvar");dv+=dx(dC,"e_cvar");if(aV){dv+=dx(aV,"_cvar");for(dF in dE){if(Object.prototype.hasOwnProperty.call(dE,dF)){if(aV[dF][0]===""||aV[dF][1]===""){delete aV[dF]}}}if(bW){dp(dA,W.JSON.stringify(aV),cu,bw,c7,bY,aN)}}if(a8&&bL&&!bn){dv=aE(dv);bn=true}if(aQ){dv+="&pv_id="+aQ}aR(dB);ci();dv+=ag(dH,{tracker:bP,request:dv});if(c9.length){dv+="&"+c9}if(C(ch)){dv=ch(dv)}return dv}bX=function bd(){var du=new Date();du=du.getTime();if(!c8){return false}if(c8+bb<=du){bP.ping();return true}return false};function bx(dx,dw,dB,dy,du,dE){var dA="idgoal=0",dv=new Date(),dC=[],dD,dz=String(dx).length;if(dz){dA+="&ec_id="+t(dx)}dA+="&revenue="+dw;if(String(dB).length){dA+="&ec_st="+dB}if(String(dy).length){dA+="&ec_tx="+dy}if(String(du).length){dA+="&ec_sh="+du}if(String(dE).length){dA+="&ec_dt="+dE
-}if(da){for(dD in da){if(Object.prototype.hasOwnProperty.call(da,dD)){if(!M(da[dD][1])){da[dD][1]=""}if(!M(da[dD][2])){da[dD][2]=""}if(!M(da[dD][3])||String(da[dD][3]).length===0){da[dD][3]=0}if(!M(da[dD][4])||String(da[dD][4]).length===0){da[dD][4]=1}dC.push(da[dD])}}dA+="&ec_items="+t(W.JSON.stringify(dC))}dA=cy(dA,at,"ecommerce");bM(dA,bQ);if(dz){da={}}}function b4(du,dy,dx,dw,dv,dz){if(String(du).length&&M(dy)){bx(du,dy,dx,dw,dv,dz)}}function bz(du){if(M(du)){bx("",du,"","","","")}}function b6(dv,dx,dw){if(!bH){aQ=bm()}var du=cy("action_name="+t(ap(dv||bp)),dx,"log");if(a8&&!bn){du=aE(du)}bM(du,bQ,dw)}function a6(dw,dv){var dx,du="(^| )(piwik[_-]"+dv+"|matomo[_-]"+dv;if(dw){for(dx=0;dx<dw.length;dx++){du+="|"+dw[dx]}}du+=")( |$)";return new RegExp(du)}function aZ(du){return(aI&&du&&0===String(du).indexOf(aI))}function cC(dy,du,dz,dv){if(aZ(du)){return 0}var dx=a6(bR,"download"),dw=a6(be,"link"),dA=new RegExp("\\.("+dg.join("|")+")([?&#]|$)","i");if(dw.test(dy)){return"link"}if(dv||dx.test(dy)||dA.test(du)){return"download"
-}if(dz){return 0}return"link"}function ay(dv){var du;du=dv.parentNode;while(du!==null&&M(du)){if(ai.isLinkElement(dv)){break}dv=du;du=dv.parentNode}return dv}function dm(dz){dz=ay(dz);if(!ai.hasNodeAttribute(dz,"href")){return}if(!M(dz.href)){return}var dy=ai.getAttributeValueFromNode(dz,"href");var dv=dz.pathname||cr(dz.href);var dA=dz.hostname||d(dz.href);var dB=dA.toLowerCase();var dw=dz.href.replace(dA,dB);var dx=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dx.test(dw)){var du=cC(dz.className,dw,aw(dB,dv),ai.hasNodeAttribute(dz,"download"));if(du){return{type:du,href:dw}}}}function aU(du,dv,dw,dx){var dy=w.buildInteractionRequestParams(du,dv,dw,dx);if(!dy){return}return cy(dy,null,"contentInteraction")}function bh(du,dv){if(!du||!dv){return false}var dw=w.findTargetNode(du);if(w.shouldIgnoreInteraction(dw)){return false}dw=w.findTargetNodeNoDefault(du);if(dw&&!Y(dw,dv)){return false}return true}function cB(dw,dv,dy){if(!dw){return}var du=w.findParentContentNode(dw);
-if(!du){return}if(!bh(du,dw)){return}var dx=w.buildContentBlock(du);if(!dx){return}if(!dx.target&&dy){dx.target=dy}return w.buildInteractionRequestParams(dv,dx.name,dx.piece,dx.target)}function a2(dv){if(!cg||!cg.length){return false}var du,dw;for(du=0;du<cg.length;du++){dw=cg[du];if(dw&&dw.name===dv.name&&dw.piece===dv.piece&&dw.target===dv.target){return true}}return false}function a3(du){return function(dy){if(!du){return}var dw=w.findParentContentNode(du);var dv;if(dy){dv=dy.target||dy.srcElement}if(!dv){dv=du}if(!bh(dw,dv)){return}if(!dw){return false}var dz=w.findTargetNode(dw);if(!dz||w.shouldIgnoreInteraction(dz)){return false}var dx=dm(dz);if(di&&dx&&dx.type){return dx.type}return bP.trackContentInteractionNode(dv,"click")}}function b7(dw){if(!dw||!dw.length){return}var du,dv;for(du=0;du<dw.length;du++){dv=w.findTargetNode(dw[du]);if(dv&&!dv.contentInteractionTrackingSetupDone){dv.contentInteractionTrackingSetupDone=true;ar(dv,"click",a3(dv))}}}function bE(dw,dx){if(!dw||!dw.length){return[]
-}var du,dv;for(du=0;du<dw.length;du++){if(a2(dw[du])){dw.splice(du,1);du--}else{cg.push(dw[du])}}if(!dw||!dw.length){return[]}b7(dx);var dy=[];for(du=0;du<dw.length;du++){dv=cy(w.buildImpressionRequestParams(dw[du].name,dw[du].piece,dw[du].target),undefined,"contentImpressions");if(dv){dy.push(dv)}}return dy}function cH(dv){var du=w.collectContent(dv);return bE(du,dv)}function bf(dv){if(!dv||!dv.length){return[]}var du;for(du=0;du<dv.length;du++){if(!w.isNodeVisible(dv[du])){dv.splice(du,1);du--}}if(!dv||!dv.length){return[]}return cH(dv)}function aK(dw,du,dv){var dx=w.buildImpressionRequestParams(dw,du,dv);return cy(dx,null,"contentImpression")}function dl(dx,dv){if(!dx){return}var du=w.findParentContentNode(dx);var dw=w.buildContentBlock(du);if(!dw){return}if(!dv){dv="Unknown"}return aU(dv,dw.name,dw.piece,dw.target)}function cX(dv,dx,du,dw){return"e_c="+t(dv)+"&e_a="+t(dx)+(M(du)?"&e_n="+t(du):"")+(M(dw)?"&e_v="+t(dw):"")+"&ca=1"}function ax(dw,dy,du,dx,dA,dz){if(!ac(dw)||!ac(dy)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");
-return false}var dv=cy(cX(dw,dy,du,dx),dA,"event");bM(dv,bQ,dz)}function ce(du,dx,dv,dy){var dw=cy("search="+t(du)+(dx?"&search_cat="+t(dx):"")+(M(dv)?"&search_count="+dv:""),dy,"sitesearch");bM(dw,bQ)}function c1(du,dy,dx,dw){var dv=cy("idgoal="+du+(dy?"&revenue="+dy:""),dx,"goal");bM(dv,bQ,dw)}function db(dx,du,dB,dA,dw){var dz=du+"="+t(b8(dx));var dv=cB(dw,"click",dx);if(dv){dz+="&"+dv}var dy=cy(dz,dB,"link");bM(dy,bQ,dA)}function b0(dv,du){if(dv!==""){return dv+du.charAt(0).toUpperCase()+du.slice(1)}return du}function cm(dz){var dy,du,dx=["","webkit","ms","moz"],dw;if(!bk){for(du=0;du<dx.length;du++){dw=dx[du];if(Object.prototype.hasOwnProperty.call(J,b0(dw,"hidden"))){if(J[b0(dw,"visibilityState")]==="prerender"){dy=true}break}}}if(dy){ar(J,dw+"visibilitychange",function dv(){J.removeEventListener(dw+"visibilitychange",dv,false);dz()});return}dz()}function by(){var dv=bP.getVisitorId();var du=aO();return dv+du}function cp(du){if(!du){return}if(!ai.hasNodeAttribute(du,"href")){return
-}var dv=ai.getAttributeValueFromNode(du,"href");if(!dv||aZ(dv)){return}if(!bP.getVisitorId()){return}dv=j(dv,az);var dw=by();dv=I(dv,az,dw);ai.setAnyAttribute(du,"href",dv)}function br(dx){var dy=ai.getAttributeValueFromNode(dx,"href");if(!dy){return false}dy=String(dy);var dv=dy.indexOf("//")===0||dy.indexOf("http://")===0||dy.indexOf("https://")===0;if(!dv){return false}var du=dx.pathname||cr(dx.href);var dw=(dx.hostname||d(dx.href)).toLowerCase();if(aw(dw,du)){if(!cP(c2,O(dw))){return true}return false}return false}function cO(du){var dv=dm(du);if(dv&&dv.type){dv.href=p(dv.href);db(dv.href,dv.type,undefined,null,du);return}if(cV){du=ay(du);if(br(du)){cp(du)}}}function cD(){return J.all&&!J.addEventListener}function c3(du){var dw=du.which;var dv=(typeof du.button);if(!dw&&dv!=="undefined"){if(cD()){if(du.button&1){dw=1}else{if(du.button&2){dw=3}else{if(du.button&4){dw=2}}}}else{if(du.button===0||du.button==="0"){dw=1}else{if(du.button&1){dw=2}else{if(du.button&2){dw=3}}}}}return dw}function bZ(du){switch(c3(du)){case 1:return"left";
-case 2:return"middle";case 3:return"right"}}function a7(du){return du.target||du.srcElement}function c4(du){return du==="A"||du==="AREA"}function aG(du){function dv(dx){var dy=a7(dx);var dz=dy.nodeName;var dw=a6(bG,"ignore");while(!c4(dz)&&dy&&dy.parentNode){dy=dy.parentNode;dz=dy.nodeName}if(dy&&c4(dz)&&!dw.test(dy.className)){return dy}}return function(dy){dy=dy||W.event;var dz=dv(dy);if(!dz){return}var dx=bZ(dy);if(dy.type==="click"){var dw=false;if(du&&dx==="middle"){dw=true}if(dz&&!dw){cO(dz)}}else{if(dy.type==="mousedown"){if(dx==="middle"&&dz){aW=dx;bI=dz}else{aW=bI=null}}else{if(dy.type==="mouseup"){if(dx===aW&&dz===bI){cO(dz)}aW=bI=null}else{if(dy.type==="contextmenu"){cO(dz)}}}}}}function av(dx,dw,du){var dv=typeof dw;if(dv==="undefined"){dw=true}ar(dx,"click",aG(dw),du);if(dw){ar(dx,"mouseup",aG(dw),du);ar(dx,"mousedown",aG(dw),du);ar(dx,"contextmenu",aG(dw),du)}}function aX(dv,dy,dz){if(ck){return true}ck=true;var dA=false;var dx,dw;function du(){dA=true}n(function(){function dB(dD){setTimeout(function(){if(!ck){return
-}dA=false;dz.trackVisibleContentImpressions();dB(dD)},dD)}function dC(dD){setTimeout(function(){if(!ck){return}if(dA){dA=false;dz.trackVisibleContentImpressions()}dC(dD)},dD)}if(dv){dx=["scroll","resize"];for(dw=0;dw<dx.length;dw++){if(J.addEventListener){J.addEventListener(dx[dw],du,false)}else{W.attachEvent("on"+dx[dw],du)}}dC(100)}if(dy&&dy>0){dy=parseInt(dy,10);dB(dy)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var du=this.requests;this.requests=[];if(du.length===1){bM(du[0],bQ)}else{dq(du,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dv){if(!this.canQueue()){dq(dv,bQ);return}var du;for(du=0;du<dv.length;du++){this.push(dv[du])}},push:function(du){if(!du){return}if(!this.canQueue()){bM(du,bQ);return}bK.requests.push(du);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dv="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dv)){b[dv]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)
-}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(du){aI=du};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dw,dv){if(!M(dw)||null===dw){dw=this.getTrackerUrl()}var du=new T(dw,dv);L.push(du);u.trigger("TrackerAdded",[this]);return du};this.getSiteId=function(){return cc};this.setSiteId=function(du){b9(du)};this.resetUserId=function(){bF=""};this.setUserId=function(du){if(ac(du)){bF=du}};this.setVisitorId=function(dv){var du=/[0-9A-Fa-f]{16}/g;
-if(x(dv)&&du.test(dv)){bU=dv}else{ao("Invalid visitorId set"+dv)}};this.getUserId=function(){return bF};this.setCustomData=function(du,dv){if(Z(du)){at=du}else{if(!at){at={}}at[du]=dv}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(du){ch=du};this.appendToTrackingUrl=function(du){c9=du};this.getRequest=function(du){return cy(du)};this.addPlugin=function(du,dv){b[du]=dv};this.setCustomDimension=function(du,dv){du=parseInt(du,10);if(du>0){if(!M(dv)){dv=""}if(!x(dv)){dv=String(dv)}bt[du]=dv}};this.getCustomDimension=function(du){du=parseInt(du,10);if(du>0&&Object.prototype.hasOwnProperty.call(bt,du)){return bt[du]}};this.deleteCustomDimension=function(du){du=parseInt(du,10);if(du>0){delete bt[du]}};this.setCustomVariable=function(dv,du,dy,dw){var dx;if(!M(dw)){dw="visit"}if(!M(du)){return}if(!M(dy)){dy=""}if(dv>0){du=!x(du)?String(du):du;dy=!x(dy)?String(dy):dy;dx=[du.slice(0,bA),dy.slice(0,bA)];if(dw==="visit"||dw===2){cN();aV[dv]=dx}else{if(dw==="page"||dw===3){b2[dv]=dx
-}else{if(dw==="event"){cs[dv]=dx}}}}};this.getCustomVariable=function(dv,dw){var du;if(!M(dw)){dw="visit"}if(dw==="page"||dw===3){du=b2[dv]}else{if(dw==="event"){du=cs[dv]}else{if(dw==="visit"||dw===2){cN();du=aV[dv]}}}if(!M(du)||(du&&du[0]==="")){return false}return du};this.deleteCustomVariable=function(du,dv){if(this.getCustomVariable(du,dv)){this.setCustomVariable(du,"","",dv)}};this.deleteCustomVariables=function(du){if(du==="page"||du===3){b2={}}else{if(du==="event"){cs={}}else{if(du==="visit"||du===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(du){bQ=du};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(du){if(x(du)){du=du.split("|")}dg=du};this.addDownloadExtensions=function(dv){var du;if(x(dv)){dv=dv.split("|")}for(du=0;du<dv.length;du++){dg.push(dv[du])}};this.removeDownloadExtensions=function(dw){var dv,du=[];if(x(dw)){dw=dw.split("|")}for(dv=0;dv<dg.length;dv++){if(P(dw,dg[dv])===-1){du.push(dg[dv])
-}}dg=du};this.setDomains=function(du){aC=x(du)?[du]:du;var dy=false,dw=0,dv;for(dw;dw<aC.length;dw++){dv=String(aC[dw]);if(cP(c2,O(dv))){dy=true;break}var dx=cr(dv);if(dx&&dx!=="/"&&dx!=="/*"){dy=true;break}}if(!dy){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(du){a5=du};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(du){bG=x(du)?[du]:du};this.setRequestMethod=function(du){if(du){dk=String(du).toUpperCase()}else{dk=cn}if(dk==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(du){cE=du||aM};this.setGenerationTimeMs=function(du){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dy,dA,dz,dv,dB,dw){var dx={pf_net:dy,pf_srv:dA,pf_tfr:dz,pf_dm1:dv,pf_dm2:dB,pf_onl:dw};
-try{dx=Q(dx,M);dx=B(dx);ct=l(dx);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(du){ao("setPagePerformanceTiming: "+du.toString())}};this.setReferrerUrl=function(du){bu=du};this.setCustomUrl=function(du){ba=b1(bT,du)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(du){bp=du};this.setPageViewId=function(du){aQ=du;bH=true};this.setAPIUrl=function(du){bO=du};this.setDownloadClasses=function(du){bR=x(du)?[du]:du};this.setLinkClasses=function(du){be=x(du)?[du]:du};this.setCampaignNameKey=function(du){cw=x(du)?[du]:du};this.setCampaignKeywordKey=function(du){bN=x(du)?[du]:du};this.discardHashTag=function(du){bV=du};this.setCookieNamePrefix=function(du){bq=du;if(aV){aV=b3()}};this.setCookieDomain=function(du){var dv=O(du);if(!bs&&!bD(dv)){ao("Can't write cookie on domain "+du)}else{c7=dv;bo()}};this.setExcludedQueryParams=function(du){co=x(du)?[du]:du
-};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dw,dv,du){if(!dw){throw new Error("Missing cookie name")}if(!M(du)){du=cu}bB.push(dw);dp(aY(dw),dv,du,bw,c7,bY,aN)};this.getCookie=function(dv){var du=aH(aY(dv));if(du===0){return null}return du};this.setCookiePath=function(du){bw=du;bo()};this.getCookiePath=function(du){return bw};this.setVisitorCookieTimeout=function(du){cS=du*1000};this.setSessionCookieTimeout=function(du){cu=du*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(du){df=du*1000};this.setConversionAttributionFirstReferrer=function(du){bC=du};this.setSecureCookie=function(du){if(du&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=du};this.setCookieSameSite=function(du){du=String(du);du=du.charAt(0).toUpperCase()+du.toLowerCase().slice(1);if(du!=="None"&&du!=="Lax"&&du!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");
-return}if(du==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");du="Lax"}}aN=du};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var du=cy("ping=1",null,"ping");bM(du,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}this.setCookieConsentGiven();var du=new Date().getTime();dp(cL,du,dv,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dv){var du=g.doNotTrack||g.msDoNotTrack;cY=dv&&(du==="yes"||du==="1");if(cY){this.disableCookies()
-}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(dv,du){av(dv,du,false)};this.enableLinkTracking=function(dv){if(di){return}di=true;var du=this;q(function(){au=true;var dw=J.body;av(dw,dv,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var du=W.onerror;W.onerror=function(dz,dx,dw,dy,dv){cm(function(){var dA="JavaScript Errors";var dB=dx+":"+dw;if(dy){dB+=":"+dy}if(P(cz,dA+dB+dz)===-1){cz.push(dA+dB+dz);ax(dA,dB,dz)}});if(du){return du(dz,dx,dw,dy,dv)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(du){du=Math.max(du||15,5);bb=du*1000;if(c8!==null){dr()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)
-}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(du){if(W.location.protocol==="file:"){W.location=du}};this.setCountPreRendered=function(du){bk=du};this.trackGoal=function(du,dx,dw,dv){cm(function(){c1(du,dx,dw,dv)})};this.trackLink=function(dv,du,dx,dw){cm(function(){db(dv,du,dx,dw)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(du,dw,dv){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(du,dw,dv)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var du=w.findContentNodes();var dv=cH(du);bK.pushMultiple(dv)})})};this.trackVisibleContentImpressions=function(du,dv){if(R(cc)){return}if(!M(du)){du=true}if(!M(dv)){dv=750}aX(du,dv,this);cm(function(){n(function(){var dw=w.findContentNodes();
-var dx=bf(dw);bK.pushMultiple(dx)})})};this.trackContentImpression=function(dw,du,dv){if(R(cc)){return}dw=a(dw);du=a(du);dv=a(dv);if(!dw){return}du=du||"Unknown";cm(function(){var dx=aK(dw,du,dv);bK.push(dx)})};this.trackContentImpressionsWithinNode=function(du){if(R(cc)||!du){return}cm(function(){if(ck){n(function(){var dv=w.findContentNodesWithinNode(du);var dw=bf(dv);bK.pushMultiple(dw)})}else{q(function(){var dv=w.findContentNodesWithinNode(du);var dw=cH(dv);bK.pushMultiple(dw)})}})};this.trackContentInteraction=function(dw,dx,du,dv){if(R(cc)){return}dw=a(dw);dx=a(dx);du=a(du);dv=a(dv);if(!dw||!dx){return}du=du||"Unknown";cm(function(){var dy=aU(dw,dx,du,dv);if(dy){bK.push(dy)}})};this.trackContentInteractionNode=function(dw,dv){if(R(cc)||!dw){return}var du=null;cm(function(){du=dl(dw,dv);if(du){bK.push(du)}});return du};this.logAllContentBlocksOnPage=function(){var dw=w.findContentNodes();var du=w.collectContent(dw);var dv=typeof console;if(dv!=="undefined"&&console&&console.log){console.log(du)
-}};this.trackEvent=function(dv,dx,du,dw,dz,dy){cm(function(){ax(dv,dx,du,dw,dz,dy)})};this.trackSiteSearch=function(du,dw,dv,dx){cg=[];cm(function(){ce(du,dw,dv,dx)})};this.setEcommerceView=function(dy,du,dw,dv){cA={};if(ac(dw)){dw=String(dw)}if(!M(dw)||dw===null||dw===false||!dw.length){dw=""}else{if(dw instanceof Array){dw=W.JSON.stringify(dw)}}var dx="_pkc";cA[dx]=dw;if(M(dv)&&dv!==null&&dv!==false&&String(dv).length){dx="_pkp";cA[dx]=dv}if(!ac(dy)&&!ac(du)){return}if(ac(dy)){dx="_pks";cA[dx]=dy}if(!ac(du)){du=""}dx="_pkn";cA[dx]=du};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dy,du,dw,dv,dx){if(ac(dy)){da[dy]=[String(dy),du,dw,dv,dx]}};this.removeEcommerceItem=function(du){if(ac(du)){du=String(du);delete da[du]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(du,dy,dx,dw,dv,dz){b4(du,dy,dx,dw,dv,dz)};this.trackEcommerceCartUpdate=function(du){bz(du)};this.trackRequest=function(dv,dx,dw,du){cm(function(){var dy=cy(dv,dx,du);
-bM(dy,bQ,dw)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(du){if(du<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=du};this.queueRequest=function(du){cm(function(){var dv=cy(du);bK.push(dv)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var du=aH(bj);if(aH(cU)){if(du){b5(bj,bw,c7)}return null}if(!du||du===0){return null}return du};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dv){bJ=true;c6=true;b5(cU,bw,c7);var dw,du;for(dw=0;dw<cT.length;dw++){du=typeof cT[dw];if(du==="string"){bM(cT[dw],bQ)}else{if(du==="object"){dq(cT[dw],bQ)}}}cT=[];if(!M(dv)||dv){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dw){if(dw){dw=dw*60*60*1000
-}else{dw=30*365*24*60*60*1000}var du=true;this.setConsentGiven(du);var dv=new Date().getTime();dp(bj,dv,dw,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var du=30*365*24*60*60*1000;b5(bj,bw,c7);dp(cU,new Date().getTime(),du,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dj()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")
-}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);
-Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()
-}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
+}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cN="mtm_cookie_consent",cW="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c4=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c2=false,cn="GET",dm=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cF=aM,aI=cj||"",bO="",db="",ct="",cc=cf||"",bF="",bU="",ba,bp="",di=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c4],bG=[],cG=[],co=[],bR=[],be=[],bQ=500,c7=true,cT,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c9,bw,bY=false,aN="Lax",bs=false,c0,bk,bC,cU=33955200000,cu=1800000,dh=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cB={},dc={},dj={},cg=[],ck=false,cL=false,au=false,dk=false,cX=false,aS=false,bi=v(),cH=null,da=null,aW,bI,cd=aq,bv,aQ,bH=false,cy=0,bB=["id","ses","cvar","ref"],cK=false,bJ=null,cV=[],cA=[],aB=X++,aA=false,c8=true;
+try{bp=J.title}catch(cI){bp=""}function aH(dy){if(bs){return 0}var dw=new RegExp("(^|;)[ ]*"+dy+"=([^;]*)"),dx=dw.exec(J.cookie);return dx?V(dx[2]):0}bJ=!aH(cW);function dr(dA,dB,dE,dD,dy,dz,dC){if(bs&&dA!==cW){return}var dx;if(dE){dx=new Date();dx.setTime(dx.getTime()+dE)}if(!dC){dC="Lax"}J.cookie=dA+"="+t(dB)+(dE?";expires="+dx.toGMTString():"")+";path="+(dD||"/")+(dy?";domain="+dy:"")+(dz?";secure":"")+";SameSite="+dC;if((!dE||dE>=0)&&aH(dA)!==String(dB)){var dw="There was an error setting cookie `"+dA+"`. Please check domain and path.";ao(dw)}}function b8(dw){var dy,dx;dw=j(dw,az);for(dx=0;dx<co.length;dx++){dw=j(dw,co[dx])}if(bV){dy=new RegExp("#.*");return dw.replace(dy,"")}return dw}function b1(dy,dw){var dz=s(dw),dx;if(dz){return dw}if(dw.slice(0,1)==="/"){return s(dy)+"://"+d(dy)+dw}dy=b8(dy);dx=dy.indexOf("?");if(dx>=0){dy=dy.slice(0,dx)}dx=dy.lastIndexOf("/");if(dx!==dy.length-1){dy=dy.slice(0,dx+1)}return dy+dw}function cR(dy,dw){var dx;dy=String(dy).toLowerCase();dw=String(dw).toLowerCase();
+if(dy===dw){return true}if(dw.slice(0,1)==="."){if(dy===dw.slice(1)){return true}dx=dy.length-dw.length;if((dx>0)&&(dy.slice(dx)===dw)){return true}}return false}function cr(dw){var dx=document.createElement("a");if(dw.indexOf("//")!==0&&dw.indexOf("http")!==0){if(dw.indexOf("*")===0){dw=dw.substr(1)}if(dw.indexOf(".")===0){dw=dw.substr(1)}dw="http://"+dw}dx.href=w.toAbsoluteUrl(dw);if(dx.pathname){return dx.pathname}return""}function a9(dx,dw){if(!an(dw,"/")){dw="/"+dw}if(!an(dx,"/")){dx="/"+dx}var dy=(dw==="/"||dw==="/*");if(dy){return true}if(dx===dw){return true}dw=String(dw).toLowerCase();dx=String(dx).toLowerCase();if(U(dw,"*")){dw=dw.slice(0,-1);dy=(!dw||dw==="/");if(dy){return true}if(dx===dw){return true}return dx.indexOf(dw)===0}if(!U(dx,"/")){dx+="/"}if(!U(dw,"/")){dw+="/"}return dx.indexOf(dw)===0}function aw(dA,dC){var dx,dw,dy,dz,dB;for(dx=0;dx<aC.length;dx++){dz=O(aC[dx]);dB=cr(aC[dx]);if(cR(dA,dz)&&a9(dC,dB)){return true}}return false}function a1(dz){var dx,dw,dy;for(dx=0;
+dx<aC.length;dx++){dw=O(aC[dx].toLowerCase());if(dz===dw){return true}if(dw.slice(0,1)==="."){if(dz===dw.slice(1)){return true}dy=dz.length-dw.length;if((dy>0)&&(dz.slice(dy)===dw)){return true}}}return false}function cx(dw){var dx,dz,dB,dy,dA;if(!dw.length||!cG.length){return false}dz=d(dw);dB=cr(dw);if(dz.indexOf("www.")===0){dz=dz.substr(4)}for(dx=0;dx<cG.length;dx++){dy=O(cG[dx]);dA=cr(cG[dx]);if(dy.indexOf("www.")===0){dy=dy.substr(4)}if(cR(dz,dy)&&a9(dB,dA)){return true}}return false}function cv(dw,dy){dw=dw.replace("send_image=0","send_image=1");var dx=new Image(1,1);dx.onload=function(){H=0;if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:true})}};dx.onerror=function(){if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:false})}};dx.src=aI+(aI.indexOf("?")<0?"?":"&")+dw}function cO(dw){if(dm==="POST"){return true}return dw&&(dw.length>2000||dw.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob
+}function bc(dA,dD,dC){var dy=aP();if(!dy){return false}var dz={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dE=false;var dx=aI;try{var dw=new Blob([dA],dz);if(dC&&!cO(dA)){dw=new Blob([],dz);dx=dx+(dx.indexOf("?")<0?"?":"&")+dA}dE=g.sendBeacon(dx,dw)}catch(dB){return false}if(dE&&typeof dD==="function"){dD({request:dA,trackerUrl:aI,success:true,isSendBeacon:true})}return dE}function dg(dx,dy,dw){if(!M(dw)||null===dw){dw=true}if(m&&bc(dx,dy,dw)){return}setTimeout(function(){if(m&&bc(dx,dy,dw)){return}var dB;try{var dA=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dA.open("POST",aI,true);dA.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dC=m&&bc(dx,dy,dw);if(!dC&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dy==="function")){dy({request:dx,trackerUrl:aI,success:true,xhr:this})}}};
+dA.setRequestHeader("Content-Type",cF);dA.withCredentials=true;dA.send(dx)}catch(dz){dB=m&&bc(dx,dy,dw);if(!dB&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false})}}}},50)}function cl(dx){var dw=new Date();var dy=dw.getTime()+dx;if(!r||dy>r){r=dy}}function bg(){bi=true;cH=new Date().getTime()}function dq(){var dw=new Date().getTime();return !cH||(dw-cH)>bb}function aD(){if(dq()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dq()){bX()}else{if(J.visibilityState==="visible"){cH=new Date().getTime()}}}function dt(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dq()){bX()}}})}function cM(dA){var dx=new Date();var dw=dx.getTime();da=dw;if(cL&&dw<cL){var dy=cL-dw;setTimeout(dA,dy);cl(dy+50);cL+=50;return}if(cL===false){var dz=800;cL=dw+dz}dA()}function aT(){if(aH(cW)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dx,dw,dy){aT();if(!bJ){cV.push(dx);
+return}aA=true;if(!c0&&dx){if(cK&&bJ){dx+="&consent=1"}cM(function(){if(c7&&bc(dx,dy,true)){cl(100);return}if(cO(dx)){dg(dx,dy)}else{cv(dx,dy)}cl(dw)})}if(!aS){dt()}}function cq(dw){if(c0){return false}return(dw&&dw.length)}function df(dw,dA){if(!dA||dA>=dw.length){return[dw]}var dx=0;var dy=dw.length;var dz=[];for(dx;dx<dy;dx+=dA){dz.push(dw.slice(dx,dx+dA))}return dz}function ds(dx,dw){if(!cq(dx)){return}if(!bJ){cV.push(dx);return}aA=true;cM(function(){var dA=df(dx,50);var dy=0,dz;for(dy;dy<dA.length;dy++){dz='{"requests":["?'+dA[dy].join('","?')+'"],"send_image":0}';if(c7&&bc(dz,null,false)){cl(100)}else{dg(dz,null,false)}}cl(dw)})}function aY(dw){return bq+dw+"."+cc+"."+bv}function b5(dy,dx,dw){dr(dy,"",-129600000,dx,dw)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dw=bq+"testcookie";dr(dw,"1",undefined,bw,c9,bY,aN);var dx=aH(dw)==="1"?"1":"0";b5(dw);return dx}function bo(){bv=cd((c9||c4)+(bw||"/")).slice(0,4)}function cS(){if(!c8){return{}
+}if(M(dj.res)){return dj}var dx,dz,dA={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dx in dA){if(Object.prototype.hasOwnProperty.call(dA,dx)){dz=g.mimeTypes[dA[dx]];dj[dx]=(dz&&dz.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dj.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dj.cookie=g.cookieEnabled?"1":"0"}else{dj.cookie=cb()}}var dy=parseInt(ab.width,10);var dw=parseInt(ab.height,10);dj.res=parseInt(dy,10)+"x"+parseInt(dw,10);return dj}function b3(){var dx=aY("cvar"),dw=aH(dx);if(dw&&dw.length){dw=W.JSON.parse(dw);if(Z(dw)){return dw}}return{}}function cP(){if(aV===false){aV=b3()}}function c1(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)+(new Date()).getTime()+Math.random()).slice(0,16)
+}function aF(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dx=bl();var dy=aF();var dw=String(dx)+dy;return dw}function de(dy){dy=String(dy);var dB=aF();var dz=dB.length;var dA=dy.substr(-1*dz,dz);var dx=parseInt(dy.substr(0,dy.length-dz),10);if(dx&&dA&&dA===dB){var dw=bl();if(a5<=0){return true}if(dw>=dx&&dw<=(dx+a5)){return true}}return false}function du(dw){if(!cX){return""}var dA=e(dw,az);if(!dA){return""}dA=String(dA);var dy=new RegExp("^[a-zA-Z0-9]+$");if(dA.length===32&&dy.test(dA)){var dx=dA.substr(16,32);if(de(dx)){var dz=dA.substr(0,16);return dz}}return""}function cY(){if(!bU){bU=du(bT)}var dy=new Date(),dw=Math.round(dy.getTime()/1000),dx=aY("id"),dB=aH(dx),dA,dz;if(dB){dA=dB.split(".");dA.unshift("0");if(bU.length){dA[1]=bU}return dA}if(bU.length){dz=bU}else{if("0"===cb()){dz=""}else{dz=c1()}}dA=["1",dz,dw];return dA}function a4(){var dz=cY(),dx=dz[0],dy=dz[1],dw=dz[2];
+return{newVisitor:dx,uuid:dy,createTs:dw}}function aL(){var dz=new Date(),dx=dz.getTime(),dA=a4().createTs;var dw=parseInt(dA,10);var dy=(dw*1000)+cU-dx;return dy}function aR(dw){if(!cc){return}var dy=new Date(),dx=Math.round(dy.getTime()/1000);if(!M(dw)){dw=a4()}var dz=dw.uuid+"."+dw.createTs+".";dr(aY("id"),dz,aL(),bw,c9,bY,aN)}function bS(){var dw=aH(aY("ref"));if(dw.length){try{dw=W.JSON.parse(dw);if(Z(dw)){return dw}}catch(dx){}}return["","",0,""]}function bD(dy){var dx=bq+"testcookie_domain";var dw="testvalue";dr(dx,dw,10000,null,dy,bY,aN);if(aH(dx)===dw){b5(dx,null,dy);return true}return false}function aJ(){var dx=bs;bs=false;var dw,dy;for(dw=0;dw<bB.length;dw++){dy=aY(bB[dw]);if(dy!==cW&&dy!==bj&&0!==aH(dy)){b5(dy,bw,c9)}}bs=dx}function b9(dw){cc=dw}function dv(dA){if(!dA||!Z(dA)){return}var dz=[];var dy;for(dy in dA){if(Object.prototype.hasOwnProperty.call(dA,dy)){dz.push(dy)}}var dB={};dz.sort();var dw=dz.length;var dx;for(dx=0;dx<dw;dx++){dB[dz[dx]]=dA[dz[dx]]}return dB}function ci(){dr(aY("ses"),"1",cu,bw,c9,bY,aN)
+}function bm(){var dz="";var dx="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dy=dx.length;var dw;for(dw=0;dw<6;dw++){dz+=dx.charAt(Math.floor(Math.random()*dy))}return dz}function aE(dx){if(ct!==""){dx+=ct;bn=true;return dx}if(!h){return dx}var dy=(typeof h.timing==="object")&&h.timing?h.timing:undefined;if(!dy){dy=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dy){return dx}var dw="";if(dy.connectEnd&&dy.fetchStart){if(dy.connectEnd<dy.fetchStart){return dx}dw+="&pf_net="+Math.round(dy.connectEnd-dy.fetchStart)}if(dy.responseStart&&dy.requestStart){if(dy.responseStart<dy.requestStart){return dx}dw+="&pf_srv="+Math.round(dy.responseStart-dy.requestStart)}if(dy.responseStart&&dy.responseEnd){if(dy.responseEnd<dy.responseStart){return dx}dw+="&pf_tfr="+Math.round(dy.responseEnd-dy.responseStart)}if(M(dy.domLoading)){if(dy.domInteractive&&dy.domLoading){if(dy.domInteractive<dy.domLoading){return dx
+}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.domLoading)}}else{if(dy.domInteractive&&dy.responseEnd){if(dy.domInteractive<dy.responseEnd){return dx}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.responseEnd)}}if(dy.domComplete&&dy.domInteractive){if(dy.domComplete<dy.domInteractive){return dx}dw+="&pf_dm2="+Math.round(dy.domComplete-dy.domInteractive)}if(dy.loadEventEnd&&dy.loadEventStart){if(dy.loadEventEnd<dy.loadEventStart){return dx}dw+="&pf_onl="+Math.round(dy.loadEventEnd-dy.loadEventStart)}return dx+dw}function dl(){var dG,dz=new Date(),dA=Math.round(dz.getTime()/1000),dL,dy,dB=1024,dI,dC,dx=aY("ses"),dF=aY("ref"),dE=aH(dx),dw=bS(),dK=ba||bT,dH,dD,dJ={};dH=dw[0];dD=dw[1];dL=dw[2];dy=dw[3];if(!dE){if(!bC||!dH.length){for(dG in cw){if(Object.prototype.hasOwnProperty.call(cw,dG)){dH=e(dK,cw[dG]);if(dH.length){break}}}for(dG in bN){if(Object.prototype.hasOwnProperty.call(bN,dG)){dD=e(dK,bN[dG]);if(dD.length){break}}}}dI=d(bu);dC=dy.length?d(dy):"";if(dI.length&&!a1(dI)&&!cx(bu)&&(!bC||!dC.length||a1(dC)||cx(dy))){dy=bu
+}if(dy.length||dH.length){dL=dA;dw=[dH,dD,dL,b8(dy.slice(0,dB))];dr(dF,W.JSON.stringify(dw),dh,bw,c9,bY,aN)}}if(dH.length){dJ._rcn=t(dH)}if(dD.length){dJ._rck=t(dD)}dJ._refts=dL;if(String(dy).length){dJ._ref=t(b8(dy.slice(0,dB)))}return dJ}function cz(dx,dI,dJ){var dH,dw=new Date(),dG=aV,dC=aY("cvar"),dK=ba||bT;if(bs){aJ()}if(c0){return""}var dD=a4();var dA=J.characterSet||J.charset;if(!dA||dA.toLowerCase()==="utf-8"){dA=null}dx+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+dw.getHours()+"&m="+dw.getMinutes()+"&s="+dw.getSeconds()+"&url="+t(b8(dK))+(bu.length&&!cx(bu)?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dD.uuid+"&_idn="+dD.newVisitor+(dA?"&cs="+t(dA):"")+"&send_image=0";var dF=dl();for(dH in dF){if(Object.prototype.hasOwnProperty.call(dF,dH)){dx+="&"+dH+"="+dF[dH]}}var dM=cS();for(dH in dM){if(Object.prototype.hasOwnProperty.call(dM,dH)){dx+="&"+dH+"="+dM[dH]}}var dN=[];if(dI){for(dH in dI){if(Object.prototype.hasOwnProperty.call(dI,dH)&&/^dimension\d+$/.test(dH)){var dy=dH.replace("dimension","");
+dN.push(parseInt(dy,10));dN.push(String(dy));dx+="&"+dH+"="+t(dI[dH]);delete dI[dH]}}}if(dI&&D(dI)){dI=null}for(dH in cB){if(Object.prototype.hasOwnProperty.call(cB,dH)){dx+="&"+dH+"="+t(cB[dH])}}for(dH in bt){if(Object.prototype.hasOwnProperty.call(bt,dH)){var dB=(-1===P(dN,dH));if(dB){dx+="&dimension"+dH+"="+t(bt[dH])}}}if(dI){dx+="&data="+t(W.JSON.stringify(dI))}else{if(at){dx+="&data="+t(W.JSON.stringify(at))}}function dz(dO,dP){var dQ=W.JSON.stringify(dO);if(dQ.length>2){return"&"+dP+"="+t(dQ)}return""}var dL=dv(b2);var dE=dv(cs);dx+=dz(dL,"cvar");dx+=dz(dE,"e_cvar");if(aV){dx+=dz(aV,"_cvar");for(dH in dG){if(Object.prototype.hasOwnProperty.call(dG,dH)){if(aV[dH][0]===""||aV[dH][1]===""){delete aV[dH]}}}if(bW){dr(dC,W.JSON.stringify(aV),cu,bw,c9,bY,aN)}}if(a8&&bL&&!bn){dx=aE(dx);bn=true}if(aQ){dx+="&pv_id="+aQ}aR(dD);ci();dx+=ag(dJ,{tracker:bP,request:dx});if(db.length){dx+="&"+db}if(C(ch)){dx=ch(dx)}return dx}bX=function bd(){var dw=new Date();dw=dw.getTime();if(!da){return false}if(da+bb<=dw){bP.ping();
+return true}return false};function bx(dz,dy,dD,dA,dw,dG){var dC="idgoal=0",dx=new Date(),dE=[],dF,dB=String(dz).length;if(dB){dC+="&ec_id="+t(dz)}dC+="&revenue="+dy;if(String(dD).length){dC+="&ec_st="+dD}if(String(dA).length){dC+="&ec_tx="+dA}if(String(dw).length){dC+="&ec_sh="+dw}if(String(dG).length){dC+="&ec_dt="+dG}if(dc){for(dF in dc){if(Object.prototype.hasOwnProperty.call(dc,dF)){if(!M(dc[dF][1])){dc[dF][1]=""}if(!M(dc[dF][2])){dc[dF][2]=""}if(!M(dc[dF][3])||String(dc[dF][3]).length===0){dc[dF][3]=0}if(!M(dc[dF][4])||String(dc[dF][4]).length===0){dc[dF][4]=1}dE.push(dc[dF])}}dC+="&ec_items="+t(W.JSON.stringify(dE))}dC=cz(dC,at,"ecommerce");bM(dC,bQ);if(dB){dc={}}}function b4(dw,dA,dz,dy,dx,dB){if(String(dw).length&&M(dA)){bx(dw,dA,dz,dy,dx,dB)}}function bz(dw){if(M(dw)){bx("",dw,"","","","")}}function b6(dx,dz,dy){if(!bH){aQ=bm()}var dw=cz("action_name="+t(ap(dx||bp)),dz,"log");if(a8&&!bn){dw=aE(dw)}bM(dw,bQ,dy)}function a6(dy,dx){var dz,dw="(^| )(piwik[_-]"+dx+"|matomo[_-]"+dx;if(dy){for(dz=0;
+dz<dy.length;dz++){dw+="|"+dy[dz]}}dw+=")( |$)";return new RegExp(dw)}function aZ(dw){return(aI&&dw&&0===String(dw).indexOf(aI))}function cD(dA,dw,dB,dx){if(aZ(dw)){return 0}var dz=a6(bR,"download"),dy=a6(be,"link"),dC=new RegExp("\\.("+di.join("|")+")([?&#]|$)","i");if(dy.test(dA)){return"link"}if(dx||dz.test(dA)||dC.test(dw)){return"download"}if(dB){return 0}return"link"}function ay(dx){var dw;dw=dx.parentNode;while(dw!==null&&M(dw)){if(ai.isLinkElement(dx)){break}dx=dw;dw=dx.parentNode}return dx}function dp(dB){dB=ay(dB);if(!ai.hasNodeAttribute(dB,"href")){return}if(!M(dB.href)){return}var dA=ai.getAttributeValueFromNode(dB,"href");var dx=dB.pathname||cr(dB.href);var dC=dB.hostname||d(dB.href);var dD=dC.toLowerCase();var dy=dB.href.replace(dC,dD);var dz=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dz.test(dy)){var dw=cD(dB.className,dy,aw(dD,dx),ai.hasNodeAttribute(dB,"download"));if(dw){return{type:dw,href:dy}}}}function aU(dw,dx,dy,dz){var dA=w.buildInteractionRequestParams(dw,dx,dy,dz);
+if(!dA){return}return cz(dA,null,"contentInteraction")}function bh(dw,dx){if(!dw||!dx){return false}var dy=w.findTargetNode(dw);if(w.shouldIgnoreInteraction(dy)){return false}dy=w.findTargetNodeNoDefault(dw);if(dy&&!Y(dy,dx)){return false}return true}function cC(dy,dx,dA){if(!dy){return}var dw=w.findParentContentNode(dy);if(!dw){return}if(!bh(dw,dy)){return}var dz=w.buildContentBlock(dw);if(!dz){return}if(!dz.target&&dA){dz.target=dA}return w.buildInteractionRequestParams(dx,dz.name,dz.piece,dz.target)}function a2(dx){if(!cg||!cg.length){return false}var dw,dy;for(dw=0;dw<cg.length;dw++){dy=cg[dw];if(dy&&dy.name===dx.name&&dy.piece===dx.piece&&dy.target===dx.target){return true}}return false}function a3(dw){return function(dA){if(!dw){return}var dy=w.findParentContentNode(dw);var dx;if(dA){dx=dA.target||dA.srcElement}if(!dx){dx=dw}if(!bh(dy,dx)){return}if(!dy){return false}var dB=w.findTargetNode(dy);if(!dB||w.shouldIgnoreInteraction(dB)){return false}var dz=dp(dB);if(dk&&dz&&dz.type){return dz.type
+}return bP.trackContentInteractionNode(dx,"click")}}function b7(dy){if(!dy||!dy.length){return}var dw,dx;for(dw=0;dw<dy.length;dw++){dx=w.findTargetNode(dy[dw]);if(dx&&!dx.contentInteractionTrackingSetupDone){dx.contentInteractionTrackingSetupDone=true;ar(dx,"click",a3(dx))}}}function bE(dy,dz){if(!dy||!dy.length){return[]}var dw,dx;for(dw=0;dw<dy.length;dw++){if(a2(dy[dw])){dy.splice(dw,1);dw--}else{cg.push(dy[dw])}}if(!dy||!dy.length){return[]}b7(dz);var dA=[];for(dw=0;dw<dy.length;dw++){dx=cz(w.buildImpressionRequestParams(dy[dw].name,dy[dw].piece,dy[dw].target),undefined,"contentImpressions");if(dx){dA.push(dx)}}return dA}function cJ(dx){var dw=w.collectContent(dx);return bE(dw,dx)}function bf(dx){if(!dx||!dx.length){return[]}var dw;for(dw=0;dw<dx.length;dw++){if(!w.isNodeVisible(dx[dw])){dx.splice(dw,1);dw--}}if(!dx||!dx.length){return[]}return cJ(dx)}function aK(dy,dw,dx){var dz=w.buildImpressionRequestParams(dy,dw,dx);return cz(dz,null,"contentImpression")}function dn(dz,dx){if(!dz){return
+}var dw=w.findParentContentNode(dz);var dy=w.buildContentBlock(dw);if(!dy){return}if(!dx){dx="Unknown"}return aU(dx,dy.name,dy.piece,dy.target)}function cZ(dx,dz,dw,dy){return"e_c="+t(dx)+"&e_a="+t(dz)+(M(dw)?"&e_n="+t(dw):"")+(M(dy)?"&e_v="+t(dy):"")+"&ca=1"}function ax(dy,dA,dw,dz,dC,dB){if(!ac(dy)||!ac(dA)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var dx=cz(cZ(dy,dA,dw,dz),dC,"event");bM(dx,bQ,dB)}function ce(dw,dz,dx,dA){var dy=cz("search="+t(dw)+(dz?"&search_cat="+t(dz):"")+(M(dx)?"&search_count="+dx:""),dA,"sitesearch");bM(dy,bQ)}function c3(dw,dA,dz,dy){var dx=cz("idgoal="+dw+(dA?"&revenue="+dA:""),dz,"goal");bM(dx,bQ,dy)}function dd(dz,dw,dD,dC,dy){var dB=dw+"="+t(b8(dz));var dx=cC(dy,"click",dz);if(dx){dB+="&"+dx}var dA=cz(dB,dD,"link");bM(dA,bQ,dC)}function b0(dx,dw){if(dx!==""){return dx+dw.charAt(0).toUpperCase()+dw.slice(1)}return dw}function cm(dB){var dA,dw,dz=["","webkit","ms","moz"],dy;
+if(!bk){for(dw=0;dw<dz.length;dw++){dy=dz[dw];if(Object.prototype.hasOwnProperty.call(J,b0(dy,"hidden"))){if(J[b0(dy,"visibilityState")]==="prerender"){dA=true}break}}}if(dA){ar(J,dy+"visibilitychange",function dx(){J.removeEventListener(dy+"visibilitychange",dx,false);dB()});return}dB()}function by(){var dx=bP.getVisitorId();var dw=aO();return dx+dw}function cp(dw){if(!dw){return}if(!ai.hasNodeAttribute(dw,"href")){return}var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx||aZ(dx)){return}if(!bP.getVisitorId()){return}dx=j(dx,az);var dy=by();dx=I(dx,az,dy);ai.setAnyAttribute(dw,"href",dx)}function br(dz){var dA=ai.getAttributeValueFromNode(dz,"href");if(!dA){return false}dA=String(dA);var dx=dA.indexOf("//")===0||dA.indexOf("http://")===0||dA.indexOf("https://")===0;if(!dx){return false}var dw=dz.pathname||cr(dz.href);var dy=(dz.hostname||d(dz.href)).toLowerCase();if(aw(dy,dw)){if(!cR(c4,O(dy))){return true}return false}return false}function cQ(dw){var dx=dp(dw);if(dx&&dx.type){dx.href=p(dx.href);
+dd(dx.href,dx.type,undefined,null,dw);return}if(cX){dw=ay(dw);if(br(dw)){cp(dw)}}}function cE(){return J.all&&!J.addEventListener}function c5(dw){var dy=dw.which;var dx=(typeof dw.button);if(!dy&&dx!=="undefined"){if(cE()){if(dw.button&1){dy=1}else{if(dw.button&2){dy=3}else{if(dw.button&4){dy=2}}}}else{if(dw.button===0||dw.button==="0"){dy=1}else{if(dw.button&1){dy=2}else{if(dw.button&2){dy=3}}}}}return dy}function bZ(dw){switch(c5(dw)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dw){return dw.target||dw.srcElement}function c6(dw){return dw==="A"||dw==="AREA"}function aG(dw){function dx(dz){var dA=a7(dz);var dB=dA.nodeName;var dy=a6(bG,"ignore");while(!c6(dB)&&dA&&dA.parentNode){dA=dA.parentNode;dB=dA.nodeName}if(dA&&c6(dB)&&!dy.test(dA.className)){return dA}}return function(dA){dA=dA||W.event;var dB=dx(dA);if(!dB){return}var dz=bZ(dA);if(dA.type==="click"){var dy=false;if(dw&&dz==="middle"){dy=true}if(dB&&!dy){cQ(dB)}}else{if(dA.type==="mousedown"){if(dz==="middle"&&dB){aW=dz;
+bI=dB}else{aW=bI=null}}else{if(dA.type==="mouseup"){if(dz===aW&&dB===bI){cQ(dB)}aW=bI=null}else{if(dA.type==="contextmenu"){cQ(dB)}}}}}}function av(dz,dy,dw){var dx=typeof dy;if(dx==="undefined"){dy=true}ar(dz,"click",aG(dy),dw);if(dy){ar(dz,"mouseup",aG(dy),dw);ar(dz,"mousedown",aG(dy),dw);ar(dz,"contextmenu",aG(dy),dw)}}function aX(dx,dA,dB){if(ck){return true}ck=true;var dC=false;var dz,dy;function dw(){dC=true}n(function(){function dD(dF){setTimeout(function(){if(!ck){return}dC=false;dB.trackVisibleContentImpressions();dD(dF)},dF)}function dE(dF){setTimeout(function(){if(!ck){return}if(dC){dC=false;dB.trackVisibleContentImpressions()}dE(dF)},dF)}if(dx){dz=["scroll","resize"];for(dy=0;dy<dz.length;dy++){if(J.addEventListener){J.addEventListener(dz[dy],dw,false)}else{W.attachEvent("on"+dz[dy],dw)}}dE(100)}if(dA&&dA>0){dA=parseInt(dA,10);dD(dA)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dw=this.requests;this.requests=[];if(dw.length===1){bM(dw[0],bQ)
+}else{ds(dw,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dx){if(!this.canQueue()){ds(dx,bQ);return}var dw;for(dw=0;dw<dx.length;dw++){this.push(dx[dw])}},push:function(dw){if(!dw){return}if(!this.canQueue()){bM(dw,bQ);return}bK.requests.push(dw);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dx="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dx)){b[dx]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cY()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]
+};this.setTrackerUrl=function(dw){aI=dw};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dy,dx){if(!M(dy)||null===dy){dy=this.getTrackerUrl()}var dw=new T(dy,dx);L.push(dw);u.trigger("TrackerAdded",[this]);return dw};this.getSiteId=function(){return cc};this.setSiteId=function(dw){b9(dw)};this.resetUserId=function(){bF=""};this.setUserId=function(dw){if(ac(dw)){bF=dw}};this.setVisitorId=function(dx){var dw=/[0-9A-Fa-f]{16}/g;if(x(dx)&&dw.test(dx)){bU=dx}else{ao("Invalid visitorId set"+dx)}};this.getUserId=function(){return bF};this.setCustomData=function(dw,dx){if(Z(dw)){at=dw}else{if(!at){at={}}at[dw]=dx}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dw){ch=dw};this.appendToTrackingUrl=function(dw){db=dw};this.getRequest=function(dw){return cz(dw)};this.addPlugin=function(dw,dx){b[dw]=dx};this.setCustomDimension=function(dw,dx){dw=parseInt(dw,10);
+if(dw>0){if(!M(dx)){dx=""}if(!x(dx)){dx=String(dx)}bt[dw]=dx}};this.getCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0&&Object.prototype.hasOwnProperty.call(bt,dw)){return bt[dw]}};this.deleteCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0){delete bt[dw]}};this.setCustomVariable=function(dx,dw,dA,dy){var dz;if(!M(dy)){dy="visit"}if(!M(dw)){return}if(!M(dA)){dA=""}if(dx>0){dw=!x(dw)?String(dw):dw;dA=!x(dA)?String(dA):dA;dz=[dw.slice(0,bA),dA.slice(0,bA)];if(dy==="visit"||dy===2){cP();aV[dx]=dz}else{if(dy==="page"||dy===3){b2[dx]=dz}else{if(dy==="event"){cs[dx]=dz}}}}};this.getCustomVariable=function(dx,dy){var dw;if(!M(dy)){dy="visit"}if(dy==="page"||dy===3){dw=b2[dx]}else{if(dy==="event"){dw=cs[dx]}else{if(dy==="visit"||dy===2){cP();dw=aV[dx]}}}if(!M(dw)||(dw&&dw[0]==="")){return false}return dw};this.deleteCustomVariable=function(dw,dx){if(this.getCustomVariable(dw,dx)){this.setCustomVariable(dw,"","",dx)}};this.deleteCustomVariables=function(dw){if(dw==="page"||dw===3){b2={}
+}else{if(dw==="event"){cs={}}else{if(dw==="visit"||dw===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dw){bQ=dw};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dw){if(x(dw)){dw=dw.split("|")}di=dw};this.addDownloadExtensions=function(dx){var dw;if(x(dx)){dx=dx.split("|")}for(dw=0;dw<dx.length;dw++){di.push(dx[dw])}};this.removeDownloadExtensions=function(dy){var dx,dw=[];if(x(dy)){dy=dy.split("|")}for(dx=0;dx<di.length;dx++){if(P(dy,di[dx])===-1){dw.push(di[dx])}}di=dw};this.setDomains=function(dw){aC=x(dw)?[dw]:dw;var dA=false,dy=0,dx;for(dy;dy<aC.length;dy++){dx=String(aC[dy]);if(cR(c4,O(dx))){dA=true;break}var dz=cr(dx);if(dz&&dz!=="/"&&dz!=="/*"){dA=true;break}}if(!dA){aC.push(c4)}};this.setExcludedReferrers=function(dw){cG=x(dw)?[dw]:dw};this.enableCrossDomainLinking=function(){cX=true};this.disableCrossDomainLinking=function(){cX=false};this.isCrossDomainLinkingEnabled=function(){return cX
+};this.setCrossDomainLinkingTimeout=function(dw){a5=dw};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dw){bG=x(dw)?[dw]:dw};this.setRequestMethod=function(dw){if(dw){dm=String(dw).toUpperCase()}else{dm=cn}if(dm==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dw){cF=dw||aM};this.setGenerationTimeMs=function(dw){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dA,dC,dB,dx,dD,dy){var dz={pf_net:dA,pf_srv:dC,pf_tfr:dB,pf_dm1:dx,pf_dm2:dD,pf_onl:dy};try{dz=Q(dz,M);dz=B(dz);ct=l(dz);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dw){ao("setPagePerformanceTiming: "+dw.toString())}};this.setReferrerUrl=function(dw){bu=dw};this.setCustomUrl=function(dw){ba=b1(bT,dw)
+};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dw){bp=dw};this.setPageViewId=function(dw){aQ=dw;bH=true};this.setAPIUrl=function(dw){bO=dw};this.setDownloadClasses=function(dw){bR=x(dw)?[dw]:dw};this.setLinkClasses=function(dw){be=x(dw)?[dw]:dw};this.setCampaignNameKey=function(dw){cw=x(dw)?[dw]:dw};this.setCampaignKeywordKey=function(dw){bN=x(dw)?[dw]:dw};this.discardHashTag=function(dw){bV=dw};this.setCookieNamePrefix=function(dw){bq=dw;if(aV){aV=b3()}};this.setCookieDomain=function(dw){var dx=O(dw);if(!bs&&!bD(dx)){ao("Can't write cookie on domain "+dw)}else{c9=dx;bo()}};this.setExcludedQueryParams=function(dw){co=x(dw)?[dw]:dw};this.getCookieDomain=function(){return c9};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dy,dx,dw){if(!dy){throw new Error("Missing cookie name")}if(!M(dw)){dw=cu}bB.push(dy);dr(aY(dy),dx,dw,bw,c9,bY,aN)};this.getCookie=function(dx){var dw=aH(aY(dx));if(dw===0){return null}return dw};this.setCookiePath=function(dw){bw=dw;
+bo()};this.getCookiePath=function(dw){return bw};this.setVisitorCookieTimeout=function(dw){cU=dw*1000};this.setSessionCookieTimeout=function(dw){cu=dw*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dw){dh=dw*1000};this.setConversionAttributionFirstReferrer=function(dw){bC=dw};this.setSecureCookie=function(dw){if(dw&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dw};this.setCookieSameSite=function(dw){dw=String(dw);dw=dw.charAt(0).toUpperCase()+dw.toLowerCase().slice(1);if(dw!=="None"&&dw!=="Lax"&&dw!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dw==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dw="Lax"}}aN=dw};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!c0){bs=false;
+c8=true;if(cc&&aA){aR();var dw=cz("ping=1",null,"ping");bM(dw,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cN)};this.forgetCookieConsentGiven=function(){b5(cN,bw,c9);this.disableCookies()};this.rememberCookieConsentGiven=function(dx){if(dx){dx=dx*60*60*1000}else{dx=30*365*24*60*60*1000}this.setCookieConsentGiven();var dw=new Date().getTime();dr(cN,dw,dx,bw,c9,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dx){var dw=g.doNotTrack||g.msDoNotTrack;c0=dx&&(dw==="yes"||dw==="1");if(c0){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c7=true};this.disableAlwaysUseSendBeacon=function(){c7=false};this.addListener=function(dx,dw){av(dx,dw,false)};this.enableLinkTracking=function(dx){if(dk){return}dk=true;var dw=this;q(function(){au=true;var dy=J.body;av(dy,dx,true)})};this.enableJSErrorTracking=function(){if(c2){return}c2=true;
+var dw=W.onerror;W.onerror=function(dB,dz,dy,dA,dx){cm(function(){var dC="JavaScript Errors";var dD=dz+":"+dy;if(dA){dD+=":"+dA}if(P(cA,dC+dD+dB)===-1){cA.push(dC+dD+dB);ax(dC,dD,dB)}});if(dw){return dw(dB,dz,dy,dA,dx)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dw){dw=Math.max(dw||15,5);bb=dw*1000;if(da!==null){dt()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dw){if(W.location.protocol==="file:"){W.location=dw}};this.setCountPreRendered=function(dw){bk=dw};this.trackGoal=function(dw,dz,dy,dx){cm(function(){c3(dw,dz,dy,dx)})};this.trackLink=function(dx,dw,dz,dy){cm(function(){dd(dx,dw,dz,dy)
+})};this.getNumTrackedPageViews=function(){return cy};this.trackPageView=function(dw,dy,dx){cg=[];cV=[];cA=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cy++;b6(dw,dy,dx)})}};this.disableBrowserFeatureDetection=function(){c8=false};this.enableBrowserFeatureDetection=function(){c8=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dw=w.findContentNodes();var dx=cJ(dw);bK.pushMultiple(dx)})})};this.trackVisibleContentImpressions=function(dw,dx){if(R(cc)){return}if(!M(dw)){dw=true}if(!M(dx)){dx=750}aX(dw,dx,this);cm(function(){n(function(){var dy=w.findContentNodes();var dz=bf(dy);bK.pushMultiple(dz)})})};this.trackContentImpression=function(dy,dw,dx){if(R(cc)){return}dy=a(dy);dw=a(dw);dx=a(dx);if(!dy){return}dw=dw||"Unknown";cm(function(){var dz=aK(dy,dw,dx);bK.push(dz)})};this.trackContentImpressionsWithinNode=function(dw){if(R(cc)||!dw){return}cm(function(){if(ck){n(function(){var dx=w.findContentNodesWithinNode(dw);var dy=bf(dx);
+bK.pushMultiple(dy)})}else{q(function(){var dx=w.findContentNodesWithinNode(dw);var dy=cJ(dx);bK.pushMultiple(dy)})}})};this.trackContentInteraction=function(dy,dz,dw,dx){if(R(cc)){return}dy=a(dy);dz=a(dz);dw=a(dw);dx=a(dx);if(!dy||!dz){return}dw=dw||"Unknown";cm(function(){var dA=aU(dy,dz,dw,dx);if(dA){bK.push(dA)}})};this.trackContentInteractionNode=function(dy,dx){if(R(cc)||!dy){return}var dw=null;cm(function(){dw=dn(dy,dx);if(dw){bK.push(dw)}});return dw};this.logAllContentBlocksOnPage=function(){var dy=w.findContentNodes();var dw=w.collectContent(dy);var dx=typeof console;if(dx!=="undefined"&&console&&console.log){console.log(dw)}};this.trackEvent=function(dx,dz,dw,dy,dB,dA){cm(function(){ax(dx,dz,dw,dy,dB,dA)})};this.trackSiteSearch=function(dw,dy,dx,dz){cg=[];cm(function(){ce(dw,dy,dx,dz)})};this.setEcommerceView=function(dA,dw,dy,dx){cB={};if(ac(dy)){dy=String(dy)}if(!M(dy)||dy===null||dy===false||!dy.length){dy=""}else{if(dy instanceof Array){dy=W.JSON.stringify(dy)}}var dz="_pkc";
+cB[dz]=dy;if(M(dx)&&dx!==null&&dx!==false&&String(dx).length){dz="_pkp";cB[dz]=dx}if(!ac(dA)&&!ac(dw)){return}if(ac(dA)){dz="_pks";cB[dz]=dA}if(!ac(dw)){dw=""}dz="_pkn";cB[dz]=dw};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(dc))};this.addEcommerceItem=function(dA,dw,dy,dx,dz){if(ac(dA)){dc[dA]=[String(dA),dw,dy,dx,dz]}};this.removeEcommerceItem=function(dw){if(ac(dw)){dw=String(dw);delete dc[dw]}};this.clearEcommerceCart=function(){dc={}};this.trackEcommerceOrder=function(dw,dA,dz,dy,dx,dB){b4(dw,dA,dz,dy,dx,dB)};this.trackEcommerceCartUpdate=function(dw){bz(dw)};this.trackRequest=function(dx,dz,dy,dw){cm(function(){var dA=cz(dx,dz,dw);bM(dA,bQ,dy)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dw){if(dw<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dw};this.queueRequest=function(dw){cm(function(){var dx=cz(dw);
+bK.push(dx)})};this.isConsentRequired=function(){return cK};this.getRememberedConsent=function(){var dw=aH(bj);if(aH(cW)){if(dw){b5(bj,bw,c9)}return null}if(!dw||dw===0){return null}return dw};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cK=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dx){bJ=true;c8=true;b5(cW,bw,c9);var dy,dw;for(dy=0;dy<cV.length;dy++){dw=typeof cV[dy];if(dw==="string"){bM(cV[dy],bQ)}else{if(dw==="object"){ds(cV[dy],bQ)}}}cV=[];if(!M(dx)||dx){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dy){if(dy){dy=dy*60*60*1000}else{dy=30*365*24*60*60*1000}var dw=true;this.setConsentGiven(dw);var dx=new Date().getTime();dr(bj,dx,dy,bw,c9,bY,aN)};this.forgetConsentGiven=function(){var dw=30*365*24*60*60*1000;b5(bj,bw,c9);dr(cW,new Date().getTime(),dw,bw,c9,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
+};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dl()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams","setExcludedReferrers"];
+function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
+}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
+}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()
-}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)
-}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;
+for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());
+if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/piwik.js b/piwik.js
index ce0247be92..6893f82409 100644
--- a/piwik.js
+++ b/piwik.js
@@ -29,47 +29,47 @@ at=ai.findFirstNodeHavingAttribute(au,this.CONTENT_PIECE_ATTR);if(!at){at=ai.fin
}if(aw){aw+="&ca=1"}return aw},buildContentBlock:function(av){if(!av){return}var at=this.findContentName(av);var au=this.findContentPiece(av);var aw=this.findContentTarget(av);at=this.trim(at);au=this.trim(au);aw=this.trim(aw);return{name:at||"Unknown",piece:au||"Unknown",target:aw||""}},collectContent:function(aw){if(!aw||!aw.length){return[]}var av=[];var at,au;for(at=0;at<aw.length;at++){au=this.buildContentBlock(aw[at]);if(M(au)){av.push(au)}}return av},setLocation:function(at){this.location=at},getLocation:function(){var at=this.location||W.location;if(!at.origin){at.origin=at.protocol+"//"+at.hostname+(at.port?":"+at.port:"")}return at},toAbsoluteUrl:function(au){if((!au||String(au)!==au)&&au!==""){return au}if(""===au){return this.getLocation().href}if(au.search(/^\/\//)!==-1){return this.getLocation().protocol+au}if(au.search(/:\/\//)!==-1){return au}if(0===au.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+au}if(0===au.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+au
}if(0===au.search("^[a-zA-Z]{2,11}:")){return au}if(au.search(/^\//)!==-1){return this.getLocation().origin+au}var at="(.*/)";var av=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(at))[0];return av+au},isUrlToCurrentDomain:function(au){var av=this.toAbsoluteUrl(au);if(!av){return false}var at=this.getLocation().origin;if(at===av){return true}if(0===String(av).indexOf(at)){if(":"===String(av).substr(at.length,1)){return false}return true}return false},setHrefAttribute:function(au,at){if(!au||!at){return}ai.setAnyAttribute(au,"href",at)},shouldIgnoreInteraction:function(at){if(ai.hasNodeAttribute(at,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ai.hasNodeCssClass(at,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ai.hasNodeCssClass(at,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function aa(au,ax){if(ax){return ax}au=w.toAbsoluteUrl(au);if(A(au,"?")){var aw=au.indexOf("?");au=au.slice(0,aw)}if(U(au,"matomo.php")){au=f(au,"matomo.php".length)
}else{if(U(au,"piwik.php")){au=f(au,"piwik.php".length)}else{if(U(au,".php")){var at=au.lastIndexOf("/");var av=1;au=au.slice(0,at+av)}}}if(U(au,"/js/")){au=f(au,"js/".length)}return au}function R(az){var aB="Matomo_Overlay";var au=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=[^&]*)?");var av=au.exec(J.referrer);if(av){var ax=av[1];if(ax!==String(az)){return false}var ay=av[2],at=av[3],aw=av[4];if(!aw){aw=""}else{if(aw.indexOf("&segment=")===0){aw=aw.substr("&segment=".length)}}W.name=aB+"###"+ay+"###"+at+"###"+aw}var aA=W.name.split("###");return aA.length===4&&aA[0]===aB}function ad(au,az,av){var ay=W.name.split("###"),ax=ay[1],at=ay[2],aw=ay[3],aA=aa(au,az);o(aA+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aA,av,ax,at,aw)})}function v(){var av;try{av=W.frameElement}catch(au){return true}if(M(av)){return(av&&String(av.nodeName).toLowerCase()==="iframe")?true:false}try{return W.self!==W.top
-}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cL="mtm_cookie_consent",cU="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c2=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c0=false,cn="GET",dk=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cE=aM,aI=cj||"",bO="",c9="",ct="",cc=cf||"",bF="",bU="",ba,bp="",dg=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c2],bG=[],co=[],bR=[],be=[],bQ=500,c5=true,cR,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c7,bw,bY=false,aN="Lax",bs=false,cY,bk,bC,cS=33955200000,cu=1800000,df=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cA={},da={},dh={},cg=[],ck=false,cJ=false,au=false,di=false,cV=false,aS=false,bi=v(),cF=null,c8=null,aW,bI,cd=aq,bv,aQ,bH=false,cx=0,bB=["id","ses","cvar","ref"],cI=false,bJ=null,cT=[],cz=[],aB=X++,aA=false,c6=true;
-try{bp=J.title}catch(cG){bp=""}function aH(dw){if(bs){return 0}var du=new RegExp("(^|;)[ ]*"+dw+"=([^;]*)"),dv=du.exec(J.cookie);return dv?V(dv[2]):0}bJ=!aH(cU);function dp(dy,dz,dC,dB,dw,dx,dA){if(bs&&dy!==cU){return}var dv;if(dC){dv=new Date();dv.setTime(dv.getTime()+dC)}if(!dA){dA="Lax"}J.cookie=dy+"="+t(dz)+(dC?";expires="+dv.toGMTString():"")+";path="+(dB||"/")+(dw?";domain="+dw:"")+(dx?";secure":"")+";SameSite="+dA;if((!dC||dC>=0)&&aH(dy)!==String(dz)){var du="There was an error setting cookie `"+dy+"`. Please check domain and path.";ao(du)}}function b8(du){var dw,dv;du=j(du,az);for(dv=0;dv<co.length;dv++){du=j(du,co[dv])}if(bV){dw=new RegExp("#.*");return du.replace(dw,"")}return du}function b1(dw,du){var dx=s(du),dv;if(dx){return du}if(du.slice(0,1)==="/"){return s(dw)+"://"+d(dw)+du}dw=b8(dw);dv=dw.indexOf("?");if(dv>=0){dw=dw.slice(0,dv)}dv=dw.lastIndexOf("/");if(dv!==dw.length-1){dw=dw.slice(0,dv+1)}return dw+du}function cP(dw,du){var dv;dw=String(dw).toLowerCase();du=String(du).toLowerCase();
-if(dw===du){return true}if(du.slice(0,1)==="."){if(dw===du.slice(1)){return true}dv=dw.length-du.length;if((dv>0)&&(dw.slice(dv)===du)){return true}}return false}function cr(du){var dv=document.createElement("a");if(du.indexOf("//")!==0&&du.indexOf("http")!==0){if(du.indexOf("*")===0){du=du.substr(1)}if(du.indexOf(".")===0){du=du.substr(1)}du="http://"+du}dv.href=w.toAbsoluteUrl(du);if(dv.pathname){return dv.pathname}return""}function a9(dv,du){if(!an(du,"/")){du="/"+du}if(!an(dv,"/")){dv="/"+dv}var dw=(du==="/"||du==="/*");if(dw){return true}if(dv===du){return true}du=String(du).toLowerCase();dv=String(dv).toLowerCase();if(U(du,"*")){du=du.slice(0,-1);dw=(!du||du==="/");if(dw){return true}if(dv===du){return true}return dv.indexOf(du)===0}if(!U(dv,"/")){dv+="/"}if(!U(du,"/")){du+="/"}return dv.indexOf(du)===0}function aw(dy,dA){var dv,du,dw,dx,dz;for(dv=0;dv<aC.length;dv++){dx=O(aC[dv]);dz=cr(aC[dv]);if(cP(dy,dx)&&a9(dA,dz)){return true}}return false}function a1(dx){var dv,du,dw;for(dv=0;
-dv<aC.length;dv++){du=O(aC[dv].toLowerCase());if(dx===du){return true}if(du.slice(0,1)==="."){if(dx===du.slice(1)){return true}dw=dx.length-du.length;if((dw>0)&&(dx.slice(dw)===du)){return true}}}return false}function cv(du,dw){du=du.replace("send_image=0","send_image=1");var dv=new Image(1,1);dv.onload=function(){H=0;if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:true})}};dv.onerror=function(){if(typeof dw==="function"){dw({request:du,trackerUrl:aI,success:false})}};dv.src=aI+(aI.indexOf("?")<0?"?":"&")+du}function cM(du){if(dk==="POST"){return true}return du&&(du.length>2000||du.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function bc(dy,dB,dA){var dw=aP();if(!dw){return false}var dx={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dC=false;var dv=aI;try{var du=new Blob([dy],dx);if(dA&&!cM(dy)){du=new Blob([],dx);dv=dv+(dv.indexOf("?")<0?"?":"&")+dy}dC=g.sendBeacon(dv,du)}catch(dz){return false
-}if(dC&&typeof dB==="function"){dB({request:dy,trackerUrl:aI,success:true,isSendBeacon:true})}return dC}function de(dv,dw,du){if(!M(du)||null===du){du=true}if(m&&bc(dv,dw,du)){return}setTimeout(function(){if(m&&bc(dv,dw,du)){return}var dz;try{var dy=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dy.open("POST",aI,true);dy.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dA=m&&bc(dv,dw,du);if(!dA&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dw==="function")){dw({request:dv,trackerUrl:aI,success:true,xhr:this})}}};dy.setRequestHeader("Content-Type",cE);dy.withCredentials=true;dy.send(dv)}catch(dx){dz=m&&bc(dv,dw,du);if(!dz&&du){cv(dv,dw)}else{if(typeof dw==="function"){dw({request:dv,trackerUrl:aI,success:false})}}}},50)}function cl(dv){var du=new Date();var dw=du.getTime()+dv;if(!r||dw>r){r=dw}}function bg(){bi=true;
-cF=new Date().getTime()}function dn(){var du=new Date().getTime();return !cF||(du-cF)>bb}function aD(){if(dn()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dn()){bX()}else{if(J.visibilityState==="visible"){cF=new Date().getTime()}}}function dr(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dn()){bX()}}})}function cK(dy){var dv=new Date();var du=dv.getTime();c8=du;if(cJ&&du<cJ){var dw=cJ-du;setTimeout(dy,dw);cl(dw+50);cJ+=50;return}if(cJ===false){var dx=800;cJ=du+dx}dy()}function aT(){if(aH(cU)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dv,du,dw){aT();if(!bJ){cT.push(dv);return}aA=true;if(!cY&&dv){if(cI&&bJ){dv+="&consent=1"}cK(function(){if(c5&&bc(dv,dw,true)){cl(100);return}if(cM(dv)){de(dv,dw)}else{cv(dv,dw)}cl(du)})}if(!aS){dr()}}function cq(du){if(cY){return false}return(du&&du.length)}function dd(du,dy){if(!dy||dy>=du.length){return[du]}var dv=0;var dw=du.length;var dx=[];
-for(dv;dv<dw;dv+=dy){dx.push(du.slice(dv,dv+dy))}return dx}function dq(dv,du){if(!cq(dv)){return}if(!bJ){cT.push(dv);return}aA=true;cK(function(){var dy=dd(dv,50);var dw=0,dx;for(dw;dw<dy.length;dw++){dx='{"requests":["?'+dy[dw].join('","?')+'"],"send_image":0}';if(c5&&bc(dx,null,false)){cl(100)}else{de(dx,null,false)}}cl(du)})}function aY(du){return bq+du+"."+cc+"."+bv}function b5(dw,dv,du){dp(dw,"",-129600000,dv,du)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var du=bq+"testcookie";dp(du,"1",undefined,bw,c7,bY,aN);var dv=aH(du)==="1"?"1":"0";b5(du);return dv}function bo(){bv=cd((c7||c2)+(bw||"/")).slice(0,4)}function cQ(){if(!c6){return{}}if(M(dh.res)){return dh}var dv,dx,dy={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dv in dy){if(Object.prototype.hasOwnProperty.call(dy,dv)){dx=g.mimeTypes[dy[dv]];
-dh[dv]=(dx&&dx.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dh.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dh.cookie=g.cookieEnabled?"1":"0"}else{dh.cookie=cb()}}var dw=parseInt(ab.width,10);var du=parseInt(ab.height,10);dh.res=parseInt(dw,10)+"x"+parseInt(du,10);return dh}function b3(){var dv=aY("cvar"),du=aH(dv);if(du&&du.length){du=W.JSON.parse(du);if(Z(du)){return du}}return{}}function cN(){if(aV===false){aV=b3()}}function cZ(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)+(new Date()).getTime()+Math.random()).slice(0,16)}function aF(){var du=cQ();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(du)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dv=bl();var dw=aF();var du=String(dv)+dw;return du}function dc(dw){dw=String(dw);var dz=aF();var dx=dz.length;var dy=dw.substr(-1*dx,dx);
-var dv=parseInt(dw.substr(0,dw.length-dx),10);if(dv&&dy&&dy===dz){var du=bl();if(a5<=0){return true}if(du>=dv&&du<=(dv+a5)){return true}}return false}function ds(du){if(!cV){return""}var dy=e(du,az);if(!dy){return""}dy=String(dy);var dw=new RegExp("^[a-zA-Z0-9]+$");if(dy.length===32&&dw.test(dy)){var dv=dy.substr(16,32);if(dc(dv)){var dx=dy.substr(0,16);return dx}}return""}function cW(){if(!bU){bU=ds(bT)}var dw=new Date(),du=Math.round(dw.getTime()/1000),dv=aY("id"),dz=aH(dv),dy,dx;if(dz){dy=dz.split(".");dy.unshift("0");if(bU.length){dy[1]=bU}return dy}if(bU.length){dx=bU}else{if("0"===cb()){dx=""}else{dx=cZ()}}dy=["1",dx,du];return dy}function a4(){var dx=cW(),dv=dx[0],dw=dx[1],du=dx[2];return{newVisitor:dv,uuid:dw,createTs:du}}function aL(){var dx=new Date(),dv=dx.getTime(),dy=a4().createTs;var du=parseInt(dy,10);var dw=(du*1000)+cS-dv;return dw}function aR(du){if(!cc){return}var dw=new Date(),dv=Math.round(dw.getTime()/1000);if(!M(du)){du=a4()}var dx=du.uuid+"."+du.createTs+".";dp(aY("id"),dx,aL(),bw,c7,bY,aN)
-}function bS(){var du=aH(aY("ref"));if(du.length){try{du=W.JSON.parse(du);if(Z(du)){return du}}catch(dv){}}return["","",0,""]}function bD(dw){var dv=bq+"testcookie_domain";var du="testvalue";dp(dv,du,10000,null,dw,bY,aN);if(aH(dv)===du){b5(dv,null,dw);return true}return false}function aJ(){var dv=bs;bs=false;var du,dw;for(du=0;du<bB.length;du++){dw=aY(bB[du]);if(dw!==cU&&dw!==bj&&0!==aH(dw)){b5(dw,bw,c7)}}bs=dv}function b9(du){cc=du}function dt(dy){if(!dy||!Z(dy)){return}var dx=[];var dw;for(dw in dy){if(Object.prototype.hasOwnProperty.call(dy,dw)){dx.push(dw)}}var dz={};dx.sort();var du=dx.length;var dv;for(dv=0;dv<du;dv++){dz[dx[dv]]=dy[dx[dv]]}return dz}function ci(){dp(aY("ses"),"1",cu,bw,c7,bY,aN)}function bm(){var dx="";var dv="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dw=dv.length;var du;for(du=0;du<6;du++){dx+=dv.charAt(Math.floor(Math.random()*dw))}return dx}function aE(dv){if(ct!==""){dv+=ct;bn=true;return dv}if(!h){return dv}var dw=(typeof h.timing==="object")&&h.timing?h.timing:undefined;
-if(!dw){dw=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dw){return dv}var du="";if(dw.connectEnd&&dw.fetchStart){if(dw.connectEnd<dw.fetchStart){return dv}du+="&pf_net="+Math.round(dw.connectEnd-dw.fetchStart)}if(dw.responseStart&&dw.requestStart){if(dw.responseStart<dw.requestStart){return dv}du+="&pf_srv="+Math.round(dw.responseStart-dw.requestStart)}if(dw.responseStart&&dw.responseEnd){if(dw.responseEnd<dw.responseStart){return dv}du+="&pf_tfr="+Math.round(dw.responseEnd-dw.responseStart)}if(M(dw.domLoading)){if(dw.domInteractive&&dw.domLoading){if(dw.domInteractive<dw.domLoading){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.domLoading)}}else{if(dw.domInteractive&&dw.responseEnd){if(dw.domInteractive<dw.responseEnd){return dv}du+="&pf_dm1="+Math.round(dw.domInteractive-dw.responseEnd)}}if(dw.domComplete&&dw.domInteractive){if(dw.domComplete<dw.domInteractive){return dv}du+="&pf_dm2="+Math.round(dw.domComplete-dw.domInteractive)
-}if(dw.loadEventEnd&&dw.loadEventStart){if(dw.loadEventEnd<dw.loadEventStart){return dv}du+="&pf_onl="+Math.round(dw.loadEventEnd-dw.loadEventStart)}return dv+du}function dj(){var dE,dx=new Date(),dy=Math.round(dx.getTime()/1000),dJ,dw,dz=1024,dG,dA,dv=aY("ses"),dD=aY("ref"),dC=aH(dv),du=bS(),dI=ba||bT,dF,dB,dH={};dF=du[0];dB=du[1];dJ=du[2];dw=du[3];if(!dC){if(!bC||!dF.length){for(dE in cw){if(Object.prototype.hasOwnProperty.call(cw,dE)){dF=e(dI,cw[dE]);if(dF.length){break}}}for(dE in bN){if(Object.prototype.hasOwnProperty.call(bN,dE)){dB=e(dI,bN[dE]);if(dB.length){break}}}}dG=d(bu);dA=dw.length?d(dw):"";if(dG.length&&!a1(dG)&&(!bC||!dA.length||a1(dA))){dw=bu}if(dw.length||dF.length){dJ=dy;du=[dF,dB,dJ,b8(dw.slice(0,dz))];dp(dD,W.JSON.stringify(du),df,bw,c7,bY,aN)}}if(dF.length){dH._rcn=t(dF)}if(dB.length){dH._rck=t(dB)}dH._refts=dJ;if(String(dw).length){dH._ref=t(b8(dw.slice(0,dz)))}return dH}function cy(dv,dG,dH){var dF,du=new Date(),dE=aV,dA=aY("cvar"),dI=ba||bT;if(bs){aJ()}if(cY){return""
-}var dB=a4();var dy=J.characterSet||J.charset;if(!dy||dy.toLowerCase()==="utf-8"){dy=null}dv+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+du.getHours()+"&m="+du.getMinutes()+"&s="+du.getSeconds()+"&url="+t(b8(dI))+(bu.length?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dB.uuid+"&_idn="+dB.newVisitor+(dy?"&cs="+t(dy):"")+"&send_image=0";var dD=dj();for(dF in dD){if(Object.prototype.hasOwnProperty.call(dD,dF)){dv+="&"+dF+"="+dD[dF]}}var dK=cQ();for(dF in dK){if(Object.prototype.hasOwnProperty.call(dK,dF)){dv+="&"+dF+"="+dK[dF]}}var dL=[];if(dG){for(dF in dG){if(Object.prototype.hasOwnProperty.call(dG,dF)&&/^dimension\d+$/.test(dF)){var dw=dF.replace("dimension","");dL.push(parseInt(dw,10));dL.push(String(dw));dv+="&"+dF+"="+t(dG[dF]);delete dG[dF]}}}if(dG&&D(dG)){dG=null}for(dF in cA){if(Object.prototype.hasOwnProperty.call(cA,dF)){dv+="&"+dF+"="+t(cA[dF])}}for(dF in bt){if(Object.prototype.hasOwnProperty.call(bt,dF)){var dz=(-1===P(dL,dF));if(dz){dv+="&dimension"+dF+"="+t(bt[dF])
-}}}if(dG){dv+="&data="+t(W.JSON.stringify(dG))}else{if(at){dv+="&data="+t(W.JSON.stringify(at))}}function dx(dM,dN){var dO=W.JSON.stringify(dM);if(dO.length>2){return"&"+dN+"="+t(dO)}return""}var dJ=dt(b2);var dC=dt(cs);dv+=dx(dJ,"cvar");dv+=dx(dC,"e_cvar");if(aV){dv+=dx(aV,"_cvar");for(dF in dE){if(Object.prototype.hasOwnProperty.call(dE,dF)){if(aV[dF][0]===""||aV[dF][1]===""){delete aV[dF]}}}if(bW){dp(dA,W.JSON.stringify(aV),cu,bw,c7,bY,aN)}}if(a8&&bL&&!bn){dv=aE(dv);bn=true}if(aQ){dv+="&pv_id="+aQ}aR(dB);ci();dv+=ag(dH,{tracker:bP,request:dv});if(c9.length){dv+="&"+c9}if(C(ch)){dv=ch(dv)}return dv}bX=function bd(){var du=new Date();du=du.getTime();if(!c8){return false}if(c8+bb<=du){bP.ping();return true}return false};function bx(dx,dw,dB,dy,du,dE){var dA="idgoal=0",dv=new Date(),dC=[],dD,dz=String(dx).length;if(dz){dA+="&ec_id="+t(dx)}dA+="&revenue="+dw;if(String(dB).length){dA+="&ec_st="+dB}if(String(dy).length){dA+="&ec_tx="+dy}if(String(du).length){dA+="&ec_sh="+du}if(String(dE).length){dA+="&ec_dt="+dE
-}if(da){for(dD in da){if(Object.prototype.hasOwnProperty.call(da,dD)){if(!M(da[dD][1])){da[dD][1]=""}if(!M(da[dD][2])){da[dD][2]=""}if(!M(da[dD][3])||String(da[dD][3]).length===0){da[dD][3]=0}if(!M(da[dD][4])||String(da[dD][4]).length===0){da[dD][4]=1}dC.push(da[dD])}}dA+="&ec_items="+t(W.JSON.stringify(dC))}dA=cy(dA,at,"ecommerce");bM(dA,bQ);if(dz){da={}}}function b4(du,dy,dx,dw,dv,dz){if(String(du).length&&M(dy)){bx(du,dy,dx,dw,dv,dz)}}function bz(du){if(M(du)){bx("",du,"","","","")}}function b6(dv,dx,dw){if(!bH){aQ=bm()}var du=cy("action_name="+t(ap(dv||bp)),dx,"log");if(a8&&!bn){du=aE(du)}bM(du,bQ,dw)}function a6(dw,dv){var dx,du="(^| )(piwik[_-]"+dv+"|matomo[_-]"+dv;if(dw){for(dx=0;dx<dw.length;dx++){du+="|"+dw[dx]}}du+=")( |$)";return new RegExp(du)}function aZ(du){return(aI&&du&&0===String(du).indexOf(aI))}function cC(dy,du,dz,dv){if(aZ(du)){return 0}var dx=a6(bR,"download"),dw=a6(be,"link"),dA=new RegExp("\\.("+dg.join("|")+")([?&#]|$)","i");if(dw.test(dy)){return"link"}if(dv||dx.test(dy)||dA.test(du)){return"download"
-}if(dz){return 0}return"link"}function ay(dv){var du;du=dv.parentNode;while(du!==null&&M(du)){if(ai.isLinkElement(dv)){break}dv=du;du=dv.parentNode}return dv}function dm(dz){dz=ay(dz);if(!ai.hasNodeAttribute(dz,"href")){return}if(!M(dz.href)){return}var dy=ai.getAttributeValueFromNode(dz,"href");var dv=dz.pathname||cr(dz.href);var dA=dz.hostname||d(dz.href);var dB=dA.toLowerCase();var dw=dz.href.replace(dA,dB);var dx=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dx.test(dw)){var du=cC(dz.className,dw,aw(dB,dv),ai.hasNodeAttribute(dz,"download"));if(du){return{type:du,href:dw}}}}function aU(du,dv,dw,dx){var dy=w.buildInteractionRequestParams(du,dv,dw,dx);if(!dy){return}return cy(dy,null,"contentInteraction")}function bh(du,dv){if(!du||!dv){return false}var dw=w.findTargetNode(du);if(w.shouldIgnoreInteraction(dw)){return false}dw=w.findTargetNodeNoDefault(du);if(dw&&!Y(dw,dv)){return false}return true}function cB(dw,dv,dy){if(!dw){return}var du=w.findParentContentNode(dw);
-if(!du){return}if(!bh(du,dw)){return}var dx=w.buildContentBlock(du);if(!dx){return}if(!dx.target&&dy){dx.target=dy}return w.buildInteractionRequestParams(dv,dx.name,dx.piece,dx.target)}function a2(dv){if(!cg||!cg.length){return false}var du,dw;for(du=0;du<cg.length;du++){dw=cg[du];if(dw&&dw.name===dv.name&&dw.piece===dv.piece&&dw.target===dv.target){return true}}return false}function a3(du){return function(dy){if(!du){return}var dw=w.findParentContentNode(du);var dv;if(dy){dv=dy.target||dy.srcElement}if(!dv){dv=du}if(!bh(dw,dv)){return}if(!dw){return false}var dz=w.findTargetNode(dw);if(!dz||w.shouldIgnoreInteraction(dz)){return false}var dx=dm(dz);if(di&&dx&&dx.type){return dx.type}return bP.trackContentInteractionNode(dv,"click")}}function b7(dw){if(!dw||!dw.length){return}var du,dv;for(du=0;du<dw.length;du++){dv=w.findTargetNode(dw[du]);if(dv&&!dv.contentInteractionTrackingSetupDone){dv.contentInteractionTrackingSetupDone=true;ar(dv,"click",a3(dv))}}}function bE(dw,dx){if(!dw||!dw.length){return[]
-}var du,dv;for(du=0;du<dw.length;du++){if(a2(dw[du])){dw.splice(du,1);du--}else{cg.push(dw[du])}}if(!dw||!dw.length){return[]}b7(dx);var dy=[];for(du=0;du<dw.length;du++){dv=cy(w.buildImpressionRequestParams(dw[du].name,dw[du].piece,dw[du].target),undefined,"contentImpressions");if(dv){dy.push(dv)}}return dy}function cH(dv){var du=w.collectContent(dv);return bE(du,dv)}function bf(dv){if(!dv||!dv.length){return[]}var du;for(du=0;du<dv.length;du++){if(!w.isNodeVisible(dv[du])){dv.splice(du,1);du--}}if(!dv||!dv.length){return[]}return cH(dv)}function aK(dw,du,dv){var dx=w.buildImpressionRequestParams(dw,du,dv);return cy(dx,null,"contentImpression")}function dl(dx,dv){if(!dx){return}var du=w.findParentContentNode(dx);var dw=w.buildContentBlock(du);if(!dw){return}if(!dv){dv="Unknown"}return aU(dv,dw.name,dw.piece,dw.target)}function cX(dv,dx,du,dw){return"e_c="+t(dv)+"&e_a="+t(dx)+(M(du)?"&e_n="+t(du):"")+(M(dw)?"&e_v="+t(dw):"")+"&ca=1"}function ax(dw,dy,du,dx,dA,dz){if(!ac(dw)||!ac(dy)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");
-return false}var dv=cy(cX(dw,dy,du,dx),dA,"event");bM(dv,bQ,dz)}function ce(du,dx,dv,dy){var dw=cy("search="+t(du)+(dx?"&search_cat="+t(dx):"")+(M(dv)?"&search_count="+dv:""),dy,"sitesearch");bM(dw,bQ)}function c1(du,dy,dx,dw){var dv=cy("idgoal="+du+(dy?"&revenue="+dy:""),dx,"goal");bM(dv,bQ,dw)}function db(dx,du,dB,dA,dw){var dz=du+"="+t(b8(dx));var dv=cB(dw,"click",dx);if(dv){dz+="&"+dv}var dy=cy(dz,dB,"link");bM(dy,bQ,dA)}function b0(dv,du){if(dv!==""){return dv+du.charAt(0).toUpperCase()+du.slice(1)}return du}function cm(dz){var dy,du,dx=["","webkit","ms","moz"],dw;if(!bk){for(du=0;du<dx.length;du++){dw=dx[du];if(Object.prototype.hasOwnProperty.call(J,b0(dw,"hidden"))){if(J[b0(dw,"visibilityState")]==="prerender"){dy=true}break}}}if(dy){ar(J,dw+"visibilitychange",function dv(){J.removeEventListener(dw+"visibilitychange",dv,false);dz()});return}dz()}function by(){var dv=bP.getVisitorId();var du=aO();return dv+du}function cp(du){if(!du){return}if(!ai.hasNodeAttribute(du,"href")){return
-}var dv=ai.getAttributeValueFromNode(du,"href");if(!dv||aZ(dv)){return}if(!bP.getVisitorId()){return}dv=j(dv,az);var dw=by();dv=I(dv,az,dw);ai.setAnyAttribute(du,"href",dv)}function br(dx){var dy=ai.getAttributeValueFromNode(dx,"href");if(!dy){return false}dy=String(dy);var dv=dy.indexOf("//")===0||dy.indexOf("http://")===0||dy.indexOf("https://")===0;if(!dv){return false}var du=dx.pathname||cr(dx.href);var dw=(dx.hostname||d(dx.href)).toLowerCase();if(aw(dw,du)){if(!cP(c2,O(dw))){return true}return false}return false}function cO(du){var dv=dm(du);if(dv&&dv.type){dv.href=p(dv.href);db(dv.href,dv.type,undefined,null,du);return}if(cV){du=ay(du);if(br(du)){cp(du)}}}function cD(){return J.all&&!J.addEventListener}function c3(du){var dw=du.which;var dv=(typeof du.button);if(!dw&&dv!=="undefined"){if(cD()){if(du.button&1){dw=1}else{if(du.button&2){dw=3}else{if(du.button&4){dw=2}}}}else{if(du.button===0||du.button==="0"){dw=1}else{if(du.button&1){dw=2}else{if(du.button&2){dw=3}}}}}return dw}function bZ(du){switch(c3(du)){case 1:return"left";
-case 2:return"middle";case 3:return"right"}}function a7(du){return du.target||du.srcElement}function c4(du){return du==="A"||du==="AREA"}function aG(du){function dv(dx){var dy=a7(dx);var dz=dy.nodeName;var dw=a6(bG,"ignore");while(!c4(dz)&&dy&&dy.parentNode){dy=dy.parentNode;dz=dy.nodeName}if(dy&&c4(dz)&&!dw.test(dy.className)){return dy}}return function(dy){dy=dy||W.event;var dz=dv(dy);if(!dz){return}var dx=bZ(dy);if(dy.type==="click"){var dw=false;if(du&&dx==="middle"){dw=true}if(dz&&!dw){cO(dz)}}else{if(dy.type==="mousedown"){if(dx==="middle"&&dz){aW=dx;bI=dz}else{aW=bI=null}}else{if(dy.type==="mouseup"){if(dx===aW&&dz===bI){cO(dz)}aW=bI=null}else{if(dy.type==="contextmenu"){cO(dz)}}}}}}function av(dx,dw,du){var dv=typeof dw;if(dv==="undefined"){dw=true}ar(dx,"click",aG(dw),du);if(dw){ar(dx,"mouseup",aG(dw),du);ar(dx,"mousedown",aG(dw),du);ar(dx,"contextmenu",aG(dw),du)}}function aX(dv,dy,dz){if(ck){return true}ck=true;var dA=false;var dx,dw;function du(){dA=true}n(function(){function dB(dD){setTimeout(function(){if(!ck){return
-}dA=false;dz.trackVisibleContentImpressions();dB(dD)},dD)}function dC(dD){setTimeout(function(){if(!ck){return}if(dA){dA=false;dz.trackVisibleContentImpressions()}dC(dD)},dD)}if(dv){dx=["scroll","resize"];for(dw=0;dw<dx.length;dw++){if(J.addEventListener){J.addEventListener(dx[dw],du,false)}else{W.attachEvent("on"+dx[dw],du)}}dC(100)}if(dy&&dy>0){dy=parseInt(dy,10);dB(dy)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var du=this.requests;this.requests=[];if(du.length===1){bM(du[0],bQ)}else{dq(du,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dv){if(!this.canQueue()){dq(dv,bQ);return}var du;for(du=0;du<dv.length;du++){this.push(dv[du])}},push:function(du){if(!du){return}if(!this.canQueue()){bM(du,bQ);return}bK.requests.push(du);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dv="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dv)){b[dv]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)
-}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(du){aI=du};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dw,dv){if(!M(dw)||null===dw){dw=this.getTrackerUrl()}var du=new T(dw,dv);L.push(du);u.trigger("TrackerAdded",[this]);return du};this.getSiteId=function(){return cc};this.setSiteId=function(du){b9(du)};this.resetUserId=function(){bF=""};this.setUserId=function(du){if(ac(du)){bF=du}};this.setVisitorId=function(dv){var du=/[0-9A-Fa-f]{16}/g;
-if(x(dv)&&du.test(dv)){bU=dv}else{ao("Invalid visitorId set"+dv)}};this.getUserId=function(){return bF};this.setCustomData=function(du,dv){if(Z(du)){at=du}else{if(!at){at={}}at[du]=dv}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(du){ch=du};this.appendToTrackingUrl=function(du){c9=du};this.getRequest=function(du){return cy(du)};this.addPlugin=function(du,dv){b[du]=dv};this.setCustomDimension=function(du,dv){du=parseInt(du,10);if(du>0){if(!M(dv)){dv=""}if(!x(dv)){dv=String(dv)}bt[du]=dv}};this.getCustomDimension=function(du){du=parseInt(du,10);if(du>0&&Object.prototype.hasOwnProperty.call(bt,du)){return bt[du]}};this.deleteCustomDimension=function(du){du=parseInt(du,10);if(du>0){delete bt[du]}};this.setCustomVariable=function(dv,du,dy,dw){var dx;if(!M(dw)){dw="visit"}if(!M(du)){return}if(!M(dy)){dy=""}if(dv>0){du=!x(du)?String(du):du;dy=!x(dy)?String(dy):dy;dx=[du.slice(0,bA),dy.slice(0,bA)];if(dw==="visit"||dw===2){cN();aV[dv]=dx}else{if(dw==="page"||dw===3){b2[dv]=dx
-}else{if(dw==="event"){cs[dv]=dx}}}}};this.getCustomVariable=function(dv,dw){var du;if(!M(dw)){dw="visit"}if(dw==="page"||dw===3){du=b2[dv]}else{if(dw==="event"){du=cs[dv]}else{if(dw==="visit"||dw===2){cN();du=aV[dv]}}}if(!M(du)||(du&&du[0]==="")){return false}return du};this.deleteCustomVariable=function(du,dv){if(this.getCustomVariable(du,dv)){this.setCustomVariable(du,"","",dv)}};this.deleteCustomVariables=function(du){if(du==="page"||du===3){b2={}}else{if(du==="event"){cs={}}else{if(du==="visit"||du===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(du){bQ=du};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(du){if(x(du)){du=du.split("|")}dg=du};this.addDownloadExtensions=function(dv){var du;if(x(dv)){dv=dv.split("|")}for(du=0;du<dv.length;du++){dg.push(dv[du])}};this.removeDownloadExtensions=function(dw){var dv,du=[];if(x(dw)){dw=dw.split("|")}for(dv=0;dv<dg.length;dv++){if(P(dw,dg[dv])===-1){du.push(dg[dv])
-}}dg=du};this.setDomains=function(du){aC=x(du)?[du]:du;var dy=false,dw=0,dv;for(dw;dw<aC.length;dw++){dv=String(aC[dw]);if(cP(c2,O(dv))){dy=true;break}var dx=cr(dv);if(dx&&dx!=="/"&&dx!=="/*"){dy=true;break}}if(!dy){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(du){a5=du};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(du){bG=x(du)?[du]:du};this.setRequestMethod=function(du){if(du){dk=String(du).toUpperCase()}else{dk=cn}if(dk==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(du){cE=du||aM};this.setGenerationTimeMs=function(du){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dy,dA,dz,dv,dB,dw){var dx={pf_net:dy,pf_srv:dA,pf_tfr:dz,pf_dm1:dv,pf_dm2:dB,pf_onl:dw};
-try{dx=Q(dx,M);dx=B(dx);ct=l(dx);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(du){ao("setPagePerformanceTiming: "+du.toString())}};this.setReferrerUrl=function(du){bu=du};this.setCustomUrl=function(du){ba=b1(bT,du)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(du){bp=du};this.setPageViewId=function(du){aQ=du;bH=true};this.setAPIUrl=function(du){bO=du};this.setDownloadClasses=function(du){bR=x(du)?[du]:du};this.setLinkClasses=function(du){be=x(du)?[du]:du};this.setCampaignNameKey=function(du){cw=x(du)?[du]:du};this.setCampaignKeywordKey=function(du){bN=x(du)?[du]:du};this.discardHashTag=function(du){bV=du};this.setCookieNamePrefix=function(du){bq=du;if(aV){aV=b3()}};this.setCookieDomain=function(du){var dv=O(du);if(!bs&&!bD(dv)){ao("Can't write cookie on domain "+du)}else{c7=dv;bo()}};this.setExcludedQueryParams=function(du){co=x(du)?[du]:du
-};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dw,dv,du){if(!dw){throw new Error("Missing cookie name")}if(!M(du)){du=cu}bB.push(dw);dp(aY(dw),dv,du,bw,c7,bY,aN)};this.getCookie=function(dv){var du=aH(aY(dv));if(du===0){return null}return du};this.setCookiePath=function(du){bw=du;bo()};this.getCookiePath=function(du){return bw};this.setVisitorCookieTimeout=function(du){cS=du*1000};this.setSessionCookieTimeout=function(du){cu=du*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(du){df=du*1000};this.setConversionAttributionFirstReferrer=function(du){bC=du};this.setSecureCookie=function(du){if(du&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=du};this.setCookieSameSite=function(du){du=String(du);du=du.charAt(0).toUpperCase()+du.toLowerCase().slice(1);if(du!=="None"&&du!=="Lax"&&du!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");
-return}if(du==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");du="Lax"}}aN=du};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var du=cy("ping=1",null,"ping");bM(du,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}this.setCookieConsentGiven();var du=new Date().getTime();dp(cL,du,dv,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dv){var du=g.doNotTrack||g.msDoNotTrack;cY=dv&&(du==="yes"||du==="1");if(cY){this.disableCookies()
-}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(dv,du){av(dv,du,false)};this.enableLinkTracking=function(dv){if(di){return}di=true;var du=this;q(function(){au=true;var dw=J.body;av(dw,dv,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var du=W.onerror;W.onerror=function(dz,dx,dw,dy,dv){cm(function(){var dA="JavaScript Errors";var dB=dx+":"+dw;if(dy){dB+=":"+dy}if(P(cz,dA+dB+dz)===-1){cz.push(dA+dB+dz);ax(dA,dB,dz)}});if(du){return du(dz,dx,dw,dy,dv)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(du){du=Math.max(du||15,5);bb=du*1000;if(c8!==null){dr()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)
-}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(du){if(W.location.protocol==="file:"){W.location=du}};this.setCountPreRendered=function(du){bk=du};this.trackGoal=function(du,dx,dw,dv){cm(function(){c1(du,dx,dw,dv)})};this.trackLink=function(dv,du,dx,dw){cm(function(){db(dv,du,dx,dw)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(du,dw,dv){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(du,dw,dv)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var du=w.findContentNodes();var dv=cH(du);bK.pushMultiple(dv)})})};this.trackVisibleContentImpressions=function(du,dv){if(R(cc)){return}if(!M(du)){du=true}if(!M(dv)){dv=750}aX(du,dv,this);cm(function(){n(function(){var dw=w.findContentNodes();
-var dx=bf(dw);bK.pushMultiple(dx)})})};this.trackContentImpression=function(dw,du,dv){if(R(cc)){return}dw=a(dw);du=a(du);dv=a(dv);if(!dw){return}du=du||"Unknown";cm(function(){var dx=aK(dw,du,dv);bK.push(dx)})};this.trackContentImpressionsWithinNode=function(du){if(R(cc)||!du){return}cm(function(){if(ck){n(function(){var dv=w.findContentNodesWithinNode(du);var dw=bf(dv);bK.pushMultiple(dw)})}else{q(function(){var dv=w.findContentNodesWithinNode(du);var dw=cH(dv);bK.pushMultiple(dw)})}})};this.trackContentInteraction=function(dw,dx,du,dv){if(R(cc)){return}dw=a(dw);dx=a(dx);du=a(du);dv=a(dv);if(!dw||!dx){return}du=du||"Unknown";cm(function(){var dy=aU(dw,dx,du,dv);if(dy){bK.push(dy)}})};this.trackContentInteractionNode=function(dw,dv){if(R(cc)||!dw){return}var du=null;cm(function(){du=dl(dw,dv);if(du){bK.push(du)}});return du};this.logAllContentBlocksOnPage=function(){var dw=w.findContentNodes();var du=w.collectContent(dw);var dv=typeof console;if(dv!=="undefined"&&console&&console.log){console.log(du)
-}};this.trackEvent=function(dv,dx,du,dw,dz,dy){cm(function(){ax(dv,dx,du,dw,dz,dy)})};this.trackSiteSearch=function(du,dw,dv,dx){cg=[];cm(function(){ce(du,dw,dv,dx)})};this.setEcommerceView=function(dy,du,dw,dv){cA={};if(ac(dw)){dw=String(dw)}if(!M(dw)||dw===null||dw===false||!dw.length){dw=""}else{if(dw instanceof Array){dw=W.JSON.stringify(dw)}}var dx="_pkc";cA[dx]=dw;if(M(dv)&&dv!==null&&dv!==false&&String(dv).length){dx="_pkp";cA[dx]=dv}if(!ac(dy)&&!ac(du)){return}if(ac(dy)){dx="_pks";cA[dx]=dy}if(!ac(du)){du=""}dx="_pkn";cA[dx]=du};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dy,du,dw,dv,dx){if(ac(dy)){da[dy]=[String(dy),du,dw,dv,dx]}};this.removeEcommerceItem=function(du){if(ac(du)){du=String(du);delete da[du]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(du,dy,dx,dw,dv,dz){b4(du,dy,dx,dw,dv,dz)};this.trackEcommerceCartUpdate=function(du){bz(du)};this.trackRequest=function(dv,dx,dw,du){cm(function(){var dy=cy(dv,dx,du);
-bM(dy,bQ,dw)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(du){if(du<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=du};this.queueRequest=function(du){cm(function(){var dv=cy(du);bK.push(dv)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var du=aH(bj);if(aH(cU)){if(du){b5(bj,bw,c7)}return null}if(!du||du===0){return null}return du};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dv){bJ=true;c6=true;b5(cU,bw,c7);var dw,du;for(dw=0;dw<cT.length;dw++){du=typeof cT[dw];if(du==="string"){bM(cT[dw],bQ)}else{if(du==="object"){dq(cT[dw],bQ)}}}cT=[];if(!M(dv)||dv){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dw){if(dw){dw=dw*60*60*1000
-}else{dw=30*365*24*60*60*1000}var du=true;this.setConsentGiven(du);var dv=new Date().getTime();dp(bj,dv,dw,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var du=30*365*24*60*60*1000;b5(bj,bw,c7);dp(cU,new Date().getTime(),du,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dj()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')
-}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")
-}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);
-Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()
-}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
+}catch(at){return true}}function T(cj,cf){var bP=this,bj="mtm_consent",cN="mtm_cookie_consent",cW="mtm_consent_removed",ca=ae(J.domain,W.location.href,N()),c4=O(ca[0]),bT=p(ca[1]),bu=p(ca[2]),c2=false,cn="GET",dm=cn,aM="application/x-www-form-urlencoded; charset=UTF-8",cF=aM,aI=cj||"",bO="",db="",ct="",cc=cf||"",bF="",bU="",ba,bp="",di=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],aC=[c4],bG=[],cG=[],co=[],bR=[],be=[],bQ=500,c7=true,cT,bb,bX,bV,at,cw=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bN=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bq="_pk_",az="pk_vid",a5=180,c9,bw,bY=false,aN="Lax",bs=false,c0,bk,bC,cU=33955200000,cu=1800000,dh=15768000000,a8=true,bL=false,bn=false,bW=false,aV=false,ch,b2={},cs={},bt={},bA=200,cB={},dc={},dj={},cg=[],ck=false,cL=false,au=false,dk=false,cX=false,aS=false,bi=v(),cH=null,da=null,aW,bI,cd=aq,bv,aQ,bH=false,cy=0,bB=["id","ses","cvar","ref"],cK=false,bJ=null,cV=[],cA=[],aB=X++,aA=false,c8=true;
+try{bp=J.title}catch(cI){bp=""}function aH(dy){if(bs){return 0}var dw=new RegExp("(^|;)[ ]*"+dy+"=([^;]*)"),dx=dw.exec(J.cookie);return dx?V(dx[2]):0}bJ=!aH(cW);function dr(dA,dB,dE,dD,dy,dz,dC){if(bs&&dA!==cW){return}var dx;if(dE){dx=new Date();dx.setTime(dx.getTime()+dE)}if(!dC){dC="Lax"}J.cookie=dA+"="+t(dB)+(dE?";expires="+dx.toGMTString():"")+";path="+(dD||"/")+(dy?";domain="+dy:"")+(dz?";secure":"")+";SameSite="+dC;if((!dE||dE>=0)&&aH(dA)!==String(dB)){var dw="There was an error setting cookie `"+dA+"`. Please check domain and path.";ao(dw)}}function b8(dw){var dy,dx;dw=j(dw,az);for(dx=0;dx<co.length;dx++){dw=j(dw,co[dx])}if(bV){dy=new RegExp("#.*");return dw.replace(dy,"")}return dw}function b1(dy,dw){var dz=s(dw),dx;if(dz){return dw}if(dw.slice(0,1)==="/"){return s(dy)+"://"+d(dy)+dw}dy=b8(dy);dx=dy.indexOf("?");if(dx>=0){dy=dy.slice(0,dx)}dx=dy.lastIndexOf("/");if(dx!==dy.length-1){dy=dy.slice(0,dx+1)}return dy+dw}function cR(dy,dw){var dx;dy=String(dy).toLowerCase();dw=String(dw).toLowerCase();
+if(dy===dw){return true}if(dw.slice(0,1)==="."){if(dy===dw.slice(1)){return true}dx=dy.length-dw.length;if((dx>0)&&(dy.slice(dx)===dw)){return true}}return false}function cr(dw){var dx=document.createElement("a");if(dw.indexOf("//")!==0&&dw.indexOf("http")!==0){if(dw.indexOf("*")===0){dw=dw.substr(1)}if(dw.indexOf(".")===0){dw=dw.substr(1)}dw="http://"+dw}dx.href=w.toAbsoluteUrl(dw);if(dx.pathname){return dx.pathname}return""}function a9(dx,dw){if(!an(dw,"/")){dw="/"+dw}if(!an(dx,"/")){dx="/"+dx}var dy=(dw==="/"||dw==="/*");if(dy){return true}if(dx===dw){return true}dw=String(dw).toLowerCase();dx=String(dx).toLowerCase();if(U(dw,"*")){dw=dw.slice(0,-1);dy=(!dw||dw==="/");if(dy){return true}if(dx===dw){return true}return dx.indexOf(dw)===0}if(!U(dx,"/")){dx+="/"}if(!U(dw,"/")){dw+="/"}return dx.indexOf(dw)===0}function aw(dA,dC){var dx,dw,dy,dz,dB;for(dx=0;dx<aC.length;dx++){dz=O(aC[dx]);dB=cr(aC[dx]);if(cR(dA,dz)&&a9(dC,dB)){return true}}return false}function a1(dz){var dx,dw,dy;for(dx=0;
+dx<aC.length;dx++){dw=O(aC[dx].toLowerCase());if(dz===dw){return true}if(dw.slice(0,1)==="."){if(dz===dw.slice(1)){return true}dy=dz.length-dw.length;if((dy>0)&&(dz.slice(dy)===dw)){return true}}}return false}function cx(dw){var dx,dz,dB,dy,dA;if(!dw.length||!cG.length){return false}dz=d(dw);dB=cr(dw);if(dz.indexOf("www.")===0){dz=dz.substr(4)}for(dx=0;dx<cG.length;dx++){dy=O(cG[dx]);dA=cr(cG[dx]);if(dy.indexOf("www.")===0){dy=dy.substr(4)}if(cR(dz,dy)&&a9(dB,dA)){return true}}return false}function cv(dw,dy){dw=dw.replace("send_image=0","send_image=1");var dx=new Image(1,1);dx.onload=function(){H=0;if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:true})}};dx.onerror=function(){if(typeof dy==="function"){dy({request:dw,trackerUrl:aI,success:false})}};dx.src=aI+(aI.indexOf("?")<0?"?":"&")+dw}function cO(dw){if(dm==="POST"){return true}return dw&&(dw.length>2000||dw.indexOf('{"requests"')===0)}function aP(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob
+}function bc(dA,dD,dC){var dy=aP();if(!dy){return false}var dz={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dE=false;var dx=aI;try{var dw=new Blob([dA],dz);if(dC&&!cO(dA)){dw=new Blob([],dz);dx=dx+(dx.indexOf("?")<0?"?":"&")+dA}dE=g.sendBeacon(dx,dw)}catch(dB){return false}if(dE&&typeof dD==="function"){dD({request:dA,trackerUrl:aI,success:true,isSendBeacon:true})}return dE}function dg(dx,dy,dw){if(!M(dw)||null===dw){dw=true}if(m&&bc(dx,dy,dw)){return}setTimeout(function(){if(m&&bc(dx,dy,dw)){return}var dB;try{var dA=W.XMLHttpRequest?new W.XMLHttpRequest():W.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dA.open("POST",aI,true);dA.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dC=m&&bc(dx,dy,dw);if(!dC&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dy==="function")){dy({request:dx,trackerUrl:aI,success:true,xhr:this})}}};
+dA.setRequestHeader("Content-Type",cF);dA.withCredentials=true;dA.send(dx)}catch(dz){dB=m&&bc(dx,dy,dw);if(!dB&&dw){cv(dx,dy)}else{if(typeof dy==="function"){dy({request:dx,trackerUrl:aI,success:false})}}}},50)}function cl(dx){var dw=new Date();var dy=dw.getTime()+dx;if(!r||dy>r){r=dy}}function bg(){bi=true;cH=new Date().getTime()}function dq(){var dw=new Date().getTime();return !cH||(dw-cH)>bb}function aD(){if(dq()){bX()}}function a0(){if(J.visibilityState==="hidden"&&dq()){bX()}else{if(J.visibilityState==="visible"){cH=new Date().getTime()}}}function dt(){if(aS||!bb){return}aS=true;ar(W,"focus",bg);ar(W,"blur",aD);ar(W,"visibilitychange",a0);af++;u.addPlugin("HeartBeat"+af,{unload:function(){if(aS&&dq()){bX()}}})}function cM(dA){var dx=new Date();var dw=dx.getTime();da=dw;if(cL&&dw<cL){var dy=cL-dw;setTimeout(dA,dy);cl(dy+50);cL+=50;return}if(cL===false){var dz=800;cL=dw+dz}dA()}function aT(){if(aH(cW)){bJ=false}else{if(aH(bj)){bJ=true}}}function bM(dx,dw,dy){aT();if(!bJ){cV.push(dx);
+return}aA=true;if(!c0&&dx){if(cK&&bJ){dx+="&consent=1"}cM(function(){if(c7&&bc(dx,dy,true)){cl(100);return}if(cO(dx)){dg(dx,dy)}else{cv(dx,dy)}cl(dw)})}if(!aS){dt()}}function cq(dw){if(c0){return false}return(dw&&dw.length)}function df(dw,dA){if(!dA||dA>=dw.length){return[dw]}var dx=0;var dy=dw.length;var dz=[];for(dx;dx<dy;dx+=dA){dz.push(dw.slice(dx,dx+dA))}return dz}function ds(dx,dw){if(!cq(dx)){return}if(!bJ){cV.push(dx);return}aA=true;cM(function(){var dA=df(dx,50);var dy=0,dz;for(dy;dy<dA.length;dy++){dz='{"requests":["?'+dA[dy].join('","?')+'"],"send_image":0}';if(c7&&bc(dz,null,false)){cl(100)}else{dg(dz,null,false)}}cl(dw)})}function aY(dw){return bq+dw+"."+cc+"."+bv}function b5(dy,dx,dw){dr(dy,"",-129600000,dx,dw)}function cb(){if(bs){return"0"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){return g.cookieEnabled?"1":"0"}var dw=bq+"testcookie";dr(dw,"1",undefined,bw,c9,bY,aN);var dx=aH(dw)==="1"?"1":"0";b5(dw);return dx}function bo(){bv=cd((c9||c4)+(bw||"/")).slice(0,4)}function cS(){if(!c8){return{}
+}if(M(dj.res)){return dj}var dx,dz,dA={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",fla:"application/x-shockwave-flash",java:"application/x-java-vm",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(dx in dA){if(Object.prototype.hasOwnProperty.call(dA,dx)){dz=g.mimeTypes[dA[dx]];dj[dx]=(dz&&dz.enabledPlugin)?"1":"0"}}}if(!((new RegExp("Edge[ /](\\d+[\\.\\d]+)")).test(g.userAgent))&&typeof navigator.javaEnabled!=="unknown"&&M(g.javaEnabled)&&g.javaEnabled()){dj.java="1"}if(!M(W.showModalDialog)&&M(g.cookieEnabled)){dj.cookie=g.cookieEnabled?"1":"0"}else{dj.cookie=cb()}}var dy=parseInt(ab.width,10);var dw=parseInt(ab.height,10);dj.res=parseInt(dy,10)+"x"+parseInt(dw,10);return dj}function b3(){var dx=aY("cvar"),dw=aH(dx);if(dw&&dw.length){dw=W.JSON.parse(dw);if(Z(dw)){return dw}}return{}}function cP(){if(aV===false){aV=b3()}}function c1(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)+(new Date()).getTime()+Math.random()).slice(0,16)
+}function aF(){var dw=cS();return cd((g.userAgent||"")+(g.platform||"")+W.JSON.stringify(dw)).slice(0,6)}function bl(){return Math.floor((new Date()).getTime()/1000)}function aO(){var dx=bl();var dy=aF();var dw=String(dx)+dy;return dw}function de(dy){dy=String(dy);var dB=aF();var dz=dB.length;var dA=dy.substr(-1*dz,dz);var dx=parseInt(dy.substr(0,dy.length-dz),10);if(dx&&dA&&dA===dB){var dw=bl();if(a5<=0){return true}if(dw>=dx&&dw<=(dx+a5)){return true}}return false}function du(dw){if(!cX){return""}var dA=e(dw,az);if(!dA){return""}dA=String(dA);var dy=new RegExp("^[a-zA-Z0-9]+$");if(dA.length===32&&dy.test(dA)){var dx=dA.substr(16,32);if(de(dx)){var dz=dA.substr(0,16);return dz}}return""}function cY(){if(!bU){bU=du(bT)}var dy=new Date(),dw=Math.round(dy.getTime()/1000),dx=aY("id"),dB=aH(dx),dA,dz;if(dB){dA=dB.split(".");dA.unshift("0");if(bU.length){dA[1]=bU}return dA}if(bU.length){dz=bU}else{if("0"===cb()){dz=""}else{dz=c1()}}dA=["1",dz,dw];return dA}function a4(){var dz=cY(),dx=dz[0],dy=dz[1],dw=dz[2];
+return{newVisitor:dx,uuid:dy,createTs:dw}}function aL(){var dz=new Date(),dx=dz.getTime(),dA=a4().createTs;var dw=parseInt(dA,10);var dy=(dw*1000)+cU-dx;return dy}function aR(dw){if(!cc){return}var dy=new Date(),dx=Math.round(dy.getTime()/1000);if(!M(dw)){dw=a4()}var dz=dw.uuid+"."+dw.createTs+".";dr(aY("id"),dz,aL(),bw,c9,bY,aN)}function bS(){var dw=aH(aY("ref"));if(dw.length){try{dw=W.JSON.parse(dw);if(Z(dw)){return dw}}catch(dx){}}return["","",0,""]}function bD(dy){var dx=bq+"testcookie_domain";var dw="testvalue";dr(dx,dw,10000,null,dy,bY,aN);if(aH(dx)===dw){b5(dx,null,dy);return true}return false}function aJ(){var dx=bs;bs=false;var dw,dy;for(dw=0;dw<bB.length;dw++){dy=aY(bB[dw]);if(dy!==cW&&dy!==bj&&0!==aH(dy)){b5(dy,bw,c9)}}bs=dx}function b9(dw){cc=dw}function dv(dA){if(!dA||!Z(dA)){return}var dz=[];var dy;for(dy in dA){if(Object.prototype.hasOwnProperty.call(dA,dy)){dz.push(dy)}}var dB={};dz.sort();var dw=dz.length;var dx;for(dx=0;dx<dw;dx++){dB[dz[dx]]=dA[dz[dx]]}return dB}function ci(){dr(aY("ses"),"1",cu,bw,c9,bY,aN)
+}function bm(){var dz="";var dx="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";var dy=dx.length;var dw;for(dw=0;dw<6;dw++){dz+=dx.charAt(Math.floor(Math.random()*dy))}return dz}function aE(dx){if(ct!==""){dx+=ct;bn=true;return dx}if(!h){return dx}var dy=(typeof h.timing==="object")&&h.timing?h.timing:undefined;if(!dy){dy=(typeof h.getEntriesByType==="function")&&h.getEntriesByType("navigation")?h.getEntriesByType("navigation")[0]:undefined}if(!dy){return dx}var dw="";if(dy.connectEnd&&dy.fetchStart){if(dy.connectEnd<dy.fetchStart){return dx}dw+="&pf_net="+Math.round(dy.connectEnd-dy.fetchStart)}if(dy.responseStart&&dy.requestStart){if(dy.responseStart<dy.requestStart){return dx}dw+="&pf_srv="+Math.round(dy.responseStart-dy.requestStart)}if(dy.responseStart&&dy.responseEnd){if(dy.responseEnd<dy.responseStart){return dx}dw+="&pf_tfr="+Math.round(dy.responseEnd-dy.responseStart)}if(M(dy.domLoading)){if(dy.domInteractive&&dy.domLoading){if(dy.domInteractive<dy.domLoading){return dx
+}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.domLoading)}}else{if(dy.domInteractive&&dy.responseEnd){if(dy.domInteractive<dy.responseEnd){return dx}dw+="&pf_dm1="+Math.round(dy.domInteractive-dy.responseEnd)}}if(dy.domComplete&&dy.domInteractive){if(dy.domComplete<dy.domInteractive){return dx}dw+="&pf_dm2="+Math.round(dy.domComplete-dy.domInteractive)}if(dy.loadEventEnd&&dy.loadEventStart){if(dy.loadEventEnd<dy.loadEventStart){return dx}dw+="&pf_onl="+Math.round(dy.loadEventEnd-dy.loadEventStart)}return dx+dw}function dl(){var dG,dz=new Date(),dA=Math.round(dz.getTime()/1000),dL,dy,dB=1024,dI,dC,dx=aY("ses"),dF=aY("ref"),dE=aH(dx),dw=bS(),dK=ba||bT,dH,dD,dJ={};dH=dw[0];dD=dw[1];dL=dw[2];dy=dw[3];if(!dE){if(!bC||!dH.length){for(dG in cw){if(Object.prototype.hasOwnProperty.call(cw,dG)){dH=e(dK,cw[dG]);if(dH.length){break}}}for(dG in bN){if(Object.prototype.hasOwnProperty.call(bN,dG)){dD=e(dK,bN[dG]);if(dD.length){break}}}}dI=d(bu);dC=dy.length?d(dy):"";if(dI.length&&!a1(dI)&&!cx(bu)&&(!bC||!dC.length||a1(dC)||cx(dy))){dy=bu
+}if(dy.length||dH.length){dL=dA;dw=[dH,dD,dL,b8(dy.slice(0,dB))];dr(dF,W.JSON.stringify(dw),dh,bw,c9,bY,aN)}}if(dH.length){dJ._rcn=t(dH)}if(dD.length){dJ._rck=t(dD)}dJ._refts=dL;if(String(dy).length){dJ._ref=t(b8(dy.slice(0,dB)))}return dJ}function cz(dx,dI,dJ){var dH,dw=new Date(),dG=aV,dC=aY("cvar"),dK=ba||bT;if(bs){aJ()}if(c0){return""}var dD=a4();var dA=J.characterSet||J.charset;if(!dA||dA.toLowerCase()==="utf-8"){dA=null}dx+="&idsite="+cc+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+dw.getHours()+"&m="+dw.getMinutes()+"&s="+dw.getSeconds()+"&url="+t(b8(dK))+(bu.length&&!cx(bu)?"&urlref="+t(b8(bu)):"")+(ac(bF)?"&uid="+t(bF):"")+"&_id="+dD.uuid+"&_idn="+dD.newVisitor+(dA?"&cs="+t(dA):"")+"&send_image=0";var dF=dl();for(dH in dF){if(Object.prototype.hasOwnProperty.call(dF,dH)){dx+="&"+dH+"="+dF[dH]}}var dM=cS();for(dH in dM){if(Object.prototype.hasOwnProperty.call(dM,dH)){dx+="&"+dH+"="+dM[dH]}}var dN=[];if(dI){for(dH in dI){if(Object.prototype.hasOwnProperty.call(dI,dH)&&/^dimension\d+$/.test(dH)){var dy=dH.replace("dimension","");
+dN.push(parseInt(dy,10));dN.push(String(dy));dx+="&"+dH+"="+t(dI[dH]);delete dI[dH]}}}if(dI&&D(dI)){dI=null}for(dH in cB){if(Object.prototype.hasOwnProperty.call(cB,dH)){dx+="&"+dH+"="+t(cB[dH])}}for(dH in bt){if(Object.prototype.hasOwnProperty.call(bt,dH)){var dB=(-1===P(dN,dH));if(dB){dx+="&dimension"+dH+"="+t(bt[dH])}}}if(dI){dx+="&data="+t(W.JSON.stringify(dI))}else{if(at){dx+="&data="+t(W.JSON.stringify(at))}}function dz(dO,dP){var dQ=W.JSON.stringify(dO);if(dQ.length>2){return"&"+dP+"="+t(dQ)}return""}var dL=dv(b2);var dE=dv(cs);dx+=dz(dL,"cvar");dx+=dz(dE,"e_cvar");if(aV){dx+=dz(aV,"_cvar");for(dH in dG){if(Object.prototype.hasOwnProperty.call(dG,dH)){if(aV[dH][0]===""||aV[dH][1]===""){delete aV[dH]}}}if(bW){dr(dC,W.JSON.stringify(aV),cu,bw,c9,bY,aN)}}if(a8&&bL&&!bn){dx=aE(dx);bn=true}if(aQ){dx+="&pv_id="+aQ}aR(dD);ci();dx+=ag(dJ,{tracker:bP,request:dx});if(db.length){dx+="&"+db}if(C(ch)){dx=ch(dx)}return dx}bX=function bd(){var dw=new Date();dw=dw.getTime();if(!da){return false}if(da+bb<=dw){bP.ping();
+return true}return false};function bx(dz,dy,dD,dA,dw,dG){var dC="idgoal=0",dx=new Date(),dE=[],dF,dB=String(dz).length;if(dB){dC+="&ec_id="+t(dz)}dC+="&revenue="+dy;if(String(dD).length){dC+="&ec_st="+dD}if(String(dA).length){dC+="&ec_tx="+dA}if(String(dw).length){dC+="&ec_sh="+dw}if(String(dG).length){dC+="&ec_dt="+dG}if(dc){for(dF in dc){if(Object.prototype.hasOwnProperty.call(dc,dF)){if(!M(dc[dF][1])){dc[dF][1]=""}if(!M(dc[dF][2])){dc[dF][2]=""}if(!M(dc[dF][3])||String(dc[dF][3]).length===0){dc[dF][3]=0}if(!M(dc[dF][4])||String(dc[dF][4]).length===0){dc[dF][4]=1}dE.push(dc[dF])}}dC+="&ec_items="+t(W.JSON.stringify(dE))}dC=cz(dC,at,"ecommerce");bM(dC,bQ);if(dB){dc={}}}function b4(dw,dA,dz,dy,dx,dB){if(String(dw).length&&M(dA)){bx(dw,dA,dz,dy,dx,dB)}}function bz(dw){if(M(dw)){bx("",dw,"","","","")}}function b6(dx,dz,dy){if(!bH){aQ=bm()}var dw=cz("action_name="+t(ap(dx||bp)),dz,"log");if(a8&&!bn){dw=aE(dw)}bM(dw,bQ,dy)}function a6(dy,dx){var dz,dw="(^| )(piwik[_-]"+dx+"|matomo[_-]"+dx;if(dy){for(dz=0;
+dz<dy.length;dz++){dw+="|"+dy[dz]}}dw+=")( |$)";return new RegExp(dw)}function aZ(dw){return(aI&&dw&&0===String(dw).indexOf(aI))}function cD(dA,dw,dB,dx){if(aZ(dw)){return 0}var dz=a6(bR,"download"),dy=a6(be,"link"),dC=new RegExp("\\.("+di.join("|")+")([?&#]|$)","i");if(dy.test(dA)){return"link"}if(dx||dz.test(dA)||dC.test(dw)){return"download"}if(dB){return 0}return"link"}function ay(dx){var dw;dw=dx.parentNode;while(dw!==null&&M(dw)){if(ai.isLinkElement(dx)){break}dx=dw;dw=dx.parentNode}return dx}function dp(dB){dB=ay(dB);if(!ai.hasNodeAttribute(dB,"href")){return}if(!M(dB.href)){return}var dA=ai.getAttributeValueFromNode(dB,"href");var dx=dB.pathname||cr(dB.href);var dC=dB.hostname||d(dB.href);var dD=dC.toLowerCase();var dy=dB.href.replace(dC,dD);var dz=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dz.test(dy)){var dw=cD(dB.className,dy,aw(dD,dx),ai.hasNodeAttribute(dB,"download"));if(dw){return{type:dw,href:dy}}}}function aU(dw,dx,dy,dz){var dA=w.buildInteractionRequestParams(dw,dx,dy,dz);
+if(!dA){return}return cz(dA,null,"contentInteraction")}function bh(dw,dx){if(!dw||!dx){return false}var dy=w.findTargetNode(dw);if(w.shouldIgnoreInteraction(dy)){return false}dy=w.findTargetNodeNoDefault(dw);if(dy&&!Y(dy,dx)){return false}return true}function cC(dy,dx,dA){if(!dy){return}var dw=w.findParentContentNode(dy);if(!dw){return}if(!bh(dw,dy)){return}var dz=w.buildContentBlock(dw);if(!dz){return}if(!dz.target&&dA){dz.target=dA}return w.buildInteractionRequestParams(dx,dz.name,dz.piece,dz.target)}function a2(dx){if(!cg||!cg.length){return false}var dw,dy;for(dw=0;dw<cg.length;dw++){dy=cg[dw];if(dy&&dy.name===dx.name&&dy.piece===dx.piece&&dy.target===dx.target){return true}}return false}function a3(dw){return function(dA){if(!dw){return}var dy=w.findParentContentNode(dw);var dx;if(dA){dx=dA.target||dA.srcElement}if(!dx){dx=dw}if(!bh(dy,dx)){return}if(!dy){return false}var dB=w.findTargetNode(dy);if(!dB||w.shouldIgnoreInteraction(dB)){return false}var dz=dp(dB);if(dk&&dz&&dz.type){return dz.type
+}return bP.trackContentInteractionNode(dx,"click")}}function b7(dy){if(!dy||!dy.length){return}var dw,dx;for(dw=0;dw<dy.length;dw++){dx=w.findTargetNode(dy[dw]);if(dx&&!dx.contentInteractionTrackingSetupDone){dx.contentInteractionTrackingSetupDone=true;ar(dx,"click",a3(dx))}}}function bE(dy,dz){if(!dy||!dy.length){return[]}var dw,dx;for(dw=0;dw<dy.length;dw++){if(a2(dy[dw])){dy.splice(dw,1);dw--}else{cg.push(dy[dw])}}if(!dy||!dy.length){return[]}b7(dz);var dA=[];for(dw=0;dw<dy.length;dw++){dx=cz(w.buildImpressionRequestParams(dy[dw].name,dy[dw].piece,dy[dw].target),undefined,"contentImpressions");if(dx){dA.push(dx)}}return dA}function cJ(dx){var dw=w.collectContent(dx);return bE(dw,dx)}function bf(dx){if(!dx||!dx.length){return[]}var dw;for(dw=0;dw<dx.length;dw++){if(!w.isNodeVisible(dx[dw])){dx.splice(dw,1);dw--}}if(!dx||!dx.length){return[]}return cJ(dx)}function aK(dy,dw,dx){var dz=w.buildImpressionRequestParams(dy,dw,dx);return cz(dz,null,"contentImpression")}function dn(dz,dx){if(!dz){return
+}var dw=w.findParentContentNode(dz);var dy=w.buildContentBlock(dw);if(!dy){return}if(!dx){dx="Unknown"}return aU(dx,dy.name,dy.piece,dy.target)}function cZ(dx,dz,dw,dy){return"e_c="+t(dx)+"&e_a="+t(dz)+(M(dw)?"&e_n="+t(dw):"")+(M(dy)?"&e_v="+t(dy):"")+"&ca=1"}function ax(dy,dA,dw,dz,dC,dB){if(!ac(dy)||!ac(dA)){ao("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var dx=cz(cZ(dy,dA,dw,dz),dC,"event");bM(dx,bQ,dB)}function ce(dw,dz,dx,dA){var dy=cz("search="+t(dw)+(dz?"&search_cat="+t(dz):"")+(M(dx)?"&search_count="+dx:""),dA,"sitesearch");bM(dy,bQ)}function c3(dw,dA,dz,dy){var dx=cz("idgoal="+dw+(dA?"&revenue="+dA:""),dz,"goal");bM(dx,bQ,dy)}function dd(dz,dw,dD,dC,dy){var dB=dw+"="+t(b8(dz));var dx=cC(dy,"click",dz);if(dx){dB+="&"+dx}var dA=cz(dB,dD,"link");bM(dA,bQ,dC)}function b0(dx,dw){if(dx!==""){return dx+dw.charAt(0).toUpperCase()+dw.slice(1)}return dw}function cm(dB){var dA,dw,dz=["","webkit","ms","moz"],dy;
+if(!bk){for(dw=0;dw<dz.length;dw++){dy=dz[dw];if(Object.prototype.hasOwnProperty.call(J,b0(dy,"hidden"))){if(J[b0(dy,"visibilityState")]==="prerender"){dA=true}break}}}if(dA){ar(J,dy+"visibilitychange",function dx(){J.removeEventListener(dy+"visibilitychange",dx,false);dB()});return}dB()}function by(){var dx=bP.getVisitorId();var dw=aO();return dx+dw}function cp(dw){if(!dw){return}if(!ai.hasNodeAttribute(dw,"href")){return}var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx||aZ(dx)){return}if(!bP.getVisitorId()){return}dx=j(dx,az);var dy=by();dx=I(dx,az,dy);ai.setAnyAttribute(dw,"href",dx)}function br(dz){var dA=ai.getAttributeValueFromNode(dz,"href");if(!dA){return false}dA=String(dA);var dx=dA.indexOf("//")===0||dA.indexOf("http://")===0||dA.indexOf("https://")===0;if(!dx){return false}var dw=dz.pathname||cr(dz.href);var dy=(dz.hostname||d(dz.href)).toLowerCase();if(aw(dy,dw)){if(!cR(c4,O(dy))){return true}return false}return false}function cQ(dw){var dx=dp(dw);if(dx&&dx.type){dx.href=p(dx.href);
+dd(dx.href,dx.type,undefined,null,dw);return}if(cX){dw=ay(dw);if(br(dw)){cp(dw)}}}function cE(){return J.all&&!J.addEventListener}function c5(dw){var dy=dw.which;var dx=(typeof dw.button);if(!dy&&dx!=="undefined"){if(cE()){if(dw.button&1){dy=1}else{if(dw.button&2){dy=3}else{if(dw.button&4){dy=2}}}}else{if(dw.button===0||dw.button==="0"){dy=1}else{if(dw.button&1){dy=2}else{if(dw.button&2){dy=3}}}}}return dy}function bZ(dw){switch(c5(dw)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dw){return dw.target||dw.srcElement}function c6(dw){return dw==="A"||dw==="AREA"}function aG(dw){function dx(dz){var dA=a7(dz);var dB=dA.nodeName;var dy=a6(bG,"ignore");while(!c6(dB)&&dA&&dA.parentNode){dA=dA.parentNode;dB=dA.nodeName}if(dA&&c6(dB)&&!dy.test(dA.className)){return dA}}return function(dA){dA=dA||W.event;var dB=dx(dA);if(!dB){return}var dz=bZ(dA);if(dA.type==="click"){var dy=false;if(dw&&dz==="middle"){dy=true}if(dB&&!dy){cQ(dB)}}else{if(dA.type==="mousedown"){if(dz==="middle"&&dB){aW=dz;
+bI=dB}else{aW=bI=null}}else{if(dA.type==="mouseup"){if(dz===aW&&dB===bI){cQ(dB)}aW=bI=null}else{if(dA.type==="contextmenu"){cQ(dB)}}}}}}function av(dz,dy,dw){var dx=typeof dy;if(dx==="undefined"){dy=true}ar(dz,"click",aG(dy),dw);if(dy){ar(dz,"mouseup",aG(dy),dw);ar(dz,"mousedown",aG(dy),dw);ar(dz,"contextmenu",aG(dy),dw)}}function aX(dx,dA,dB){if(ck){return true}ck=true;var dC=false;var dz,dy;function dw(){dC=true}n(function(){function dD(dF){setTimeout(function(){if(!ck){return}dC=false;dB.trackVisibleContentImpressions();dD(dF)},dF)}function dE(dF){setTimeout(function(){if(!ck){return}if(dC){dC=false;dB.trackVisibleContentImpressions()}dE(dF)},dF)}if(dx){dz=["scroll","resize"];for(dy=0;dy<dz.length;dy++){if(J.addEventListener){J.addEventListener(dz[dy],dw,false)}else{W.attachEvent("on"+dz[dy],dw)}}dE(100)}if(dA&&dA>0){dA=parseInt(dA,10);dD(dA)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dw=this.requests;this.requests=[];if(dw.length===1){bM(dw[0],bQ)
+}else{ds(dw,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(dx){if(!this.canQueue()){ds(dx,bQ);return}var dw;for(dw=0;dw<dx.length;dw++){this.push(dx[dw])}},push:function(dw){if(!dw){return}if(!this.canQueue()){bM(dw,bQ);return}bK.requests.push(dw);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var dx="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,dx)){b[dx]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cY()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]
+};this.setTrackerUrl=function(dw){aI=dw};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dy,dx){if(!M(dy)||null===dy){dy=this.getTrackerUrl()}var dw=new T(dy,dx);L.push(dw);u.trigger("TrackerAdded",[this]);return dw};this.getSiteId=function(){return cc};this.setSiteId=function(dw){b9(dw)};this.resetUserId=function(){bF=""};this.setUserId=function(dw){if(ac(dw)){bF=dw}};this.setVisitorId=function(dx){var dw=/[0-9A-Fa-f]{16}/g;if(x(dx)&&dw.test(dx)){bU=dx}else{ao("Invalid visitorId set"+dx)}};this.getUserId=function(){return bF};this.setCustomData=function(dw,dx){if(Z(dw)){at=dw}else{if(!at){at={}}at[dw]=dx}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dw){ch=dw};this.appendToTrackingUrl=function(dw){db=dw};this.getRequest=function(dw){return cz(dw)};this.addPlugin=function(dw,dx){b[dw]=dx};this.setCustomDimension=function(dw,dx){dw=parseInt(dw,10);
+if(dw>0){if(!M(dx)){dx=""}if(!x(dx)){dx=String(dx)}bt[dw]=dx}};this.getCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0&&Object.prototype.hasOwnProperty.call(bt,dw)){return bt[dw]}};this.deleteCustomDimension=function(dw){dw=parseInt(dw,10);if(dw>0){delete bt[dw]}};this.setCustomVariable=function(dx,dw,dA,dy){var dz;if(!M(dy)){dy="visit"}if(!M(dw)){return}if(!M(dA)){dA=""}if(dx>0){dw=!x(dw)?String(dw):dw;dA=!x(dA)?String(dA):dA;dz=[dw.slice(0,bA),dA.slice(0,bA)];if(dy==="visit"||dy===2){cP();aV[dx]=dz}else{if(dy==="page"||dy===3){b2[dx]=dz}else{if(dy==="event"){cs[dx]=dz}}}}};this.getCustomVariable=function(dx,dy){var dw;if(!M(dy)){dy="visit"}if(dy==="page"||dy===3){dw=b2[dx]}else{if(dy==="event"){dw=cs[dx]}else{if(dy==="visit"||dy===2){cP();dw=aV[dx]}}}if(!M(dw)||(dw&&dw[0]==="")){return false}return dw};this.deleteCustomVariable=function(dw,dx){if(this.getCustomVariable(dw,dx)){this.setCustomVariable(dw,"","",dx)}};this.deleteCustomVariables=function(dw){if(dw==="page"||dw===3){b2={}
+}else{if(dw==="event"){cs={}}else{if(dw==="visit"||dw===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dw){bQ=dw};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dw){if(x(dw)){dw=dw.split("|")}di=dw};this.addDownloadExtensions=function(dx){var dw;if(x(dx)){dx=dx.split("|")}for(dw=0;dw<dx.length;dw++){di.push(dx[dw])}};this.removeDownloadExtensions=function(dy){var dx,dw=[];if(x(dy)){dy=dy.split("|")}for(dx=0;dx<di.length;dx++){if(P(dy,di[dx])===-1){dw.push(di[dx])}}di=dw};this.setDomains=function(dw){aC=x(dw)?[dw]:dw;var dA=false,dy=0,dx;for(dy;dy<aC.length;dy++){dx=String(aC[dy]);if(cR(c4,O(dx))){dA=true;break}var dz=cr(dx);if(dz&&dz!=="/"&&dz!=="/*"){dA=true;break}}if(!dA){aC.push(c4)}};this.setExcludedReferrers=function(dw){cG=x(dw)?[dw]:dw};this.enableCrossDomainLinking=function(){cX=true};this.disableCrossDomainLinking=function(){cX=false};this.isCrossDomainLinkingEnabled=function(){return cX
+};this.setCrossDomainLinkingTimeout=function(dw){a5=dw};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dw){bG=x(dw)?[dw]:dw};this.setRequestMethod=function(dw){if(dw){dm=String(dw).toUpperCase()}else{dm=cn}if(dm==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dw){cF=dw||aM};this.setGenerationTimeMs=function(dw){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dA,dC,dB,dx,dD,dy){var dz={pf_net:dA,pf_srv:dC,pf_tfr:dB,pf_dm1:dx,pf_dm2:dD,pf_onl:dy};try{dz=Q(dz,M);dz=B(dz);ct=l(dz);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dw){ao("setPagePerformanceTiming: "+dw.toString())}};this.setReferrerUrl=function(dw){bu=dw};this.setCustomUrl=function(dw){ba=b1(bT,dw)
+};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dw){bp=dw};this.setPageViewId=function(dw){aQ=dw;bH=true};this.setAPIUrl=function(dw){bO=dw};this.setDownloadClasses=function(dw){bR=x(dw)?[dw]:dw};this.setLinkClasses=function(dw){be=x(dw)?[dw]:dw};this.setCampaignNameKey=function(dw){cw=x(dw)?[dw]:dw};this.setCampaignKeywordKey=function(dw){bN=x(dw)?[dw]:dw};this.discardHashTag=function(dw){bV=dw};this.setCookieNamePrefix=function(dw){bq=dw;if(aV){aV=b3()}};this.setCookieDomain=function(dw){var dx=O(dw);if(!bs&&!bD(dx)){ao("Can't write cookie on domain "+dw)}else{c9=dx;bo()}};this.setExcludedQueryParams=function(dw){co=x(dw)?[dw]:dw};this.getCookieDomain=function(){return c9};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dy,dx,dw){if(!dy){throw new Error("Missing cookie name")}if(!M(dw)){dw=cu}bB.push(dy);dr(aY(dy),dx,dw,bw,c9,bY,aN)};this.getCookie=function(dx){var dw=aH(aY(dx));if(dw===0){return null}return dw};this.setCookiePath=function(dw){bw=dw;
+bo()};this.getCookiePath=function(dw){return bw};this.setVisitorCookieTimeout=function(dw){cU=dw*1000};this.setSessionCookieTimeout=function(dw){cu=dw*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dw){dh=dw*1000};this.setConversionAttributionFirstReferrer=function(dw){bC=dw};this.setSecureCookie=function(dw){if(dw&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dw};this.setCookieSameSite=function(dw){dw=String(dw);dw=dw.charAt(0).toUpperCase()+dw.toLowerCase().slice(1);if(dw!=="None"&&dw!=="Lax"&&dw!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dw==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dw="Lax"}}aN=dw};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!c0){bs=false;
+c8=true;if(cc&&aA){aR();var dw=cz("ping=1",null,"ping");bM(dw,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cN)};this.forgetCookieConsentGiven=function(){b5(cN,bw,c9);this.disableCookies()};this.rememberCookieConsentGiven=function(dx){if(dx){dx=dx*60*60*1000}else{dx=30*365*24*60*60*1000}this.setCookieConsentGiven();var dw=new Date().getTime();dr(cN,dw,dx,bw,c9,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(dx){var dw=g.doNotTrack||g.msDoNotTrack;c0=dx&&(dw==="yes"||dw==="1");if(c0){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c7=true};this.disableAlwaysUseSendBeacon=function(){c7=false};this.addListener=function(dx,dw){av(dx,dw,false)};this.enableLinkTracking=function(dx){if(dk){return}dk=true;var dw=this;q(function(){au=true;var dy=J.body;av(dy,dx,true)})};this.enableJSErrorTracking=function(){if(c2){return}c2=true;
+var dw=W.onerror;W.onerror=function(dB,dz,dy,dA,dx){cm(function(){var dC="JavaScript Errors";var dD=dz+":"+dy;if(dA){dD+=":"+dA}if(P(cA,dC+dD+dB)===-1){cA.push(dC+dD+dB);ax(dC,dD,dB)}});if(dw){return dw(dB,dz,dy,dA,dx)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dw){dw=Math.max(dw||15,5);bb=dw*1000;if(da!==null){dt()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dw){if(W.location.protocol==="file:"){W.location=dw}};this.setCountPreRendered=function(dw){bk=dw};this.trackGoal=function(dw,dz,dy,dx){cm(function(){c3(dw,dz,dy,dx)})};this.trackLink=function(dx,dw,dz,dy){cm(function(){dd(dx,dw,dz,dy)
+})};this.getNumTrackedPageViews=function(){return cy};this.trackPageView=function(dw,dy,dx){cg=[];cV=[];cA=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cy++;b6(dw,dy,dx)})}};this.disableBrowserFeatureDetection=function(){c8=false};this.enableBrowserFeatureDetection=function(){c8=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dw=w.findContentNodes();var dx=cJ(dw);bK.pushMultiple(dx)})})};this.trackVisibleContentImpressions=function(dw,dx){if(R(cc)){return}if(!M(dw)){dw=true}if(!M(dx)){dx=750}aX(dw,dx,this);cm(function(){n(function(){var dy=w.findContentNodes();var dz=bf(dy);bK.pushMultiple(dz)})})};this.trackContentImpression=function(dy,dw,dx){if(R(cc)){return}dy=a(dy);dw=a(dw);dx=a(dx);if(!dy){return}dw=dw||"Unknown";cm(function(){var dz=aK(dy,dw,dx);bK.push(dz)})};this.trackContentImpressionsWithinNode=function(dw){if(R(cc)||!dw){return}cm(function(){if(ck){n(function(){var dx=w.findContentNodesWithinNode(dw);var dy=bf(dx);
+bK.pushMultiple(dy)})}else{q(function(){var dx=w.findContentNodesWithinNode(dw);var dy=cJ(dx);bK.pushMultiple(dy)})}})};this.trackContentInteraction=function(dy,dz,dw,dx){if(R(cc)){return}dy=a(dy);dz=a(dz);dw=a(dw);dx=a(dx);if(!dy||!dz){return}dw=dw||"Unknown";cm(function(){var dA=aU(dy,dz,dw,dx);if(dA){bK.push(dA)}})};this.trackContentInteractionNode=function(dy,dx){if(R(cc)||!dy){return}var dw=null;cm(function(){dw=dn(dy,dx);if(dw){bK.push(dw)}});return dw};this.logAllContentBlocksOnPage=function(){var dy=w.findContentNodes();var dw=w.collectContent(dy);var dx=typeof console;if(dx!=="undefined"&&console&&console.log){console.log(dw)}};this.trackEvent=function(dx,dz,dw,dy,dB,dA){cm(function(){ax(dx,dz,dw,dy,dB,dA)})};this.trackSiteSearch=function(dw,dy,dx,dz){cg=[];cm(function(){ce(dw,dy,dx,dz)})};this.setEcommerceView=function(dA,dw,dy,dx){cB={};if(ac(dy)){dy=String(dy)}if(!M(dy)||dy===null||dy===false||!dy.length){dy=""}else{if(dy instanceof Array){dy=W.JSON.stringify(dy)}}var dz="_pkc";
+cB[dz]=dy;if(M(dx)&&dx!==null&&dx!==false&&String(dx).length){dz="_pkp";cB[dz]=dx}if(!ac(dA)&&!ac(dw)){return}if(ac(dA)){dz="_pks";cB[dz]=dA}if(!ac(dw)){dw=""}dz="_pkn";cB[dz]=dw};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(dc))};this.addEcommerceItem=function(dA,dw,dy,dx,dz){if(ac(dA)){dc[dA]=[String(dA),dw,dy,dx,dz]}};this.removeEcommerceItem=function(dw){if(ac(dw)){dw=String(dw);delete dc[dw]}};this.clearEcommerceCart=function(){dc={}};this.trackEcommerceOrder=function(dw,dA,dz,dy,dx,dB){b4(dw,dA,dz,dy,dx,dB)};this.trackEcommerceCartUpdate=function(dw){bz(dw)};this.trackRequest=function(dx,dz,dy,dw){cm(function(){var dA=cz(dx,dz,dw);bM(dA,bQ,dy)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dw){if(dw<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dw};this.queueRequest=function(dw){cm(function(){var dx=cz(dw);
+bK.push(dx)})};this.isConsentRequired=function(){return cK};this.getRememberedConsent=function(){var dw=aH(bj);if(aH(cW)){if(dw){b5(bj,bw,c9)}return null}if(!dw||dw===0){return null}return dw};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cK=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(dx){bJ=true;c8=true;b5(cW,bw,c9);var dy,dw;for(dy=0;dy<cV.length;dy++){dw=typeof cV[dy];if(dw==="string"){bM(cV[dy],bQ)}else{if(dw==="object"){ds(cV[dy],bQ)}}}cV=[];if(!M(dx)||dx){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dy){if(dy){dy=dy*60*60*1000}else{dy=30*365*24*60*60*1000}var dw=true;this.setConsentGiven(dw);var dx=new Date().getTime();dr(bj,dx,dy,bw,c9,bY,aN)};this.forgetConsentGiven=function(){var dw=30*365*24*60*60*1000;b5(bj,bw,c9);dr(cW,new Date().getTime(),dw,bw,c9,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
+};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR();dl()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams","setExcludedReferrers"];
+function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"visibilitychange",function(){if(m){return}if(J.visibilityState==="hidden"){ag("unload")}},false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
+}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
+}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
/*!!! pluginTrackerHook */
-(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()
-}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)
-}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
+(function(){function b(){if("object"!==typeof _paq){return false}var c=typeof _paq.length;if("undefined"===c){return false}return !!_paq.length}if(window&&"object"===typeof window.matomoPluginAsyncInit&&window.matomoPluginAsyncInit.length){var a=0;
+for(a;a<window.matomoPluginAsyncInit.length;a++){if(typeof window.matomoPluginAsyncInit[a]==="function"){window.matomoPluginAsyncInit[a]()}}}if(window&&window.piwikAsyncInit){window.piwikAsyncInit()}if(window&&window.matomoAsyncInit){window.matomoAsyncInit()}if(!window.Matomo.getAsyncTrackers().length){if(b()){window.Matomo.addTracker()}else{_paq={push:function(c){var d=typeof console;if(d!=="undefined"&&console&&console.error){console.error("_paq.push() was used but Matomo tracker was not initialized before the matomo.js file was loaded. Make sure to configure the tracker via _paq.push before loading matomo.js. Alternatively, you can create a tracker via Matomo.addTracker() manually and then use _paq.push but it may not fully work as tracker methods may not be executed in the correct order.",c)}}}}}window.Matomo.trigger("MatomoInitialized",[]);window.Matomo.initialized=true}());(function(){var a=(typeof window.AnalyticsTracker);if(a==="undefined"){window.AnalyticsTracker=window.Matomo}}());
+if(typeof window.piwik_log!=="function"){window.piwik_log=function(c,e,g,f){function b(h){try{if(window["piwik_"+h]){return window["piwik_"+h]}}catch(i){}return}var d,a=window.Matomo.getTracker(g,e);a.setDocumentTitle(c);a.setCustomData(f);d=b("tracker_pause");if(d){a.setLinkTrackingTimer(d)}d=b("download_extensions");if(d){a.setDownloadExtensions(d)}d=b("hosts_alias");if(d){a.setDomains(d)}d=b("ignore_classes");if(d){a.setIgnoreClasses(d)}a.trackPageView();if(b("install_tracker")){piwik_track=function(i,j,k,h){a.setSiteId(j);a.setTrackerUrl(k);a.trackLink(i,h)};a.enableLinkTracking()}}}
/*!! @license-end */; \ No newline at end of file
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
index d8162b2447..cf2e6107c0 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
@@ -1018,58 +1018,58 @@ SmtpSettingsvue_type_script_lang_ts.render = SmtpSettingsvue_type_template_id_a9
},
directiveName: 'matomoSmtpSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=589b17b8
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_1 = {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1 = {
id: "js-code-options"
};
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_4 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_5 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_8 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_11 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",
target: "_blank",
rel: "noopener"
}, "WordPress", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",
target: "_blank",
rel: "noopener"
}, "Squarespace", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",
target: "_blank",
rel: "noopener"
}, "Wix", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/how-to-install/faq_19424/",
@@ -1195,7 +1195,7 @@ var _hoisted_58 = {
var _hoisted_59 = {
class: "col s12"
};
-function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cache, $props, $setup, $data, $options) {
+function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -1207,15 +1207,15 @@ function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cach
"content-title": _ctx.translate('CoreAdminHome_JavaScriptTracking')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro3a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(' ' + _ctx.jsTrackingIntro3b)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro4a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro5)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_589b17b8_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "site",
name: "js-tracker-website",
class: "jsTrackingCodeWebsite",
@@ -1414,7 +1414,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render(_ctx, _cach
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=589b17b8
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=script&lang=ts
@@ -1454,6 +1454,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
isLoading: false,
siteUrls: {},
siteExcludedQueryParams: {},
+ siteExcludedReferrers: {},
crossDomain: false,
groupByDomain: false,
trackAllAliases: false,
@@ -1523,6 +1524,21 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
}));
}
+ if (!this.siteExcludedReferrers[idSite]) {
+ this.isLoading = true;
+ promises.push(external_CoreHome_["AjaxHelper"].fetch({
+ module: 'API',
+ method: 'SitesManager.getExcludedReferrers',
+ idSite: idSite,
+ filter_limit: '-1'
+ }).then(function (data) {
+ _this.siteExcludedReferrers[idSite] = [];
+ Object.values(data || []).forEach(function (referrer) {
+ _this.siteExcludedReferrers[idSite].push(referrer.replace(/^https?:\/\//, ''));
+ });
+ }));
+ }
+
Promise.all(promises).then(function () {
_this.isLoading = false;
@@ -1570,6 +1586,10 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
params.excludedQueryParams = this.siteExcludedQueryParams[site.id];
}
+ if (this.siteExcludedReferrers[site.id]) {
+ params.excludedReferrers = this.siteExcludedReferrers[site.id];
+ }
+
if (this.useCustomCampaignParams) {
params.customCampaignNameQueryParam = this.customCampaignName;
params.customCampaignKeywordParam = this.customCampaignKeyword;
@@ -1694,7 +1714,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
-JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_589b17b8_render
+JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render
/* harmony default export */ var JsTrackingCodeGenerator = (JsTrackingCodeGeneratorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.adapter.ts
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
index 43ed78a9bb..ca6d66fbb6 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
@@ -1,28 +1,28 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},U={key:0,class:"alert alert-warning uploaderror"},x={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},x={key:0,class:"alert alert-warning uploaderror"},U={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",U,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",x,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
+ */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",x,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",U,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],Ue={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},xe={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
+ */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],xe={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},Ue={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
+ */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},siteExcludedReferrers:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),this.siteExcludedReferrers[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getExcludedReferrers",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedReferrers[n]=[],Object.values(e||[]).forEach((function(e){t.siteExcludedReferrers[n].push(e.replace(/^https?:\/\//,""))}))})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.siteExcludedReferrers[t.id]&&(n.excludedReferrers=this.siteExcludedReferrers[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,Ut=Lt.$,xt=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(xt).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=Ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
+ */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,xt=Lt.$,Ut=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(Ut).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=xt(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
index 5fc37e32f1..ba03040ff3 100644
--- a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
+++ b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
@@ -304,6 +304,7 @@ interface JsTrackingCodeGeneratorState {
isLoading: boolean;
siteUrls: Record<string, string[]>;
siteExcludedQueryParams: Record<string, string[]>,
+ siteExcludedReferrers: Record<string, string[]>,
crossDomain: boolean;
groupByDomain: boolean;
trackAllAliases: boolean;
@@ -356,6 +357,7 @@ export default defineComponent({
isLoading: false,
siteUrls: {},
siteExcludedQueryParams: {},
+ siteExcludedReferrers: {},
crossDomain: false,
groupByDomain: false,
trackAllAliases: false,
@@ -431,6 +433,24 @@ export default defineComponent({
);
}
+ if (!this.siteExcludedReferrers[idSite]) {
+ this.isLoading = true;
+
+ promises.push(
+ AjaxHelper.fetch({
+ module: 'API',
+ method: 'SitesManager.getExcludedReferrers',
+ idSite,
+ filter_limit: '-1',
+ }).then((data) => {
+ this.siteExcludedReferrers[idSite] = [];
+ Object.values(data || []).forEach((referrer: unknown) => {
+ this.siteExcludedReferrers[idSite].push((referrer as string).replace(/^https?:\/\//, ''));
+ });
+ }),
+ );
+ }
+
Promise.all(promises).then(() => {
this.isLoading = false;
this.updateCurrentSiteInfo();
@@ -481,6 +501,10 @@ export default defineComponent({
params.excludedQueryParams = this.siteExcludedQueryParams[site.id];
}
+ if (this.siteExcludedReferrers[site.id]) {
+ params.excludedReferrers = this.siteExcludedReferrers[site.id];
+ }
+
if (this.useCustomCampaignParams) {
params.customCampaignNameQueryParam = this.customCampaignName;
params.customCampaignKeywordParam = this.customCampaignKeyword;
diff --git a/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png b/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
index 0376c5bc8c..86e25d3d79 100644
--- a/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
+++ b/plugins/IntranetMeasurable/tests/UI/expected-screenshots/IntranetMeasurable_intranet_create.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d6a1a763044d093551dfa0ce23175812cb07f8a2c488d15423e0e435416fb9e5
-size 301789
+oid sha256:531fb5e2454ea22c51dc0abb2858953c826cec073069b033cae2e0507c1f6824
+size 363130
diff --git a/plugins/Referrers/Columns/Base.php b/plugins/Referrers/Columns/Base.php
index a27aa925e2..0d9a658f79 100644
--- a/plugins/Referrers/Columns/Base.php
+++ b/plugins/Referrers/Columns/Base.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,9 +7,11 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\Referrers\Columns;
use Piwik\Common;
+use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Piwik;
use Piwik\Plugin\Dimension\VisitDimension;
use Piwik\Plugins\Referrers\SearchEngine as SearchEngineDetection;
@@ -18,12 +21,10 @@ use Piwik\Tracker\Cache;
use Piwik\Tracker\PageUrl;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
-use Piwik\Tracker\Action;
use Piwik\UrlHelper;
abstract class Base extends VisitDimension
{
-
// @see detect*() referrer methods
protected $typeReferrerAnalyzed;
protected $nameReferrerAnalyzed;
@@ -71,16 +72,22 @@ abstract class Base extends VisitDimension
{
$this->idsite = $idSite;
- // default values for the referer_* fields
$referrerUrl = Common::unsanitizeInputValue($referrerUrl);
- if (!empty($referrerUrl)
- && !UrlHelper::isLookLikeUrl($referrerUrl)
+
+ // Ignore referrer url if it doesn't look like a URL or is excluded in settings
+ if (
+ !empty($referrerUrl)
+ && (
+ !UrlHelper::isLookLikeUrl($referrerUrl)
+ || $this->isReferrerExcluded($referrerUrl)
+ )
) {
$referrerUrl = '';
}
$currentUrl = PageUrl::cleanupUrl($currentUrl);
+ // default values for the referer_* fields
$this->referrerUrl = $referrerUrl;
$this->referrerUrlParse = @parse_url($this->referrerUrl);
$this->currentUrlParse = @parse_url($currentUrl);
@@ -96,7 +103,8 @@ abstract class Base extends VisitDimension
$referrerDetected = $this->detectReferrerCampaign($request, $visitor);
if (!$referrerDetected) {
- if ($this->detectReferrerDirectEntry($request)
+ if (
+ $this->detectReferrerDirectEntry($request)
|| $this->detectReferrerSearchEngine()
|| $this->detectReferrerSocialNetwork()
) {
@@ -121,12 +129,12 @@ abstract class Base extends VisitDimension
$this->excludeQueryParamsFromReferrerUrl();
- $referrerInformation = array(
+ $referrerInformation = [
'referer_type' => $this->typeReferrerAnalyzed,
'referer_name' => $this->nameReferrerAnalyzed,
'referer_keyword' => $this->keywordReferrerAnalyzed,
'referer_url' => $this->referrerUrl,
- );
+ ];
if (!empty($referrerInformation['referer_name'])) {
$referrerInformation['referer_name'] = $this->truncateReferrerName($referrerInformation['referer_name']);
@@ -139,6 +147,46 @@ abstract class Base extends VisitDimension
return $referrerInformation;
}
+ protected function getExcludedReferrers($idSite): array
+ {
+ try {
+ $attributes = Cache::getCacheWebsiteAttributes($idSite);
+
+ if (isset($attributes['excluded_referrers'])) {
+ return $attributes['excluded_referrers'];
+ }
+ } catch (UnexpectedWebsiteFoundException $e) {
+ $cached = Cache::getCacheGeneral();
+ if (isset($cached['global_excluded_referrers'])) {
+ return $cached['global_excluded_referrers'];
+ }
+ }
+
+ return [];
+ }
+
+ protected function isReferrerExcluded(string $referrerUrl): bool
+ {
+ $urlsByHost = [];
+ $parsedReferrer = @parse_url($referrerUrl);
+
+ $excludedUrls = new SiteUrls();
+ $excludedReferrers = $this->getExcludedReferrers($this->idsite);
+ foreach ($excludedReferrers as $excludedReferrer) {
+ // ensure referrer is prefixed with protocol, so a parse_url works
+ $excludedReferrer = 'https://' . preg_replace('/^https?:\/\//', '', $excludedReferrer);
+ $excludedUrls->addUrlByHost($urlsByHost, $this->idsite, $excludedReferrer);
+ }
+
+ $matchingSites = $excludedUrls->getIdSitesMatchingUrl($parsedReferrer, $urlsByHost);
+
+ if (is_array($matchingSites) && in_array($this->idsite, $matchingSites)) {
+ return true;
+ }
+
+ return false;
+ }
+
protected function excludeQueryParamsFromReferrerUrl()
{
$parametersToExclude = [];
@@ -236,7 +284,7 @@ abstract class Base extends VisitDimension
* logic.
* @param string referrerUrl The referrer URL from the tracking request.
*/
- Piwik::postEvent('Tracker.detectReferrerSearchEngine', array(&$searchEngineInformation, $this->referrerUrl));
+ Piwik::postEvent('Tracker.detectReferrerSearchEngine', [&$searchEngineInformation, $this->referrerUrl]);
$cachedReferrerSearchEngine[$this->referrerUrl] = $searchEngineInformation;
$cache->save($cacheKey, $cachedReferrerSearchEngine);
@@ -287,7 +335,7 @@ abstract class Base extends VisitDimension
* logic.
* @param string referrerUrl The referrer URL from the tracking request.
*/
- Piwik::postEvent('Tracker.detectReferrerSocialNetwork', array(&$socialNetworkName, $this->referrerUrl));
+ Piwik::postEvent('Tracker.detectReferrerSocialNetwork', [&$socialNetworkName, $this->referrerUrl]);
$cachedReferrerSocialNetworks[$this->referrerUrl] = $socialNetworkName;
$cache->save($cacheKey, $cachedReferrerSocialNetworks);
@@ -334,7 +382,8 @@ abstract class Base extends VisitDimension
protected function detectReferrerCampaignFromLandingUrl()
{
- if (!isset($this->currentUrlParse['query'])
+ if (
+ !isset($this->currentUrlParse['query'])
&& !isset($this->currentUrlParse['fragment'])
) {
return false;
@@ -351,7 +400,8 @@ abstract class Base extends VisitDimension
}
// 2) Detect from fragment #hash
- if (!$found
+ if (
+ !$found
&& isset($this->currentUrlParse['fragment'])
) {
$this->detectCampaignFromString($this->currentUrlParse['fragment']);
@@ -385,7 +435,7 @@ abstract class Base extends VisitDimension
return $cache['allUrlsByHostAndIdSite'];
}
- return array();
+ return [];
}
/**
@@ -433,8 +483,10 @@ abstract class Base extends VisitDimension
protected function detectCampaignKeywordFromReferrerUrl()
{
- if (!empty($this->nameReferrerAnalyzed)
- && !empty($this->keywordReferrerAnalyzed)) {
+ if (
+ !empty($this->nameReferrerAnalyzed)
+ && !empty($this->keywordReferrerAnalyzed)
+ ) {
// keyword is already set, we skip
return true;
}
@@ -448,7 +500,8 @@ abstract class Base extends VisitDimension
}
// Set the keyword, to the hostname found, in a Adsense Referrer URL '&url=' parameter
- if (empty($this->keywordReferrerAnalyzed)
+ if (
+ empty($this->keywordReferrerAnalyzed)
&& !empty($this->referrerUrlParse['query'])
&& !empty($this->referrerHost)
&& (strpos($this->referrerHost, 'googleads') !== false || strpos($this->referrerHost, 'doubleclick') !== false)
@@ -458,7 +511,6 @@ abstract class Base extends VisitDimension
if (!empty($value)) {
$parsedAdsenseReferrerUrl = parse_url($value);
if (!empty($parsedAdsenseReferrerUrl['host'])) {
-
if (empty($this->nameReferrerAnalyzed)) {
$type = $this->getParameterValueFromReferrerUrl('ad_type');
$type = $type ? " ($type)" : '';
@@ -469,7 +521,6 @@ abstract class Base extends VisitDimension
}
}
}
-
}
/**
@@ -530,7 +581,6 @@ abstract class Base extends VisitDimension
/**
* @param Request $request
* @param Visitor $visitor
- * @param Action|null $action
* @return mixed
*/
public function getValueForRecordGoal(Request $request, Visitor $visitor)
@@ -556,7 +606,8 @@ abstract class Base extends VisitDimension
// 0) In some (unknown!?) cases the campaign is not found in the attribution cookie, but the URL ref was found.
// In this case we look up if the current visit is credited to a campaign and will credit this campaign rather than the URL ref (since campaigns have higher priority)
- if (empty($referrerCampaignName)
+ if (
+ empty($referrerCampaignName)
&& $type == Common::REFERRER_TYPE_CAMPAIGN
&& !empty($name)
) {
@@ -570,12 +621,11 @@ abstract class Base extends VisitDimension
Common::printDebug("Campaign information from 1st party cookie is used.");
} // 2) Referrer URL parsing
elseif (!empty($referrerUrl)) {
-
$idSite = $request->getIdSite();
$referrer = $this->getReferrerInformation($referrerUrl, $currentUrl = '', $idSite, $request, $visitor);
// if the parsed referrer is interesting enough, ie. website, social network or search engine
- if (in_array($referrer['referer_type'], array(Common::REFERRER_TYPE_SEARCH_ENGINE, Common::REFERRER_TYPE_WEBSITE, Common::REFERRER_TYPE_SOCIAL_NETWORK))) {
+ if (in_array($referrer['referer_type'], [Common::REFERRER_TYPE_SEARCH_ENGINE, Common::REFERRER_TYPE_WEBSITE, Common::REFERRER_TYPE_SOCIAL_NETWORK])) {
$type = $referrer['referer_type'];
$name = $referrer['referer_name'];
$keyword = $referrer['referer_keyword'];
@@ -590,11 +640,11 @@ abstract class Base extends VisitDimension
$this->setCampaignValuesToLowercase($type, $name, $keyword);
- $fields = array(
+ $fields = [
'referer_type' => $type,
'referer_name' => $name,
'referer_keyword' => $keyword,
- );
+ ];
if (array_key_exists($this->columnName, $fields)) {
return $fields[$this->columnName];
@@ -622,7 +672,7 @@ abstract class Base extends VisitDimension
protected function isReferrerInformationNew(Visitor $visitor, $information)
{
- foreach (array('referer_keyword', 'referer_name', 'referer_type') as $infoName) {
+ foreach (['referer_keyword', 'referer_name', 'referer_type'] as $infoName) {
if ($this->hasReferrerColumnChanged($visitor, $information, $infoName)) {
return true;
}
diff --git a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
index a31044a807..1394eb0e25 100644
--- a/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
+++ b/plugins/Referrers/tests/Integration/Columns/ReferrerTypeTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -34,6 +35,7 @@ class ReferrerTypeTest extends IntegrationTestCase
private $idSite3 = 3;
private $idSite4 = 4;
private $idSite5 = 5;
+ private $idSite6 = 6;
public function setUp(): void
{
@@ -41,16 +43,20 @@ class ReferrerTypeTest extends IntegrationTestCase
Cache::clearCacheGeneral();
+ $this->referrerType = new ReferrerType();
+ }
+
+ protected static function beforeTableDataCached()
+ {
$date = '2012-01-01 00:00:00';
$ecommerce = false;
- Fixture::createWebsite($date, $ecommerce, $name = 'test1', $url = 'http://piwik.org/foo/bar');
- Fixture::createWebsite($date, $ecommerce, $name = 'test2', $url = 'http://piwik.org/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test3', $url = 'http://piwik.xyz/');
- Fixture::createWebsite($date, $ecommerce, $name = 'test4', $url = 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
- Fixture::createWebsite($date, $ecommerce, $name = 'test5', $url = null);
-
- $this->referrerType = new ReferrerType();
+ Fixture::createWebsite($date, $ecommerce, 'test1', 'http://piwik.org/foo/bar');
+ Fixture::createWebsite($date, $ecommerce, 'test2', 'http://piwik.org/');
+ Fixture::createWebsite($date, $ecommerce, 'test3', 'http://piwik.xyz/');
+ Fixture::createWebsite($date, $ecommerce, 'test4', 'http://google.com/subdir/', 1, null, null, null, null, $excludeUnknownUrls = 1);
+ Fixture::createWebsite($date, $ecommerce, 'test5', null);
+ Fixture::createWebsite($date, $ecommerce, 'test6', 'http://matomo.org/', 1, null, null, null, null, null, null, 'http://paypal.com,http://payments.amazon.com/proceed/,.payment.provider');
}
public function tearDown(): void
@@ -64,9 +70,9 @@ class ReferrerTypeTest extends IntegrationTestCase
/**
* @dataProvider getReferrerUrls
*/
- public function test_onNewVisit_shouldDetectCorrectReferrerType($expectedType, $idSite, $url, $referrerUrl)
+ public function testOnNewVisitShouldDetectCorrectReferrerType($expectedType, $idSite, $url, $referrerUrl)
{
- $request = $this->getRequest(array('idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl));
+ $request = $this->getRequest(['idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl]);
$type = $this->referrerType->onNewVisit($request, $this->getNewVisitor(), $action = null);
$this->assertSame($expectedType, $type);
@@ -78,71 +84,80 @@ class ReferrerTypeTest extends IntegrationTestCase
$referrer = 'http://piwik.org';
// $expectedType, $idSite, $url, $referrerUrl
- return array(
+ return [
// domain matches but path does not match for idsite1
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/'),
- // idSite2 matches any piwik.org path so this is a direct entry for it
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/'),
- // idSite3 has different domain so it is coming from different website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer . '/'),
-
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz/'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz?x=5'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/'],
+ // idSite2 matches any piwik.org path, so this is a direct entry for it
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/'],
+ // idSite3 has different domain, so it is coming from different website
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, $url, $referrer . '/'],
+
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz/'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/foo/bar/baz?x=5'],
// /not/xyz belongs to different website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/not/xyz'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/not/xyz'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite1, $url, $referrer . '/not/xyz'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite2, $url, $referrer . '/not/xyz'],
// /foo/bar/baz belongs to different website
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite2, $url, $referrer . '/foo/bar/baz'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite2, $url, $referrer . '/foo/bar/baz'],
// website as it is from different domain anyway
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, $url, $referrer . '/foo/bar/baz'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite3, $url, $referrer . '/foo/bar/baz'],
// should detect campaign independent of domain / path
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite1, $url . '?pk_campaign=test', $referrer),
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite2, $url . '?pk_campaign=test', $referrer),
- array(Common::REFERRER_TYPE_CAMPAIGN, $this->idSite3, $url . '?pk_campaign=test', $referrer),
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite1, $url . '?pk_campaign=test', $referrer],
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite2, $url . '?pk_campaign=test', $referrer],
+ [Common::REFERRER_TYPE_CAMPAIGN, $this->idSite3, $url . '?pk_campaign=test', $referrer],
- array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite3, $url, 'http://google.com/search?q=piwik'),
+ [Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite3, $url, 'http://google.com/search?q=piwik'],
- array(Common::REFERRER_TYPE_SOCIAL_NETWORK, $this->idSite3, $url, 'https://twitter.com/matomo_org'),
+ [Common::REFERRER_TYPE_SOCIAL_NETWORK, $this->idSite3, $url, 'https://twitter.com/matomo_org'],
// testing case for backwards compatibility where url has same domain as urlref but the domain is not known to any website
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com/bar'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com', 'http://example.com/bar'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com/bar'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com/foo', 'http://example.com'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite3, 'http://example.com', 'http://example.com/bar'],
// testing case where domain of referrer is not known to any site but neither is the URL, url != urlref
- array(Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'),
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite3, 'http://example.org', 'http://example.com/bar'],
####### testing specific case:
## - ignore unknown urls is activated for idSite4
// referrer comes from another subdir, but same host => direct entry
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/site', 'http://google.com/base'],
// referrer comes from same subdir and host => direct entry
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'),
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/page', 'http://google.com/subdir/x'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/', 'http://google.com/subdir/?q=test'],
// referrer comes from another subdir, but same host, query matches search engine definition => search engine
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'),
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.com/search?q=test'],
// referrer comes from search engine not matching site
- array(Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test'),
+ [Common::REFERRER_TYPE_SEARCH_ENGINE, $this->idSite4, 'http://google.com/subdir/index.html', 'http://google.fr/search?q=test'],
// site w/o url
- array(Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite5, $url, $referrer . '/'),
- );
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite5, $url, $referrer . '/'],
+
+ ##### testing referrer exclusion
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'http://www.paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://payment.provider/subdir/site'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://custom.payment.provider/'],
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite6, 'https://matomo.org/faq', 'http://shop.paypal.com/subdir/site'],
+ [Common::REFERRER_TYPE_WEBSITE, $this->idSite6, 'https://matomo.org/faq', 'http://payments.amazon.com/'],
+ [Common::REFERRER_TYPE_DIRECT_ENTRY, $this->idSite6, 'https://matomo.org/faq', 'https://payments.amazon.com/proceed/with/payment'],
+ ];
}
/**
* @dataProvider getTestDataForOnExistingVisit
*/
- public function test_onExistingVisit_shouldSometimesOverwriteReferrerInfo($expectedType, $idSite, $url, $referrerUrl, $existingType)
+ public function testOnExistingVisitShouldSometimesOverwriteReferrerInfo($expectedType, $idSite, $url, $referrerUrl, $existingType)
{
- $request = $this->getRequest(array('idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl));
+ $request = $this->getRequest(['idsite' => $idSite, 'url' => $url, 'urlref' => $referrerUrl]);
$visitor = $this->getNewVisitor();
$visitor->setVisitorColumn('referer_type', $existingType);
$type = $this->referrerType->onExistingVisit($request, $visitor, $action = null);
@@ -188,5 +203,4 @@ class ReferrerTypeTest extends IntegrationTestCase
{
return new Visitor(new VisitProperties());
}
-
}
diff --git a/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original b/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
index 1a7eac1d06..5f28f88728 100644
--- a/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
+++ b/plugins/Referrers/tests/System/expected/test_phpSerialized8__Referrers.getReferrerType_year.original
@@ -1 +1 @@
-O:15:"Piwik\DataTable":4:{s:7:"*rows";a:2:{i:0;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:9:{s:5:"label";s:14:"Search Engines";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:0;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:20:"referrerType==search";s:13:"referrer_type";i:2;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}i:1;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:12:{s:5:"label";s:8:"Websites";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:31;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:21:"referrerType==website";s:13:"referrer_type";i:3;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}}s:13:"*summaryRow";N;s:11:"*metadata";a:7:{s:11:"ts_archived";s:19:"today-date-removed-in-tests";s:4:"site";O:10:"Piwik\Site":2:{s:5:"*id";i:1;s:16:"Piwik\Sitesite";a:20:{s:6:"idsite";i:1;s:4:"name";s:10:"Piwik test";s:8:"main_url";s:16:"http://piwik.net";s:10:"ts_created";s:19:"2010-01-31 11:22:33";s:9:"ecommerce";i:0;s:10:"sitesearch";i:1;s:29:"sitesearch_keyword_parameters";s:0:"";s:30:"sitesearch_category_parameters";s:0:"";s:8:"timezone";s:3:"UTC";s:8:"currency";s:3:"USD";s:20:"exclude_unknown_urls";i:0;s:12:"excluded_ips";s:0:"";s:19:"excluded_parameters";s:0:"";s:20:"excluded_user_agents";s:0:"";s:5:"group";s:0:"";s:4:"type";s:7:"website";s:17:"keep_url_fragment";i:0;s:13:"creator_login";s:14:"superUserLogin";s:13:"timezone_name";s:3:"UTC";s:13:"currency_name";s:9:"US Dollar";}}s:6:"period";O:17:"Piwik\Period\Year":1:{s:7:"*date";O:10:"Piwik\Date":2:{s:12:"*timestamp";i:1262304000;s:11:"*timezone";s:3:"UTC";}}s:7:"segment";s:0:"";s:13:"segmentPretty";s:10:"All visits";s:6:"totals";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";s:3:"50%";s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";s:4:"100%";}s:17:"totalsUnformatted";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";d:0.5;s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";d:1;}}s:12:"*totalsRow";N;} \ No newline at end of file
+O:15:"Piwik\DataTable":4:{s:7:"*rows";a:2:{i:0;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:9:{s:5:"label";s:14:"Search Engines";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:0;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:20:"referrerType==search";s:13:"referrer_type";i:2;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}i:1;O:19:"Piwik\DataTable\Row":4:{i:0;i:0;i:1;a:12:{s:5:"label";s:8:"Websites";s:9:"nb_visits";i:31;s:10:"nb_actions";i:31;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:31;s:19:"nb_visits_converted";i:31;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:26:"sum_daily_nb_uniq_visitors";i:31;s:18:"sum_daily_nb_users";i:0;}i:2;a:5:{s:15:"maxVisitsSummed";i:0;s:29:"Piwik\DataTable\Rowmetadata";a:2:{s:7:"segment";s:21:"referrerType==website";s:13:"referrer_type";i:3;}s:37:"Piwik\DataTable\RowisSubtableLoaded";b:0;s:10:"subtableId";N;s:33:"Piwik\DataTable\RowisSummaryRow";b:0;}i:3;N;}}s:13:"*summaryRow";N;s:11:"*metadata";a:7:{s:11:"ts_archived";s:19:"today-date-removed-in-tests";s:4:"site";O:10:"Piwik\Site":2:{s:5:"*id";i:1;s:16:"Piwik\Sitesite";a:21:{s:6:"idsite";i:1;s:4:"name";s:10:"Piwik test";s:8:"main_url";s:16:"http://piwik.net";s:10:"ts_created";s:19:"2010-01-31 11:22:33";s:9:"ecommerce";i:0;s:10:"sitesearch";i:1;s:29:"sitesearch_keyword_parameters";s:0:"";s:30:"sitesearch_category_parameters";s:0:"";s:8:"timezone";s:3:"UTC";s:8:"currency";s:3:"USD";s:20:"exclude_unknown_urls";i:0;s:12:"excluded_ips";s:0:"";s:19:"excluded_parameters";s:0:"";s:20:"excluded_user_agents";s:0:"";s:18:"excluded_referrers";s:0:"";s:5:"group";s:0:"";s:4:"type";s:7:"website";s:17:"keep_url_fragment";i:0;s:13:"creator_login";s:14:"superUserLogin";s:13:"timezone_name";s:3:"UTC";s:13:"currency_name";s:9:"US Dollar";}}s:6:"period";O:17:"Piwik\Period\Year":1:{s:7:"*date";O:10:"Piwik\Date":2:{s:12:"*timestamp";i:1262304000;s:11:"*timezone";s:3:"UTC";}}s:7:"segment";s:0:"";s:13:"segmentPretty";s:10:"All visits";s:6:"totals";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";s:3:"50%";s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";s:4:"100%";}s:17:"totalsUnformatted";a:15:{s:9:"nb_visits";i:62;s:10:"nb_actions";i:62;s:11:"max_actions";d:1;s:16:"sum_visit_length";i:11315;s:12:"bounce_count";i:62;s:19:"nb_visits_converted";i:31;s:26:"sum_daily_nb_uniq_visitors";i:62;s:18:"sum_daily_nb_users";i:0;s:5:"goals";a:2:{s:8:"idgoal=1";a:3:{s:14:"nb_conversions";i:31;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}s:8:"idgoal=2";a:3:{s:14:"nb_conversions";i:62;s:19:"nb_visits_converted";i:31;s:7:"revenue";d:0;}}s:14:"nb_conversions";i:93;s:7:"revenue";d:0;s:15:"conversion_rate";d:0.5;s:20:"nb_actions_per_visit";d:1;s:16:"avg_time_on_site";d:183;s:11:"bounce_rate";d:1;}}s:12:"*totalsRow";N;} \ No newline at end of file
diff --git a/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original b/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
index fa9d34832c..2c278cd091 100644
--- a/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
+++ b/plugins/Referrers/tests/System/expected/test_phpSerialized__Referrers.getReferrerType_year.original
Binary files differ
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index e213ff1c96..4b4b6c6175 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use DateTimeZone;
@@ -14,6 +16,7 @@ use Piwik\Access;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
+use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Intl\Data\Provider\CurrencyDataProvider;
use Matomo\Network\IPUtils;
use Piwik\Option;
@@ -61,6 +64,7 @@ class API extends \Piwik\Plugin\API
const OPTION_SEARCH_KEYWORD_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchKeywordParameters';
const OPTION_SEARCH_CATEGORY_QUERY_PARAMETERS_GLOBAL = 'SitesManager_SearchCategoryParameters';
const OPTION_EXCLUDED_USER_AGENTS_GLOBAL = 'SitesManager_ExcludedUserAgentsGlobal';
+ const OPTION_EXCLUDED_REFERRERS_GLOBAL = 'SitesManager_ExcludedReferrersGlobal';
const OPTION_KEEP_URL_FRAGMENTS_GLOBAL = 'SitesManager_KeepURLFragmentsGlobal';
/**
@@ -106,16 +110,29 @@ class API extends \Piwik\Plugin\API
* @param bool $crossDomain
* @param bool $forceMatomoEndpoint Whether the Matomo endpoint should be forced if Matomo was installed prior 3.7.0.
* @param bool $excludedQueryParams
+ * @param mixed $excludedReferrers array or comma separated string of ignored referrers. Defaults to configured ignored referrers
*
* @return string The Javascript tag ready to be included on the HTML pages
* @throws Exception
*/
- public function getJavascriptTag($idSite, $piwikUrl = '', $mergeSubdomains = false, $groupPageTitlesByDomain = false,
- $mergeAliasUrls = false, $visitorCustomVariables = false, $pageCustomVariables = false,
- $customCampaignNameQueryParam = false, $customCampaignKeywordParam = false,
- $doNotTrack = false, $disableCookies = false, $trackNoScript = false,
- $crossDomain = false, $forceMatomoEndpoint = false, $excludedQueryParams = false)
- {
+ public function getJavascriptTag(
+ $idSite,
+ $piwikUrl = '',
+ $mergeSubdomains = false,
+ $groupPageTitlesByDomain = false,
+ $mergeAliasUrls = false,
+ $visitorCustomVariables = false,
+ $pageCustomVariables = false,
+ $customCampaignNameQueryParam = false,
+ $customCampaignKeywordParam = false,
+ $doNotTrack = false,
+ $disableCookies = false,
+ $trackNoScript = false,
+ $crossDomain = false,
+ $forceMatomoEndpoint = false,
+ $excludedQueryParams = false,
+ $excludedReferrers = false
+ ) {
Piwik::checkUserHasViewAccess($idSite);
if (empty($piwikUrl)) {
@@ -140,13 +157,25 @@ class API extends \Piwik\Plugin\API
$generator->forceMatomoEndpoint();
}
- $code = $generator->generate($idSite, $piwikUrl, $mergeSubdomains, $groupPageTitlesByDomain,
- $mergeAliasUrls, $visitorCustomVariables, $pageCustomVariables,
- $customCampaignNameQueryParam, $customCampaignKeywordParam,
- $doNotTrack, $disableCookies, $trackNoScript, $crossDomain,
- $excludedQueryParams);
- $code = str_replace(array('<br>', '<br />', '<br/>'), '', $code);
- return $code;
+ $code = $generator->generate(
+ $idSite,
+ $piwikUrl,
+ $mergeSubdomains,
+ $groupPageTitlesByDomain,
+ $mergeAliasUrls,
+ $visitorCustomVariables,
+ $pageCustomVariables,
+ $customCampaignNameQueryParam,
+ $customCampaignKeywordParam,
+ $doNotTrack,
+ $disableCookies,
+ $trackNoScript,
+ $crossDomain,
+ $excludedQueryParams,
+ $excludedReferrers
+ );
+
+ return str_replace(['<br>', '<br />', '<br/>'], '', $code);
}
/**
@@ -159,9 +188,15 @@ class API extends \Piwik\Plugin\API
* @param bool $forceMatomoEndpoint Whether the Matomo endpoint should be forced if Matomo was installed prior 3.7.0.
* @return string The HTML tracking code.
*/
- public function getImageTrackingCode($idSite, $piwikUrl = '', $actionName = false, $idGoal = false, $revenue = false, $forceMatomoEndpoint = false)
- {
- $urlParams = array('idsite' => $idSite, 'rec' => 1);
+ public function getImageTrackingCode(
+ $idSite,
+ $piwikUrl = '',
+ $actionName = false,
+ $idGoal = false,
+ $revenue = false,
+ $forceMatomoEndpoint = false
+ ) {
+ $urlParams = ['idsite' => $idSite, 'rec' => 1];
if ($actionName !== false) {
$urlParams['action_name'] = urlencode(Common::unsanitizeInputValue($actionName));
@@ -184,7 +219,7 @@ class API extends \Piwik\Plugin\API
* @param array &$urlParams The query parameters used in the <img> element's src
* URL. See Matomo's image tracking docs for more info.
*/
- Piwik::postEvent('SitesManager.getImageTrackingCode', array(&$piwikUrl, &$urlParams));
+ Piwik::postEvent('SitesManager.getImageTrackingCode', [&$piwikUrl, &$urlParams]);
$trackerCodeGenerator = new TrackerCodeGenerator();
if ($forceMatomoEndpoint) {
@@ -192,7 +227,7 @@ class API extends \Piwik\Plugin\API
}
$matomoPhp = $trackerCodeGenerator->getPhpTrackerEndpoint();
- $url = (ProxyHttp::isHttps() ? "https://" : "http://") . rtrim($piwikUrl, '/') . '/'.$matomoPhp.'?' . Url::getQueryStringFromParameters($urlParams);
+ $url = (ProxyHttp::isHttps() ? "https://" : "http://") . rtrim($piwikUrl, '/') . '/' . $matomoPhp . '?' . Url::getQueryStringFromParameters($urlParams);
$html = "<!-- Matomo Image Tracker-->
<img referrerpolicy=\"no-referrer-when-downgrade\" src=\"" . htmlspecialchars($url, ENT_COMPAT, 'UTF-8') . "\" style=\"border:0\" alt=\"\" />
<!-- End Matomo -->";
@@ -290,7 +325,7 @@ class API extends \Piwik\Plugin\API
Piwik::checkUserHasSuperUserAccess();
$sites = $this->getModel()->getAllSites();
- $return = array();
+ $return = [];
foreach ($sites as $site) {
$this->enrichSite($site);
$return[$site['idsite']] = $site;
@@ -314,7 +349,7 @@ class API extends \Piwik\Plugin\API
return $this->getSitesId();
} catch (Exception $e) {
// can be called before Matomo tables are created so return empty
- return array();
+ return [];
}
}
@@ -428,20 +463,20 @@ class API extends \Piwik\Plugin\API
return Access::getInstance()->getSitesIdWithAtLeastViewAccess();
}
- if (!empty($_restrictSitesToLogin)
+ if (
+ !empty($_restrictSitesToLogin)
// Only Super User or logged in user can see viewable sites for a specific login,
// but during scheduled task execution, we sometimes want to restrict sites to
// a different login than the superuser.
&& (Piwik::hasUserSuperUserAccessOrIsTheUser($_restrictSitesToLogin)
|| $scheduler->isRunningTask())
) {
-
if (Piwik::hasTheUserSuperUserAccess($_restrictSitesToLogin)) {
return Access::getInstance()->getSitesIdWithAtLeastViewAccess();
}
$accessRaw = Access::getInstance()->getRawSitesWithSomeViewAccess($_restrictSitesToLogin);
- $sitesId = array();
+ $sitesId = [];
foreach ($accessRaw as $access) {
$sitesId[] = $access['idsite'];
@@ -482,13 +517,13 @@ class API extends \Piwik\Plugin\API
$hostname = str_replace('https://', '', $hostname);
// return all variations of the URL
- return array(
+ return [
$url,
"http://" . $hostname,
"http://www." . $hostname,
"https://" . $hostname,
"https://www." . $hostname
- );
+ ];
}
/**
@@ -528,7 +563,7 @@ class API extends \Piwik\Plugin\API
$ids = $this->getModel()->getSitesFromTimezones($timezones);
- $return = array();
+ $return = [];
foreach ($ids as $id) {
$return[] = $id['idsite'];
}
@@ -583,37 +618,40 @@ class API extends \Piwik\Plugin\API
* @see getKeepURLFragmentsGlobal.
* @param string $type The website type, defaults to "website" if not set.
* @param bool|null $excludeUnknownUrls Track only URL matching one of website URLs
+ * @param string|null $excludedReferrers Comma separated list of hosts/urls to exclude from referrer detection
*
* @return int the website ID created
*/
- public function addSite($siteName,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $group = null,
- $startDate = null,
- $excludedUserAgents = null,
- $keepURLFragments = null,
- $type = null,
- $settingValues = null,
- $excludeUnknownUrls = null)
- {
+ public function addSite(
+ $siteName,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepURLFragments = null,
+ $type = null,
+ $settingValues = null,
+ $excludeUnknownUrls = null,
+ $excludedReferrers = null
+ ) {
Piwik::checkUserHasSuperUserAccess();
SitesManager::dieIfSitesAdminIsDisabled();
$this->checkName($siteName);
if (!isset($settingValues)) {
- $settingValues = array();
+ $settingValues = [];
}
- $coreProperties = array();
+ $coreProperties = [];
$coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('ecommerce', $ecommerce, $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('group', $group, $coreProperties, $settingValues);
@@ -625,6 +663,7 @@ class API extends \Piwik\Plugin\API
$coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents ?? ''), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_referrers', explode(',', $excludedReferrers ?? ''), $coreProperties, $settingValues);
$timezone = trim($timezone ?? '');
if (empty($timezone)) {
@@ -637,7 +676,7 @@ class API extends \Piwik\Plugin\API
}
$this->checkValidCurrency($currency);
- $bind = array('name' => $siteName);
+ $bind = ['name' => $siteName];
$bind['timezone'] = $timezone;
$bind['currency'] = $currency;
$bind['main_url'] = '';
@@ -700,7 +739,7 @@ class API extends \Piwik\Plugin\API
*
* @param int $idSite The ID of the site that was added.
*/
- Piwik::postEvent('SitesManager.addSite.end', array($idSite));
+ Piwik::postEvent('SitesManager.addSite.end', [$idSite]);
return (int) $idSite;
}
@@ -710,23 +749,20 @@ class API extends \Piwik\Plugin\API
$pluginName = 'WebsiteMeasurable';
if (isset($value)) {
-
if (empty($coreProperties[$pluginName])) {
- $coreProperties[$pluginName] = array();
+ $coreProperties[$pluginName] = [];
}
- $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $value);
-
+ $coreProperties[$pluginName][] = ['name' => $fieldName, 'value' => $value];
} elseif (!empty($settingValues[$pluginName])) {
// we check if the value is defined in the setting values instead
foreach ($settingValues[$pluginName] as $key => $setting) {
if ($setting['name'] === $fieldName) {
-
if (empty($coreProperties[$pluginName])) {
- $coreProperties[$pluginName] = array();
+ $coreProperties[$pluginName] = [];
}
- $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $setting['value']);
+ $coreProperties[$pluginName][] = ['name' => $fieldName, 'value' => $setting['value']];
return $coreProperties;
}
}
@@ -811,7 +847,7 @@ class API extends \Piwik\Plugin\API
*
* @param int $idSite The ID of the site being deleted.
*/
- Piwik::postEvent('SitesManager.deleteSite.end', array($idSite));
+ Piwik::postEvent('SitesManager.deleteSite.end', [$idSite]);
}
private function checkValidTimezone($timezone)
@@ -824,13 +860,13 @@ class API extends \Piwik\Plugin\API
}
}
}
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidTimezone', array($timezone)));
+ throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidTimezone', [$timezone]));
}
private function checkValidCurrency($currency)
{
if (!in_array($currency, array_keys($this->getCurrencyList()))) {
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidCurrency', array($currency, "USD, EUR, etc.")));
+ throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidCurrency', [$currency, "USD, EUR, etc."]));
}
}
@@ -853,7 +889,7 @@ class API extends \Piwik\Plugin\API
*
* @param string $excludedIps Comma separated list of IP addresses
* @throws Exception
- * @return array of IPs
+ * @return string Comma separated list of IP addresses
*/
private function checkAndReturnExcludedIps($excludedIps)
{
@@ -867,12 +903,16 @@ class API extends \Piwik\Plugin\API
foreach ($ips as $ip) {
if (!$this->isValidIp($ip)) {
- throw new Exception($this->translator->translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
+ throw new Exception(
+ $this->translator->translate(
+ 'SitesManager_ExceptionInvalidIPFormat',
+ [$ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5"]
+ )
+ );
}
}
- $ips = implode(',', $ips);
- return $ips;
+ return implode(',', $ips);
}
/**
@@ -894,7 +934,7 @@ class API extends \Piwik\Plugin\API
}
if (!is_array($urls)) {
- $urls = array($urls);
+ $urls = [$urls];
}
$urlsInit = $this->getSiteUrlsFromId($idSite);
@@ -919,7 +959,7 @@ class API extends \Piwik\Plugin\API
*
* @return int the number of inserted URLs
*/
- public function setSiteAliasUrls($idSite, $urls = array())
+ public function setSiteAliasUrls($idSite, $urls = [])
{
Piwik::checkUserHasAdminAccess($idSite);
@@ -950,7 +990,7 @@ class API extends \Piwik\Plugin\API
return false;
}
- return array(IPUtils::binaryToStringIP($range[0]), IPUtils::binaryToStringIP($range[1]));
+ return [IPUtils::binaryToStringIP($range[0]), IPUtils::binaryToStringIP($range[1])];
}
/**
@@ -1055,6 +1095,75 @@ class API extends \Piwik\Plugin\API
}
/**
+ * Returns the list of urls/hosts that should be ignored when detecting referrers for the given site.
+ *
+ * @return array list of urls/hosts
+ */
+ public function getExcludedReferrers($idSite)
+ {
+ try {
+ $attributes = Cache::getCacheWebsiteAttributes($idSite);
+
+ if (isset($attributes['excluded_referrers'])) {
+ return $attributes['excluded_referrers'];
+ }
+ } catch (UnexpectedWebsiteFoundException $e) {
+ $cached = Cache::getCacheGeneral();
+ if (isset($cached['global_excluded_referrers'])) {
+ return $cached['global_excluded_referrers'];
+ }
+ }
+
+ return [];
+ }
+
+ /**
+ * Returns the global list of urls/hosts that should be ignored when detecting referrers.
+ * If a visitor is coming from a site on this list, it will be treated as direct entry
+ *
+ * @return string Comma separated list of strings
+ */
+ public function getExcludedReferrersGlobal(): string
+ {
+ Piwik::checkUserHasSomeAdminAccess();
+ $exclusion = Option::get(self::OPTION_EXCLUDED_REFERRERS_GLOBAL);
+
+ return is_string($exclusion) ? $exclusion : '';
+ }
+
+ /**
+ * Sets list of urls/hosts that should be ignored when detecting referrers. For more info,
+ * @see getExcludedReferrersGlobal.
+ *
+ * @param string $excludedReferrers Comma separated list of strings. Each element is trimmed,
+ * and empty strings are removed.
+ */
+ public function setGlobalExcludedReferrers(string $excludedReferrers): void
+ {
+ Piwik::checkUserHasSuperUserAccess();
+
+ $excludedUrls = $this->checkAndReturnCommaSeparatedStringList($excludedReferrers);
+
+ foreach (explode(',', $excludedUrls) ?: [] as $url) {
+ // We allow urls to be provided:
+ // - fully qualified like http://example.url/path
+ // - without protocol like example.url/path
+ // - with subdomain wildcard like .example.url/path
+ $prefixedUrl = 'https://' . ltrim(preg_replace('/^https?:\/\//', '', $url), '.');
+ $parsedUrl = @parse_url($prefixedUrl);
+ if (false === $parsedUrl || !UrlHelper::isLookLikeUrl($prefixedUrl)) {
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidUrl', [$url]));
+ }
+ }
+
+ // update option
+ Option::set(self::OPTION_EXCLUDED_REFERRERS_GLOBAL, $excludedUrls);
+
+ // make sure tracker cache will reflect change
+ Cache::deleteTrackerCache();
+ }
+
+ /**
* Returns true if the default behavior is to keep URL fragments when tracking,
* false if otherwise.
*
@@ -1195,31 +1304,34 @@ class API extends \Piwik\Plugin\API
* @param string $type The Website type, default value is "website"
* @param array|null $settingValues JSON serialized settings eg {settingName: settingValue, ...}
* @param bool|null $excludeUnknownUrls Track only URL matching one of website URLs
+ * @param string|null $excludedReferrers Comma separated list of hosts/urls to exclude from referrer detection
* @throws Exception
* @see getKeepURLFragmentsGlobal. If null, the existing value will
* not be modified.
*
* @return bool true on success
*/
- public function updateSite($idSite,
- $siteName = null,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $group = null,
- $startDate = null,
- $excludedUserAgents = null,
- $keepURLFragments = null,
- $type = null,
- $settingValues = null,
- $excludeUnknownUrls = null)
- {
+ public function updateSite(
+ $idSite,
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepURLFragments = null,
+ $type = null,
+ $settingValues = null,
+ $excludeUnknownUrls = null,
+ $excludedReferrers = null
+ ) {
Piwik::checkUserHasAdminAccess($idSite);
SitesManager::dieIfSitesAdminIsDisabled();
@@ -1230,7 +1342,7 @@ class API extends \Piwik\Plugin\API
}
// Build the SQL UPDATE based on specified updates to perform
- $bind = array();
+ $bind = [];
if (!is_null($siteName)) {
$this->checkName($siteName);
@@ -1238,11 +1350,11 @@ class API extends \Piwik\Plugin\API
}
if (!isset($settingValues)) {
- $settingValues = array();
+ $settingValues = [];
}
if (empty($coreProperties)) {
- $coreProperties = array();
+ $coreProperties = [];
}
$coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
@@ -1256,6 +1368,7 @@ class API extends \Piwik\Plugin\API
$coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters ?? ''), $coreProperties, $settingValues);
$coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents ?? ''), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_referrers', explode(',', $excludedReferrers ?? ''), $coreProperties, $settingValues);
if (isset($currency)) {
$currency = trim($currency);
@@ -1267,7 +1380,8 @@ class API extends \Piwik\Plugin\API
$this->checkValidTimezone($timezone);
$bind['timezone'] = $timezone;
}
- if (isset($group)
+ if (
+ isset($group)
&& Piwik::hasUserSuperUserAccess()
) {
$bind['group'] = trim($group);
@@ -1346,7 +1460,7 @@ class API extends \Piwik\Plugin\API
$dataProvider = StaticContainer::get('Piwik\Intl\Data\Provider\CurrencyDataProvider');
$currency = $dataProvider->getCurrencyList();
- $return = array();
+ $return = [];
foreach (array_keys($currency) as $currencyCode) {
$return[$currencyCode] = $this->translator->translate('Intl_Currency_' . $currencyCode) .
' (' . $this->translator->translate('Intl_CurrencySymbol_' . $currencyCode) . ')';
@@ -1393,13 +1507,13 @@ class API extends \Piwik\Plugin\API
public function getTimezonesList()
{
if (!SettingsServer::isTimezoneSupportEnabled()) {
- return array('UTC' => $this->getTimezonesListUTCOffsets());
+ return ['UTC' => $this->getTimezonesListUTCOffsets()];
}
$countries = StaticContainer::get('Piwik\Intl\Data\Provider\RegionDataProvider')->getCountryList();
- $return = array();
- $continents = array();
+ $return = [];
+ $continents = [];
foreach ($countries as $countryCode => $continentCode) {
$countryCode = strtoupper($countryCode);
$timezones = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $countryCode);
@@ -1436,7 +1550,7 @@ class API extends \Piwik\Plugin\API
public function getTimezoneName($timezone, $countryCode = null, $multipleTimezonesInCountry = null)
{
if (substr($timezone, 0, 3) === 'UTC') {
- return $this->translator->translate('SitesManager_Format_Utc', str_replace(array('.25', '.5', '.75'), array(':15', ':30', ':45'), substr($timezone, 3)));
+ return $this->translator->translate('SitesManager_Format_Utc', str_replace(['.25', '.5', '.75'], [':15', ':30', ':45'], substr($timezone, 3)));
}
if (!isset($countryCode)) {
@@ -1463,7 +1577,7 @@ class API extends \Piwik\Plugin\API
$return = $this->translator->translate('Intl_Country_' . $countryCode);
if ($multipleTimezonesInCountry) {
- $translationId = 'Intl_Timezone_' . str_replace(array('_', '/'), array('', '_'), $timezone);
+ $translationId = 'Intl_Timezone_' . str_replace(['_', '/'], ['', '_'], $timezone);
$city = $this->translator->translate($translationId);
// Fall back to English identifier, if translation is missing due to differences in tzdata in different PHP versions.
@@ -1481,10 +1595,10 @@ class API extends \Piwik\Plugin\API
private function getTimezonesListUTCOffsets()
{
// manually add the UTC offsets
- $GmtOffsets = array(-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
- 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14);
+ $GmtOffsets = [-12, -11.5, -11, -10.5, -10, -9.5, -9, -8.5, -8, -7.5, -7, -6.5, -6, -5.5, -5, -4.5, -4, -3.5, -3, -2.5, -2, -1.5, -1, -0.5,
+ 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 5.75, 6, 6.5, 7, 7.5, 8, 8.5, 8.75, 9, 9.5, 10, 10.5, 11, 11.5, 12, 12.75, 13, 13.75, 14];
- $return = array();
+ $return = [];
foreach ($GmtOffsets as $offset) {
$offset = Common::forceDotAsSeparatorForDecimalPoint($offset);
@@ -1520,7 +1634,8 @@ class API extends \Piwik\Plugin\API
private function removeTrailingSlash($url)
{
// if there is a final slash, we take the URL without this slash (expected URL format)
- if (strlen($url) > 5
+ if (
+ strlen($url) > 5
&& $url[strlen($url) - 1] == '/'
) {
$url = substr($url, 0, strlen($url) - 1);
@@ -1576,18 +1691,20 @@ class API extends \Piwik\Plugin\API
$sitesHavingOldGroup = $this->getSitesFromGroup($oldGroupName);
foreach ($sitesHavingOldGroup as $site) {
- $this->updateSite($site['idsite'],
- $siteName = null,
- $urls = null,
- $ecommerce = null,
- $siteSearch = null,
- $searchKeywordParameters = null,
- $searchCategoryParameters = null,
- $excludedIps = null,
- $excludedQueryParameters = null,
- $timezone = null,
- $currency = null,
- $newGroupName);
+ $this->updateSite(
+ $site['idsite'],
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $newGroupName
+ );
}
return true;
@@ -1608,7 +1725,7 @@ class API extends \Piwik\Plugin\API
{
$ids = $this->getSitesIdWithAtLeastViewAccess();
if (empty($ids)) {
- return array();
+ return [];
}
$sites = $this->getModel()->getPatternMatchSites($ids, $pattern, $limit);
@@ -1637,5 +1754,4 @@ class API extends \Piwik\Plugin\API
return SettingsPiwik::getWebsitesCountToDisplay();
}
-
}
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index 79e671a720..197dca845e 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use Exception;
@@ -32,7 +34,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/** @var Lazy */
private $cache;
- public function __construct(Lazy $cache) {
+ public function __construct(Lazy $cache)
+ {
$this->cache = $cache;
parent::__construct();
@@ -62,7 +65,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$response = new ResponseBuilder(Common::getRequestVar('format'));
- $globalSettings = array();
+ $globalSettings = [];
$globalSettings['keepURLFragmentsGlobal'] = API::getInstance()->getKeepURLFragmentsGlobal();
$globalSettings['defaultCurrency'] = API::getInstance()->getDefaultCurrency();
$globalSettings['searchKeywordParametersGlobal'] = API::getInstance()->getSearchKeywordParametersGlobal();
@@ -71,6 +74,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$globalSettings['excludedIpsGlobal'] = API::getInstance()->getExcludedIpsGlobal();
$globalSettings['excludedQueryParametersGlobal'] = API::getInstance()->getExcludedQueryParametersGlobal();
$globalSettings['excludedUserAgentsGlobal'] = API::getInstance()->getExcludedUserAgentsGlobal();
+ $globalSettings['excludedReferrersGlobal'] = API::getInstance()->getExcludedReferrersGlobal();
return $response->getResponse($globalSettings);
}
@@ -88,6 +92,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$excludedIps = Common::getRequestVar('excludedIps', false);
$excludedQueryParameters = Common::getRequestVar('excludedQueryParameters', false);
$excludedUserAgents = Common::getRequestVar('excludedUserAgents', false);
+ $excludedReferrers = Common::getRequestVar('excludedReferrers', false);
$currency = Common::getRequestVar('currency', false);
$searchKeywordParameters = Common::getRequestVar('searchKeywordParameters', $default = "");
$searchCategoryParameters = Common::getRequestVar('searchCategoryParameters', $default = "");
@@ -99,6 +104,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$api->setGlobalExcludedQueryParameters($excludedQueryParameters);
$api->setGlobalExcludedIps($excludedIps);
$api->setGlobalExcludedUserAgents($excludedUserAgents);
+ $api->setGlobalExcludedReferrers($excludedReferrers);
$api->setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters);
$api->setKeepURLFragmentsGlobal($keepURLFragments);
@@ -159,7 +165,8 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
), $viewType = 'basic');
}
- public function siteWithoutDataTabs() {
+ public function siteWithoutDataTabs()
+ {
$this->checkSitePermission();
$mainUrl = $this->site->getMainUrl();
diff --git a/plugins/SitesManager/SiteUrls.php b/plugins/SitesManager/SiteUrls.php
index 530577b9ac..8880af0972 100644
--- a/plugins/SitesManager/SiteUrls.php
+++ b/plugins/SitesManager/SiteUrls.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\SitesManager;
use Piwik\Cache;
@@ -44,10 +46,10 @@ class SiteUrls
public function groupUrlsByHost($siteUrls)
{
if (empty($siteUrls)) {
- return array();
+ return [];
}
- $allUrls = array();
+ $allUrls = [];
foreach ($siteUrls as $idSite => $urls) {
$idSite = (int) $idSite;
@@ -61,7 +63,7 @@ class SiteUrls
return $allUrls;
}
- private function addUrlByHost(&$allUrls, $idSite, $url, $addPath = true)
+ public function addUrlByHost(&$allUrls, $idSite, $url, $addPath = true)
{
$urlParsed = @parse_url($url);
@@ -73,7 +75,7 @@ class SiteUrls
$path = $this->getCanonicalPathFromParsedUrl($urlParsed);
if (!isset($allUrls[$host])) {
- $allUrls[$host] = array();
+ $allUrls[$host] = [];
}
if (!$addPath) {
@@ -81,7 +83,7 @@ class SiteUrls
}
if (!isset($allUrls[$host][$path])) {
- $allUrls[$host][$path] = array();
+ $allUrls[$host][$path] = [];
}
if (!in_array($idSite, $allUrls[$host][$path])) {
@@ -92,7 +94,7 @@ class SiteUrls
private function sortUrlsByHost(&$allUrls)
{
foreach ($allUrls as $host => $paths) {
- uksort($paths, array($this, 'sortByPathDepth'));
+ uksort($paths, [$this, 'sortByPathDepth']);
$allUrls[$host] = $paths;
}
}
@@ -106,23 +108,38 @@ class SiteUrls
$urlHost = $this->toCanonicalHost($parsedUrl['host']);
$urlPath = $this->getCanonicalPathFromParsedUrl($parsedUrl);
- $matchingSites = null;
- if (isset($urlsGroupedByHost[$urlHost])) {
- $paths = $urlsGroupedByHost[$urlHost];
-
- foreach ($paths as $path => $idSites) {
- if (0 === strpos($urlPath, $path)) {
- $matchingSites = $idSites;
- break;
+ // As wildcard subdomain might be allowed, for e.g. my.sub.example.org we need to check e.g.
+ // - my.sub.example.org
+ // - .my.sub.example.org
+ // - .sub.example.org
+ // - .example.org
+ $hostsToCheck = [
+ $urlHost,
+ '.' . $urlHost,
+ ];
+
+ while (substr_count($urlHost, '.') >= 2) {
+ $urlHost = substr($urlHost, strpos($urlHost, '.') + 1);
+ $hostsToCheck[] = '.' . $urlHost;
+ }
+
+ foreach ($hostsToCheck as $host) {
+ if (isset($urlsGroupedByHost[$host])) {
+ $paths = $urlsGroupedByHost[$host];
+
+ foreach ($paths as $path => $idSites) {
+ if (0 === strpos($urlPath, $path)) {
+ return $idSites;
+ }
}
- }
- if (!isset($matchingSites) && isset($paths['/'])) {
- $matchingSites = $paths['/'];
+ if (isset($paths['/'])) {
+ return $paths['/'];
+ }
}
}
- return $matchingSites;
+ return null;
}
public function getPathMatchingUrl($parsedUrl, $urlsGroupedByHost)
@@ -134,7 +151,6 @@ class SiteUrls
$urlHost = $this->toCanonicalHost($parsedUrl['host']);
$urlPath = $this->getCanonicalPathFromParsedUrl($parsedUrl);
- $matchingSites = null;
if (isset($urlsGroupedByHost[$urlHost])) {
$paths = $urlsGroupedByHost[$urlHost];
@@ -165,15 +181,15 @@ class SiteUrls
$siteUrls = $model->getAllKnownUrlsForAllSites();
if (empty($siteUrls)) {
- return array();
+ return [];
}
- $urls = array();
+ $urls = [];
foreach ($siteUrls as $siteUrl) {
$siteId = (int) $siteUrl['idsite'];
if (!isset($urls[$siteId])) {
- $urls[$siteId] = array();
+ $urls[$siteId] = [];
}
$urls[$siteId][] = $siteUrl['url'];
@@ -231,5 +247,4 @@ class SiteUrls
return $path;
}
-
}
diff --git a/plugins/SitesManager/SitesManager.php b/plugins/SitesManager/SitesManager.php
index 7b0b305cd0..a43ed32813 100644
--- a/plugins/SitesManager/SitesManager.php
+++ b/plugins/SitesManager/SitesManager.php
@@ -183,6 +183,7 @@ class SitesManager extends \Piwik\Plugin
$array['excluded_ips'] = $this->getTrackerExcludedIps($website);
$array['excluded_parameters'] = self::getTrackerExcludedQueryParameters($website);
$array['excluded_user_agents'] = self::getExcludedUserAgents($website);
+ $array['excluded_referrers'] = self::getExcludedReferrers($website);
$array['keep_url_fragment'] = self::shouldKeepURLFragmentsFor($website);
$array['sitesearch'] = $website['sitesearch'];
$array['sitesearch_keyword_parameters'] = $this->getTrackerSearchKeywordParameters($website);
@@ -207,6 +208,7 @@ class SitesManager extends \Piwik\Plugin
Access::doAsSuperUser(function () use (&$cache) {
$cache['global_excluded_user_agents'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedUserAgentsGlobal());
$cache['global_excluded_ips'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedIpsGlobal());
+ $cache['global_excluded_referrers'] = self::filterBlankFromCommaSepList(API::getInstance()->getExcludedReferrersGlobal());
});
}
@@ -296,6 +298,20 @@ class SitesManager extends \Piwik\Plugin
}
/**
+ * Returns the array of excluded referrers. Filters out
+ * any garbage data & trims each entry.
+ *
+ * @param array $website The full set of information for a site.
+ * @return array
+ */
+ private static function getExcludedReferrers($website)
+ {
+ $excludedReferrers = API::getInstance()->getExcludedReferrersGlobal();
+ $excludedReferrers .= ',' . $website['excluded_referrers'];
+ return self::filterBlankFromCommaSepList($excludedReferrers);
+ }
+
+ /**
* Returns the array of URL query parameters to exclude from URLs
*
* @param array $website
@@ -448,6 +464,12 @@ class SitesManager extends \Piwik\Plugin
$translationKeys[] = "SitesManager_JsTrackingTagHelp";
$translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplication";
$translationKeys[] = "SitesManager_SiteWithoutDataSinglePageApplicationDescription";
-
+ $translationKeys[] = "SitesManager_GlobalListExcludedReferrers";
+ $translationKeys[] = "SitesManager_GlobalListExcludedReferrersDesc";
+ $translationKeys[] = "SitesManager_ExcludedReferrers";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelp";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpDetails";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpExamples";
+ $translationKeys[] = "SitesManager_ExcludedReferrersHelpSubDomains";
}
}
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 8e0decd70e..e3e4166255 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -25,6 +25,13 @@
"ExcludedIps": "Excluded IPs",
"ExcludedParameters": "Excluded Parameters",
"ExcludedUserAgents": "Excluded User Agents",
+ "ExcludedReferrers": "Excluded referrers",
+ "ExcludedReferrersHelp": "Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.",
+ "ExcludedReferrersHelpDetails": "Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.",
+ "ExcludedReferrersHelpExamples": "e.g. \"%1$s\" would match \"%2$s\" and \"%3$s\" but not \"%4$s\"",
+ "ExcludedReferrersHelpSubDomains": "To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. \"%1$s\" would exclude \"%2$s\", but also all its subdomains like \"%3$s\".",
+ "GlobalListExcludedReferrers": "Global list of excluded referrers",
+ "GlobalListExcludedReferrersDesc": "The hostnames and URLs below will be excluded from referrer detection.",
"Format_Utc": "UTC%s",
"GlobalExcludedUserAgentHelp1": "Enter the list of user agents to exclude from being tracked by Matomo.",
"GlobalExcludedUserAgentHelp2": "You can use this to exclude some bots from being tracked.",
diff --git a/plugins/SitesManager/tests/Fixtures/ManySites.php b/plugins/SitesManager/tests/Fixtures/ManySites.php
index f070a53174..4f30ae492f 100644
--- a/plugins/SitesManager/tests/Fixtures/ManySites.php
+++ b/plugins/SitesManager/tests/Fixtures/ManySites.php
@@ -1,10 +1,12 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+
namespace Piwik\Plugins\SitesManager\tests\Fixtures;
use Piwik\Plugins\MobileAppMeasurable;
@@ -32,12 +34,18 @@ class ManySites extends Fixture
$type = MobileAppMeasurable\Type::ID;
}
- self::createWebsite($this->dateTime, $ecommerce = 0, $siteName,
- $siteUrl = false,
- $siteSearch = 1, $searchKeywordParameters = null,
- $searchCategoryParameters = null, $timezone = null, $type);
+ self::createWebsite(
+ $this->dateTime,
+ $ecommerce = 0,
+ $siteName,
+ $siteUrl = false,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $timezone = null,
+ $type
+ );
}
}
}
-
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/tests/Integration/ApiTest.php b/plugins/SitesManager/tests/Integration/ApiTest.php
index 3966c30c76..e94fbdec16 100644
--- a/plugins/SitesManager/tests/Integration/ApiTest.php
+++ b/plugins/SitesManager/tests/Integration/ApiTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -52,11 +53,11 @@ class ApiTest extends IntegrationTestCase
/**
* empty name -> exception
*/
- public function test_addSite_WithEmptyName_ThrowsException()
+ public function testAddSiteWithEmptyNameThrowsException()
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("", array("http://piwik.net"));
+ API::getInstance()->addSite("", ["http://piwik.net"]);
}
/**
@@ -64,13 +65,13 @@ class ApiTest extends IntegrationTestCase
*/
public function getInvalidUrlData()
{
- return array(
- array(array()), // no urls
- array(array("")),
- array(""),
- array("5http://piwik.net"),
- array("???://piwik.net"),
- );
+ return [
+ [[]], // no urls
+ [[""]],
+ [""],
+ ["5http://piwik.net"],
+ ["???://piwik.net"],
+ ];
}
/**
@@ -78,7 +79,7 @@ class ApiTest extends IntegrationTestCase
*
* @dataProvider getInvalidUrlData
*/
- public function test_addSite_WithWrongUrls_ThrowsException($url)
+ public function testAddSiteWithWrongUrlsThrowsException($url)
{
$this->expectException(\Exception::class);
API::getInstance()->addSite("name", $url);
@@ -87,7 +88,7 @@ class ApiTest extends IntegrationTestCase
/**
* Test with valid IPs
*/
- public function test_addSite_WithExcludedIps_AndTimezone_AndCurrency_AndExcludedQueryParameters_SucceedsWhenParamsAreValid()
+ public function testAddSiteWithExcludedIpsAndTimezoneAndCurrencyAndExcludedQueryParametersSucceedsWhenParamsAreValid()
{
$this->addSiteTest($expectedWebsiteType = 'mobile-\'app');
}
@@ -95,7 +96,7 @@ class ApiTest extends IntegrationTestCase
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_addSite_WhenTypeIsKnown($expectedWebsiteType)
+ public function testAddSiteWhenTypeIsKnown($expectedWebsiteType)
{
$this->addSiteTest($expectedWebsiteType);
}
@@ -109,11 +110,28 @@ class ApiTest extends IntegrationTestCase
$expectedExcludedQueryParameters = 'p1,P2,P33333';
$excludedUserAgents = " p1,P2, \nP3333 ";
$expectedExcludedUserAgents = "p1,P2,P3333";
+ $excludedReferrers = 'http://www.paypal.com,https://amazon.com';
$keepUrlFragment = 1;
- $idsite = API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 1,
- $siteSearch = 1, $searchKeywordParameters = 'search,param', $searchCategoryParameters = 'cat,category',
- $ips, $excludedQueryParameters, $timezone, $currency, $group = null, $startDate = null, $excludedUserAgents,
- $keepUrlFragment, $expectedWebsiteType, $settingValues);
+ $idsite = API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 1,
+ $siteSearch = 1,
+ $searchKeywordParameters = 'search,param',
+ $searchCategoryParameters = 'cat,category',
+ $ips,
+ $excludedQueryParameters,
+ $timezone,
+ $currency,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents,
+ $keepUrlFragment,
+ $expectedWebsiteType,
+ $settingValues,
+ null,
+ $excludedReferrers
+ );
$siteInfo = API::getInstance()->getSiteFromId($idsite);
$this->assertEquals($ips, $siteInfo['excluded_ips']);
$this->assertEquals($timezone, $siteInfo['timezone']);
@@ -131,6 +149,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($searchCategoryParameters, $siteInfo['sitesearch_category_parameters']);
$this->assertEquals($expectedExcludedQueryParameters, $siteInfo['excluded_parameters']);
$this->assertEquals($expectedExcludedUserAgents, $siteInfo['excluded_user_agents']);
+ $this->assertEquals($excludedReferrers, $siteInfo['excluded_referrers']);
return $siteInfo;
}
@@ -140,15 +159,15 @@ class ApiTest extends IntegrationTestCase
*/
public function getInvalidIPsData()
{
- return array(
- array('35817587341'),
- array('ieagieha'),
- array('1.2.3'),
- array('*.1.1.1'),
- array('*.*.1.1'),
- array('*.*.*.1'),
- array('1.1.1.1.1'),
- );
+ return [
+ ['35817587341'],
+ ['ieagieha'],
+ ['1.2.3'],
+ ['*.1.1.1'],
+ ['*.*.1.1'],
+ ['*.*.*.1'],
+ ['1.1.1.1.1'],
+ ];
}
/**
@@ -156,17 +175,24 @@ class ApiTest extends IntegrationTestCase
*
* @dataProvider getInvalidIPsData
*/
- public function test_addSite_WithInvalidExcludedIps_ThrowsException($ip)
+ public function testAddSiteWithInvalidExcludedIpsThrowsException($ip)
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip);
+ API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $ip
+ );
}
/**
* one url -> one main_url and nothing inserted as alias urls
*/
- public function test_addSite_WithOneUrl_Succeeds_AndCreatesNoAliasUrls()
+ public function testAddSiteWithOneUrlSucceedsAndCreatesNoAliasUrls()
{
$url = "http://piwik.net/";
$urlOK = "http://piwik.net";
@@ -184,10 +210,10 @@ class ApiTest extends IntegrationTestCase
/**
* several urls -> one main_url and others as alias urls
*/
- public function test_addSite_WithSeveralUrls_Succeeds_AndCreatesAliasUrls()
+ public function testAddSiteWithSeveralUrlsSucceedsAndCreatesAliasUrls()
{
- $urls = array("http://piwik.net/", "http://piwik.com", "https://piwik.net/test/", "piwik.net/another/test");
- $urlsOK = array("http://piwik.net", "http://piwik.com", "http://piwik.net/another/test", "https://piwik.net/test");
+ $urls = ["http://piwik.net/", "http://piwik.com", "https://piwik.net/test/", "piwik.net/another/test"];
+ $urlsOK = ["http://piwik.net", "http://piwik.com", "http://piwik.net/another/test", "https://piwik.net/test"];
$idsite = API::getInstance()->addSite("super website", $urls);
self::assertIsInt($idsite);
@@ -201,7 +227,7 @@ class ApiTest extends IntegrationTestCase
/**
* strange name
*/
- public function test_addSite_WithStrangeName_Succeeds()
+ public function testAddSiteWithStrangeNameSucceeds()
{
$name = "supertest(); ~@@()''!£\$'%%^'!£ போ";
$idsite = API::getInstance()->addSite($name, "http://piwik.net");
@@ -209,34 +235,32 @@ class ApiTest extends IntegrationTestCase
$siteInfo = API::getInstance()->getSiteFromId($idsite);
$this->assertEquals($name, $siteInfo['name']);
-
}
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_addSite_ShouldFailAndNotCreatedASite_IfASettingIsInvalid($type)
+ public function testAddSiteShouldFailAndNotCreatedASiteIfASettingIsInvalid($type)
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_OnlyMatchedUrlsAllowed');
try {
- $settings = array('WebsiteMeasurable' => array(array('name' => 'exclude_unknown_urls', 'value' => 'fooBar')));
+ $settings = ['WebsiteMeasurable' => [['name' => 'exclude_unknown_urls', 'value' => 'fooBar']]];
$this->addSiteWithType($type, $settings);
} catch (Exception $e) {
-
// make sure no site created
$ids = API::getInstance()->getAllSitesId();
- $this->assertEquals(array(), $ids);
+ $this->assertEquals([], $ids);
throw $e;
}
}
- public function test_addSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()
+ public function testAddSiteShouldSavePassedMeasurableSettingsIfSettingsAreValid()
{
$type = WebsiteType::ID;
- $settings = array('WebsiteMeasurable' => array(array('name' => 'urls', 'value' => array('http://www.piwik.org'))));
+ $settings = ['WebsiteMeasurable' => [['name' => 'urls', 'value' => ['http://www.piwik.org']]]];
$idSite = $this->addSiteWithType($type, $settings);
$this->assertSame(1, $idSite);
@@ -244,7 +268,7 @@ class ApiTest extends IntegrationTestCase
$settings = $this->getWebsiteMeasurable($idSite);
$urls = $settings->urls->getValue();
- $this->assertSame(array('http://www.piwik.org'), $urls);
+ $this->assertSame(['http://www.piwik.org'], $urls);
}
/**
@@ -260,10 +284,10 @@ class ApiTest extends IntegrationTestCase
* adds a site
* use by several other unit tests
*/
- protected function _addSite()
+ protected function addSite()
{
$name = "website ";
- $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]);
self::assertIsInt($idsite);
$siteInfo = API::getInstance()->getSiteFromId($idsite);
@@ -271,15 +295,20 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals("http://piwik.net", $siteInfo['main_url']);
$siteUrls = API::getInstance()->getSiteUrlsFromId($idsite);
- $this->assertEquals(array("http://piwik.net", "http://piwik.com/test"), $siteUrls);
+ $this->assertEquals(["http://piwik.net", "http://piwik.com/test"], $siteUrls);
return $idsite;
}
private function addSiteWithType($type, $settings)
{
- return API::getInstance()->addSite("name", "http://piwik.net/", $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
+ return API::getInstance()->addSite(
+ "name",
+ "http://piwik.net/",
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
$ip = null,
$excludedQueryParameters = null,
$timezone = null,
@@ -288,12 +317,15 @@ class ApiTest extends IntegrationTestCase
$startDate = null,
$excludedUserAgents = null,
$keepURLFragments = null,
- $type, $settings);
+ $type,
+ $settings
+ );
}
private function updateSiteSettings($idSite, $newSiteName, $settings)
{
- return API::getInstance()->updateSite($idSite,
+ return API::getInstance()->updateSite(
+ $idSite,
$newSiteName,
$urls = null,
$ecommerce = null,
@@ -309,33 +341,34 @@ class ApiTest extends IntegrationTestCase
$excludedUserAgents = null,
$keepURLFragments = null,
$type = null,
- $settings);
+ $settings
+ );
}
/**
* no duplicate -> all the urls are saved
*/
- public function test_addSiteAliasUrls_WithUniqueUrls_SavesAllUrls()
+ public function testAddSiteAliasUrlsWithUniqueUrlsSavesAllUrls()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array("http://piwik1.net",
+ $toAdd = ["http://piwik1.net",
"http://piwik2.net",
"http://piwik3.net/test/",
"http://localhost/test",
"http://localho5.st/test",
"http://l42578gqege.f4",
"http://super.com/test/test/atqata675675/te"
- );
- $toAddValid = array("http://piwik1.net",
+ ];
+ $toAddValid = ["http://piwik1.net",
"http://piwik2.net",
"http://piwik3.net/test",
"http://localhost/test",
"http://localho5.st/test",
"http://l42578gqege.f4",
- "http://super.com/test/test/atqata675675/te");
+ "http://super.com/test/test/atqata675675/te"];
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd), $insertedUrls);
@@ -353,13 +386,13 @@ class ApiTest extends IntegrationTestCase
/**
* duplicate -> don't save the already existing URLs
*/
- public function test_addSiteAliasUrls_WithDuplicateUrls_RemovesDuplicatesBeforeSaving()
+ public function testAddSiteAliasUrlsWithDuplicateUrlsRemovesDuplicatesBeforeSaving()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array_merge($siteUrlsBefore, array("http://piwik1.net", "http://piwik2.net"));
+ $toAdd = array_merge($siteUrlsBefore, ["http://piwik1.net", "http://piwik2.net"]);
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd) - count($siteUrlsBefore), $insertedUrls);
@@ -377,13 +410,13 @@ class ApiTest extends IntegrationTestCase
/**
* case empty array => nothing happens
*/
- public function test_addSiteAliasUrls_WithNoUrls_DoesNothing()
+ public function testAddSiteAliasUrlsWithNoUrlsDoesNothing()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
- $toAdd = array();
+ $toAdd = [];
$insertedUrls = API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
$this->assertEquals(count($toAdd), $insertedUrls);
@@ -401,9 +434,9 @@ class ApiTest extends IntegrationTestCase
/**
* case array only duplicate => nothing happens
*/
- public function test_addSiteAliasUrls_WithAlreadyPersistedUrls_DoesNothing()
+ public function testAddSiteAliasUrlsWithAlreadyPersistedUrlsDoesNothing()
{
- $idsite = $this->_addSite();
+ $idsite = $this->addSite();
$siteUrlsBefore = API::getInstance()->getSiteUrlsFromId($idsite);
@@ -425,41 +458,56 @@ class ApiTest extends IntegrationTestCase
/**
* wrong format urls => exception
*/
- public function test_addSiteAliasUrls_WithIncorrectFormat_ThrowsException_3()
+ public function testAddSiteAliasUrlsWithIncorrectFormatThrowsException3()
{
$this->expectException(\Exception::class);
- $idsite = $this->_addSite();
- $toAdd = array("http:mpigeq");
+ $idsite = $this->addSite();
+ $toAdd = ["http:mpigeq"];
API::getInstance()->addSiteAliasUrls($idsite, $toAdd);
}
/**
* wrong idsite => no exception because simply no access to this resource
*/
- public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException()
+ public function testAddSiteAliasUrlsWithWrongIdSiteThrowsException()
{
$this->expectException(\Exception::class);
- $toAdd = array("http://pigeq.com/test");
+ $toAdd = ["http://pigeq.com/test"];
API::getInstance()->addSiteAliasUrls(-1, $toAdd);
}
/**
* wrong idsite => exception
*/
- public function test_addSiteAliasUrls_WithWrongIdSite_ThrowsException2()
+ public function testAddSiteAliasUrlsWithWrongIdSiteThrowsException2()
{
$this->expectException(\Exception::class);
- $toAdd = array("http://pigeq.com/test");
+ $toAdd = ["http://pigeq.com/test"];
API::getInstance()->addSiteAliasUrls(155, $toAdd);
}
- public function test_addSite_CorrectlySavesExcludeUnknownUrlsSetting()
+ public function testAddSiteCorrectlySavesExcludeUnknownUrlsSetting()
{
- $idSite = API::getInstance()->addSite("site", array("http://piwik.net"), $ecommerce = null, $siteSearch = null,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParams = null,
- $timezone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);
+ $idSite = API::getInstance()->addSite(
+ "site",
+ ["http://piwik.net"],
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParams = null,
+ $timezone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type = null,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(1, $site['exclude_unknown_urls']);
@@ -468,25 +516,25 @@ class ApiTest extends IntegrationTestCase
/**
* no Id -> empty array
*/
- public function test_getAllSitesId_ReturnsNothing_WhenNoSitesSaved()
+ public function testGetAllSitesIdReturnsNothingWhenNoSitesSaved()
{
$ids = API::getInstance()->getAllSitesId();
- $this->assertEquals(array(), $ids);
+ $this->assertEquals([], $ids);
}
/**
* several Id -> normal array
*/
- public function test_getAllSitesId_ReturnsAllIds_WhenMultipleSitesPersisted()
+ public function testGetAllSitesIdReturnsAllIdsWhenMultipleSitesPersisted()
{
$name = "tetq";
- $idsites = array(
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/")),
- );
+ $idsites = [
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]),
+ ];
$ids = API::getInstance()->getAllSitesId();
$this->assertEquals($idsites, $ids);
@@ -495,7 +543,7 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id => exception
*/
- public function test_getSiteFromId_WithWrongId_ThrowsException1()
+ public function testGetSiteFromIdWithWrongIdThrowsException1()
{
$this->expectException(\Exception::class);
API::getInstance()->getSiteFromId(0);
@@ -504,7 +552,7 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id => exception
*/
- public function test_getSiteFromId_WithWrongId_ThrowsException2()
+ public function testGetSiteFromIdWithWrongIdThrowsException2()
{
$this->expectException(\Exception::class);
API::getInstance()->getSiteFromId("x1");
@@ -513,15 +561,15 @@ class ApiTest extends IntegrationTestCase
/**
* wrong id : no access => exception
*/
- public function test_getSiteFromId_ThrowsException_WhenTheUserDoesNotHavaAcessToTheSite()
+ public function testGetSiteFromIdThrowsExceptionWhenTheUserDoesNotHavaAcessToTheSite()
{
$this->expectException(\Exception::class);
- $idsite = API::getInstance()->addSite("site", array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite("site", ["http://piwik.net", "http://piwik.com/test/"]);
$this->assertEquals(1, $idsite);
// set noaccess to site 1
- FakeAccess::setIdSitesView(array(2));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([2]);
+ FakeAccess::setIdSitesAdmin([]);
API::getInstance()->getSiteFromId(1);
}
@@ -529,10 +577,10 @@ class ApiTest extends IntegrationTestCase
/**
* normal case
*/
- public function test_getSiteFromId_WithNormalId_ReturnsTheCorrectSite()
+ public function testGetSiteFromIdWithNormalIdReturnsTheCorrectSite()
{
$name = "website ''";
- $idsite = API::getInstance()->addSite($name, array("http://piwik.net", "http://piwik.com/test/"));
+ $idsite = API::getInstance()->addSite($name, ["http://piwik.net", "http://piwik.com/test/"]);
self::assertIsInt($idsite);
$siteInfo = API::getInstance()->getSiteFromId($idsite);
@@ -543,29 +591,29 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithAdminAccess_ReturnsNothing_WhenUserHasNoAdminAccess()
+ public function testGetSitesWithAdminAccessReturnsNothingWhenUserHasNoAdminAccess()
{
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAdminAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithAdminAccess_shouldOnlyReturnSitesHavingActuallyAdminAccess()
+ public function testGetSitesWithAdminAccessShouldOnlyReturnSitesHavingActuallyAdminAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"), null, null, null, null, null, null, 'Asia/Tokyo');
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"], null, null, null, null, null, null, 'Asia/Tokyo');
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'timezone_name' => 'SitesManager_Format_Utc', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'Asia/Tokyo', 'timezone_name' => 'Intl_Country_JP', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'timezone_name' => 'SitesManager_Format_Utc', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'Asia/Tokyo', 'timezone_name' => 'Intl_Country_JP', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesAdmin(array(1, 3));
+ FakeAccess::setIdSitesAdmin([1, 3]);
$sites = API::getInstance()->getSitesWithAdminAccess();
@@ -575,7 +623,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($resultWanted, $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyLimit_IfSet()
+ public function testGetSitesWithAdminAccessShouldApplyLimitIfSet()
{
$this->createManySitesWithAdminAccess(40);
@@ -585,50 +633,50 @@ class ApiTest extends IntegrationTestCase
// return only 5 sites
$sites = API::getInstance()->getSitesWithAdminAccess(false, false, 5);
- $this->assertReturnedSitesContainsSiteIds(array(1, 2, 3, 4, 5), $sites);
+ $this->assertReturnedSitesContainsSiteIds([1, 2, 3, 4, 5], $sites);
// return only 10 sites
$sites = API::getInstance()->getSitesWithAdminAccess(false, false, 10);
$this->assertReturnedSitesContainsSiteIds(range(1, 10), $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindBySiteName()
+ public function testGetSitesWithAdminAccessShouldApplyPatternIfSetAndFindBySiteName()
{
$this->createManySitesWithAdminAccess(40);
// by site name
$sites = API::getInstance()->getSitesWithAdminAccess(false, 'site38');
- $this->assertReturnedSitesContainsSiteIds(array(38), $sites);
+ $this->assertReturnedSitesContainsSiteIds([38], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_IfSetAndFindByUrl()
+ public function testGetSitesWithAdminAccessShouldApplyPatternIfSetAndFindByUrl()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, 'piwik38.o');
- $this->assertReturnedSitesContainsSiteIds(array(38), $sites);
+ $this->assertReturnedSitesContainsSiteIds([38], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPattern_AndFindMany()
+ public function testGetSitesWithAdminAccessShouldApplyPatternAndFindMany()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, '5');
- $this->assertReturnedSitesContainsSiteIds(array(5, 15, 25, 35), $sites);
+ $this->assertReturnedSitesContainsSiteIds([5, 15, 25, 35], $sites);
}
- public function test_getSitesWithAdminAccess_shouldApplyPatternAndLimit()
+ public function testGetSitesWithAdminAccessShouldApplyPatternAndLimit()
{
$this->createManySitesWithAdminAccess(40);
$sites = API::getInstance()->getSitesWithAdminAccess(false, '5', 2);
- $this->assertReturnedSitesContainsSiteIds(array(5, 15), $sites);
+ $this->assertReturnedSitesContainsSiteIds([5, 15], $sites);
}
private function createManySitesWithAdminAccess($numSites)
{
for ($i = 1; $i <= $numSites; $i++) {
- API::getInstance()->addSite("site" . $i, array("http://piwik$i.org"));
+ API::getInstance()->addSite("site" . $i, ["http://piwik$i.org"]);
}
FakeAccess::setIdSitesAdmin(range(1, $numSites));
@@ -651,31 +699,31 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithViewAccess_ReturnsNothing_IfUserHasNoViewOrAdminAccess()
+ public function testGetSitesWithViewAccessReturnsNothingIfUserHasNoViewOrAdminAccess()
{
- FakeAccess::setIdSitesView(array());
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithViewAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithViewAccess_ReturnsSitesWithViewAccess()
+ public function testGetSitesWithViewAccessReturnsSitesWithViewAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"));
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"]);
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', "excluded_ips" => "", 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesView(array(1, 3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1, 3]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithViewAccess();
@@ -689,31 +737,31 @@ class ApiTest extends IntegrationTestCase
/**
* there is no admin site available -> array()
*/
- public function test_getSitesWithAtLeastViewAccess_ReturnsNothing_WhenUserHasNoAccess()
+ public function testGetSitesWithAtLeastViewAccessReturnsNothingWhenUserHasNoAccess()
{
- FakeAccess::setIdSitesView(array());
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAtLeastViewAccess();
- $this->assertEquals(array(), $sites);
+ $this->assertEquals([], $sites);
}
/**
* normal case, admin and view and noaccess website => return only admin
*/
- public function test_getSitesWithAtLeastViewAccess_ReturnsSitesWithViewAccess()
+ public function testGetSitesWithAtLeastViewAccessReturnsSitesWithViewAccess()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com/test/"), $ecommerce = 1);
- API::getInstance()->addSite("site2", array("http://piwik.com/test/"));
- API::getInstance()->addSite("site3", array("http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com/test/"], $ecommerce = 1);
+ API::getInstance()->addSite("site2", ["http://piwik.com/test/"]);
+ API::getInstance()->addSite("site3", ["http://piwik.org"]);
- $resultWanted = array(
- 0 => array("idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 1, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- 1 => array("idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'),
- );
+ $resultWanted = [
+ 0 => ["idsite" => 1, "name" => "site1", "main_url" => "http://piwik.net", "ecommerce" => 1, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ 1 => ["idsite" => 3, "name" => "site3", "main_url" => "http://piwik.org", "ecommerce" => 0, "excluded_ips" => "", 'sitesearch' => 1, 'sitesearch_keyword_parameters' => '', 'sitesearch_category_parameters' => '', 'excluded_parameters' => '', 'excluded_user_agents' => '', 'excluded_referrers' => '', 'timezone' => 'UTC', 'currency' => 'USD', 'group' => '', 'keep_url_fragment' => 0, 'type' => 'website', 'exclude_unknown_urls' => 0, 'timezone_name' => 'SitesManager_Format_Utc', 'currency_name' => 'USD'],
+ ];
- FakeAccess::setIdSitesView(array(1, 3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1, 3]);
+ FakeAccess::setIdSitesAdmin([]);
$sites = API::getInstance()->getSitesWithAtLeastViewAccess();
// we don't test the ts_created
@@ -725,30 +773,30 @@ class ApiTest extends IntegrationTestCase
/**
* no urls for this site => array()
*/
- public function test_getSiteUrlsFromId_ReturnsMainUrlOnly_WhenNoAliasUrls()
+ public function testGetSiteUrlsFromIdReturnsMainUrlOnlyWhenNoAliasUrls()
{
- $idsite = API::getInstance()->addSite("site1", array("http://piwik.net"));
+ $idsite = API::getInstance()->addSite("site1", ["http://piwik.net"]);
$urls = API::getInstance()->getSiteUrlsFromId($idsite);
- $this->assertEquals(array("http://piwik.net"), $urls);
+ $this->assertEquals(["http://piwik.net"], $urls);
}
/**
* normal case
*/
- public function test_getSiteUrlsFromId_ReturnsMainAndAliasUrls()
+ public function testGetSiteUrlsFromIdReturnsMainAndAliasUrls()
{
- $site = array("http://piwik.net",
+ $site = ["http://piwik.net",
"http://piwik.org",
"http://piwik.org",
- "http://piwik.com");
+ "http://piwik.com"];
sort($site);
$idsite = API::getInstance()->addSite("site1", $site);
- $siteWanted = array("http://piwik.net",
+ $siteWanted = ["http://piwik.net",
"http://piwik.org",
- "http://piwik.com");
+ "http://piwik.com"];
sort($siteWanted);
$urls = API::getInstance()->getSiteUrlsFromId($idsite);
@@ -758,23 +806,23 @@ class ApiTest extends IntegrationTestCase
/**
* wrongId => exception
*/
- public function test_getSiteUrlsFromId_ThrowsException_WhenSiteIdIsIncorrect()
+ public function testGetSiteUrlsFromIdThrowsExceptionWhenSiteIdIsIncorrect()
{
$this->expectException(\Exception::class);
- FakeAccess::setIdSitesView(array(3));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([3]);
+ FakeAccess::setIdSitesAdmin([]);
API::getInstance()->getSiteUrlsFromId(1);
}
/**
* one url => no change to alias urls
*/
- public function test_updateSite_WithOneUrl_RemovesAliasUrls_AndUpdatesTheSiteCorrectly()
+ public function testUpdateSiteWithOneUrlRemovesAliasUrlsAndUpdatesTheSiteCorrectly()
{
- $urls = array("http://piwiknew.com",
+ $urls = ["http://piwiknew.com",
"http://piwiknew.net",
"http://piwiknew.org",
- "http://piwiknew.fr");
+ "http://piwiknew.fr"];
$idsite = API::getInstance()->addSite("site1", $urls);
$newMainUrl = "http://main.url";
@@ -811,14 +859,13 @@ class ApiTest extends IntegrationTestCase
$allUrls = API::getInstance()->getSiteUrlsFromId($idsite);
$this->assertEquals($newMainUrl, $allUrls[0]);
$aliasUrls = array_slice($allUrls, 1);
- $this->assertEquals(array(), $aliasUrls);
-
+ $this->assertEquals([], $aliasUrls);
}
/**
* strange name and NO URL => name ok, main_url not updated
*/
- public function test_updateSite_WithStrangeName_AndNoAliasUrls_UpdatesTheName_ButNoUrls()
+ public function testUpdateSiteWithStrangeNameAndNoAliasUrlsUpdatesTheNameButNoUrls()
{
$idsite = API::getInstance()->addSite("site1", "http://main.url");
$newName = "test toto@{'786'}";
@@ -836,30 +883,52 @@ class ApiTest extends IntegrationTestCase
* several urls => both main and alias are updated
* also test the update of group field
*/
- public function test_updateSite_WithSeveralUrlsAndGroup_UpdatesGroupAndUrls()
+ public function testUpdateSiteWithSeveralUrlsAndGroupUpdatesGroupAndUrls()
{
- $urls = array("http://piwiknew.com",
+ $urls = ["http://piwiknew.com",
"http://piwiknew.net",
"http://piwiknew.org",
- "http://piwiknew.fr");
+ "http://piwiknew.fr"];
$group = 'GROUP Before';
- $idsite = API::getInstance()->addSite("site1", $urls, $ecommerce = 1,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
- $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group, $startDate = '2011-01-01');
+ $idsite = API::getInstance()->addSite(
+ "site1",
+ $urls,
+ $ecommerce = 1,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $group,
+ $startDate = '2011-01-01'
+ );
$websites = API::getInstance()->getSitesFromGroup($group);
$this->assertEquals(1, count($websites));
- $newurls = array("http://piwiknew2.com",
+ $newurls = ["http://piwiknew2.com",
"http://piwiknew2.net",
"http://piwiknew2.org",
- "http://piwiknew2.fr");
+ "http://piwiknew2.fr"];
$groupAfter = ' GROUP After';
- API::getInstance()->updateSite($idsite, "test toto@{}", $newurls, $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null,
- $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $groupAfter);
+ API::getInstance()->updateSite(
+ $idsite,
+ "test toto@{}",
+ $newurls,
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timezone = null,
+ $currency = null,
+ $groupAfter
+ );
// no result for the group before update
$websites = API::getInstance()->getSitesFromGroup($group);
@@ -871,7 +940,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals('2011-01-01', date('Y-m-d', strtotime($websites[0]['ts_created'])));
// Test fetch website groups
- $expectedGroups = array(trim($groupAfter));
+ $expectedGroups = [trim($groupAfter)];
$fetched = API::getInstance()->getSitesGroups();
$this->assertEquals($expectedGroups, $fetched);
@@ -881,18 +950,17 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals($newurls, $allUrls);
}
- public function test_updateSite_ShouldFailAndNotUpdateSite_IfASettingIsInvalid()
+ public function testUpdateSiteShouldFailAndNotUpdateSiteIfASettingIsInvalid()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_OnlyMatchedUrlsAllowed');
$type = MobileAppMeasurable\Type::ID;
- $idSite = $this->addSiteWithType($type, array());
+ $idSite = $this->addSiteWithType($type, []);
try {
- $settings = array('MobileAppMeasurable' => array(array('name' => 'exclude_unknown_urls', 'value' => 'fooBar')));
+ $settings = ['MobileAppMeasurable' => [['name' => 'exclude_unknown_urls', 'value' => 'fooBar']]];
$this->updateSiteSettings($idSite, 'newSiteName', $settings);
-
} catch (Exception $e) {
// verify nothing was updated (not even the name)
$measurable = new Measurable($idSite);
@@ -902,14 +970,14 @@ class ApiTest extends IntegrationTestCase
}
}
- public function test_updateSite_ShouldSavePassedMeasurableSettings_IfSettingsAreValid()
+ public function testUpdateSiteShouldSavePassedMeasurableSettingsIfSettingsAreValid()
{
$type = WebsiteType::ID;
- $idSite = $this->addSiteWithType($type, array());
+ $idSite = $this->addSiteWithType($type, []);
$this->assertSame(1, $idSite);
- $settings = array('WebsiteMeasurable' => array(array('name' => 'urls', 'value' => array('http://www.piwik.org'))));
+ $settings = ['WebsiteMeasurable' => [['name' => 'urls', 'value' => ['http://www.piwik.org']]]];
$this->updateSiteSettings($idSite, 'newSiteName', $settings);
@@ -918,20 +986,36 @@ class ApiTest extends IntegrationTestCase
// verify it was updated
$measurable = new Measurable($idSite);
$this->assertSame('newSiteName', $measurable->getName());
- $this->assertSame(array('http://www.piwik.org'), $settings->urls->getValue());
+ $this->assertSame(['http://www.piwik.org'], $settings->urls->getValue());
}
- public function test_updateSite_CorreclySavesExcludedUnknownUrlSettings()
+ public function testUpdateSiteCorrectlySavesExcludedUnknownUrlSettings()
{
- $idSite = API::getInstance()->addSite("site1", array("http://piwik.net"));
+ $idSite = API::getInstance()->addSite("site1", ["http://piwik.net"]);
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(0, $site['exclude_unknown_urls']);
- API::getInstance()->updateSite($idSite, $siteName = null, $urls = null, $ecommerce = null, $siteSearch = null,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParameters = null,
- $timzeone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type = null, $settings = null, $excludeUnknownUrls = true);
+ API::getInstance()->updateSite(
+ $idSite,
+ $siteName = null,
+ $urls = null,
+ $ecommerce = null,
+ $siteSearch = null,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timzeone = null,
+ $currency = null,
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type = null,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(1, $site['exclude_unknown_urls']);
@@ -940,17 +1024,33 @@ class ApiTest extends IntegrationTestCase
/**
* @dataProvider getDifferentTypesDataProvider
*/
- public function test_updateSite_WithDifferentTypes($type)
+ public function testUpdateSiteWithDifferentTypes($type)
{
- $idSite = $this->addSiteWithType('website', array());
+ $idSite = $this->addSiteWithType('website', []);
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals(0, $site['exclude_unknown_urls']);
- API::getInstance()->updateSite($idSite, $siteName = 'new site name', $urls = null, $ecommerce = true, $siteSearch = false,
- $searchKeywordParams = null, $searchCategoryParams = null, $excludedIps = null, $excludedQueryParameters = null,
- $timzeone = null, $currency = 'NZD', $group = null, $startDate = null, $excludedUserAgents = null,
- $keepUrlFragments = null, $type, $settings = null, $excludeUnknownUrls = true);
+ API::getInstance()->updateSite(
+ $idSite,
+ $siteName = 'new site name',
+ $urls = null,
+ $ecommerce = true,
+ $siteSearch = false,
+ $searchKeywordParams = null,
+ $searchCategoryParams = null,
+ $excludedIps = null,
+ $excludedQueryParameters = null,
+ $timzeone = null,
+ $currency = 'NZD',
+ $group = null,
+ $startDate = null,
+ $excludedUserAgents = null,
+ $keepUrlFragments = null,
+ $type,
+ $settings = null,
+ $excludeUnknownUrls = true
+ );
$site = API::getInstance()->getSiteFromId($idSite);
$this->assertEquals('new site name', $site['name']);
@@ -962,19 +1062,19 @@ class ApiTest extends IntegrationTestCase
public function getDifferentTypesDataProvider()
{
- return array(
- array('website'),
- array('mobileapp'),
- array('notexistingtype'),
- );
+ return [
+ ['website'],
+ ['mobileapp'],
+ ['notexistingtype'],
+ ];
}
- public function test_delete_ShouldNotDeleteASiteInCaseThereIsOnlyOneSite()
+ public function testDeleteShouldNotDeleteASiteInCaseThereIsOnlyOneSite()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('SitesManager_ExceptionDeleteSite');
- $siteId1 = $this->_addSite();
+ $siteId1 = $this->addSite();
$this->assertHasSite($siteId1);
@@ -987,7 +1087,7 @@ class ApiTest extends IntegrationTestCase
}
}
- public function test_delete_ShouldTriggerException_IfGivenSiteDoesNotExist()
+ public function testDeleteShouldTriggerExceptionIfGivenSiteDoesNotExist()
{
$this->expectException(\Exception::class);
$this->expectExceptionMessage('website id = 99999498 not found');
@@ -995,11 +1095,11 @@ class ApiTest extends IntegrationTestCase
API::getInstance()->deleteSite(99999498);
}
- public function test_delete_ShouldActuallyRemoveAnExistingSiteButOnlyTheGivenSite()
+ public function testDeleteShouldActuallyRemoveAnExistingSiteButOnlyTheGivenSite()
{
- $this->_addSite();
- $siteId1 = $this->_addSite();
- $siteId2 = $this->_addSite();
+ $this->addSite();
+ $siteId1 = $this->addSite();
+ $siteId2 = $this->addSite();
$this->assertHasSite($siteId1);
$this->assertHasSite($siteId2);
@@ -1010,7 +1110,7 @@ class ApiTest extends IntegrationTestCase
$this->assertHasSite($siteId2);
}
- public function test_delete_ShouldTriggerAnEventOnceSiteWasActuallyDeleted()
+ public function testDeleteShouldTriggerAnEventOnceSiteWasActuallyDeleted()
{
$called = 0;
$deletedSiteId = null;
@@ -1020,8 +1120,8 @@ class ApiTest extends IntegrationTestCase
$deletedSiteId = $param;
});
- $this->_addSite();
- $siteId1 = $this->_addSite();
+ $this->addSite();
+ $siteId1 = $this->addSite();
API::getInstance()->deleteSite($siteId1);
@@ -1045,8 +1145,8 @@ class ApiTest extends IntegrationTestCase
public function testGetSitesGroups()
{
- $groups = array('group1', ' group1 ', '', 'group2');
- $expectedGroups = array('group1', '', 'group2');
+ $groups = ['group1', ' group1 ', '', 'group2'];
+ $expectedGroups = ['group1', '', 'group2'];
foreach ($groups as $group) {
API::getInstance()->addSite("test toto@{}", 'http://example.org', $ecommerce = 1, $siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group);
}
@@ -1056,34 +1156,52 @@ class ApiTest extends IntegrationTestCase
public function getInvalidTimezoneData()
{
- return array(
- array('UTC+15'),
- array('Paris'),
- );
+ return [
+ ['UTC+15'],
+ ['Paris'],
+ ];
}
/**
*
* @dataProvider getInvalidTimezoneData
*/
- public function test_addSite_WithInvalidTimezone_ThrowsException($timezone)
+ public function testAddSiteWithInvalidTimezoneThrowsException($timezone)
{
$this->expectException(\Exception::class);
- API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, $ip = '', $params = '', $timezone);
+ API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $ip = '',
+ $params = '',
+ $timezone
+ );
}
- public function test_addSite_WithInvalidCurrency_ThrowsException()
+ public function testAddSiteWithInvalidCurrencyThrowsException()
{
$this->expectException(\Exception::class);
$invalidCurrency = '€';
- API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, '', 'UTC', $invalidCurrency);
+ API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ '',
+ 'UTC',
+ $invalidCurrency
+ );
}
- public function test_setDefaultTimezone_AndCurrency_AndExcludedQueryParameters_AndExcludedIps_UpdatesDefaultsCorreclty()
+ public function testSetDefaultTimezoneAndCurrencyAndExcludedQueryParametersAndExcludedIpsUpdatesDefaultsCorrectly()
{
// test that they return default values
$defaultTimezone = API::getInstance()->getDefaultTimezone();
@@ -1096,7 +1214,7 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals('', $excludedQueryParameters);
// test that when not specified, defaults are set as expected
- $idsite = API::getInstance()->addSite("site1", array('http://example.org'));
+ $idsite = API::getInstance()->addSite("site1", ['http://example.org']);
$site = new Site($idsite);
$this->assertEquals('UTC', $site->getTimezone());
$this->assertEquals('USD', $site->getCurrency());
@@ -1132,9 +1250,17 @@ class ApiTest extends IntegrationTestCase
// create a website and check that default currency and default timezone are set
// however, excluded IPs and excluded query Params are not returned
- $idsite = API::getInstance()->addSite("site1", array('http://example.org'), $ecommerce = 0,
- $siteSearch = 0, $searchKeywordParameters = 'test1,test2', $searchCategoryParameters = 'test2,test1',
- '', '', $newDefaultTimezone);
+ $idsite = API::getInstance()->addSite(
+ "site1",
+ ['http://example.org'],
+ $ecommerce = 0,
+ $siteSearch = 0,
+ $searchKeywordParameters = 'test1,test2',
+ $searchCategoryParameters = 'test2,test1',
+ '',
+ '',
+ $newDefaultTimezone
+ );
$site = new Site($idsite);
$this->assertEquals($newDefaultTimezone, $site->getTimezone());
$this->assertEquals(date('Y-m-d'), $site->getCreationDate()->toString());
@@ -1149,11 +1275,11 @@ class ApiTest extends IntegrationTestCase
$this->assertFalse(Site::isEcommerceEnabledFor($idsite));
}
- public function test_getSitesIdFromSiteUrl_AsSuperUser_ReturnsTheRequestedSiteIds()
+ public function testGetSitesIdFromSiteUrlAsSuperUserReturnsTheRequestedSiteIds()
{
- API::getInstance()->addSite("site1", array("http://piwik.net", "http://piwik.com"));
- API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
- API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://piwik.net", "http://piwik.com"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com", "http://piwik.net"]);
+ API::getInstance()->addSite("site3", ["http://piwik.com", "http://piwik.org"]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');
$this->assertTrue(count($idsites) == 1);
@@ -1168,29 +1294,29 @@ class ApiTest extends IntegrationTestCase
$this->assertTrue(count($idsites) == 3);
}
- public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsSuperUser()
+ public function testGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrlsAsSuperUser()
{
- API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));
+ API::getInstance()->addSite("site1", ["https://piwik.org", "http://example.com", "fb://special-url"]);
- $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();
+ $this->assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls();
}
- public function test_getSitesIdFromSiteUrl_MatchesBothHttpAndHttpsUrls_AsUserWithViewPermission()
+ public function testGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrlsAsUserWithViewPermission()
{
- API::getInstance()->addSite("site1", array("https://piwik.org", "http://example.com", "fb://special-url"));
+ API::getInstance()->addSite("site1", ["https://piwik.org", "http://example.com", "fb://special-url"]);
APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));
+ APIUsersManager::getInstance()->setUserAccess("user1", "view", [1]);
// Make sure we're not Super user
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user1';
$this->assertFalse(Piwik::hasUserSuperUserAccess());
- $this->assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls();
+ $this->assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls();
}
- private function assert_getSitesIdFromSiteUrl_matchesBothHttpAndHttpsUrls()
+ private function assertGetSitesIdFromSiteUrlMatchesBothHttpAndHttpsUrls()
{
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.org');
$this->assertTrue(count($idsites) == 1);
@@ -1217,27 +1343,27 @@ class ApiTest extends IntegrationTestCase
$this->assertTrue(count($idsites) == 0);
}
- public function test_getSitesIdFromSiteUrl_AsUser()
+ public function testGetSitesIdFromSiteUrlAsUser()
{
- API::getInstance()->addSite("site1", array("http://www.piwik.net", "https://piwik.com"));
- API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
- API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
+ API::getInstance()->addSite("site1", ["http://www.piwik.net", "https://piwik.com"]);
+ API::getInstance()->addSite("site2", ["http://piwik.com", "http://piwik.net"]);
+ API::getInstance()->addSite("site3", ["http://piwik.com", "http://piwik.org"]);
APIUsersManager::getInstance()->addUser("user1", "geqgegagae", "tegst@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user1", "view", array(1));
+ APIUsersManager::getInstance()->setUserAccess("user1", "view", [1]);
APIUsersManager::getInstance()->addUser("user2", "geqgegagae", "tegst2@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user2", "view", array(1));
- APIUsersManager::getInstance()->setUserAccess("user2", "admin", array(3));
+ APIUsersManager::getInstance()->setUserAccess("user2", "view", [1]);
+ APIUsersManager::getInstance()->setUserAccess("user2", "admin", [3]);
APIUsersManager::getInstance()->addUser("user3", "geqgegagae", "tegst3@tesgt.com");
- APIUsersManager::getInstance()->setUserAccess("user3", "view", array(1, 2));
- APIUsersManager::getInstance()->setUserAccess("user3", "admin", array(3));
+ APIUsersManager::getInstance()->setUserAccess("user3", "view", [1, 2]);
+ APIUsersManager::getInstance()->setUserAccess("user3", "admin", [3]);
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user1';
- FakeAccess::setIdSitesView(array(1));
- FakeAccess::setIdSitesAdmin(array());
+ FakeAccess::setIdSitesView([1]);
+ FakeAccess::setIdSitesAdmin([]);
$this->assertFalse(Piwik::hasUserSuperUserAccess());
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
@@ -1251,16 +1377,16 @@ class ApiTest extends IntegrationTestCase
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user2';
- FakeAccess::setIdSitesView(array(1));
- FakeAccess::setIdSitesAdmin(array(3));
+ FakeAccess::setIdSitesView([1]);
+ FakeAccess::setIdSitesAdmin([3]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
$this->assertEquals(2, count($idsites));
FakeAccess::$superUser = false;
FakeAccess::$identity = 'user3';
- FakeAccess::setIdSitesView(array(1, 2));
- FakeAccess::setIdSitesAdmin(array(3));
+ FakeAccess::setIdSitesView([1, 2]);
+ FakeAccess::setIdSitesAdmin([3]);
$idsites = API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
$this->assertEquals(3, count($idsites));
@@ -1269,21 +1395,20 @@ class ApiTest extends IntegrationTestCase
$this->assertEquals(3, count($idsites));
}
- public function test_getSitesFromTimezones_ReturnsCorrectIdSites()
+ public function testGetSitesFromTimezonesReturnsCorrectIdSites()
{
- API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC');
- $idsite2 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
- $idsite3 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
- $idsite4 = API::getInstance()->addSite("site3", array("http://piwik.org"), null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC+10');
- $result = API::getInstance()->getSitesIdFromTimezones(array('UTC+10', 'Pacific/Auckland'));
- $this->assertEquals(array($idsite2, $idsite3, $idsite4), $result);
+ API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC');
+ $idsite2 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
+ $idsite3 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'Pacific/Auckland');
+ $idsite4 = API::getInstance()->addSite("site3", ["http://piwik.org"], null, $siteSearch = 1, $searchKeywordParameters = null, $searchCategoryParameters = null, null, null, 'UTC+10');
+ $result = API::getInstance()->getSitesIdFromTimezones(['UTC+10', 'Pacific/Auckland']);
+ $this->assertEquals([$idsite2, $idsite3, $idsite4], $result);
}
public function provideContainerConfig()
{
- return array(
+ return [
'Piwik\Access' => new FakeAccess(),
- );
+ ];
}
-
}
diff --git a/plugins/SitesManager/tests/Integration/ModelTest.php b/plugins/SitesManager/tests/Integration/ModelTest.php
index 21ff01479c..433662dda9 100644
--- a/plugins/SitesManager/tests/Integration/ModelTest.php
+++ b/plugins/SitesManager/tests/Integration/ModelTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -31,21 +32,21 @@ class ModelTest extends IntegrationTestCase
$this->model = new Model();
}
- public function test_getUsedTypeIds_shouldReturnNoType_IfNoSitesExist()
+ public function testGetUsedTypeIdsShouldReturnNoTypeIfNoSitesExist()
{
- $this->assertSame(array(), $this->model->getUsedTypeIds());
+ $this->assertSame([], $this->model->getUsedTypeIds());
}
- public function test_getUsedTypeIds_shouldReturnOnlyOneType_IfAllSitesUseSameType()
+ public function testGetUsedTypeIdsShouldReturnOnlyOneTypeIfAllSitesUseSameType()
{
for ($i = 0; $i < 9; $i++) {
$this->createMeasurable('website');
}
- $this->assertSame(array('website'), $this->model->getUsedTypeIds());
+ $this->assertSame(['website'], $this->model->getUsedTypeIds());
}
- public function test_getUsedTypeIds_shouldReturnAnotherType_IfDifferentOnesAreUsed()
+ public function testGetUsedTypeIdsShouldReturnAnotherTypeIfDifferentOnesAreUsed()
{
for ($i = 0; $i < 9; $i++) {
$this->createMeasurable('website');
@@ -53,10 +54,10 @@ class ModelTest extends IntegrationTestCase
$this->createMeasurable('mobileapp');
}
- $this->assertSame(array('website', 'universal', 'mobileapp'), $this->model->getUsedTypeIds());
+ $this->assertSame(['website', 'universal', 'mobileapp'], $this->model->getUsedTypeIds());
}
- public function test_getAllKnownUrlsForAllSites_shouldReturnAllUrls()
+ public function testGetAllKnownUrlsForAllSitesShouldReturnAllUrls()
{
$idSite = $this->createMeasurable('website', 'http://apache.piwik');
$this->model->insertSiteUrl($idSite, 'http://example.apache.piwik');
@@ -68,45 +69,52 @@ class ModelTest extends IntegrationTestCase
$idSite3 = $this->createMeasurable('website', 'http://example.pro');
- $expected = array(
- array(
+ $expected = [
+ [
'idsite' => $idSite,
'url' => 'http://apache.piwik'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://piwik.net'
- ),
- array(
+ ],
+ [
'idsite' => $idSite3,
'url' => 'http://example.pro'
- ),
- array(
+ ],
+ [
'idsite' => $idSite,
'url' => 'http://example.apache.piwik'
- ),
- array(
+ ],
+ [
'idsite' => $idSite,
'url' => 'http://example.org'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://example.com'
- ),
- array(
+ ],
+ [
'idsite' => $idSite2,
'url' => 'http://example.org'
- )
+ ]
- );
+ ];
$this->assertEquals($expected, $this->model->getAllKnownUrlsForAllSites());
}
private function createMeasurable($type, $siteUrl = false)
{
- return Fixture::createWebsite('2015-01-01 00:00:00',
- $ecommerce = 0, $siteName = false, $siteUrl,
- $siteSearch = 1, $searchKeywordParameters = null,
- $searchCategoryParameters = null, $timezone = null, $type);
+ return Fixture::createWebsite(
+ '2015-01-01 00:00:00',
+ $ecommerce = 0,
+ $siteName = false,
+ $siteUrl,
+ $siteSearch = 1,
+ $searchKeywordParameters = null,
+ $searchCategoryParameters = null,
+ $timezone = null,
+ $type
+ );
}
}
diff --git a/plugins/SitesManager/tests/Integration/SiteUrlsTest.php b/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
index 69608e7cec..2232cf4e4c 100644
--- a/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
+++ b/plugins/SitesManager/tests/Integration/SiteUrlsTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -7,6 +8,7 @@
*/
namespace Piwik\Plugins\SitesManager\tests\Integration;
+
use Piwik\Cache;
use Piwik\Plugins\SitesManager\API;
use Piwik\Plugins\SitesManager\SiteUrls;
@@ -39,50 +41,50 @@ class SiteUrlsTest extends IntegrationTestCase
SiteUrls::clearSitesCache();
}
- public function testGetAllSiteUrls_shouldReturnAnEmptyArray_IfThereAreNoSites()
+ public function testGetAllSiteUrlsShouldReturnAnEmptyArrayIfThereAreNoSites()
{
- $this->assertSiteUrls(array());
+ $this->assertSiteUrls([]);
}
- public function testGetAllSiteUrls_shouldReturnUrlsForEachSiteId()
+ public function testGetAllSiteUrlsShouldReturnUrlsForEachSiteId()
{
$this->addSite('http://www.example.com'); // only one main URL
- $this->assertSiteUrls(array(1 => array('http://www.example.com')));
+ $this->assertSiteUrls([1 => ['http://www.example.com']]);
$this->addSite('http://www.example.com', 'http://www.piwik.org'); // main URL and alias URL
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://www.piwik.org')));
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://www.piwik.org']]);
$this->api->addSiteAliasUrls(2, 'http://piwik.org');
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://piwik.org', 'http://www.piwik.org')));
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://piwik.org', 'http://www.piwik.org']]);
- $this->api->setSiteAliasUrls(2, array());
- $this->assertSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com')));
+ $this->api->setSiteAliasUrls(2, []);
+ $this->assertSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com']]);
}
- public function testGetAllCachedSiteUrls_shouldReturnAnEmptyArray_IfThereAreNoSites()
+ public function testGetAllCachedSiteUrlsShouldReturnAnEmptyArrayIfThereAreNoSites()
{
- $this->assertCachedSiteUrls(array());
+ $this->assertCachedSiteUrls([]);
}
- public function testGetAllCachedSiteUrls_ShouldReturnCorrectResultEvenIfItIsCachedAsWeClearTheCacheOnAnyChange()
+ public function testGetAllCachedSiteUrlsShouldReturnCorrectResultEvenIfItIsCachedAsWeClearTheCacheOnAnyChange()
{
$this->addSite('http://www.example.com'); // only one main URL
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com']]);
$this->addSite('http://www.example.com', 'http://www.piwik.org'); // main URL and alias URL
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://www.piwik.org')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://www.piwik.org']]);
$this->api->addSiteAliasUrls(2, 'http://piwik.org');
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com', 'http://piwik.org', 'http://www.piwik.org')));
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com', 'http://piwik.org', 'http://www.piwik.org']]);
- $this->api->setSiteAliasUrls(2, array());
- $this->assertCachedSiteUrls(array(1 => array('http://www.example.com'), 2 => array('http://www.example.com')));
+ $this->api->setSiteAliasUrls(2, []);
+ $this->assertCachedSiteUrls([1 => ['http://www.example.com'], 2 => ['http://www.example.com']]);
- $this->api->updateSite(1, 'siteName3', array('http://updated.example.com', 'http://2.example.com'));
- $this->assertCachedSiteUrls(array(1 => array('http://updated.example.com', 'http://2.example.com'), 2 => array('http://www.example.com')));
+ $this->api->updateSite(1, 'siteName3', ['http://updated.example.com', 'http://2.example.com']);
+ $this->assertCachedSiteUrls([1 => ['http://updated.example.com', 'http://2.example.com'], 2 => ['http://www.example.com']]);
}
- public function testGetAllCachedSiteUrls_ShouldWriteACacheFile()
+ public function testGetAllCachedSiteUrlsShouldWriteACacheFile()
{
// make sure cache is empty
$this->assertValueInCache(false);
@@ -91,16 +93,16 @@ class SiteUrlsTest extends IntegrationTestCase
$this->siteUrls->getAllCachedSiteUrls();
// make sure we have a cached result
- $this->assertValueInCache(array(1 => array('http://www.example.com')));
+ $this->assertValueInCache([1 => ['http://www.example.com']]);
}
- public function test_clearSitesCache_ShouldActuallyDeleteACache()
+ public function testClearSitesCacheShouldActuallyDeleteACache()
{
$this->addSite('http://www.example.com');
$this->siteUrls->getAllCachedSiteUrls();
// make sure we have a cached result
- $this->assertValueInCache(array(1 => array('http://www.example.com')));
+ $this->assertValueInCache([1 => ['http://www.example.com']]);
SiteUrls::clearSitesCache();
@@ -108,9 +110,9 @@ class SiteUrlsTest extends IntegrationTestCase
$this->assertValueInCache(false);
}
- public function testGetAllCachedSiteUrls_ShouldReadFromTheCacheFile()
+ public function testGetAllCachedSiteUrlsShouldReadFromTheCacheFile()
{
- $urlsToFake = array(1 => 'Whatever');
+ $urlsToFake = [1 => 'Whatever'];
$cache = $this->buildCache();
$cache->save('allSiteUrlsPerSite', $urlsToFake, 600);
@@ -119,36 +121,36 @@ class SiteUrlsTest extends IntegrationTestCase
$this->assertEquals($urlsToFake, $actual);
}
- public function test_groupUrlsByHost_shouldReturnEmptyArray_WhenNoUrlsGiven()
+ public function testGroupUrlsByHostShouldReturnEmptyArrayWhenNoUrlsGiven()
{
- $this->assertSame(array(), $this->siteUrls->groupUrlsByHost(array()));
- $this->assertSame(array(), $this->siteUrls->groupUrlsByHost(null));
+ $this->assertSame([], $this->siteUrls->groupUrlsByHost([]));
+ $this->assertSame([], $this->siteUrls->groupUrlsByHost(null));
}
- public function test_groupUrlsByHost_shouldGroupByHost_WithOneSiteAndDifferentDomains_shouldRemoveWwwAndDefaultToPathSlash()
+ public function testGroupUrlsByHostShouldGroupByHostWithOneSiteAndDifferentDomainsShouldRemoveWwwAndDefaultToPathSlash()
{
$idSite = 1;
- $oneSite = array(
- $idSite => array(
+ $oneSite = [
+ $idSite => [
'http://apache.piwik',
'http://www.example.com', // should remove www.
'https://example.org', // should handle https or other protocol
'http://apache.piwik/', // same as initial one but with slash at the end, should not add idsite twice
'http://third.www.com' // should not remove www. in the middle of a domain
- )
- );
+ ]
+ ];
- $expected = array(
- 'apache.piwik' => array('/' => array($idSite)),
- 'example.com' => array('/' => array($idSite)),
- 'example.org' => array('/' => array($idSite)),
- 'third.www.com' => array('/' => array($idSite)),
- );
+ $expected = [
+ 'apache.piwik' => ['/' => [$idSite]],
+ 'example.com' => ['/' => [$idSite]],
+ 'example.org' => ['/' => [$idSite]],
+ 'third.www.com' => ['/' => [$idSite]],
+ ];
$this->assertSame($expected, $this->siteUrls->groupUrlsByHost($oneSite));
}
- public function test_groupUrlsByHost_shouldGroupByHost_WithDifferentDomainsAndPathsShouldListPathByNumberOfDirectoriesAndConvertToLowerCase()
+ public function testGroupUrlsByHostShouldGroupByHostWithDifferentDomainsAndPathsShouldListPathByNumberOfDirectoriesAndConvertToLowerCase()
{
$idSite = 1;
$idSite2 = 2;
@@ -156,36 +158,36 @@ class SiteUrlsTest extends IntegrationTestCase
$idSite4 = 4;
$idSite5 = 5;
- $urls = array(
- $idSite => array(
+ $urls = [
+ $idSite => [
'http://apache.piwik/test', 'http://apache.piWik', 'http://apache.piwik/foo/bAr/', 'http://apache.piwik/Foo/SECOND'
- ),
- $idSite2 => array(
+ ],
+ $idSite2 => [
'http://apache.piwik/test/', 'http://example.oRg', 'http://apache.piwik/foo/secOnd'
- ),
- $idSite3 => array(
+ ],
+ $idSite3 => [
'http://apache.piwik/', 'http://apache.piwik/third', 'http://exampLe.com', 'http://example.org/foo/test/two'
- ),
- $idSite4 => array(),
- $idSite5 => array('invalidUrl', 'ftp://example.org/'),
- );
-
- $expected = array(
- 'apache.piwik' => array(
- '/foo/second/' => array($idSite, $idSite2),
- '/foo/bar/' => array($idSite),
- '/third/' => array($idSite3),
- '/test/' => array($idSite, $idSite2),
- '/' => array($idSite, $idSite3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array($idSite3),
- '/' => array($idSite2, $idSite5)
- ),
- 'example.com' => array(
- '/' => array($idSite3)
- ),
- );
+ ],
+ $idSite4 => [],
+ $idSite5 => ['invalidUrl', 'ftp://example.org/'],
+ ];
+
+ $expected = [
+ 'apache.piwik' => [
+ '/foo/second/' => [$idSite, $idSite2],
+ '/foo/bar/' => [$idSite],
+ '/third/' => [$idSite3],
+ '/test/' => [$idSite, $idSite2],
+ '/' => [$idSite, $idSite3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [$idSite3],
+ '/' => [$idSite2, $idSite5]
+ ],
+ 'example.com' => [
+ '/' => [$idSite3]
+ ],
+ ];
$this->assertSame($expected, $this->siteUrls->groupUrlsByHost($urls));
}
@@ -193,26 +195,32 @@ class SiteUrlsTest extends IntegrationTestCase
/**
* @dataProvider getTestIdSitesMatchingUrl
*/
- public function test_getIdSitesMatchingUrl($expectedMatchSites, $parsedUrl)
+ public function testGetIdSitesMatchingUrl($expectedMatchSites, $parsedUrl)
{
- $urlsGroupedByHost = array(
- 'apache.piwik' => array(
- '/foo/second/' => array(2),
- '/foo/sec/' => array(4),
- '/foo/bar/' => array(1),
- '/third/' => array(3),
- '/test/' => array(1, 2),
- '/' => array(1, 3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array(3),
- '/foo/second/' => array(6),
- '/' => array(2, 5)
- ),
- 'example.com' => array(
- '/' => array(3)
- ),
- );
+ $urlsGroupedByHost = [
+ 'apache.piwik' => [
+ '/foo/second/' => [2],
+ '/foo/sec/' => [4],
+ '/foo/bar/' => [1],
+ '/third/' => [3],
+ '/test/' => [1, 2],
+ '/' => [1, 3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [3],
+ '/foo/second/' => [6],
+ '/' => [2, 5]
+ ],
+ 'example.com' => [
+ '/' => [3]
+ ],
+ 'my.site.com' => [
+ '/path/' => [2]
+ ],
+ '.site.com' => [
+ '/' => [3]
+ ]
+ ];
$matchedSites = $this->siteUrls->getIdSitesMatchingUrl($parsedUrl, $urlsGroupedByHost);
$this->assertSame($expectedMatchSites, $matchedSites);
@@ -220,49 +228,52 @@ class SiteUrlsTest extends IntegrationTestCase
public function getTestIdSitesMatchingUrl()
{
- return array(
- array(array(1,3), array('host' => 'apache.piwik')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => 'nomatch')), // no other URL matches a site so we fall back to domain match
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/nomatch')),
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second')),
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second/')), // it shouldn't matter if slash is at end or not
- array(array(2), array('host' => 'apache.piwik', 'path' => '/foo/second/test')), // it should find best match
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec/test')), // it should not use /foo/second for these
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec/')),
- array(array(4), array('host' => 'apache.piwik', 'path' => '/foo/sec')),
- array(array(1,3), array('host' => 'apache.piwik', 'path' => '/foo')),
- array(array(2,5), array('host' => 'example.org')),
- array(array(2,5), array('host' => 'example.org', 'path' => '/')),
- array(array(2,5), array('host' => 'example.org', 'path' => 'any/nonmatching/path')),
- array(array(6), array('host' => 'example.org', 'path' => '/foo/second')),
- array(array(6), array('host' => 'example.org', 'path' => '/foo/second/test')),
- array(array(3), array('host' => 'example.com')),
- array(null, array('host' => 'example.pro')),
- array(null, array('host' => 'example.pro', 'path' => '/any')),
- );
+ return [
+ [[1,3], ['host' => 'apache.piwik']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => 'nomatch']], // no other URL matches a site so we fall back to domain match
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/nomatch']],
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second']],
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second/']], // it shouldn't matter if slash is at end or not
+ [[2], ['host' => 'apache.piwik', 'path' => '/foo/second/test']], // it should find best match
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec/test']], // it should not use /foo/second for these
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec/']],
+ [[4], ['host' => 'apache.piwik', 'path' => '/foo/sec']],
+ [[1,3], ['host' => 'apache.piwik', 'path' => '/foo']],
+ [[2,5], ['host' => 'example.org']],
+ [[2,5], ['host' => 'example.org', 'path' => '/']],
+ [[2,5], ['host' => 'example.org', 'path' => 'any/nonmatching/path']],
+ [[6], ['host' => 'example.org', 'path' => '/foo/second']],
+ [[6], ['host' => 'example.org', 'path' => '/foo/second/test']],
+ [[3], ['host' => 'example.com']],
+ [null, ['host' => 'example.pro']],
+ [null, ['host' => 'example.pro', 'path' => '/any']],
+ [[2], ['host' => 'my.site.com', 'path' => '/path/sub']],
+ [[3], ['host' => 'my.site.com', 'path' => '/other/path']],
+ [[3], ['host' => 'any.site.com', 'path' => '/']],
+ ];
}
/**
* @dataProvider getTestPathMatchingUrl
*/
- public function test_getPathMatchingUrl($expectedMatchSites, $parsedUrl)
+ public function testGetPathMatchingUrl($expectedMatchSites, $parsedUrl)
{
- $urlsGroupedByHost = array(
- 'apache.piwik' => array(
- '/foo/second/' => array(2),
- '/foo/sec/' => array(4),
- '/foo/bar/' => array(1),
- '/third/' => array(3),
- '/test/' => array(1, 2),
- '/' => array(1, 3)
- ),
- 'example.org' => array(
- '/foo/test/two/' => array(3),
- '/foo/second/' => array(6),
- '/' => array(2, 5)
- ),
- );
+ $urlsGroupedByHost = [
+ 'apache.piwik' => [
+ '/foo/second/' => [2],
+ '/foo/sec/' => [4],
+ '/foo/bar/' => [1],
+ '/third/' => [3],
+ '/test/' => [1, 2],
+ '/' => [1, 3]
+ ],
+ 'example.org' => [
+ '/foo/test/two/' => [3],
+ '/foo/second/' => [6],
+ '/' => [2, 5]
+ ],
+ ];
$matchedSites = $this->siteUrls->getPathMatchingUrl($parsedUrl, $urlsGroupedByHost);
$this->assertSame($expectedMatchSites, $matchedSites);
@@ -270,23 +281,23 @@ class SiteUrlsTest extends IntegrationTestCase
public function getTestPathMatchingUrl()
{
- return array(
- array('/', array('host' => 'apache.piwik')),
- array('/', array('host' => 'apache.piwik', 'path' => '/')),
- array('/', array('host' => 'apache.piwik', 'path' => '')),
- array(null, array('host' => 'test.piwik')),
- array(null, array('host' => 'test.apache.piwik')), // we do not match subdomains, only exact domain match
-
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar')),
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar/')),
- array('/foo/bar/', array('host' => 'apache.piwik', 'path' => '/foo/bar/baz/')),
- array('/', array('host' => 'apache.piwik', 'path' => '/foo/baz/bar/')),
- array('/third/', array('host' => 'apache.piwik', 'path' => '/third/bar/baz/')),
-
- array('/foo/second/', array('host' => 'example.org', 'path' => '/foo/second/')),
- array('/', array('host' => 'example.org', 'path' => '/foo/secon')),
- array(null, array('host' => 'example.pro', 'path' => '/foo/second/')),
- );
+ return [
+ ['/', ['host' => 'apache.piwik']],
+ ['/', ['host' => 'apache.piwik', 'path' => '/']],
+ ['/', ['host' => 'apache.piwik', 'path' => '']],
+ [null, ['host' => 'test.piwik']],
+ [null, ['host' => 'test.apache.piwik']], // we do not match subdomains, only exact domain match
+
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar']],
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar/']],
+ ['/foo/bar/', ['host' => 'apache.piwik', 'path' => '/foo/bar/baz/']],
+ ['/', ['host' => 'apache.piwik', 'path' => '/foo/baz/bar/']],
+ ['/third/', ['host' => 'apache.piwik', 'path' => '/third/bar/baz/']],
+
+ ['/foo/second/', ['host' => 'example.org', 'path' => '/foo/second/']],
+ ['/', ['host' => 'example.org', 'path' => '/foo/secon']],
+ [null, ['host' => 'example.pro', 'path' => '/foo/second/']],
+ ];
}
private function assertSiteUrls($expectedUrls)
diff --git a/plugins/SitesManager/tests/Integration/SitesManagerTest.php b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
index 2dcbba313a..20d6b959fd 100644
--- a/plugins/SitesManager/tests/Integration/SitesManagerTest.php
+++ b/plugins/SitesManager/tests/Integration/SitesManagerTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -45,7 +46,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->siteId = Fixture::createWebsite('2014-03-03 00:00:00');
}
- public function test_onSiteDeleted_shouldClearSiteCache()
+ public function testOnSiteDeletedShouldClearSiteCache()
{
$cache = Cache::getLazyCache();
$cache->save($this->siteId, 'testcontent');
@@ -55,7 +56,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertFalse($cache->contains($this->siteId));
}
- public function test_onSiteDeleted_shouldRemoveRememberedArchiveReports()
+ public function testOnSiteDeletedShouldRemoveRememberedArchiveReports()
{
$archive = StaticContainer::get('Piwik\Archive\ArchiveInvalidator');
$archive->rememberToInvalidateArchivedReportsLater($this->siteId, Date::factory('2014-04-05'));
@@ -66,23 +67,23 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertCount(2, $remembered);
sort($remembered['2014-04-05']);
- $this->assertSame(array($this->siteId, 4949), $remembered['2014-04-05']);
+ $this->assertSame([$this->siteId, 4949], $remembered['2014-04-05']);
sort($remembered['2014-04-06']);
- $this->assertSame(array($this->siteId), $remembered['2014-04-06']);
+ $this->assertSame([$this->siteId], $remembered['2014-04-06']);
$this->manager->onSiteDeleted($this->siteId);
- $expected = array(
- '2014-04-05' => array(4949)
- );
+ $expected = [
+ '2014-04-05' => [4949]
+ ];
$this->assertEquals($expected, $archive->getRememberedArchivedReportsThatShouldBeInvalidated());
}
/**
* @dataProvider getTestDataForRedirectDashboard
*/
- public function test_redirectDashboardToWelcomePage_doesNothingIfModuleActionAreIncorrect($module, $action)
+ public function testRedirectDashboardToWelcomePageDoesNothingIfModuleActionAreIncorrect($module, $action)
{
$originalModule = $module;
$originalAction = $action;
@@ -102,7 +103,7 @@ class SitesManagerTest extends IntegrationTestCase
];
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfThereIsNoIdSiteParam()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfThereIsNoIdSiteParam()
{
$module = 'CoreHome';
$action = 'index';
@@ -114,7 +115,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfAVisitWasTrackedInThePast()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfAVisitWasTrackedInThePast()
{
$module = 'CoreHome';
$action = 'index';
@@ -136,7 +137,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_doesNothingIfAVisitWasTrackedAndWasLaterPurged()
+ public function testRedirectDashboardToWelcomePageDoesNothingIfAVisitWasTrackedAndWasLaterPurged()
{
$module = 'CoreHome';
$action = 'index';
@@ -159,7 +160,7 @@ class SitesManagerTest extends IntegrationTestCase
$this->assertEquals('index', $action);
}
- public function test_redirectDashboardToWelcomePage_redirectsIfThereIsNoDataAndAppropriateParams()
+ public function testRedirectDashboardToWelcomePageRedirectsIfThereIsNoDataAndAppropriateParams()
{
$module = 'CoreHome';
$action = 'index';
@@ -183,8 +184,8 @@ class SitesManagerTest extends IntegrationTestCase
public function provideContainerConfig()
{
- return array(
+ return [
'Piwik\Access' => new FakeAccess()
- );
+ ];
}
}
diff --git a/plugins/SitesManager/tests/Integration/TrackingTest.php b/plugins/SitesManager/tests/Integration/TrackingTest.php
index 042f44075a..623c59e27c 100644
--- a/plugins/SitesManager/tests/Integration/TrackingTest.php
+++ b/plugins/SitesManager/tests/Integration/TrackingTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -20,7 +21,7 @@ use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
*/
class TrackingTest extends IntegrationTestCase
{
- public function test_TrackingOldVisits_ResetsSiteCreatedTime_SoDataCanBeViewedInUI()
+ public function testTrackingOldVisitsResetsSiteCreatedTimeSoDataCanBeViewedInUI()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -35,7 +36,7 @@ class TrackingTest extends IntegrationTestCase
$this->assertEquals('2014-05-04 00:00:00', $createdTime);
}
- public function test_TrackingOldVisit_ThatIsExcluded_DoesNotResetCreatedTime()
+ public function testTrackingOldVisitThatIsExcludedDoesNotResetCreatedTime()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -53,7 +54,7 @@ class TrackingTest extends IntegrationTestCase
$this->assertEquals('2014-12-31 00:00:00', $createdTime);
}
- public function test_TrackingOldVisit_ForSiteWithNoTsCreatedTime_DoesNotResetCreatedTime()
+ public function testTrackingOldVisitForSiteWithNoTsCreatedTimeDoesNotResetCreatedTime()
{
Fixture::createWebsite('2015-01-01 00:00:00');
@@ -77,12 +78,12 @@ class TrackingTest extends IntegrationTestCase
private function getSiteCreatedTime($idSite)
{
- return Db::fetchOne("SELECT ts_created FROM " . Common::prefixTable('site') . " WHERE idsite = ?", array($idSite));
+ return Db::fetchOne("SELECT ts_created FROM " . Common::prefixTable('site') . " WHERE idsite = ?", [$idSite]);
}
private function unsetCreatedTime($idSite)
{
- Db::query("UPDATE " . Common::prefixTable('site') . " SET ts_created = NULL WHERE idsite = ?", array($idSite));
+ Db::query("UPDATE " . Common::prefixTable('site') . " SET ts_created = NULL WHERE idsite = ?", [$idSite]);
}
protected static function configureFixture($fixture)
@@ -91,4 +92,4 @@ class TrackingTest extends IntegrationTestCase
$fixture->createSuperUser = true;
}
-} \ No newline at end of file
+}
diff --git a/plugins/SitesManager/tests/System/ApiTest.php b/plugins/SitesManager/tests/System/ApiTest.php
index 6d7d3e0ba7..188416c700 100644
--- a/plugins/SitesManager/tests/System/ApiTest.php
+++ b/plugins/SitesManager/tests/System/ApiTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -35,67 +36,67 @@ class ApiTest extends SystemTestCase
public function getApiForTesting()
{
- $apiToTest = array();
- $apiToTest[] = array(array('SitesManager.getPatternMatchSites'),
- array(
+ $apiToTest = [];
+ $apiToTest[] = [['SitesManager.getPatternMatchSites'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1')
- )
- );
- $apiToTest[] = array(array('SitesManager.getPatternMatchSites'),
- array(
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1']
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getPatternMatchSites'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1', 'limit' => 2),
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1', 'limit' => 2],
'testSuffix' => 'withLimit'
- )
- );
- $apiToTest[] = array(array('SitesManager.getNumWebsitesToDisplayPerPage'),
- array(
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getNumWebsitesToDisplayPerPage'],
+ [
'idSite' => 1,
'date' => self::$fixture->dateTime,
- 'periods' => array('day'),
- 'otherRequestParameters' => array('pattern' => 'SiteTest1')
- )
- );
- $apiToTest[] = array(array('SitesManager.getSiteSettings'),
- array(
+ 'periods' => ['day'],
+ 'otherRequestParameters' => ['pattern' => 'SiteTest1']
+ ]
+ ];
+ $apiToTest[] = [['SitesManager.getSiteSettings'],
+ [
'idSite' => 1
- )
- );
+ ]
+ ];
return $apiToTest;
}
- public function test_InstalledBeforeMatomo37()
+ public function testInstalledBeforeMatomo37()
{
$this->setInstallVersion('3.6.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
'testSuffix' => '_prior3_7_0'
- ));
+ ]);
}
- public function test_InstalledBeforeMatomo37ButForced()
+ public function testInstalledBeforeMatomo37ButForced()
{
$this->setInstallVersion('3.6.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
- 'otherRequestParameters' => array('forceMatomoEndpoint' => 1),
+ 'otherRequestParameters' => ['forceMatomoEndpoint' => 1],
'testSuffix' => '_prior3_7_0_but_forced'
- ));
+ ]);
}
- public function test_InstalledAfterMatomo37()
+ public function testInstalledAfterMatomo37()
{
$this->setInstallVersion('3.7.0');
- $this->runApiTests(array('SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'), array(
+ $this->runApiTests(['SitesManager.getJavascriptTag', 'SitesManager.getImageTrackingCode'], [
'idSite' => 1,
'testSuffix' => '_after3_7_0'
- ));
+ ]);
}
private function setInstallVersion($installVersion)
@@ -112,7 +113,6 @@ class ApiTest extends SystemTestCase
{
return dirname(__FILE__);
}
-
}
-ApiTest::$fixture = new ManySites(); \ No newline at end of file
+ApiTest::$fixture = new ManySites();
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
index 40a0823b76..429d57fd42 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getPatternMatchSites.xml
@@ -15,6 +15,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -37,6 +38,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -59,6 +61,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -81,6 +84,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -103,6 +107,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -125,6 +130,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -147,6 +153,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -169,6 +176,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -191,6 +199,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -213,6 +222,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -235,6 +245,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
index 624774cb7d..0fadc11a5b 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManager__SitesManager.getSiteSettings.xml
@@ -125,6 +125,26 @@ https://www.example.org/</placeholder>
<condition />
</row>
<row>
+ <name>excluded_referrers</name>
+ <title>Excluded referrers</title>
+ <value>
+ </value>
+ <defaultValue>
+ </defaultValue>
+ <type>array</type>
+ <uiControl>textarea</uiControl>
+ <uiControlAttributes>
+ <cols>20</cols>
+ <rows>4</rows>
+ </uiControlAttributes>
+ <availableValues />
+ <description />
+ <inlineHelp>Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.&lt;br /&gt;&lt;br /&gt;Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.&lt;br /&gt;e.g. &quot;www.example.org&quot; would match &quot;http://example.org/mypath&quot; and &quot;https://www.example.org/?param=1&quot; but not &quot;https://sub.example.org/&quot;&lt;br /&gt;&lt;br /&gt;To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. &quot;.sub.example.org&quot; would exclude &quot;http://sub.example.org/mypath&quot;, but also all its subdomains like &quot;https://new.sub.example.org/&quot;.</inlineHelp>
+ <templateFile />
+ <introduction />
+ <condition />
+ </row>
+ <row>
<name>sitesearch</name>
<title>Site Search</title>
<value>1</value>
diff --git a/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml b/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
index ff12b972da..d24e8d2354 100644
--- a/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
+++ b/plugins/SitesManager/tests/System/expected/test_SitesManagerwithLimit__SitesManager.getPatternMatchSites.xml
@@ -15,6 +15,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
@@ -37,6 +38,7 @@
<excluded_ips />
<excluded_parameters />
<excluded_user_agents />
+ <excluded_referrers />
<group />
<type>website</type>
<keep_url_fragment>0</keep_url_fragment>
diff --git a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
index 2db69b918e..7a9b969825 100644
--- a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
+++ b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_global_settings.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de015ca1177509f696d12d07bfdc10c034f90d688c143d544b5fcb9fc997e8f7
-size 254454
+oid sha256:a2c8a88774382621127514bca028ecbb35ed4c45c88ad2ccca1762053c7aaba9
+size 323951
diff --git a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
index 891834b2c4..0cc7ff1efd 100644
--- a/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
+++ b/plugins/SitesManager/tests/UI/expected-screenshots/SitesManager_site_edit_url.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:50e9b492ac0e36727fce571beb6c4ee7fad2e4d54a3c5cebb4f41bb545af4f14
-size 330106
+oid sha256:2fda752b4a36129a30d2f31f382f62d0ef65fb8dfb5719c4a626b0299d751dc4
+size 391919
diff --git a/plugins/SitesManager/tests/Unit/APITest.php b/plugins/SitesManager/tests/Unit/APITest.php
index 15b46171ac..2d7610aca8 100644
--- a/plugins/SitesManager/tests/Unit/APITest.php
+++ b/plugins/SitesManager/tests/Unit/APITest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -47,18 +48,18 @@ class APITest extends \PHPUnit\Framework\TestCase
public function getTimezoneNameTestData()
{
- return array(
- array('Europe/Rome', 'en', 'Italy'),
- array('Europe/Rome', 'it', 'Italia'),
- array('America/New_York', 'en', 'United States - New York'),
- array('America/New_York', 'ru', 'Соединенные Штаты - Нью-Йорк'),
- array('Asia/Foo_Bar', 'en', 'Foo Bar'),
- array('Etc/UTC', 'en', 'UTC'),
- array('UTC', 'en', 'UTC'),
- array('UTC+1', 'en', 'UTC+1'),
- array('UTC+1.5', 'en', 'UTC+1:30'),
- array('UTC-1.5', 'en', 'UTC-1:30'),
- );
+ return [
+ ['Europe/Rome', 'en', 'Italy'],
+ ['Europe/Rome', 'it', 'Italia'],
+ ['America/New_York', 'en', 'United States - New York'],
+ ['America/New_York', 'ru', 'Соединенные Штаты - Нью-Йорк'],
+ ['Asia/Foo_Bar', 'en', 'Foo Bar'],
+ ['Etc/UTC', 'en', 'UTC'],
+ ['UTC', 'en', 'UTC'],
+ ['UTC+1', 'en', 'UTC+1'],
+ ['UTC+1.5', 'en', 'UTC+1:30'],
+ ['UTC-1.5', 'en', 'UTC-1:30'],
+ ];
}
/**
diff --git a/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php b/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
index 66045cc909..ed85e26a55 100644
--- a/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
+++ b/plugins/SitesManager/tests/Unit/GuessSiteTypeAndGtmTest.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -16,7 +17,7 @@ use Piwik\Plugins\SitesManager\SitesManager;
* @group GtmSiteTypeGuesserTest
* @group Plugins
*/
-class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
+class GuessSiteTypeAndGtmTest extends \PHPUnit\Framework\TestCase
{
/**
* @var GtmSiteTypeGuesser
@@ -30,17 +31,17 @@ class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
$this->guesser = new GtmSiteTypeGuesser();
}
- public function test_site_type_unknown_if_response_false()
+ public function testSiteTypeUnknownIfResponseFalse()
{
$this->assertEquals(SitesManager::SITE_TYPE_UNKNOWN, $this->guesser->guessSiteTypeFromResponse(false));
}
- public function test_gtm_is_false_if_response_false()
+ public function testGtmIsFalseIfResponseFalse()
{
$this->assertFalse($this->guesser->guessGtmFromResponse(false));
}
- public function test_gtm_is_true()
+ public function testGtmIsTrue()
{
$response = [
'status' => 200,
@@ -54,7 +55,7 @@ class GtmSiteTypeGuesserTest extends \PHPUnit\Framework\TestCase
/**
* @dataProvider responseProvider
*/
- public function test_site_types_by_response($expected, $response)
+ public function testSiteTypesByResponse($expected, $response)
{
$this->assertEquals($expected, $this->guesser->guessSiteTypeFromResponse($response));
}
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.js b/plugins/SitesManager/vue/dist/SitesManager.umd.js
index 4601a84174..aa0ff4d137 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.js
@@ -1442,6 +1442,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
excludedIpsGlobal: '',
excludedQueryParametersGlobal: '',
excludedUserAgentsGlobal: '',
+ excludedReferrersGlobal: '',
searchKeywordParametersGlobal: '',
searchCategoryParametersGlobal: ''
}
@@ -1492,6 +1493,7 @@ var GlobalSettingsStore_GlobalSettingsStore = /*#__PURE__*/function () {
excludedIpsGlobal: response.excludedIpsGlobal || '',
excludedQueryParametersGlobal: response.excludedQueryParametersGlobal || '',
excludedUserAgentsGlobal: response.excludedUserAgentsGlobal || '',
+ excludedReferrersGlobal: response.excludedReferrersGlobal || '',
searchKeywordParametersGlobal: response.searchKeywordParametersGlobal || '',
searchCategoryParametersGlobal: response.searchCategoryParametersGlobal || ''
});
@@ -1806,81 +1808,96 @@ SitesManagementvue_type_script_lang_ts.render = render
window.angular.module('piwikApp').factory('sitesManagerAPI', function () {
return {};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=213acaec
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=5467128a
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_1 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_1 = {
class: "SitesManager"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
name: "globalSettings",
id: "globalSettings"
}, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_3 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_3 = {
id: "excludedIpsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_6 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_7 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_6 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_7 = {
id: "excludedQueryParametersGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_10 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_10 = {
id: "excludedUserAgentsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_13 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_13 = {
+ id: "excludedReferrersGlobalHelp",
+ class: "inline-help-node"
+};
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_19 = {
id: "timezoneHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_14 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_20 = {
key: 0
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_17 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_23 = {
id: "keepURLFragmentsHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_18 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_19 = {
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_24 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_25 = {
class: "alert alert-info"
};
-function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageGlobalSettingsvue_type_template_id_5467128a_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
"content-title": _ctx.translate('SitesManager_GlobalWebsitesSettings')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_4, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_4, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.yourCurrentIpAddressIs)
- }, null, 8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_11, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_11, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelp')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_14, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_15, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpDetails')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpExamples', 'www.example.org', 'http://example.org/mypath', 'https://www.example.org/?param=1', 'https://sub.example.org/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_17, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ExcludedReferrersHelpSubDomains', '.sub.example.org', 'http://sub.example.org/mypath', 'https://new.sub.example.org/')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_21])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
innerHTML: _ctx.$sanitize(_ctx.keepUrlFragmentHelp)
- }, null, 8, ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_24), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "textarea",
name: "excludedIpsGlobal",
"var-type": "array",
@@ -1917,22 +1934,34 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
"inline-help": '#excludedUserAgentsGlobalHelp',
disabled: _ctx.isLoading
}, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "textarea",
+ name: "excludedReferrersGlobal",
+ "var-type": "array",
+ modelValue: _ctx.excludedReferrersGlobal,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.excludedReferrersGlobal = $event;
+ }),
+ title: _ctx.translate('SitesManager_GlobalListExcludedReferrersDesc'),
+ introduction: _ctx.translate('SitesManager_GlobalListExcludedReferrers'),
+ "inline-help": '#excludedReferrersGlobalHelp',
+ disabled: _ctx.isLoading
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "keepURLFragmentsGlobal",
modelValue: _ctx.keepURLFragmentsGlobal,
- "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
return _ctx.keepURLFragmentsGlobal = $event;
}),
title: _ctx.translate('SitesManager_KeepURLFragmentsLong'),
introduction: _ctx.translate('SitesManager_KeepURLFragments'),
"inline-help": '#keepURLFragmentsHelp',
disabled: _ctx.isLoading
- }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_213acaec_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_5467128a_hoisted_25, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "searchKeywordParametersGlobal",
"var-type": "array",
modelValue: _ctx.searchKeywordParametersGlobal,
- "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.searchKeywordParametersGlobal = $event;
}),
title: _ctx.translate('SitesManager_SearchKeywordLabel'),
@@ -1943,7 +1972,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
name: "searchCategoryParametersGlobal",
"var-type": "array",
modelValue: _ctx.searchCategoryParametersGlobal,
- "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
return _ctx.searchCategoryParametersGlobal = $event;
}),
title: _ctx.translate('SitesManager_SearchCategoryLabel'),
@@ -1958,14 +1987,14 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
"inline-help": '#timezoneHelp',
disabled: _ctx.isLoading,
modelValue: _ctx.defaultTimezone,
- "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
return _ctx.defaultTimezone = $event;
})
}, null, 8, ["options", "title", "introduction", "disabled", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "defaultCurrency",
modelValue: _ctx.defaultCurrency,
- "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
return _ctx.defaultCurrency = $event;
}),
options: _ctx.currencies,
@@ -1975,7 +2004,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
disabled: _ctx.isLoading
}, null, 8, ["modelValue", "options", "title", "introduction", "inline-help", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
saving: _ctx.isSaving,
- onConfirm: _cache[8] || (_cache[8] = function ($event) {
+ onConfirm: _cache[9] || (_cache[9] = function ($event) {
return _ctx.saveGlobalSettings();
})
}, null, 8, ["saving"])];
@@ -1983,7 +2012,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
_: 1
}, 8, ["content-title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess]])]);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=213acaec
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=5467128a
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=script&lang=ts
@@ -2016,6 +2045,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
excludedIpsGlobal: (settings.excludedIpsGlobal || '').split(','),
excludedQueryParametersGlobal: (settings.excludedQueryParametersGlobal || '').split(','),
excludedUserAgentsGlobal: (settings.excludedUserAgentsGlobal || '').split(','),
+ excludedReferrersGlobal: (settings.excludedReferrersGlobal || '').split(','),
searchKeywordParametersGlobal: (settings.searchKeywordParametersGlobal || '').split(','),
searchCategoryParametersGlobal: (settings.searchCategoryParametersGlobal || '').split(','),
isSaving: false
@@ -2036,6 +2066,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
_this.excludedIpsGlobal = (settings.excludedIpsGlobal || '').split(',');
_this.excludedQueryParametersGlobal = (settings.excludedQueryParametersGlobal || '').split(',');
_this.excludedUserAgentsGlobal = (settings.excludedUserAgentsGlobal || '').split(',');
+ _this.excludedReferrersGlobal = (settings.excludedReferrersGlobal || '').split(',');
_this.searchKeywordParametersGlobal = (settings.searchKeywordParametersGlobal || '').split(',');
_this.searchCategoryParametersGlobal = (settings.searchCategoryParametersGlobal || '').split(',');
});
@@ -2057,6 +2088,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
excludedIps: this.excludedIpsGlobal.join(','),
excludedQueryParameters: this.excludedQueryParametersGlobal.join(','),
excludedUserAgents: this.excludedUserAgentsGlobal.join(','),
+ excludedReferrers: this.excludedReferrersGlobal.join(','),
searchKeywordParameters: this.searchKeywordParametersGlobal.join(','),
searchCategoryParameters: this.searchCategoryParametersGlobal.join(',')
}).then(function () {
@@ -2126,7 +2158,7 @@ function ManageGlobalSettingsvue_type_template_id_213acaec_render(_ctx, _cache,
-ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_213acaec_render
+ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_5467128a_render
/* harmony default export */ var ManageGlobalSettings = (ManageGlobalSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.adapter.ts
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
index 25fb5ddb6a..dea9ca88c0 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
@@ -1,45 +1,45 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["SitesManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["SitesManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(a,i,function(t){return e[t]}.bind(null,i));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/SitesManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"SiteTypesStore",(function(){return h})),n.d(t,"CurrencyStore",(function(){return Xe})),n.d(t,"TimezoneStore",(function(){return Re})),n.d(t,"SitesManagement",(function(){return gt})),n.d(t,"ManageGlobalSettings",(function(){return Lt})),"undefined"!==typeof window){var a=window.document.currentScript,i=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),l=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["SitesManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["SitesManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(a,i,function(t){return e[t]}.bind(null,i));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/SitesManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"SiteTypesStore",(function(){return p})),n.d(t,"CurrencyStore",(function(){return Xe})),n.d(t,"TimezoneStore",(function(){return We})),n.d(t,"SitesManagement",(function(){return gt})),n.d(t,"ManageGlobalSettings",(function(){return Rt})),"undefined"!==typeof window){var a=window.document.currentScript,i=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),l=n("8bbf");function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function c(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),e}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0)}return c(e,[{key:"init",value:function(){return this.fetchAvailableTypes()}},{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),h=new m;
+ */var d=window,b=d.$,m=function(){function e(){var t=this;o(this,e),u(this,"state",Object(l["reactive"])({isLoading:!1,typesById:{}})),u(this,"typesById",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).typesById}))),u(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.state).isLoading}))),u(this,"types",Object(l["computed"])((function(){return Object.values(t.typesById.value)}))),u(this,"response",void 0)}return c(e,[{key:"init",value:function(){return this.fetchAvailableTypes()}},{key:"fetchAvailableTypes",value:function(){var e=this;return this.response?Promise.resolve(this.response):(this.state.isLoading=!0,this.response=r["AjaxHelper"].fetch({method:"API.getAvailableMeasurableTypes",filter_limit:"-1"}).then((function(t){return t.forEach((function(t){e.state.typesById[t.id]=t})),e.types.value})).finally((function(){e.state.isLoading=!1})),this.response)}},{key:"getEditSiteIdParameter",value:function(){var e=r["MatomoUrl"].hashQuery.value.match(/editsiteid=([0-9]+)/);if(e){var t="1"===r["MatomoUrl"].urlParsed.value.showaddsite||"true"===r["MatomoUrl"].urlParsed.value.showaddsite,n=e[1];return n&&b.isNumeric(n)&&!t?n:void 0}}},{key:"removeEditSiteIdParameterFromHash",value:function(){var e=Object.assign({},r["MatomoUrl"].hashParsed.value);delete e.editsiteid,r["MatomoUrl"].updateHash(e)}}]),e}(),p=new m;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],v=Object(l["createElementVNode"])("br",null,null,-1),j=["innerHTML"],O={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[v,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.superUserAccessMessage)},null,8,j)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",O,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],k={class:"paging"},G=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},z=["disabled"],I={style:{cursor:"pointer"},class:"pointer"};function B(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",k,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,G),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",I,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,z)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){h.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=B;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],ve={key:1},je={class:"form-group row"},Oe={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ve,[Object(l["createElementVNode"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function ke(e,t){return Ie(e)||ze(e,t)||Ue(e,t)||Ge()}function Ge(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ze(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Ie(e){if(Array.isArray(e))return e}function Be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function h(){return{get typesById(){return Object(r["clone"])(p.typesById.value)},fetchTypeById:function(e){var t=this;return p.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return p.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return p.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:p.removeEditSiteIdParameterFromHash.bind(p),getEditSiteIdParameter:p.getEditSiteIdParameter.bind(p)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",h);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],j=Object(l["createElementVNode"])("br",null,null,-1),O=["innerHTML"],v={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],x={class:"ui-button-text"},T={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[j,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.superUserAccessMessage)},null,8,O)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",v,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",x,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",T,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var _={class:"sitesButtonBar clearfix"},C={class:"search"},G=["value","placeholder","disabled"],P=["title"],D={class:"paging"},k=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},z=["disabled"],I={style:{cursor:"pointer"},class:"pointer"};function B(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",_,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",C,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,G),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,P)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",D,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,k),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",I,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,z)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){p.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return p.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=B;var F=H,R=["idsite","type"],K={class:"card-content"},W={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],pe=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),he=[pe],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],je={key:1},Oe={class:"form-group row"},ve={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},xe=Object(l["createElementVNode"])("br",null,null,-1),Te=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},_e=["value"],Ce=["value"];function Ge(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),p=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",K,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",W,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},he,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["createElementVNode"])("div",ve,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),xe])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),Te,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(p,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,_e),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,Ce)])]})),_:1},8,["modelValue"])],10,R)}var Pe=n("a5a2");function De(e,t){return Ie(e)||ze(e,t)||Ue(e,t)||ke()}function ke(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ze(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Ie(e){if(Array.isArray(e))return e}function Be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Re(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var We=function(){function e(){var t=this;Be(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Ke(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=ke(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=ke(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=new We;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Ke=function(){function e(){var t=this;Be(this,e),Re(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Re(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Re(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Re(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Re(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Re(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=De(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=De(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),We=new Ke;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),Ye(this,"initializePromise",null)}return $e(e,[{key:"init",value:function(){return this.initializePromise||(this.initializePromise=this.fetchCurrencies()),this.initializePromise}},{key:"fetchCurrencies",value:function(){var e=this;return this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=new Je;function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return Re.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:De["Field"],GroupedSettings:De["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){Xe.init(),Re.init(),h.init(),this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=h.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=Re.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),h.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,h.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return h.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=h.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Pe;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var Je=function(){function e(){var t=this;Qe(this,e),Ye(this,"privateState",Object(l["reactive"])({isLoading:!1,currencies:{}})),Ye(this,"currencies",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).currencies}))),Ye(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),Ye(this,"initializePromise",null)}return $e(e,[{key:"init",value:function(){return this.initializePromise||(this.initializePromise=this.fetchCurrencies()),this.initializePromise}},{key:"fetchCurrencies",value:function(){var e=this;return this.privateState.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getCurrencyList"}).then((function(t){e.privateState.currencies=t})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),Xe=new Je;function Ze(e,t){return it(e)||at(e,t)||tt(e,t)||et()}function et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tt(e,t){if(e){if("string"===typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function at(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function it(e){if(Array.isArray(e))return e}var rt=Object(l["computed"])((function(){return We.timezones.value.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))}));function lt(e){return"undefined"===typeof e.idsite}var ot=Object(l["defineComponent"])({props:{site:{type:Object,required:!0},timezoneSupportEnabled:{type:Boolean},utcTime:{type:Date,required:!0},globalSettings:{type:Object,required:!0}},data:function(){return{isLoading:!1,editMode:!1,theSite:Object.assign({},this.site),measurableSettings:[],settingValues:{},showRemoveDialog:!1}},components:{MatomoDialog:r["MatomoDialog"],Field:Pe["Field"],GroupedSettings:Pe["GroupedSettings"],ActivityIndicator:r["ActivityIndicator"]},emits:["delete","editSite","cancelEditSite","save"],created:function(){Xe.init(),We.init(),p.init(),this.onSiteChanged()},watch:{site:function(){this.onSiteChanged()},measurableSettings:function(e){if(e.length){var t={};e.forEach((function(e){e.settings.forEach((function(n){t["".concat(e.pluginName,".").concat(n.name)]=n.value}))})),this.settingValues=t}}},methods:{onSiteChanged:function(){var e=this.site;this.theSite=Object.assign({},e);var t=lt(e);if(t){var n=this.globalSettings;this.theSite.timezone=n.defaultTimezone,this.theSite.currency=n.defaultCurrency}var a=p.getEditSiteIdParameter();(t||a&&"".concat(e.idsite)===a)&&this.editSite()},editSite:function(){var e=this;if(this.editMode=!0,this.$emit("editSite",{idSite:this.theSite.idsite}),this.measurableSettings=[],lt(this.theSite)){if(!this.currentType)return;this.measurableSettings=this.currentType.settings||[]}else this.isLoading=!0,r["AjaxHelper"].fetch({method:"SitesManager.getSiteSettings",idSite:this.theSite.idsite}).then((function(t){e.measurableSettings=t})).finally((function(){e.isLoading=!1}))},saveSite:function(){var e=this,t={siteName:this.theSite.name,timezone:this.theSite.timezone,currency:this.theSite.currency,type:this.theSite.type,settingValues:{}},n=lt(this.theSite),a="SitesManager.addSite";n||(a="SitesManager.updateSite",t.idSite=this.theSite.idsite),Object.entries(this.settingValues).forEach((function(e){var n=Ze(e,2),a=n[0],i=n[1],r=a.split("."),l=Ze(r,2),o=l[0],s=l[1],c=t.settingValues;c[o]||(c[o]=[]);var u=i;!1===i?u="0":!0===i?u="1":Array.isArray(i)&&(u=i.filter((function(e){return!!e}))),c[o].push({name:s,value:u})})),r["AjaxHelper"].post({method:a},t).then((function(a){e.editMode=!1,!e.theSite.idsite&&a&&a.value&&(e.theSite.idsite="".concat(a.value));var i=We.timezones.value.find((function(t){return t.code===e.theSite.timezone}));e.theSite.timezone_name=(null===i||void 0===i?void 0:i.label)||e.theSite.timezone,e.theSite.currency&&(e.theSite.currency_name=Xe.currencies.value[e.theSite.currency]);var l=r["NotificationsStore"].show({message:n?Object(r["translate"])("SitesManager_WebsiteCreated"):Object(r["translate"])("SitesManager_WebsiteUpdated"),context:"success",id:"websitecreated",type:"transient"});r["NotificationsStore"].scrollToNotification(l),p.removeEditSiteIdParameterFromHash(),e.$emit("save",{site:e.theSite,settingValues:t.settingValues,isNew:n})}))},cancelEditSite:function(e){this.editMode=!1,p.removeEditSiteIdParameterFromHash(),this.$emit("cancelEditSite",{site:e,element:this.$refs.root})},deleteSite:function(){var e=this;r["AjaxHelper"].fetch({idSite:this.theSite.idsite,module:"API",format:"json",method:"SitesManager.deleteSite"}).then((function(){e.$emit("delete",e.theSite)}))}},computed:{availableTypes:function(){return p.types.value},setupUrl:function(){var e=this.theSite,t="",n="";return this.isInternalSetupUrl&&(t=r["MatomoUrl"].stringify({idSite:e.idsite,period:r["MatomoUrl"].parsed.value.period,date:r["MatomoUrl"].parsed.value.date,updated:"false"}),n=-1===this.howToSetupUrl.indexOf("?")?"?":"&"),"".concat(this.howToSetupUrl).concat(n).concat(t)},utcTimeIs:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds()),l="".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i);return Object(r["translate"])("SitesManager_UTCTimeIs",l)},timezones:function(){return rt.value},currencies:function(){return Xe.currencies.value},currentType:function(){var e=this.site,t=p.typesById.value[e.type];return t||{name:e.type}},howToSetupUrl:function(){var e=this.currentType;if(e)return e.howToSetupUrl},isInternalSetupUrl:function(){var e=this.howToSetupUrl;return!!e&&"?"==="".concat(e).substring(0,1)},removeDialogTitle:function(){return Object(r["translate"])("SitesManager_DeleteConfirm",'"'.concat(this.theSite.name,'" (idSite = ').concat(this.theSite.idsite,")"))}}});ot.render=Ge;var st=ot;function ct(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ut(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function dt(e,t,n){return t&&ut(e.prototype,t),n&&ut(e,n),e}function bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings})))}return dt(e,[{key:"init",value:function(){return this.fetchGlobalSettings()}},{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),ht=new mt,pt=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;Re.init(),h.init(),ht.init(),this.isLoadingInitialEntities=!0,Promise.all([h.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||h.isLoading.value||Re.isLoading.value||ht.isLoading.value},availableTypes:function(){return h.types.value},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},globalSettings:function(){return ht.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=h.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),this.isSiteBeingEdited=!1}}});pt.render=A;var gt=pt;
+ */var mt=function(){function e(){var t=this;ct(this,e),bt(this,"privateState",Object(l["reactive"])({isLoading:!1,globalSettings:{keepURLFragmentsGlobal:!1,defaultCurrency:"",defaultTimezone:"",excludedIpsGlobal:"",excludedQueryParametersGlobal:"",excludedUserAgentsGlobal:"",excludedReferrersGlobal:"",searchKeywordParametersGlobal:"",searchCategoryParametersGlobal:""}})),bt(this,"isLoading",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).isLoading}))),bt(this,"globalSettings",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState).globalSettings})))}return dt(e,[{key:"init",value:function(){return this.fetchGlobalSettings()}},{key:"saveGlobalSettings",value:function(e){var t=this;return this.privateState.isLoading=!0,r["AjaxHelper"].post({module:"SitesManager",format:"json",action:"setGlobalSettings"},e,{withTokenInUrl:!0}).finally((function(){t.privateState.isLoading=!1}))}},{key:"fetchGlobalSettings",value:function(){var e=this;this.privateState.isLoading=!0,r["AjaxHelper"].fetch({module:"SitesManager",action:"getGlobalSettings"}).then((function(t){e.privateState.globalSettings=Object.assign(Object.assign({},t),{},{excludedIpsGlobal:t.excludedIpsGlobal||"",excludedQueryParametersGlobal:t.excludedQueryParametersGlobal||"",excludedUserAgentsGlobal:t.excludedUserAgentsGlobal||"",excludedReferrersGlobal:t.excludedReferrersGlobal||"",searchKeywordParametersGlobal:t.searchKeywordParametersGlobal||"",searchCategoryParametersGlobal:t.searchCategoryParametersGlobal||""})})).finally((function(){e.privateState.isLoading=!1}))}}]),e}(),pt=new mt,ht=Object(l["defineComponent"])({props:{dummy:String},components:{MatomoDialog:r["MatomoDialog"],ButtonBar:F,SiteFields:st,EnrichedHeadline:r["EnrichedHeadline"]},directives:{ContentIntro:r["ContentIntro"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return{pageSize:10,currentPage:0,showAddSiteDialog:!1,searchTerm:"",activeSearchTerm:"",fetchedSites:[],isLoadingInitialEntities:!1,utcTime:t,totalNumberOfSites:null,isSiteBeingEdited:!1,fetchLimitedSitesAbortController:null}},created:function(){var e=this;We.init(),p.init(),pt.init(),this.isLoadingInitialEntities=!0,Promise.all([p.fetchAvailableTypes(),this.fetchLimitedSitesWithAdminAccess(),this.getTotalNumberOfSites()]).then((function(){e.triggerAddSiteIfRequested()})).finally((function(){e.isLoadingInitialEntities=!1})),Object(l["watch"])((function(){return r["MatomoUrl"].hashQuery.value}),(function(){e.checkGlobalSettingsHash()}))},computed:{sites:function(){var e=this.fetchedSites.filter((function(e){return!e.idsite})).length;return this.fetchedSites.slice(0,this.pageSize+e)},isLoading:function(){return!!this.fetchLimitedSitesAbortController||this.isLoadingInitialEntities||null===this.totalNumberOfSites||p.isLoading.value||We.isLoading.value||pt.isLoading.value},availableTypes:function(){return p.types.value},timezoneSupportEnabled:function(){return We.timezoneSupportEnabled.value},globalSettings:function(){return pt.globalSettings.value},headlineText:function(){return Object(r["translate"])("SitesManager_XManagement",this.availableTypes.length>1?Object(r["translate"])("General_Measurables"):Object(r["translate"])("SitesManager_Sites"))},mainDescription:function(){return Object(r["translate"])("SitesManager_YouCurrentlyHaveAccessToNWebsites","<strong>".concat(this.totalNumberOfSites,"</strong>"))},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},superUserAccessMessage:function(){return Object(r["translate"])("SitesManager_SuperUserAccessCan","<a href='#globalSettings'>","</a>")},hasPrev:function(){return this.currentPage>=1},hasNext:function(){return this.fetchedSites.filter((function(e){return!!e.idsite})).length>=this.pageSize+1},offsetStart:function(){return this.currentPage*this.pageSize+1},offsetEnd:function(){return this.offsetStart+this.sites.filter((function(e){return!!e.idsite})).length-1}},methods:{checkGlobalSettingsHash:function(){var e=r["MatomoUrl"].hashQuery.value;!r["Matomo"].hasSuperUserAccess||"globalSettings"!==e&&"/globalSettings"!==e||r["MatomoUrl"].updateLocation(Object.assign(Object.assign({},r["MatomoUrl"].urlParsed.value),{},{action:"globalSettings"}))},addNewEntity:function(){this.availableTypes.length>1?this.showAddSiteDialog=!0:1===this.availableTypes.length&&this.addSite(this.availableTypes[0].id)},addSite:function(e){var t=e,n={isAllowed:!0,measurableType:t};r["Matomo"].postEvent("SitesManager.initAddSite",n),n&&!n.isAllowed||(t||(t="website"),this.fetchedSites.unshift({type:t}),this.isSiteBeingEdited=!0)},afterCancelEdit:function(e){var t=e.site,n=e.element;this.isSiteBeingEdited=!1,t.idsite?n.scrollIntoView():this.fetchedSites=this.fetchedSites.filter((function(e){return!!e.idsite}))},fetchLimitedSitesWithAdminAccess:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";this.fetchLimitedSitesAbortController&&this.fetchLimitedSitesAbortController.abort(),this.fetchLimitedSitesAbortController=new AbortController;var n=this.pageSize+1,a=this.currentPage*this.pageSize,i={method:"SitesManager.getSitesWithAdminAccess",fetchAliasUrls:1,limit:n+a,filter_offset:a,filter_limit:n};return t&&(i.pattern=t),r["AjaxHelper"].fetch(i).then((function(t){e.fetchedSites=t||[]})).then((function(n){return e.activeSearchTerm=t,n})).finally((function(){e.fetchLimitedSitesAbortController=null}))},getTotalNumberOfSites:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"}).then((function(t){e.totalNumberOfSites=t.length}))},triggerAddSiteIfRequested:function(){var e=p.getEditSiteIdParameter(),t=r["MatomoUrl"].urlParsed.value.showaddsite;"1"===t?this.addNewEntity():e&&(this.searchTerm=e,this.fetchLimitedSitesWithAdminAccess(this.searchTerm))},previousPage:function(){this.currentPage=Math.max(0,this.currentPage-1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},nextPage:function(){this.currentPage=Math.max(0,this.currentPage+1),this.fetchLimitedSitesWithAdminAccess(this.activeSearchTerm)},searchSites:function(){this.currentPage=0,this.fetchLimitedSitesWithAdminAccess(this.searchTerm)},afterDelete:function(e){var t={showaddsite:0};if(r["MatomoUrl"].urlParsed.value.idSite==="".concat(e.idsite)){var n=this.sites.find((function(t){return t.idsite!==e.idsite}));n&&(t=Object.assign(Object.assign({},t),{},{idSite:n.idsite}))}r["Matomo"].helper.redirect(t)},afterSave:function(e,t,n,a){var i=["excluded_ips","excluded_parameters","excluded_user_agents","sitesearch_keyword_parameters","sitesearch_category_parameters"],r=Object.assign({},e);Object.values(t).forEach((function(e){e.forEach((function(e){"urls"===e.name?r.alias_urls=e.value:-1!==i.indexOf(e.name)?r[e.name]=e.value.join(", "):r[e.name]=e.value}))})),this.fetchedSites[n]=r,a&&null!==this.totalNumberOfSites&&(this.totalNumberOfSites+=1),this.isSiteBeingEdited=!1}}});ht.render=A;var gt=ht;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),vt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},jt=Object(l["createElementVNode"])("br",null,null,-1),Ot=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],kt={class:"alert alert-info"};function Gt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",vt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),jt,Ot,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.yourCurrentIpAddressIs)},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.$sanitize(e.keepUrlFragmentHelp)},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",kt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),Re.init(),ht.init(),Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){var e=this;this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})})).finally((function(){e.isSaving=!1}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=Gt;var Lt=Ut;
+ */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),jt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},Ot=Object(l["createElementVNode"])("br",null,null,-1),vt=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),xt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},Tt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"excludedReferrersGlobalHelp",class:"inline-help-node"},At=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Ct=Object(l["createElementVNode"])("br",null,null,-1),Gt=Object(l["createElementVNode"])("br",null,null,-1),Pt=Object(l["createElementVNode"])("br",null,null,-1),Dt={id:"timezoneHelp",class:"inline-help-node"},kt={key:0},Ut=Object(l["createElementVNode"])("br",null,null,-1),Lt=Object(l["createElementVNode"])("br",null,null,-1),zt={id:"keepURLFragmentsHelp",class:"inline-help-node"},It=["innerHTML"],Bt={class:"alert alert-info"};function Ht(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",jt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),Ot,vt,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.yourCurrentIpAddressIs)},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",xt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),Tt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelp"))+" ",1),At,_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpDetails"))+" ",1),Ct,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpExamples","www.example.org","http://example.org/mypath","https://www.example.org/?param=1","https://sub.example.org/"))+" ",1),Gt,Pt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedReferrersHelpSubDomains",".sub.example.org","http://sub.example.org/mypath","https://new.sub.example.org/")),1)])]),Object(l["createElementVNode"])("div",Dt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",kt,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ut])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),Lt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",zt,[Object(l["createElementVNode"])("div",{innerHTML:e.$sanitize(e.keepUrlFragmentHelp)},null,8,It),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedReferrersGlobal","var-type":"array",modelValue:e.excludedReferrersGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.excludedReferrersGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedReferrersDesc"),introduction:e.translate("SitesManager_GlobalListExcludedReferrers"),"inline-help":"#excludedReferrersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",Bt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[9]||(t[9]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ft=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:Pe["Field"],SaveButton:Pe["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=pt.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),excludedReferrersGlobal:(n.excludedReferrersGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),We.init(),pt.init(),Object(l["watch"])((function(){return pt.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.excludedReferrersGlobal=(t.excludedReferrersGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){var e=this;this.isSaving=!0,pt.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),excludedReferrers:this.excludedReferrersGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})})).finally((function(){e.isSaving=!1}))}},computed:{isLoading:function(){return pt.isLoading.value||We.isLoading.value||Xe.isLoading.value},timezones:function(){return We.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return We.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ft.render=Ht;var Rt=Ft;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:Lt,scope:{},directiveName:"matomoGlobalSettings"})}})}));
+ */Object(r["createAngularJsAdapter"])({component:Rt,scope:{},directiveName:"matomoGlobalSettings"})}})}));
//# sourceMappingURL=SitesManager.umd.min.js.map \ No newline at end of file
diff --git a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
index 12d2edbf1a..e7a72a946d 100644
--- a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
+++ b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettings.ts
@@ -12,6 +12,7 @@ interface GlobalSettings {
excludedIpsGlobal?: string;
excludedQueryParametersGlobal?: string;
excludedUserAgentsGlobal?: string;
+ excludedReferrersGlobal?: string;
searchKeywordParametersGlobal?: string;
searchCategoryParametersGlobal?: string;
}
diff --git a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
index 13201e74ef..da5af703db 100644
--- a/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
+++ b/plugins/SitesManager/vue/src/GlobalSettingsStore/GlobalSettingsStore.ts
@@ -25,6 +25,7 @@ interface SaveGlobalSettingsParams {
excludedIps: string;
excludedQueryParameters: string;
excludedUserAgents: string;
+ excludedReferrers: string;
searchKeywordParameters: string;
searchCategoryParameters: string;
}
@@ -39,6 +40,7 @@ class GlobalSettingsStore {
excludedIpsGlobal: '',
excludedQueryParametersGlobal: '',
excludedUserAgentsGlobal: '',
+ excludedReferrersGlobal: '',
searchKeywordParametersGlobal: '',
searchCategoryParametersGlobal: '',
},
@@ -82,6 +84,7 @@ class GlobalSettingsStore {
excludedIpsGlobal: response.excludedIpsGlobal || '',
excludedQueryParametersGlobal: response.excludedQueryParametersGlobal || '',
excludedUserAgentsGlobal: response.excludedUserAgentsGlobal || '',
+ excludedReferrersGlobal: response.excludedReferrersGlobal || '',
searchKeywordParametersGlobal: response.searchKeywordParametersGlobal || '',
searchCategoryParametersGlobal: response.searchCategoryParametersGlobal || '',
};
diff --git a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
index bc0dd92187..f2a59cdffe 100644
--- a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
+++ b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
@@ -55,6 +55,29 @@
</div>
</div>
+ <div id="excludedReferrersGlobalHelp" class="inline-help-node">
+ <div>
+ {{ translate('SitesManager_ExcludedReferrersHelp') }}
+ <br/><br/>
+ {{ translate('SitesManager_ExcludedReferrersHelpDetails') }}
+ <br/>
+ {{ translate(
+ 'SitesManager_ExcludedReferrersHelpExamples',
+ 'www.example.org',
+ 'http://example.org/mypath',
+ 'https://www.example.org/?param=1',
+ 'https://sub.example.org/'
+ ) }}
+ <br/><br/>
+ {{ translate(
+ 'SitesManager_ExcludedReferrersHelpSubDomains',
+ '.sub.example.org',
+ 'http://sub.example.org/mypath',
+ 'https://new.sub.example.org/'
+ ) }}
+ </div>
+ </div>
+
<div id="timezoneHelp" class="inline-help-node">
<div>
<span v-if="!timezoneSupportEnabled">
@@ -114,6 +137,19 @@
<div>
<Field
+ uicontrol="textarea"
+ name="excludedReferrersGlobal"
+ var-type="array"
+ v-model="excludedReferrersGlobal"
+ :title="translate('SitesManager_GlobalListExcludedReferrersDesc')"
+ :introduction="translate('SitesManager_GlobalListExcludedReferrers')"
+ :inline-help="'#excludedReferrersGlobalHelp'"
+ :disabled="isLoading"
+ />
+ </div>
+
+ <div>
+ <Field
uicontrol="checkbox"
name="keepURLFragmentsGlobal"
v-model="keepURLFragmentsGlobal"
@@ -210,6 +246,7 @@ interface GlobalSettingsState {
excludedIpsGlobal: string[];
excludedQueryParametersGlobal: string[];
excludedUserAgentsGlobal: string[];
+ excludedReferrersGlobal: string[];
searchKeywordParametersGlobal: string[];
searchCategoryParametersGlobal: string[];
isSaving: boolean;
@@ -253,6 +290,7 @@ export default defineComponent({
excludedQueryParametersGlobal:
(settings.excludedQueryParametersGlobal || '').split(','),
excludedUserAgentsGlobal: (settings.excludedUserAgentsGlobal || '').split(','),
+ excludedReferrersGlobal: (settings.excludedReferrersGlobal || '').split(','),
searchKeywordParametersGlobal:
(settings.searchKeywordParametersGlobal || '').split(','),
searchCategoryParametersGlobal:
@@ -273,6 +311,7 @@ export default defineComponent({
this.excludedQueryParametersGlobal = (settings.excludedQueryParametersGlobal || '')
.split(',');
this.excludedUserAgentsGlobal = (settings.excludedUserAgentsGlobal || '').split(',');
+ this.excludedReferrersGlobal = (settings.excludedReferrersGlobal || '').split(',');
this.searchKeywordParametersGlobal = (settings.searchKeywordParametersGlobal || '')
.split(',');
this.searchCategoryParametersGlobal = (settings.searchCategoryParametersGlobal || '')
@@ -293,6 +332,7 @@ export default defineComponent({
excludedIps: this.excludedIpsGlobal.join(','),
excludedQueryParameters: this.excludedQueryParametersGlobal.join(','),
excludedUserAgents: this.excludedUserAgentsGlobal.join(','),
+ excludedReferrers: this.excludedReferrersGlobal.join(','),
searchKeywordParameters: this.searchKeywordParametersGlobal.join(','),
searchCategoryParameters: this.searchCategoryParametersGlobal.join(','),
}).then(() => {
diff --git a/plugins/WebsiteMeasurable/MeasurableSettings.php b/plugins/WebsiteMeasurable/MeasurableSettings.php
index 749a32e8a3..ddea90083d 100644
--- a/plugins/WebsiteMeasurable/MeasurableSettings.php
+++ b/plugins/WebsiteMeasurable/MeasurableSettings.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -7,16 +8,19 @@
*/
namespace Piwik\Plugins\WebsiteMeasurable;
+
use Piwik\IP;
use Piwik\Measurable\Type\TypeManager;
use Matomo\Network\IPUtils;
use Piwik\Piwik;
use Piwik\Plugin;
use Piwik\Plugins\WebsiteMeasurable\Settings\Urls;
+use Piwik\Settings\Measurable\MeasurableProperty;
use Piwik\Settings\Setting;
use Piwik\Settings\FieldConfig;
use Piwik\Plugins\SitesManager;
use Exception;
+use Piwik\UrlHelper;
/**
* Defines Settings for ExampleSettingsPlugin.
@@ -62,6 +66,9 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
public $excludedParameters;
/** @var Setting */
+ public $excludedReferrers;
+
+ /** @var Setting */
public $ecommerce;
/**
@@ -84,8 +91,13 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
*/
private $unsetSiteSearchKeywords = false;
- public function __construct(SitesManager\API $api, Plugin\Manager $pluginManager, TypeManager $typeManager, $idSite, $idMeasurableType)
- {
+ public function __construct(
+ SitesManager\API $api,
+ Plugin\Manager $pluginManager,
+ TypeManager $typeManager,
+ $idSite,
+ $idMeasurableType
+ ) {
$this->sitesManagerApi = $api;
$this->pluginManager = $pluginManager;
$this->typeManager = $typeManager;
@@ -119,6 +131,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$this->excludedIps = $this->makeExcludeIps();
$this->excludedParameters = $this->makeExcludedParameters();
$this->excludedUserAgents = $this->makeExcludedUserAgents();
+ $this->excludedReferrers = $this->makeExcludedReferrers($this->sitesManagerApi);
/**
* SiteSearch
@@ -139,7 +152,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$this->ecommerce = $this->makeEcommerce();
}
- private function makeExcludeUnknownUrls()
+ private function makeExcludeUnknownUrls(): MeasurableProperty
{
return $this->makeProperty('exclude_unknown_urls', $default = false, FieldConfig::TYPE_BOOL, function (FieldConfig $field) {
$field->title = Piwik::translate('SitesManager_OnlyMatchedUrlsAllowed');
@@ -150,7 +163,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
});
}
- private function makeKeepUrlFragments(SitesManager\API $sitesManagerApi)
+ private function makeKeepUrlFragments(SitesManager\API $sitesManagerApi): MeasurableProperty
{
return $this->makeProperty('keep_url_fragment', $default = '0', FieldConfig::TYPE_STRING, function (FieldConfig $field) use ($sitesManagerApi) {
$field->title = Piwik::translate('SitesManager_KeepURLFragmentsLong');
@@ -162,29 +175,29 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$default = Piwik::translate('General_No');
}
- $field->availableValues = array(
+ $field->availableValues = [
'0' => $default . ' (' . Piwik::translate('General_Default') . ')',
'1' => Piwik::translate('General_Yes'),
'2' => Piwik::translate('General_No')
- );
+ ];
});
}
- private function makeExcludeIps()
+ private function makeExcludeIps(): MeasurableProperty
{
- return $this->makeProperty('excluded_ips', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
+ return $this->makeProperty('excluded_ips', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
$ip = IP::getIpFromHeader();
$field->title = Piwik::translate('SitesManager_ExcludedIps');
- $field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIpAddresses', array('1.2.3.4/24', '1.2.3.*', '1.2.*.*'))
+ $field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIpAddresses', ['1.2.3.4/24', '1.2.3.*', '1.2.*.*'])
. '<br /><br />'
- . Piwik::translate('SitesManager_YourCurrentIpAddressIs', array('<i>' . $ip . '</i>'));
+ . Piwik::translate('SitesManager_YourCurrentIpAddressIs', ['<i>' . $ip . '</i>']);
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array(
+ $field->uiControlAttributes = [
'cols' => '20',
'rows' => '4',
'placeholder' => $ip,
- );
+ ];
$field->validate = function ($value) {
if (!empty($value)) {
@@ -193,14 +206,14 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
foreach ($ips as $ip) {
if (IPUtils::getIPRangeBounds($ip) === null) {
- throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', [$ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5"]));
}
}
}
};
$field->transform = function ($value) {
if (empty($value)) {
- return array();
+ return [];
}
$ips = array_map('trim', $value);
@@ -210,26 +223,26 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
});
}
- private function makeExcludedParameters()
+ private function makeExcludedParameters(): MeasurableProperty
{
$self = $this;
- return $this->makeProperty('excluded_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
+ return $this->makeProperty('excluded_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
$field->title = Piwik::translate('SitesManager_ExcludedParameters');
$field->inlineHelp = Piwik::translate('SitesManager_ListOfQueryParametersToExclude', "/^sess.*|.*[dD]ate$/")
. '<br /><br />'
- . Piwik::translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', array('phpsessid, sessionid, ...'));
+ . Piwik::translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', ['phpsessid, sessionid, ...']);
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
$field->transform = function ($value) use ($self) {
return $self->checkAndReturnCommaSeparatedStringList($value);
};
});
}
- private function makeExcludedUserAgents()
+ private function makeExcludedUserAgents(): MeasurableProperty
{
$self = $this;
- return $this->makeProperty('excluded_user_agents', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
+ return $this->makeProperty('excluded_user_agents', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($self) {
$field->title = Piwik::translate('SitesManager_ExcludedUserAgents');
$field->inlineHelp = Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp1')
. '<br /><br />'
@@ -239,23 +252,80 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
. Piwik::translate('SitesManager_GlobalExcludedUserAgentHelp3', "/bot|spider|crawl|scanner/i")
;
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
- $field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
$field->transform = function ($value) use ($self) {
return $self->checkAndReturnCommaSeparatedStringList($value);
};
});
}
- private function makeSiteSearch()
+ private function makeExcludedReferrers(SitesManager\API $sitesManagerApi): MeasurableProperty
+ {
+ $self = $this;
+ return $this->makeProperty('excluded_referrers', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($sitesManagerApi, $self) {
+ $field->title = Piwik::translate('SitesManager_ExcludedReferrers');
+
+ $referrersGlobal = $sitesManagerApi->getExcludedReferrersGlobal();
+
+ $field->inlineHelp = Piwik::translate('SitesManager_ExcludedReferrersHelp')
+ . '<br /><br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpDetails')
+ . '<br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpExamples', [
+ 'www.example.org',
+ 'http://example.org/mypath',
+ 'https://www.example.org/?param=1',
+ 'https://sub.example.org/'
+ ])
+ . '<br /><br />'
+ . Piwik::translate('SitesManager_ExcludedReferrersHelpSubDomains', [
+ '.sub.example.org',
+ 'http://sub.example.org/mypath',
+ 'https://new.sub.example.org/'
+ ])
+ ;
+
+ if (!empty($referrersGlobal)) {
+ $field->inlineHelp .= '<br /><br />'
+ . '<strong>' . Piwik::translate('SitesManager_GlobalListExcludedReferrers') . '</strong><br />'
+ . $referrersGlobal;
+ }
+ $field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
+ $field->uiControlAttributes = ['cols' => '20', 'rows' => '4'];
+ $field->validate = function ($value) {
+ if (!empty($value)) {
+ $urls = array_map('trim', $value);
+ $urls = array_filter($urls, 'strlen');
+
+ foreach ($urls as $url) {
+ // We allow urls to be provided:
+ // - fully qualified like http://example.url/path
+ // - without protocol like example.url/path
+ // - with subdomain wildcard like .example.url/path
+ $prefixedUrl = 'https://' . ltrim(preg_replace('/^https?:\/\//', '', $url), '.');
+ $parsedUrl = @parse_url($prefixedUrl);
+ if (false === $parsedUrl || !UrlHelper::isLookLikeUrl($prefixedUrl)) {
+ throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidUrl', [$url]));
+ }
+ }
+ }
+ };
+ $field->transform = function ($value) use ($self) {
+ return $self->checkAndReturnCommaSeparatedStringList($value);
+ };
+ });
+ }
+
+ private function makeSiteSearch(): MeasurableProperty
{
return $this->makeProperty('sitesearch', $default = 1, FieldConfig::TYPE_INT, function (FieldConfig $field) {
$field->title = Piwik::translate('Actions_SubmenuSitesearch');
$field->inlineHelp = Piwik::translate('SitesManager_SiteSearchUse');
$field->uiControl = FieldConfig::UI_CONTROL_SINGLE_SELECT;
- $field->availableValues = array(
+ $field->availableValues = [
1 => Piwik::translate('SitesManager_EnableSiteSearch'),
0 => Piwik::translate('SitesManager_DisableSiteSearch')
- );
+ ];
});
}
@@ -265,9 +335,9 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
return $this->makeSetting('use_default_site_search_params', $default = true, FieldConfig::TYPE_BOOL, function (FieldConfig $field) use ($sitesManagerApi, $settings) {
if (Piwik::hasUserSuperUserAccess()) {
- $title = Piwik::translate('SitesManager_SearchUseDefault', array("<a href='#globalSettings'>","</a>"));
+ $title = Piwik::translate('SitesManager_SearchUseDefault', ["<a href='#globalSettings'>","</a>"]);
} else {
- $title = Piwik::translate('SitesManager_SearchUseDefault', array('', ''));
+ $title = Piwik::translate('SitesManager_SearchUseDefault', ['', '']);
}
$field->title = $title;
@@ -301,7 +371,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
private function makeSiteSearchKeywords()
{
$settings = $this;
- return $this->makeProperty('sitesearch_keyword_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($settings) {
+ return $this->makeProperty('sitesearch_keyword_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($settings) {
$field->title = Piwik::translate('SitesManager_SearchKeywordLabel');
$field->uiControl = FieldConfig::UI_CONTROL_TEXT;
$field->inlineHelp = Piwik::translate('SitesManager_SearchKeywordParametersDesc');
@@ -317,7 +387,7 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
private function makeSiteSearchCategory(Plugin\Manager $pluginManager)
{
- return $this->makeProperty('sitesearch_category_parameters', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($pluginManager) {
+ return $this->makeProperty('sitesearch_category_parameters', $default = [], FieldConfig::TYPE_ARRAY, function (FieldConfig $field) use ($pluginManager) {
$field->title = Piwik::translate('SitesManager_SearchCategoryLabel');
$field->uiControl = FieldConfig::UI_CONTROL_TEXT;
$field->inlineHelp = Piwik::translate('Goals_Optional')
@@ -334,20 +404,22 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$field->title = Piwik::translate('Goals_Ecommerce');
$field->inlineHelp = Piwik::translate('SitesManager_EcommerceHelp')
. '<br />'
- . Piwik::translate('SitesManager_PiwikOffersEcommerceAnalytics',
- array("<a href='https://matomo.org/docs/ecommerce-analytics/' target='_blank'>", '</a>'));
+ . Piwik::translate(
+ 'SitesManager_PiwikOffersEcommerceAnalytics',
+ ["<a href='https://matomo.org/docs/ecommerce-analytics/' target='_blank'>", '</a>']
+ );
$field->uiControl = FieldConfig::UI_CONTROL_SINGLE_SELECT;
- $field->availableValues = array(
+ $field->availableValues = [
0 => Piwik::translate('SitesManager_NotAnEcommerceSite'),
1 => Piwik::translate('SitesManager_EnableEcommerce')
- );
+ ];
});
}
public function checkAndReturnCommaSeparatedStringList($parameters)
{
if (empty($parameters)) {
- return array();
+ return [];
}
$parameters = array_map('trim', $parameters);
@@ -355,5 +427,4 @@ class MeasurableSettings extends \Piwik\Settings\Measurable\MeasurableSettings
$parameters = array_unique($parameters);
return $parameters;
}
-
}
diff --git a/tests/PHPUnit/Fixtures/OmniFixture.php b/tests/PHPUnit/Fixtures/OmniFixture.php
index c6e36aa67b..9be299fa93 100644
--- a/tests/PHPUnit/Fixtures/OmniFixture.php
+++ b/tests/PHPUnit/Fixtures/OmniFixture.php
@@ -194,6 +194,7 @@ class OmniFixture extends Fixture
'group' => $properties['group'],
'startDate' => $properties['ts_created'],
'excludedUserAgents' => $properties['excluded_user_agents'],
+ 'excludedReferrers' => $properties['excluded_referrers'],
'keepURLFragments' => $properties['keep_url_fragment'],
'type' => $properties['type'],
'excludeUnknownUrls' => $properties['exclude_unknown_urls']
diff --git a/tests/PHPUnit/Framework/Fixture.php b/tests/PHPUnit/Framework/Fixture.php
index cb1ca43245..9ea5424199 100644
--- a/tests/PHPUnit/Framework/Fixture.php
+++ b/tests/PHPUnit/Framework/Fixture.php
@@ -521,20 +521,20 @@ class Fixture extends \PHPUnit\Framework\Assert
* Creates a website, then sets its creation date to a day earlier than specified dateTime
* Useful to create a website now, but force data to be archived back in the past.
*
- * @param string $dateTime eg '2010-01-01 12:34:56'
- * @param int $ecommerce
- * @param string $siteName
- *
+ * @param string $dateTime eg '2010-01-01 12:34:56'
+ * @param int $ecommerce
+ * @param bool $siteName
* @param bool|string $siteUrl
- * @param int $siteSearch
+ * @param int $siteSearch
* @param null|string $searchKeywordParameters
* @param null|string $searchCategoryParameters
* @param null|string $timezone
- * @param null|string $type eg 'website' or 'mobileapp'
- * @param null|string $settings eg 'website' or 'mobileapp'
- * @param int $excludeUnknownUrls
+ * @param null|string $type eg 'website' or 'mobileapp'
+ * @param int $excludeUnknownUrls
* @param null|string $excludedParameters
+ * @param null $excludedReferrers
* @return int idSite of website created
+ * @throws Exception
*/
public static function createWebsite(
$dateTime,
@@ -547,7 +547,8 @@ class Fixture extends \PHPUnit\Framework\Assert
$timezone = null,
$type = null,
$excludeUnknownUrls = 0,
- $excludedParameters = null
+ $excludedParameters = null,
+ $excludedReferrers = null
) {
if ($siteName === false) {
$siteName = self::DEFAULT_SITE_NAME;
@@ -560,7 +561,7 @@ class Fixture extends \PHPUnit\Framework\Assert
$searchKeywordParameters,
$searchCategoryParameters,
$ips = null,
- $excludedQueryParameters = $excludedParameters,
+ $excludedParameters,
$timezone,
$currency = null,
$group = null,
@@ -569,7 +570,8 @@ class Fixture extends \PHPUnit\Framework\Assert
$keepURLFragments = null,
$type,
$settings = null,
- $excludeUnknownUrls
+ $excludeUnknownUrls,
+ $excludedReferrers
);
// Manually set the website creation date to a day earlier than the earliest day we record stats for
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getAvailableMeasurableTypes.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getAvailableMeasurableTypes.xml
index 91c5bb6333..f088c38a71 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getAvailableMeasurableTypes.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getAvailableMeasurableTypes.xml
@@ -130,6 +130,26 @@ https://www.example.org/</placeholder>
<condition />
</row>
<row>
+ <name>excluded_referrers</name>
+ <title>Excluded referrers</title>
+ <value>
+ </value>
+ <defaultValue>
+ </defaultValue>
+ <type>array</type>
+ <uiControl>textarea</uiControl>
+ <uiControlAttributes>
+ <cols>20</cols>
+ <rows>4</rows>
+ </uiControlAttributes>
+ <availableValues />
+ <description />
+ <inlineHelp>Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.&lt;br /&gt;&lt;br /&gt;Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.&lt;br /&gt;e.g. &quot;www.example.org&quot; would match &quot;http://example.org/mypath&quot; and &quot;https://www.example.org/?param=1&quot; but not &quot;https://sub.example.org/&quot;&lt;br /&gt;&lt;br /&gt;To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. &quot;.sub.example.org&quot; would exclude &quot;http://sub.example.org/mypath&quot;, but also all its subdomains like &quot;https://new.sub.example.org/&quot;.</inlineHelp>
+ <templateFile />
+ <introduction />
+ <condition />
+ </row>
+ <row>
<name>sitesearch</name>
<title>Site Search</title>
<value>1</value>
@@ -415,6 +435,26 @@ https://www.example.org/</placeholder>
<condition />
</row>
<row>
+ <name>excluded_referrers</name>
+ <title>Excluded referrers</title>
+ <value>
+ </value>
+ <defaultValue>
+ </defaultValue>
+ <type>array</type>
+ <uiControl>textarea</uiControl>
+ <uiControlAttributes>
+ <cols>20</cols>
+ <rows>4</rows>
+ </uiControlAttributes>
+ <availableValues />
+ <description />
+ <inlineHelp>Enter the list of hostnames and URLs, one per line, you want to exclude from referrer detection.&lt;br /&gt;&lt;br /&gt;Each entry needs to contain the hostname and may contain a path. If a path is provided a referrer will only be excluded if the path matches as well. URLs with and without 'www' are treated the same. Provided protocols will be ignored.&lt;br /&gt;e.g. &quot;www.example.org&quot; would match &quot;http://example.org/mypath&quot; and &quot;https://www.example.org/?param=1&quot; but not &quot;https://sub.example.org/&quot;&lt;br /&gt;&lt;br /&gt;To also exclude all subdomains of a certain hostname, prefix it with a dot. e.g. &quot;.sub.example.org&quot; would exclude &quot;http://sub.example.org/mypath&quot;, but also all its subdomains like &quot;https://new.sub.example.org/&quot;.</inlineHelp>
+ <templateFile />
+ <introduction />
+ <condition />
+ </row>
+ <row>
<name>sitesearch</name>
<title>Site Search</title>
<value>1</value>
diff --git a/tests/UI/expected-screenshots/MeasurableManager_add_measurable_view.png b/tests/UI/expected-screenshots/MeasurableManager_add_measurable_view.png
index a6ee9239bb..8301c6836a 100644
--- a/tests/UI/expected-screenshots/MeasurableManager_add_measurable_view.png
+++ b/tests/UI/expected-screenshots/MeasurableManager_add_measurable_view.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c56f95e19db8af09a3150c391f3ad6ec094a8ca05b857b718b86a63ca5e36e47
-size 486040
+oid sha256:37c0f3eaae3a0a4a32ce7a99f507089fbfb3713f160c799bc76b9065cdec07aa
+size 547481
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
index 59e8f53d21..2f573ecc28 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_api_listing.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e6291f3e7475eef0fe07443cd97cb383bf1275316cd8fccc03060cb695f71be0
-size 5047076
+oid sha256:7498df49cc7f6b2bc105dd5231753e7862e0bece21c551c256723d4b3489d03b
+size 5075019
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index 6ccd99a801..c967b6b47c 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -2096,7 +2096,7 @@ function PiwikTest() {
});
test("API methods", function() {
- expect(121);
+ expect(123);
equal( typeof Piwik.addPlugin, 'function', 'addPlugin' );
equal( typeof Piwik.addPlugin, 'function', 'addTracker' );
@@ -2156,6 +2156,8 @@ function PiwikTest() {
equal( typeof tracker.setRequestContentType, 'function', 'setRequestContentType' );
equal( typeof tracker.setGenerationTimeMs, 'function', 'setGenerationTimeMs' );
equal( typeof tracker.setReferrerUrl, 'function', 'setReferrerUrl' );
+ equal( typeof tracker.setExcludedReferrers, 'function', 'setExcludedReferrers' );
+ equal( typeof tracker.getExcludedReferrers, 'function', 'getExcludedReferrers' );
equal( typeof tracker.setCustomUrl, 'function', 'setCustomUrl' );
equal( typeof tracker.setDocumentTitle, 'function', 'setDocumentTitle' );
equal( typeof tracker.setDownloadClasses, 'function', 'setDownloadClasses' );
@@ -3649,8 +3651,44 @@ if ($mysql) {
equal( tracker2.getAttributionReferrerUrl(), 'http://www.google.fr/?query=test', "getAttributionReferrerUrl() should be read from cookie in new tracker")
});
+ test("referrer ignore list", function() {
+ expect(23);
+
+ var testCases = [
+ ['no exclusion', 'https://www.google.fr/?query=test', '', false],
+ ['host exclusion matches', 'https://www.google.fr/?query=test', 'www.google.fr', true],
+ ['host exclusion matches (www ignored)', 'https://google.fr/?query=test', 'www.google.fr', true],
+ ['host exclusion matches (www ignored)', 'https://www.google.fr/?query=test', 'google.fr', true],
+ ['host exclusion not matching', 'https://www.google.de/?query=test', 'www.google.fr', false],
+ ['wildcard subdomain exclusion matches', 'https://www.google.fr/?query=test', '*.google.fr', true],
+ ['host with path exclusion matches', 'https://www.paypal.com/proceed/payment/', 'www.paypal.com/proceed/', true],
+ ['host with path exclusion not matching', 'https://www.paypal.com/proceed/payment/', 'www.paypal.com/proceed/shipping', false],
+ ['host with wild card path exclusion matches', 'https://www.paypal.com/proceed/payment/', 'www.paypal.com/proceed*', true],
+ ['host with wild card path exclusion matches again', 'https://www.paypal.com/proceed-my-payment/', 'www.paypal.com/proceed*', true],
+ ];
+
+ for (var i=0; i < testCases.length; i++) {
+ var testName = testCases[i][0];
+ var referrerUrl = testCases[i][1];
+ var excludedReferrer = testCases[i][2];
+ var result = testCases[i][3];
+ var expectedExcludedReferrer = [];
+
+ var tracker = Piwik.getTracker();
+ tracker.setTrackerUrl("matomo.php");
+ tracker.setSiteId(1);
+ tracker.setReferrerUrl(referrerUrl);
+ if (excludedReferrer) {
+ tracker.setExcludedReferrers(excludedReferrer);
+ expectedExcludedReferrer = tracker.hook.test._isString(excludedReferrer) ? [excludedReferrer] : excludedReferrer;
+ }
+ deepEqual(tracker.getExcludedReferrers(), expectedExcludedReferrer, testName + " - check getExcludedReferrers()");
+ deepEqual(tracker.hook.test._isReferrerExcluded(referrerUrl), result, testName + " - check isReferrerExcluded()");
+ }
+ });
+
test("tracking", function() {
- expect(178);
+ expect(180);
// Prevent Opera and HtmlUnit from performing the default action (i.e., load the href URL)
var stopEvent = function (evt) {
@@ -3792,6 +3830,12 @@ if ($mysql) {
strictEqual(1, tracker.getNumTrackedPageViews(), 'getNumTrackedPageViews, should increase num pageview counter');
+ tracker.setExcludedReferrers('ignored.referrer.url')
+ tracker.setReferrerUrl('http://ignored.referrer.url/path/page?query=string');
+ tracker.trackPageView();
+
+ strictEqual(2, tracker.getNumTrackedPageViews(), 'getNumTrackedPageViews, should increase num pageview counter');
+
var idPageview = tracker.getConfigIdPageView();
ok(/([0-9a-zA-Z]){6}/.test(idPageview), 'trackPageview, should generate a random pageview id');
@@ -3799,7 +3843,7 @@ if ($mysql) {
equal(tracker.getCustomDimension(2), "", "custom dimensions should not be cleared after a tracked pageview");
tracker.trackPageView("CustomTitleTest", {dimension2: 'my new value', dimension5: 'another dimension'});
- strictEqual(2, tracker.getNumTrackedPageViews(), 'getNumTrackedPageViews, should increase num pageview counter');
+ strictEqual(3, tracker.getNumTrackedPageViews(), 'getNumTrackedPageViews, should increase num pageview counter');
var idPageviewCustomTitle = tracker.getConfigIdPageView();
ok(idPageviewCustomTitle != idPageview, 'trackPageview, should generate a new random pageview id whenever it is called');
@@ -3888,14 +3932,14 @@ if ($mysql) {
attributionInfo2 = tracker.getAttributionInfo();
ok( attributionInfo1 && attributionInfo2 && attributionInfo1.length == attributionInfo2.length, "getAttributionInfo()" );
referrer2 = tracker.getAttributionReferrerUrl();
- ok( referrer2 == referrerUrl, "getAttributionReferrerUrl()" );
- ok( referrer1 == referrerUrl, "async getAttributionReferrerUrl()" );
+ equal( referrer2, referrerUrl, "getAttributionReferrerUrl()" );
+ equal( referrer1, referrerUrl, "async getAttributionReferrerUrl()" );
referrerTimestamp2 = tracker.getAttributionReferrerTimestamp();
- ok( referrerTimestamp2 == referrerTimestamp, "tracker.getAttributionReferrerTimestamp()" );
+ equal( referrerTimestamp2, referrerTimestamp, "tracker.getAttributionReferrerTimestamp()" );
campaignName2 = tracker.getAttributionCampaignName();
campaignKeyword2 = tracker.getAttributionCampaignKeyword();
- ok( campaignName2 == "YEAH", "getAttributionCampaignName()");
- ok( campaignKeyword2 == "RIGHT!", "getAttributionCampaignKeyword()");
+ equal( campaignName2, "YEAH", "getAttributionCampaignName()");
+ equal( campaignKeyword2, "RIGHT!", "getAttributionCampaignKeyword()");
// Test visitor ID at the start is the same at the end
var visitorIdEnd = tracker.getVisitorId();
@@ -4162,7 +4206,7 @@ if ($mysql) {
var countTrackingEvents = /<span\>([0-9]+)\<\/span\>/.exec(results);
ok (countTrackingEvents, "countTrackingEvents is set");
if(countTrackingEvents) {
- equal( countTrackingEvents[1], "54", "count tracking events" );
+ equal( countTrackingEvents[1], "55", "count tracking events" );
}
// firing callback
@@ -4194,6 +4238,7 @@ if ($mysql) {
ok( /CompatibilityLayer/.test( results ), "piwik_log(): compatibility layer" );
ok( /localhost.localdomain/.test( results ), "setCustomUrl()" );
ok( /referrer.example.com/.test( results ), "setReferrerUrl()" );
+ ok( ! /ignored.referrer.url/.test( results ), "ignored referrer url isn't sent with request" );
ok( /cookiename/.test( results ) && /cookievalue/.test( results ), "tracking request contains custom variable" );
ok( /DeleteCustomVariableCookie/.test( results ), "tracking request deleting custom variable" );
ok( /DoTrack/.test( results ), "setDoNotTrack(false)" );
diff --git a/tests/javascript/matomotest.js b/tests/javascript/matomotest.js
index 763d56bf4c..b674ec289d 100644
--- a/tests/javascript/matomotest.js
+++ b/tests/javascript/matomotest.js
@@ -21,6 +21,7 @@ Matomo.addPlugin('testPlugin', {
'_isString : isString,' +
'_isSiteHostName : isSiteHostName,' +
'_isSiteHostPath : isSiteHostPath,' +
+ '_isReferrerExcluded : isReferrerExcluded,' +
'_getClassesRegExp : getClassesRegExp,' +
'_hasCookies : hasCookies,' +
'_getCookie : getCookie,' +