{"version":3,"sources":["webpack:///omniture.bundle.f4e88b342e6ff25c6df3.js","webpack:///webpack/bootstrap 97c4534e8ea64fecb8a4","webpack:///./lib/vendor/public_analytics.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","191","getPagePath","request","pathArray","window","location","pathname","replace","split","firstEmpty","lastIndexOf","slice","length","join","generateUUID","Date","getTime","r","Math","random","floor","toString","jq","encode","config","raw","encodeURIComponent","decode","decodeURIComponent","stringifyCookieValue","value","json","JSON","stringify","String","parseCookieValue","indexOf","pluses","parse","e","read","converter","jQuery","isFunction","cookie","key","options","arguments","$","extend","defaults","expires","days","t","setMilliseconds","getMilliseconds","document","toUTCString","path","domain","secure","result","undefined","cookies","parts","shift","removeCookie","global","concurUtilHttp","self","this","getParameter","rtnVal","arrQS","getAllParameters","qs","testOverwriteSearch","search","Array","getDeserializedQueryString","err","alert","getParameterByRegExp","regexp","idx","matches","match","getParameterCaseInsensitive","RegExp","each","arrKeyValPair","strKey","strVal","setPidCid","referrer","origin","protocol","hostname","port","emailMid","pidQuery","cidQuery","referral_vals","query","searchReferer","refType","keywordReferrer","setLastCookie","setIntialCookie","emailMidToCid","directTraffic","isLoggedIn","found_value","google_bucket","yahoo_bucket","final_bucket","doc_split","unescape","g_doc_split","QueryString","placeholder","Referrer_Array","return_referrer_array","referrer_type","currentSite","social","Facebook","pattern_to_match","query_match","query_replace","search_ref","GooglePlus","Linkedin","Twitter","seo","AOL","Ask_Jeeves","Baidu","Daum","Dogpile","Libero","Bing","Mywebsearch","Naver","Comcast","SearchResults","Seznam","YahooJP","Yahoo","Yandex","host","utag_data","full_page_path","href","page_type","site_regional","page_name","section_1","section_2","section_3","db_account_id","db_account_type","db_annual_sales","db_audience","db_audience_segment","db_city","db_company_name","db_country","db_country_name","db_employee_count","db_employee_range","db_industry","db_marketing_alias","db_primary_sic","db_revenue_range","db_state","db_sub_industry","db_zip","sessionStorage","standardDimensions","getItem","customDimensions","customDimensions2","standardDimensionsArr","customDimensionsArr","customDimensions2Arr","console","log","message","on","clickedData","data","concur_assets","logCampaignForLater","prepEloquaData","uuidCV","marinTracking","resourceCenter","remove","append","concurGetFormattedDate","lpAssetConsumed","concurOmnitureSiteCatalyst","trackResource","elem","file","trackVideoOnLoad","trackBrochureOnLoad","click","trackVideoOnClick","hasClass","trackBrochureOnClick","bind","trackPremiumAssetFormOnLoad","utag_loader","done","utag","link","event_flag","form_name","eVar1","events","trackFormComplete","trackVideoAutoPlay","assetTitle","assetFilename","video_name","immediate","view","download_file_name","a","b","createElement","src","type","async","getElementsByTagName","parentNode","insertBefore","598"],"mappings":"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","file":"omniture.bundle.f4e88b342e6ff25c6df3.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 598);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 191:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable */\n\n/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n * Released under the MIT license\n */\n(function (jq) {\n var pluses = /\\+/g;\n\n function encode(s) {\n return config.raw ? s : encodeURIComponent(s);\n }\n\n function decode(s) {\n return config.raw ? s : decodeURIComponent(s);\n }\n\n function stringifyCookieValue(value) {\n return encode(config.json ? JSON.stringify(value) : String(value));\n }\n\n function parseCookieValue(s) {\n if (s.indexOf('\"') === 0) {\n // This is a quoted cookie as according to RFC2068, unescape...\n s = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n }\n\n try {\n // Replace server-side written pluses with spaces.\n // If we can't decode the cookie, ignore it, it's unusable.\n // If we can't parse the cookie, ignore it, it's unusable.\n s = decodeURIComponent(s.replace(pluses, ' '));\n return config.json ? JSON.parse(s) : s;\n } catch (e) {}\n }\n\n function read(s, converter) {\n var value = config.raw ? s : parseCookieValue(s);\n return window.jQuery.isFunction(converter) ? converter(value) : value;\n }\n\n var config = window.jQuery.cookie = function (key, value, options) {\n\n // Write\n\n if (arguments.length > 1 && !$.isFunction(value)) {\n options = $.extend({}, config.defaults, options);\n\n if (typeof options.expires === 'number') {\n var days = options.expires,\n t = options.expires = new Date();\n t.setMilliseconds(t.getMilliseconds() + days * 864e+5);\n }\n\n return document.cookie = [encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : ''].join('');\n }\n\n // Read\n\n var result = key ? undefined : {},\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling $.cookie().\n cookies = document.cookie ? document.cookie.split('; ') : [],\n i = 0,\n l = cookies.length;\n\n for (; i < l; i++) {\n var parts = cookies[i].split('='),\n name = decode(parts.shift()),\n cookie = parts.join('=');\n\n if (key === name) {\n // If second argument (value) is a function it's a converter...\n result = read(cookie, value);\n break;\n }\n\n // Prevent storing a cookie that we couldn't decode.\n if (!key && (cookie = read(cookie)) !== undefined) {\n result[name] = cookie;\n }\n }\n\n return result;\n };\n\n config.defaults = {};\n\n window.jQuery.removeCookie = function (key, options) {\n // Must not alter options, thus extending a fresh object...\n window.jQuery.cookie(key, '', $.extend({}, options, { expires: -1 }));\n return !window.jQuery.cookie(key);\n };\n})();\n\n;(function ($, global) {\n 'use strict';\n\n var concurUtilHttp = new function ($) {\n var self = this;\n\n this.getParameter = function (name) {\n var rtnVal = \"\";\n var arrQS = this.getAllParameters();\n if (arrQS[name]) {\n rtnVal = arrQS[name];\n }\n return rtnVal;\n };\n\n this.getAllParameters = function () {\n // testOverwriteSearch is a variable used in jasmine unit tests\n var qs = typeof testOverwriteSearch !== 'undefined' ? testOverwriteSearch : window.location.search;\n try {\n var arrQS = new Array();\n arrQS = self.getDeserializedQueryString(qs);\n } catch (err) {\n alert(err);\n }\n return arrQS;\n };\n\n this.getParameterByRegExp = function (regexp) {\n var rtnVal = \"\";\n var arrQS = this.getAllParameters();\n\n for (var idx in arrQS) {\n if (idx && arrQS.hasOwnProperty(idx)) {\n var matches = (idx + \"\").match(regexp);\n if (matches && matches[0]) {\n rtnVal = arrQS[idx];\n }\n }\n }\n return rtnVal;\n };\n\n this.getParameterCaseInsensitive = function (name) {\n return self.getParameterByRegExp(new RegExp(\"^\" + name + \"$\", \"i\"));\n };\n\n this.getDeserializedQueryString = function (qs) {\n var arrQS = new Array();\n if (qs) {\n qs = qs.replace(/^\\?/, \"\");\n qs = qs.replace(/\\&$/, \"\");\n $.each(qs.split(\"&\"), function () {\n var arrKeyValPair;\n arrKeyValPair = this.split('=');\n var strKey = arrKeyValPair[0];\n var strVal = \"\";\n\n if (arrKeyValPair[1]) {\n strVal = decodeURIComponent(arrKeyValPair[1]);\n }\n\n if (strVal) {\n arrQS[strKey] = strVal;\n }\n });\n }\n return arrQS;\n };\n }(window.jQuery);\n\n /**\n * Main driver for setting cookies based on query string and parsed document.referrer\n * @class setPidCid\n * @param referrer {String} This is only an override for testing\n * @param origin {String} This is only an override for testing\n * @return void\n */\n global.setPidCid = function (referrer, origin) {\n // don't run any logic if the referrer matches current domain\n var referrer = referrer || document.referrer,\n origin = origin || window.location.origin;\n\n // fixes location in IE\n if (!window.location.origin) {\n origin = origin || window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n\n if (referrer.indexOf(origin) === 0) {\n return;\n }\n\n var emailMid = concurUtilHttp.getParameter(\"elq_mid\"),\n pidQuery = concurUtilHttp.getParameterCaseInsensitive(\"pid\"),\n cidQuery = concurUtilHttp.getParameterCaseInsensitive(\"cid\");\n\n if (!referrer && pidQuery == \"\" && cidQuery == \"\") {\n directTraffic();\n } else if (pidQuery != '' && typeof pidQuery != \"undefined\" || cidQuery == '') {\n var referral_vals = {\n query: '',\n searchReferer: typeof cidQuery === \"undefined\" || cidQuery == '' ? null : cidQuery,\n refType: typeof pidQuery === \"undefined\" || pidQuery == '' ? null : pidQuery\n };\n\n if (referral_vals['refType'] == null) {\n referral_vals = keywordReferrer(pidQuery, referrer);\n }\n\n setLastCookie(referral_vals);\n\n if ($.cookie('qs_pid') == null) {\n setIntialCookie(referral_vals);\n }\n\n if (emailMid != \"\") {\n emailMidToCid();\n }\n }\n };\n\n /**\n * parases the document.referrer and catagories the result to social, seo or sites \n * \n * @method keywordReferrer\n * \n * @param pidQuery {String} The the value of pid in the Query String\n * @parm referrer {String} Passing in the document.referrer so it can be overriden for testing\n * \n * @return referral_vals {Object} The values are what set the cookies\n */\n global.keywordReferrer = function (pidQuery, referrer) {\n var referral_vals = {\n pidQuery: pidQuery,\n query: null,\n searchReferer: null,\n isLoggedIn: false,\n refType: null,\n found_value: false,\n referrer: referrer\n };\n\n if (referral_vals.referrer.match(/^http(s)?:\\/\\/(www\\.)?google\\..*/i)) {\n referral_vals = google_bucket(referral_vals);\n } else if (referral_vals.referrer.match(/^http(s)?:\\/\\/[a-zA-Z]{1,2}?\\.search\\.yahoo\\.com/i)) {\n referral_vals = yahoo_bucket(referral_vals);\n } else {\n referral_vals = final_bucket(referral_vals);\n }\n\n var doc_split = referral_vals.referrer.split(\"/\");\n\n if (!referral_vals['found_value'] && typeof doc_split[2] !== \"undefined\") {\n referral_vals['searchReferer'] = referral_vals.referrer.split(\"/\")[2] + \":\";\n referral_vals['refType'] = 'sites';\n referral_vals['query'] = '';\n }\n\n return referral_vals;\n };\n\n /**\n * converts ?elq_mid=foo to cid and cid_last cookie when \n * sets cookie values\n * qs_cid = direct\n * qs_cid_last = direct\n * @method emailMidToCid\n * \n * @return void\n */\n global.emailMidToCid = function () {\n var emailMid = concurUtilHttp.getParameter(\"elq_mid\");\n\n if ($.cookie('qs_cid') == 'null') {\n $.cookie('qs_cid', emailMid, {\n path: '/'\n });\n }\n if ($.cookie('qs_cid_last') == 'null') {\n window.jQuery.cookie('qs_cid_last', emailMid, {\n path: '/'\n });\n }\n };\n\n /**\n * Set cookie to direct if poeple come directly to our site\n * sets cookie values\n * qs_pid\n * qs_pid_last\n * qs_cid\n * qs_cid_last\n *\n * @method directTraffic\n * \n * @return void\n */\n global.directTraffic = function () {\n\n var pidQuery = concurUtilHttp.getParameterCaseInsensitive(\"pid\");\n var cidQuery = concurUtilHttp.getParameterCaseInsensitive(\"cid\");\n\n if (!document.referrer && pidQuery == \"\" && cidQuery == \"\") {\n if ($.cookie('qs_pid') == null && $.cookie('qs_cid') == null) {\n\n $.cookie('qs_pid', 'direct', {\n path: '/',\n expires: 365\n });\n\n $.cookie('qs_cid', 'direct', {\n path: '/',\n expires: 365\n });\n }\n\n $.cookie('qs_pid_last', 'direct', {\n path: '/'\n });\n\n $.cookie('qs_cid_last', 'direct', {\n path: '/'\n });\n }\n };\n\n /**\n * Sets pid_last and cid_last cookies \n * sets cookie values\n * qs_pid_last\n * qs_cid_last\n * \n * @method setLastCookie\n * \n * @param referral_vals {Object} Object of values to be set\n * \n * @return void\n */\n global.setLastCookie = function (referral_vals) {\n\n $.cookie('qs_pid_last', referral_vals['refType'], {\n path: '/'\n });\n\n $.cookie('qs_cid_last', referral_vals['searchReferer'] + unescape(referral_vals['query']), {\n path: '/'\n });\n };\n\n /**\n * Sets pid and cid cookies\n * sets cookie values\n * qs_pid\n * qs_cid\n * \n * @method setLastCookie\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return void\n */\n global.setIntialCookie = function (referral_vals) {\n $.cookie('qs_pid', referral_vals['refType'], {\n path: '/',\n expires: 365\n });\n\n $.cookie('qs_cid', referral_vals['searchReferer'] + unescape(referral_vals['query']), {\n path: '/',\n expires: 365\n });\n };\n\n /**\n * Matches Google sites and sets referral_vals to google values\n * \n * @method google_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.google_bucket = function (referral_vals) {\n var g_doc_split = referral_vals.referrer.split(\"?\");\n\n // Fixes issue where Querystring breaks.\n if (typeof g_doc_split[1] !== \"undefined\" && typeof g_doc_split[1].split(\"&\") !== \"undefined\") {\n\n var QueryString = g_doc_split[1].split(\"&\");\n\n for (var i in QueryString) {\n if (QueryString[i] == 'q=') {\n referral_vals['isLoggedIn'] = true;\n }\n }\n }\n\n // Google\n if (referral_vals['isLoggedIn'] == true) {\n referral_vals['query'] = 'logged_in';\n } else if (referral_vals.referrer.match(/q=/)) {\n referral_vals['query'] = referral_vals.referrer.replace(/^.*&q=([^&]+)&?.*$/i, '$1');\n } else {\n referral_vals['query'] = '';\n }\n\n var placeholder = referral_vals.referrer.split('/')[2];\n\n referral_vals['searchReferer'] = placeholder.match(/google.*/) + \":\";\n referral_vals['refType'] = 'seo';\n referral_vals['found_value'] = true;\n\n return referral_vals;\n };\n\n /**\n * Sets referral_vals to Yahoo values\n * \n * @method yahoo_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.yahoo_bucket = function (referral_vals) {\n\n // Handles almost all of the yahoo comparisons\n // yahoo.com (us) and yahoo.co.jp do not fit the same mold as the others\n // They can be found in Referrer_Array @ bottom of page.\n if (referral_vals.referrer.match(/p=/)) {\n referral_vals['query'] = referral_vals.referrer.replace(/^.*\\?p=([^&]+)&?.*$/i, '$1');\n }\n\n referral_vals['refType'] = 'seo';\n\n // Leverage existing Yahoo functionality to append country code to our searchReferrer\n var n = referral_vals.referrer.split('/')[2].split('.')[0];\n\n referral_vals['searchReferer'] = \"yahoo-\" + n + \":\";\n referral_vals['found_value'] = true;\n\n return referral_vals;\n };\n\n /**\n * Sets referral_vals for all other search engines, the blog, and social\n * \n * @method final_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.final_bucket = function (referral_vals) {\n\n var Referrer_Array = return_referrer_array();\n\n // Nested for loop to iterate over array, breaks on first pattern_to_match correctly matching \n for (var referrer_type in Referrer_Array) {\n for (var key in Referrer_Array[referrer_type]) {\n\n var currentSite = Referrer_Array[referrer_type][key];\n\n if (referral_vals.referrer.match(currentSite['pattern_to_match'])) {\n if (typeof currentSite['query_match'] !== 'undefined' && referral_vals.referrer.match(currentSite['query_match'])) {\n referral_vals['query'] = referral_vals.referrer.replace(currentSite['query_replace'], '$1');\n } else {\n\n // This else is necessary because query must be set to SOMETHING if everything else is set.\n referral_vals['query'] = \"\";\n }\n\n referral_vals['refType'] = referrer_type;\n referral_vals['searchReferer'] = currentSite['search_ref'];\n referral_vals['found_value'] = true;\n break;\n }\n }\n\n if (referral_vals['found_value']) {\n break;\n }\n }\n\n return referral_vals;\n };\n\n /*\n * Runs matches against the document.referrer to bucket it.\n * used in final_bucket();\n * \n * @method return_referrer_array\n * \n * @return Referrer_Array {Object} list of regex used to match against document.referrer\n */\n global.return_referrer_array = function () {\n\n // Making a new object literal calls the Object constructor\n var Referrer_Array = {\n social: {\n Facebook: {\n pattern_to_match: /^http(s)?:\\/\\/[a-zA-Z]{1,3}?\\.facebook\\.*/i,\n query_match: /u=/,\n query_replace: /^.*?u=([^&]+)&?.*$/i,\n search_ref: 'facebook:'\n },\n GooglePlus: {\n pattern_to_match: /^http(s)?:\\/\\/plus\\.url\\.google.*/i,\n query_match: /url=/,\n query_replace: /^.*?u=([^&]+)&?.*$/i,\n search_ref: 'google-plus:'\n },\n Linkedin: {\n pattern_to_match: /^http(s)?:\\/\\/(www\\.)?linkedin.*/i,\n query_match: /^/,\n query_replace: /^([^&]+)/i,\n search_ref: 'linkedin:'\n },\n Twitter: {\n pattern_to_match: /^http(s)?:\\/\\/t.co/i,\n query_match: /^/,\n query_replace: /^([^&]+)/i,\n search_ref: 'twitter:'\n }\n },\n\n seo: {\n AOL: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.aol.com/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'aol:'\n },\n Ask_Jeeves: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?ask\\.*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'ask:'\n },\n Baidu: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?baidu\\.*/i,\n query_match: /wd=/,\n query_replace: /^.*\\?wd=([^&]+)&?.*$/,\n search_ref: 'baidu:'\n },\n Daum: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.daum\\.net/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'daum:'\n },\n Dogpile: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?dogpile\\.*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'dogpile:'\n },\n Libero: {\n pattern_to_match: /^http(s)?:\\/\\/arianna\\.libero\\.it/i,\n query_match: /query=/,\n query_replace: /^.*\\&query=([^&]+)&?.*$/,\n search_ref: 'arianna.libero:'\n },\n Bing: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.bing\\.com\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'bing:'\n },\n Mywebsearch: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.mywebsearch\\.com\\/*/i,\n query_match: /searchfor=/,\n query_replace: /^.*\\?searchfor=([^&]+)&?.*$/,\n search_ref: 'mywebsearch:'\n },\n Naver: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.naver\\.com\\/*/i,\n query_match: /query=/,\n query_replace: /^.*\\&query=([^&]+)&?.*$/,\n search_ref: 'naver:'\n },\n Comcast: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.comcast\\.net\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'comcast:'\n },\n SearchResults: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.search-results\\.com\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'search-results:'\n },\n Seznam: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.seznam\\.cz\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'seznam.cz:'\n },\n YahooJP: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.yahoo\\.co\\.jp\\/*/i,\n query_match: /p=/,\n query_replace: /^.*\\?p=([^&]+)&?.*$/,\n search_ref: 'yahoo-jp:'\n },\n Yahoo: {\n pattern_to_match: /^http(s)?:\\/\\/([a-zA-Z]{1,2}\\.)?search\\.yahoo\\.com/i,\n query_match: /p=/,\n query_replace: /^.*\\?p=([^&]+)&?.*$/,\n search_ref: 'yahoo.com:'\n },\n Yandex: {\n pattern_to_match: /^http(s)?:\\/\\/yandex\\.ru\\/*/i,\n query_match: /text=/,\n query_replace: /^.*\\?text=([^&]+)&?.*$/,\n search_ref: 'yandex.ru:'\n }\n }\n };\n\n return Referrer_Array;\n };\n\n // Call to init the function\n global.setPidCid();\n})(jQuery, window);\n\nwindow.s = window.s || {};\n\nvar newURL = window.location.protocol + \"://\" + window.location.host + \"/\" + window.location.pathname,\n pagename = newURL,\n firstInteraction = [];\n\nfunction getPagePath(request) {\n\n // scrubs double slashes before the split\n var pathArray = window.location.pathname.replace(/\\/{2,}/g, '/').split('/');\n var firstEmpty = pathArray.lastIndexOf('');\n pathArray = pathArray.slice(firstEmpty + 1);\n\n // set homepage if array is empty\n if (!pathArray.length && request === 'page_name') {\n return 'guided-tour';\n }\n\n if (request === 'page_name') {\n return pathArray.join(':');\n }\n\n if (typeof request === 'number') {\n return pathArray[request] || '';\n }\n\n return '';\n}\n\nwindow.getPagePath = getPagePath;\n\nvar utag_data = {\n full_page_path: window.location.href,\n page_type: 'App Center',\n site_regional: window.site_regional || 'en-us',\n page_name: getPagePath('page_name'),\n section_1: getPagePath(0),\n section_2: getPagePath(1),\n section_3: getPagePath(2),\n db_account_id: '',\n db_account_type: '',\n db_annual_sales: '',\n db_audience: '',\n db_audience_segment: '',\n db_city: '',\n db_company_name: '',\n db_country: '',\n db_country_name: '',\n db_employee_count: '',\n db_employee_range: '',\n db_industry: '',\n db_marketing_alias: '',\n db_primary_sic: '',\n db_revenue_range: '',\n db_state: '',\n db_sub_industry: '',\n db_zip: ''\n // we set this in App.js and set site_regional. everything else comes from this local instance\n};window.jQuery.extend(window.utag_data, utag_data);\n//BEGIN DEMANDBASE CODE\ntry {\n\n if (window.sessionStorage) {\n\n var standardDimensions = sessionStorage.getItem('s_dmdbase') || '';\n var customDimensions = sessionStorage.getItem('s_dmdbase_custom') || '';\n var customDimensions2 = sessionStorage.getItem('s_dmdbase_custom2') || '';\n\n var standardDimensionsArr = standardDimensions.split(\":\");\n var customDimensionsArr = customDimensions.split(\":\");\n var customDimensions2Arr = customDimensions2.split(\":\");\n\n utag_data.db_company_name = standardDimensionsArr[0];\n utag_data.db_marketing_alias = standardDimensionsArr[1];\n utag_data.db_industry = standardDimensionsArr[2];\n utag_data.db_sub_industry = standardDimensionsArr[3];\n utag_data.db_employee_count = standardDimensionsArr[4];\n utag_data.db_primary_sic = standardDimensionsArr[5];\n utag_data.db_city = standardDimensionsArr[6];\n utag_data.db_state = standardDimensionsArr[7];\n\n utag_data.db_zip = customDimensionsArr[0];\n utag_data.db_country = customDimensionsArr[1];\n utag_data.db_country_name = customDimensionsArr[2];\n utag_data.db_annual_sales = customDimensionsArr[3];\n utag_data.db_revenue_range = customDimensionsArr[4];\n utag_data.db_employee_range = customDimensionsArr[5];\n utag_data.db_audience = customDimensionsArr[6];\n utag_data.db_audience_segment = customDimensionsArr[7];\n\n utag_data.db_account_type = customDimensions2Arr[0];\n utag_data.db_account_id = customDimensions2Arr[1];\n }\n} catch (e) {\n if (window.console) {\n console.log(\"DB _ ERR \" + e.message);\n }\n}\n\n/**\n * Click Tracking Docid\n * util function to pass docid data to the log for later cookie\n * and also post to eloqua if concur_contact_data cookie is present.\n */\n\njQuery(document).on('click', '[rel=\"ctd\"]', function () {\n\n var clickedData = jQuery(this).data(\"ctd\");\n\n // add docid to cookie\n concur_assets.logCampaignForLater(clickedData);\n\n if (jQuery.cookie(\"concur_contact_data\") != null) {\n\n //submit docid with form data to eloqua\n concur_assets.prepEloquaData(clickedData);\n };\n});\n\n/**\ngenerated a unquie id\n**/\nfunction generateUUID() {\n var d = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : r & 0x7 | 0x8).toString(16);\n });\n}\n\n/**\ncookie setting with uuid \n**/\n(function () {\n if (jQuery.cookie('concur_uuid') == null) {\n var uuidCV = generateUUID();\n jQuery.cookie('concur_uuid', uuidCV, {\n path: '/',\n expires: 365\n });\n }\n})();\n\n//omniture code\n\n/**\n * landing modal form started \n */\nfunction omniturelandingformstarted() {\n try {\n utag.link({\n event_flag: 'form started',\n form_name: 'landingpage modal'\n });\n } catch (e) {}\n}\n\n/**\n * landing modal form started \n */\nfunction omniturelandingformCompleted() {\n try {\n utag.link({\n event_flag: 'form completed'\n });\n } catch (e) {}\n}\n\n/**\n * Demandbase true on forms\n */\nfunction omnitureDemandbaseForm() {\n try {\n utag.link({\n event_flag: 'demandbase_form'\n });\n } catch (e) {}\n}\n\n/**\n * First touch intercaction \n */\nfunction omniturePageInteraction(interactionName) {\n try {\n // not found in array \n if (firstInteraction.indexOf(interactionName) === -1) {\n utag.link({\n pageInteraction_name: interactionName,\n event_flag: 'demo started'\n });\n firstInteraction.push(interactionName);\n }\n } catch (e) {}\n}\n\n/**\n * track video views\n */\nfunction omnitureVideo(videoName) {\n try {\n utag.link({\n video_name: videoName,\n event_flag: 'video view'\n });\n } catch (e) {}\n}\n\n/**\n * Click function for better-way template tabs.\n */\nfunction betterWayTrackTabs() {\n\n var num = parseInt(jQuery(this).attr('data-tab').replace('#tabs-', '')),\n name = jQuery(this).text();\n\n if (num > 1 && num < 6) {\n num += 44;\n omnitureTabClick(num, name);\n }\n}\n\nfunction trackBetterWayArrows() {\n\n var num = 2;\n\n if (jQuery(this).attr('class').match('progress-next') == null) {\n num = jQuery('li[data-tab*=#tabs]').length;\n }\n\n name = jQuery('li[data-tab*=#tabs-' + num + ']').text();\n num += 44;\n omnitureTabClick(num, name);\n}\n\nfunction omnitureTabClick(eVar, text) {\n\n try {\n s.linkTrackVars = \"events,eVar\" + eVar;\n s.linkTrackEvents = \"event18\";\n s.events = \"event18\";\n s['eVar' + eVar] = text;\n s.tl(this, \"o\", \"tab clicked\");\n s['eVar' + eVar] = '';\n s.events = '';\n } catch (e) {}\n\n jQuery('li[data-tab^=#tabs]').off(\"click\", betterWayTrackTabs);\n jQuery('#tabs_container_wrapper img[class*=\"progress\"]').off(\"click\", trackBetterWayArrows);\n}\n/**\n * End better-way tab click functionality\n */\n\nvar omnitureModalFormStart = function omnitureModalFormStart() {\n try {\n s.linkTrackVars = 'events,eVar1';\n s.linkTrackEvents = 'event20';\n s.eVar1 = 'en-us casestudy quote';\n s.events = 'event20';\n s.tl(this, 'o', 'case study modal form started');\n } catch (e) {}\n};\n\nvar omnitureModalFormComplete = function omnitureModalFormComplete() {\n try {\n s.linkTrackVars = 'events';\n s.linkTrackEvents = 'event21';\n s.events = \"event21\";\n s.tl(this, \"o\", \"casestudy modal form completed\");\n } catch (e) {}\n}\n\n/**\n * Omniture tracking\n * Brent prefers having everything in an IIFE for scope cleanliness\n * It makes you actually think about making something be in global scope\n * rather than just having everything be there.\n * \n * @class exports \"concurOmnitureSiteCatalyst\"\n * @param {Object} [$] it's jQuery... now you can use \"$\"\n * @param {Object} [global] A local scope copy of \"window\" to export to\n */\n;(function ($, global) {\n 'use strict';\n\n /**\n * Marin traxking functions for global use\n * @return {Object} Module of margin tracking functions exported to global scope (window)\n */\n\n global.marinTracking = function () {\n\n /**\n * create an exports object to export functions with.\n * \"export\" is a reserved word, so using \"exports\" with the \"s\"\n */\n var exports = {};\n\n exports.resourceCenter = function () {\n\n // Run tracking\n try {\n\n // Marin tracking\n $(\".trackingIFrame\").remove();\n $(\"body\").append(\"\");\n } catch (e) {}\n };\n\n exports.lpAssetConsumed = function () {\n\n // Run tracking\n try {\n\n // Marin tracking\n $(\".trackingIFrame\").remove();\n $(\"body\").append(\"\");\n } catch (e) {}\n };\n\n return exports;\n }();\n\n /**\n * Onmiture Tracking Module\n * Export to global scope (global === window)\n * @return {Object} Omniture tracking functions\n */\n global.concurOmnitureSiteCatalyst = function concurOmnitureSiteCatalyst() {\n\n /**\n * Event mapping for utag to omniture events\n * \n * \"chat started\": \"event14\"\n * \"form started\": \"event20\"\n * \"form completed\": \"event21\"\n * \"video view\": \"event22\"\n * \"file download\": \"event23\"\n * \"demandbase_form\": \"event24\"\n * \"free trial registration\": \"event26\"\n * \"demo started\": \"event28\"\n * \"hero click\": \"event29\"\n */\n\n /**\n * create an exports object to export functions with.\n * \"export\" is a reserved word, so using \"exports\" with the \"s\"\n */\n var exports = {};\n\n /**\n * Fire the correct tracking for video and brochures in the resource center\n * \n * @method trackResource\n * @param elem {jQuery Object} link to the asset\n * @param title {String} Title of the asset\n * @param file {String} Title of the asset file\n */\n exports.trackResource = function (elem, file) {\n if (elem.data('asset-type') === 'video') {\n this.trackVideoOnLoad(elem.data, file);\n } else {\n this.trackBrochureOnLoad(file);\n }\n\n elem.click(function () {\n if (elem.data('asset-type') === 'video') {\n this.trackVideoOnClick(file);\n } else {\n if (!jQuery('#form-box').hasClass('gated-asset')) {\n this.trackBrochureOnClick(file);\n }\n }\n }.bind(this));\n };\n\n /**\n * Track premium asset form loads,\n * fires a tracking code for premium forms\n * \n * @method trackPremiumAssetFormOnLoad\n */\n exports.trackPremiumAssetFormOnLoad = function () {\n utag_loader.done(function () {\n utag.link({\n event_flag: 'form started',\n form_name: 'premium form started'\n });\n\n // This is here to reset the events, as to not duplicate stuff\n s.eVar1 = '';\n s.events = '';\n });\n };\n\n /**\n * Tracking code for form complete\n *\n * @method trackFormComplete\n * \n */\n exports.trackFormComplete = function () {\n utag_loader.done(function () {\n utag.link({\n event_flag: 'form completed'\n });\n\n // This is here to reset the events, as to not duplicate stuff\n s.eVar1 = '';\n s.events = '';\n });\n };\n\n // Fire when the video loads and auto plays\n // Keeping trackVideoOnLoad for legacy calls\n exports.trackVideoAutoPlay = exports.trackVideoOnLoad = function (assetTitle, assetFilename) {\n utag_loader.done(function () {\n utag.link({\n video_name: assetFilename + '~' + assetTitle,\n event_flag: 'video view'\n });\n });\n };\n\n // For Mobile (mobile has to click to activate video)\n exports.trackVideoOnClick = function (assetFilename) {\n var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n utag_loader.done(function () {\n\n if (immediate) {\n utag.link({\n video_name: assetFilename,\n event_flag: 'video view'\n });\n } else {\n\n // These will get picked up on the next post\n utag_data.video_name = assetFilename;\n utag_data.event_flag = 'video view';\n }\n });\n };\n\n // NOTE: Used for old modal assets\n exports.trackBrochureOnLoad = function (assetTitle) {\n utag_loader.done(function () {\n utag.view({\n page_name: assetTitle\n });\n });\n };\n\n exports.trackBrochureOnClick = function (assetFilename) {\n utag_loader.done(function () {\n utag.link({\n download_file_name: assetFilename,\n event_flag: 'file download'\n });\n });\n };\n\n return exports;\n }();\n // window.utag_cfg_ovrd = {noview : true};\n (function (a, b, c, d) {\n a = \"//tags.tiqcdn.com/utag/concur/concur/prod/utag.js\";\n b = document;c = \"script\";d = b.createElement(c);d.src = a;d.type = \"text/java\" + c;d.async = true;\n a = b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d, a);\n })();\n})(window.jQuery, window);\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(191);\n\n\n/***/ })\n\n/******/ });\n\n\n// WEBPACK FOOTER //\n// omniture.bundle.f4e88b342e6ff25c6df3.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 598);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 97c4534e8ea64fecb8a4","'use strict';\n\n/* eslint-disable */\n\n/*!\n * jQuery Cookie Plugin v1.4.1\n * https://github.com/carhartl/jquery-cookie\n *\n * Copyright 2006, 2014 Klaus Hartl\n * Released under the MIT license\n */\n(function (jq) {\n var pluses = /\\+/g;\n\n function encode(s) {\n return config.raw ? s : encodeURIComponent(s);\n }\n\n function decode(s) {\n return config.raw ? s : decodeURIComponent(s);\n }\n\n function stringifyCookieValue(value) {\n return encode(config.json ? JSON.stringify(value) : String(value));\n }\n\n function parseCookieValue(s) {\n if (s.indexOf('\"') === 0) {\n // This is a quoted cookie as according to RFC2068, unescape...\n s = s.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n }\n\n try {\n // Replace server-side written pluses with spaces.\n // If we can't decode the cookie, ignore it, it's unusable.\n // If we can't parse the cookie, ignore it, it's unusable.\n s = decodeURIComponent(s.replace(pluses, ' '));\n return config.json ? JSON.parse(s) : s;\n } catch (e) {}\n }\n\n function read(s, converter) {\n var value = config.raw ? s : parseCookieValue(s);\n return window.jQuery.isFunction(converter) ? converter(value) : value;\n }\n\n var config = window.jQuery.cookie = function (key, value, options) {\n\n // Write\n\n if (arguments.length > 1 && !$.isFunction(value)) {\n options = $.extend({}, config.defaults, options);\n\n if (typeof options.expires === 'number') {\n var days = options.expires,\n t = options.expires = new Date();\n t.setMilliseconds(t.getMilliseconds() + days * 864e+5);\n }\n\n return document.cookie = [encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE\n options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : ''].join('');\n }\n\n // Read\n\n var result = key ? undefined : {},\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all. Also prevents odd result when\n // calling $.cookie().\n cookies = document.cookie ? document.cookie.split('; ') : [],\n i = 0,\n l = cookies.length;\n\n for (; i < l; i++) {\n var parts = cookies[i].split('='),\n name = decode(parts.shift()),\n cookie = parts.join('=');\n\n if (key === name) {\n // If second argument (value) is a function it's a converter...\n result = read(cookie, value);\n break;\n }\n\n // Prevent storing a cookie that we couldn't decode.\n if (!key && (cookie = read(cookie)) !== undefined) {\n result[name] = cookie;\n }\n }\n\n return result;\n };\n\n config.defaults = {};\n\n window.jQuery.removeCookie = function (key, options) {\n // Must not alter options, thus extending a fresh object...\n window.jQuery.cookie(key, '', $.extend({}, options, { expires: -1 }));\n return !window.jQuery.cookie(key);\n };\n})();\n\n;(function ($, global) {\n 'use strict';\n\n var concurUtilHttp = new function ($) {\n var self = this;\n\n this.getParameter = function (name) {\n var rtnVal = \"\";\n var arrQS = this.getAllParameters();\n if (arrQS[name]) {\n rtnVal = arrQS[name];\n }\n return rtnVal;\n };\n\n this.getAllParameters = function () {\n // testOverwriteSearch is a variable used in jasmine unit tests\n var qs = typeof testOverwriteSearch !== 'undefined' ? testOverwriteSearch : window.location.search;\n try {\n var arrQS = new Array();\n arrQS = self.getDeserializedQueryString(qs);\n } catch (err) {\n alert(err);\n }\n return arrQS;\n };\n\n this.getParameterByRegExp = function (regexp) {\n var rtnVal = \"\";\n var arrQS = this.getAllParameters();\n\n for (var idx in arrQS) {\n if (idx && arrQS.hasOwnProperty(idx)) {\n var matches = (idx + \"\").match(regexp);\n if (matches && matches[0]) {\n rtnVal = arrQS[idx];\n }\n }\n }\n return rtnVal;\n };\n\n this.getParameterCaseInsensitive = function (name) {\n return self.getParameterByRegExp(new RegExp(\"^\" + name + \"$\", \"i\"));\n };\n\n this.getDeserializedQueryString = function (qs) {\n var arrQS = new Array();\n if (qs) {\n qs = qs.replace(/^\\?/, \"\");\n qs = qs.replace(/\\&$/, \"\");\n $.each(qs.split(\"&\"), function () {\n var arrKeyValPair;\n arrKeyValPair = this.split('=');\n var strKey = arrKeyValPair[0];\n var strVal = \"\";\n\n if (arrKeyValPair[1]) {\n strVal = decodeURIComponent(arrKeyValPair[1]);\n }\n\n if (strVal) {\n arrQS[strKey] = strVal;\n }\n });\n }\n return arrQS;\n };\n }(window.jQuery);\n\n /**\n * Main driver for setting cookies based on query string and parsed document.referrer\n * @class setPidCid\n * @param referrer {String} This is only an override for testing\n * @param origin {String} This is only an override for testing\n * @return void\n */\n global.setPidCid = function (referrer, origin) {\n // don't run any logic if the referrer matches current domain\n var referrer = referrer || document.referrer,\n origin = origin || window.location.origin;\n\n // fixes location in IE\n if (!window.location.origin) {\n origin = origin || window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n\n if (referrer.indexOf(origin) === 0) {\n return;\n }\n\n var emailMid = concurUtilHttp.getParameter(\"elq_mid\"),\n pidQuery = concurUtilHttp.getParameterCaseInsensitive(\"pid\"),\n cidQuery = concurUtilHttp.getParameterCaseInsensitive(\"cid\");\n\n if (!referrer && pidQuery == \"\" && cidQuery == \"\") {\n directTraffic();\n } else if (pidQuery != '' && typeof pidQuery != \"undefined\" || cidQuery == '') {\n var referral_vals = {\n query: '',\n searchReferer: typeof cidQuery === \"undefined\" || cidQuery == '' ? null : cidQuery,\n refType: typeof pidQuery === \"undefined\" || pidQuery == '' ? null : pidQuery\n };\n\n if (referral_vals['refType'] == null) {\n referral_vals = keywordReferrer(pidQuery, referrer);\n }\n\n setLastCookie(referral_vals);\n\n if ($.cookie('qs_pid') == null) {\n setIntialCookie(referral_vals);\n }\n\n if (emailMid != \"\") {\n emailMidToCid();\n }\n }\n };\n\n /**\n * parases the document.referrer and catagories the result to social, seo or sites \n * \n * @method keywordReferrer\n * \n * @param pidQuery {String} The the value of pid in the Query String\n * @parm referrer {String} Passing in the document.referrer so it can be overriden for testing\n * \n * @return referral_vals {Object} The values are what set the cookies\n */\n global.keywordReferrer = function (pidQuery, referrer) {\n var referral_vals = {\n pidQuery: pidQuery,\n query: null,\n searchReferer: null,\n isLoggedIn: false,\n refType: null,\n found_value: false,\n referrer: referrer\n };\n\n if (referral_vals.referrer.match(/^http(s)?:\\/\\/(www\\.)?google\\..*/i)) {\n referral_vals = google_bucket(referral_vals);\n } else if (referral_vals.referrer.match(/^http(s)?:\\/\\/[a-zA-Z]{1,2}?\\.search\\.yahoo\\.com/i)) {\n referral_vals = yahoo_bucket(referral_vals);\n } else {\n referral_vals = final_bucket(referral_vals);\n }\n\n var doc_split = referral_vals.referrer.split(\"/\");\n\n if (!referral_vals['found_value'] && typeof doc_split[2] !== \"undefined\") {\n referral_vals['searchReferer'] = referral_vals.referrer.split(\"/\")[2] + \":\";\n referral_vals['refType'] = 'sites';\n referral_vals['query'] = '';\n }\n\n return referral_vals;\n };\n\n /**\n * converts ?elq_mid=foo to cid and cid_last cookie when \n * sets cookie values\n * qs_cid = direct\n * qs_cid_last = direct\n * @method emailMidToCid\n * \n * @return void\n */\n global.emailMidToCid = function () {\n var emailMid = concurUtilHttp.getParameter(\"elq_mid\");\n\n if ($.cookie('qs_cid') == 'null') {\n $.cookie('qs_cid', emailMid, {\n path: '/'\n });\n }\n if ($.cookie('qs_cid_last') == 'null') {\n window.jQuery.cookie('qs_cid_last', emailMid, {\n path: '/'\n });\n }\n };\n\n /**\n * Set cookie to direct if poeple come directly to our site\n * sets cookie values\n * qs_pid\n * qs_pid_last\n * qs_cid\n * qs_cid_last\n *\n * @method directTraffic\n * \n * @return void\n */\n global.directTraffic = function () {\n\n var pidQuery = concurUtilHttp.getParameterCaseInsensitive(\"pid\");\n var cidQuery = concurUtilHttp.getParameterCaseInsensitive(\"cid\");\n\n if (!document.referrer && pidQuery == \"\" && cidQuery == \"\") {\n if ($.cookie('qs_pid') == null && $.cookie('qs_cid') == null) {\n\n $.cookie('qs_pid', 'direct', {\n path: '/',\n expires: 365\n });\n\n $.cookie('qs_cid', 'direct', {\n path: '/',\n expires: 365\n });\n }\n\n $.cookie('qs_pid_last', 'direct', {\n path: '/'\n });\n\n $.cookie('qs_cid_last', 'direct', {\n path: '/'\n });\n }\n };\n\n /**\n * Sets pid_last and cid_last cookies \n * sets cookie values\n * qs_pid_last\n * qs_cid_last\n * \n * @method setLastCookie\n * \n * @param referral_vals {Object} Object of values to be set\n * \n * @return void\n */\n global.setLastCookie = function (referral_vals) {\n\n $.cookie('qs_pid_last', referral_vals['refType'], {\n path: '/'\n });\n\n $.cookie('qs_cid_last', referral_vals['searchReferer'] + unescape(referral_vals['query']), {\n path: '/'\n });\n };\n\n /**\n * Sets pid and cid cookies\n * sets cookie values\n * qs_pid\n * qs_cid\n * \n * @method setLastCookie\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return void\n */\n global.setIntialCookie = function (referral_vals) {\n $.cookie('qs_pid', referral_vals['refType'], {\n path: '/',\n expires: 365\n });\n\n $.cookie('qs_cid', referral_vals['searchReferer'] + unescape(referral_vals['query']), {\n path: '/',\n expires: 365\n });\n };\n\n /**\n * Matches Google sites and sets referral_vals to google values\n * \n * @method google_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.google_bucket = function (referral_vals) {\n var g_doc_split = referral_vals.referrer.split(\"?\");\n\n // Fixes issue where Querystring breaks.\n if (typeof g_doc_split[1] !== \"undefined\" && typeof g_doc_split[1].split(\"&\") !== \"undefined\") {\n\n var QueryString = g_doc_split[1].split(\"&\");\n\n for (var i in QueryString) {\n if (QueryString[i] == 'q=') {\n referral_vals['isLoggedIn'] = true;\n }\n }\n }\n\n // Google\n if (referral_vals['isLoggedIn'] == true) {\n referral_vals['query'] = 'logged_in';\n } else if (referral_vals.referrer.match(/q=/)) {\n referral_vals['query'] = referral_vals.referrer.replace(/^.*&q=([^&]+)&?.*$/i, '$1');\n } else {\n referral_vals['query'] = '';\n }\n\n var placeholder = referral_vals.referrer.split('/')[2];\n\n referral_vals['searchReferer'] = placeholder.match(/google.*/) + \":\";\n referral_vals['refType'] = 'seo';\n referral_vals['found_value'] = true;\n\n return referral_vals;\n };\n\n /**\n * Sets referral_vals to Yahoo values\n * \n * @method yahoo_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.yahoo_bucket = function (referral_vals) {\n\n // Handles almost all of the yahoo comparisons\n // yahoo.com (us) and yahoo.co.jp do not fit the same mold as the others\n // They can be found in Referrer_Array @ bottom of page.\n if (referral_vals.referrer.match(/p=/)) {\n referral_vals['query'] = referral_vals.referrer.replace(/^.*\\?p=([^&]+)&?.*$/i, '$1');\n }\n\n referral_vals['refType'] = 'seo';\n\n // Leverage existing Yahoo functionality to append country code to our searchReferrer\n var n = referral_vals.referrer.split('/')[2].split('.')[0];\n\n referral_vals['searchReferer'] = \"yahoo-\" + n + \":\";\n referral_vals['found_value'] = true;\n\n return referral_vals;\n };\n\n /**\n * Sets referral_vals for all other search engines, the blog, and social\n * \n * @method final_bucket\n * \n * @param referral_vals {Object} Object of values to be set on the cookies\n * \n * @return referral_vals {Object}\n */\n global.final_bucket = function (referral_vals) {\n\n var Referrer_Array = return_referrer_array();\n\n // Nested for loop to iterate over array, breaks on first pattern_to_match correctly matching \n for (var referrer_type in Referrer_Array) {\n for (var key in Referrer_Array[referrer_type]) {\n\n var currentSite = Referrer_Array[referrer_type][key];\n\n if (referral_vals.referrer.match(currentSite['pattern_to_match'])) {\n if (typeof currentSite['query_match'] !== 'undefined' && referral_vals.referrer.match(currentSite['query_match'])) {\n referral_vals['query'] = referral_vals.referrer.replace(currentSite['query_replace'], '$1');\n } else {\n\n // This else is necessary because query must be set to SOMETHING if everything else is set.\n referral_vals['query'] = \"\";\n }\n\n referral_vals['refType'] = referrer_type;\n referral_vals['searchReferer'] = currentSite['search_ref'];\n referral_vals['found_value'] = true;\n break;\n }\n }\n\n if (referral_vals['found_value']) {\n break;\n }\n }\n\n return referral_vals;\n };\n\n /*\n * Runs matches against the document.referrer to bucket it.\n * used in final_bucket();\n * \n * @method return_referrer_array\n * \n * @return Referrer_Array {Object} list of regex used to match against document.referrer\n */\n global.return_referrer_array = function () {\n\n // Making a new object literal calls the Object constructor\n var Referrer_Array = {\n social: {\n Facebook: {\n pattern_to_match: /^http(s)?:\\/\\/[a-zA-Z]{1,3}?\\.facebook\\.*/i,\n query_match: /u=/,\n query_replace: /^.*?u=([^&]+)&?.*$/i,\n search_ref: 'facebook:'\n },\n GooglePlus: {\n pattern_to_match: /^http(s)?:\\/\\/plus\\.url\\.google.*/i,\n query_match: /url=/,\n query_replace: /^.*?u=([^&]+)&?.*$/i,\n search_ref: 'google-plus:'\n },\n Linkedin: {\n pattern_to_match: /^http(s)?:\\/\\/(www\\.)?linkedin.*/i,\n query_match: /^/,\n query_replace: /^([^&]+)/i,\n search_ref: 'linkedin:'\n },\n Twitter: {\n pattern_to_match: /^http(s)?:\\/\\/t.co/i,\n query_match: /^/,\n query_replace: /^([^&]+)/i,\n search_ref: 'twitter:'\n }\n },\n\n seo: {\n AOL: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.aol.com/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'aol:'\n },\n Ask_Jeeves: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?ask\\.*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'ask:'\n },\n Baidu: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?baidu\\.*/i,\n query_match: /wd=/,\n query_replace: /^.*\\?wd=([^&]+)&?.*$/,\n search_ref: 'baidu:'\n },\n Daum: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.daum\\.net/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'daum:'\n },\n Dogpile: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.?dogpile\\.*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'dogpile:'\n },\n Libero: {\n pattern_to_match: /^http(s)?:\\/\\/arianna\\.libero\\.it/i,\n query_match: /query=/,\n query_replace: /^.*\\&query=([^&]+)&?.*$/,\n search_ref: 'arianna.libero:'\n },\n Bing: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.bing\\.com\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'bing:'\n },\n Mywebsearch: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.mywebsearch\\.com\\/*/i,\n query_match: /searchfor=/,\n query_replace: /^.*\\?searchfor=([^&]+)&?.*$/,\n search_ref: 'mywebsearch:'\n },\n Naver: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.naver\\.com\\/*/i,\n query_match: /query=/,\n query_replace: /^.*\\&query=([^&]+)&?.*$/,\n search_ref: 'naver:'\n },\n Comcast: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.comcast\\.net\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'comcast:'\n },\n SearchResults: {\n pattern_to_match: /^http(s)?:\\/\\/www\\.search-results\\.com\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\&q=([^&]+)&?.*$/,\n search_ref: 'search-results:'\n },\n Seznam: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.seznam\\.cz\\/*/i,\n query_match: /q=/,\n query_replace: /^.*\\?q=([^&]+)&?.*$/,\n search_ref: 'seznam.cz:'\n },\n YahooJP: {\n pattern_to_match: /^http(s)?:\\/\\/search\\.yahoo\\.co\\.jp\\/*/i,\n query_match: /p=/,\n query_replace: /^.*\\?p=([^&]+)&?.*$/,\n search_ref: 'yahoo-jp:'\n },\n Yahoo: {\n pattern_to_match: /^http(s)?:\\/\\/([a-zA-Z]{1,2}\\.)?search\\.yahoo\\.com/i,\n query_match: /p=/,\n query_replace: /^.*\\?p=([^&]+)&?.*$/,\n search_ref: 'yahoo.com:'\n },\n Yandex: {\n pattern_to_match: /^http(s)?:\\/\\/yandex\\.ru\\/*/i,\n query_match: /text=/,\n query_replace: /^.*\\?text=([^&]+)&?.*$/,\n search_ref: 'yandex.ru:'\n }\n }\n };\n\n return Referrer_Array;\n };\n\n // Call to init the function\n global.setPidCid();\n})(jQuery, window);\n\nwindow.s = window.s || {};\n\nvar newURL = window.location.protocol + \"://\" + window.location.host + \"/\" + window.location.pathname,\n pagename = newURL,\n firstInteraction = [];\n\nfunction getPagePath(request) {\n\n // scrubs double slashes before the split\n var pathArray = window.location.pathname.replace(/\\/{2,}/g, '/').split('/');\n var firstEmpty = pathArray.lastIndexOf('');\n pathArray = pathArray.slice(firstEmpty + 1);\n\n // set homepage if array is empty\n if (!pathArray.length && request === 'page_name') {\n return 'guided-tour';\n }\n\n if (request === 'page_name') {\n return pathArray.join(':');\n }\n\n if (typeof request === 'number') {\n return pathArray[request] || '';\n }\n\n return '';\n}\n\nwindow.getPagePath = getPagePath;\n\nvar utag_data = {\n full_page_path: window.location.href,\n page_type: 'App Center',\n site_regional: window.site_regional || 'en-us',\n page_name: getPagePath('page_name'),\n section_1: getPagePath(0),\n section_2: getPagePath(1),\n section_3: getPagePath(2),\n db_account_id: '',\n db_account_type: '',\n db_annual_sales: '',\n db_audience: '',\n db_audience_segment: '',\n db_city: '',\n db_company_name: '',\n db_country: '',\n db_country_name: '',\n db_employee_count: '',\n db_employee_range: '',\n db_industry: '',\n db_marketing_alias: '',\n db_primary_sic: '',\n db_revenue_range: '',\n db_state: '',\n db_sub_industry: '',\n db_zip: ''\n // we set this in App.js and set site_regional. everything else comes from this local instance\n};window.jQuery.extend(window.utag_data, utag_data);\n//BEGIN DEMANDBASE CODE\ntry {\n\n if (window.sessionStorage) {\n\n var standardDimensions = sessionStorage.getItem('s_dmdbase') || '';\n var customDimensions = sessionStorage.getItem('s_dmdbase_custom') || '';\n var customDimensions2 = sessionStorage.getItem('s_dmdbase_custom2') || '';\n\n var standardDimensionsArr = standardDimensions.split(\":\");\n var customDimensionsArr = customDimensions.split(\":\");\n var customDimensions2Arr = customDimensions2.split(\":\");\n\n utag_data.db_company_name = standardDimensionsArr[0];\n utag_data.db_marketing_alias = standardDimensionsArr[1];\n utag_data.db_industry = standardDimensionsArr[2];\n utag_data.db_sub_industry = standardDimensionsArr[3];\n utag_data.db_employee_count = standardDimensionsArr[4];\n utag_data.db_primary_sic = standardDimensionsArr[5];\n utag_data.db_city = standardDimensionsArr[6];\n utag_data.db_state = standardDimensionsArr[7];\n\n utag_data.db_zip = customDimensionsArr[0];\n utag_data.db_country = customDimensionsArr[1];\n utag_data.db_country_name = customDimensionsArr[2];\n utag_data.db_annual_sales = customDimensionsArr[3];\n utag_data.db_revenue_range = customDimensionsArr[4];\n utag_data.db_employee_range = customDimensionsArr[5];\n utag_data.db_audience = customDimensionsArr[6];\n utag_data.db_audience_segment = customDimensionsArr[7];\n\n utag_data.db_account_type = customDimensions2Arr[0];\n utag_data.db_account_id = customDimensions2Arr[1];\n }\n} catch (e) {\n if (window.console) {\n console.log(\"DB _ ERR \" + e.message);\n }\n}\n\n/**\n * Click Tracking Docid\n * util function to pass docid data to the log for later cookie\n * and also post to eloqua if concur_contact_data cookie is present.\n */\n\njQuery(document).on('click', '[rel=\"ctd\"]', function () {\n\n var clickedData = jQuery(this).data(\"ctd\");\n\n // add docid to cookie\n concur_assets.logCampaignForLater(clickedData);\n\n if (jQuery.cookie(\"concur_contact_data\") != null) {\n\n //submit docid with form data to eloqua\n concur_assets.prepEloquaData(clickedData);\n };\n});\n\n/**\ngenerated a unquie id\n**/\nfunction generateUUID() {\n var d = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c == 'x' ? r : r & 0x7 | 0x8).toString(16);\n });\n}\n\n/**\ncookie setting with uuid \n**/\n(function () {\n if (jQuery.cookie('concur_uuid') == null) {\n var uuidCV = generateUUID();\n jQuery.cookie('concur_uuid', uuidCV, {\n path: '/',\n expires: 365\n });\n }\n})();\n\n//omniture code\n\n/**\n * landing modal form started \n */\nfunction omniturelandingformstarted() {\n try {\n utag.link({\n event_flag: 'form started',\n form_name: 'landingpage modal'\n });\n } catch (e) {}\n}\n\n/**\n * landing modal form started \n */\nfunction omniturelandingformCompleted() {\n try {\n utag.link({\n event_flag: 'form completed'\n });\n } catch (e) {}\n}\n\n/**\n * Demandbase true on forms\n */\nfunction omnitureDemandbaseForm() {\n try {\n utag.link({\n event_flag: 'demandbase_form'\n });\n } catch (e) {}\n}\n\n/**\n * First touch intercaction \n */\nfunction omniturePageInteraction(interactionName) {\n try {\n // not found in array \n if (firstInteraction.indexOf(interactionName) === -1) {\n utag.link({\n pageInteraction_name: interactionName,\n event_flag: 'demo started'\n });\n firstInteraction.push(interactionName);\n }\n } catch (e) {}\n}\n\n/**\n * track video views\n */\nfunction omnitureVideo(videoName) {\n try {\n utag.link({\n video_name: videoName,\n event_flag: 'video view'\n });\n } catch (e) {}\n}\n\n/**\n * Click function for better-way template tabs.\n */\nfunction betterWayTrackTabs() {\n\n var num = parseInt(jQuery(this).attr('data-tab').replace('#tabs-', '')),\n name = jQuery(this).text();\n\n if (num > 1 && num < 6) {\n num += 44;\n omnitureTabClick(num, name);\n }\n}\n\nfunction trackBetterWayArrows() {\n\n var num = 2;\n\n if (jQuery(this).attr('class').match('progress-next') == null) {\n num = jQuery('li[data-tab*=#tabs]').length;\n }\n\n name = jQuery('li[data-tab*=#tabs-' + num + ']').text();\n num += 44;\n omnitureTabClick(num, name);\n}\n\nfunction omnitureTabClick(eVar, text) {\n\n try {\n s.linkTrackVars = \"events,eVar\" + eVar;\n s.linkTrackEvents = \"event18\";\n s.events = \"event18\";\n s['eVar' + eVar] = text;\n s.tl(this, \"o\", \"tab clicked\");\n s['eVar' + eVar] = '';\n s.events = '';\n } catch (e) {}\n\n jQuery('li[data-tab^=#tabs]').off(\"click\", betterWayTrackTabs);\n jQuery('#tabs_container_wrapper img[class*=\"progress\"]').off(\"click\", trackBetterWayArrows);\n}\n/**\n * End better-way tab click functionality\n */\n\nvar omnitureModalFormStart = function omnitureModalFormStart() {\n try {\n s.linkTrackVars = 'events,eVar1';\n s.linkTrackEvents = 'event20';\n s.eVar1 = 'en-us casestudy quote';\n s.events = 'event20';\n s.tl(this, 'o', 'case study modal form started');\n } catch (e) {}\n};\n\nvar omnitureModalFormComplete = function omnitureModalFormComplete() {\n try {\n s.linkTrackVars = 'events';\n s.linkTrackEvents = 'event21';\n s.events = \"event21\";\n s.tl(this, \"o\", \"casestudy modal form completed\");\n } catch (e) {}\n}\n\n/**\n * Omniture tracking\n * Brent prefers having everything in an IIFE for scope cleanliness\n * It makes you actually think about making something be in global scope\n * rather than just having everything be there.\n * \n * @class exports \"concurOmnitureSiteCatalyst\"\n * @param {Object} [$] it's jQuery... now you can use \"$\"\n * @param {Object} [global] A local scope copy of \"window\" to export to\n */\n;(function ($, global) {\n 'use strict';\n\n /**\n * Marin traxking functions for global use\n * @return {Object} Module of margin tracking functions exported to global scope (window)\n */\n\n global.marinTracking = function () {\n\n /**\n * create an exports object to export functions with.\n * \"export\" is a reserved word, so using \"exports\" with the \"s\"\n */\n var exports = {};\n\n exports.resourceCenter = function () {\n\n // Run tracking\n try {\n\n // Marin tracking\n $(\".trackingIFrame\").remove();\n $(\"body\").append(\"\");\n } catch (e) {}\n };\n\n exports.lpAssetConsumed = function () {\n\n // Run tracking\n try {\n\n // Marin tracking\n $(\".trackingIFrame\").remove();\n $(\"body\").append(\"\");\n } catch (e) {}\n };\n\n return exports;\n }();\n\n /**\n * Onmiture Tracking Module\n * Export to global scope (global === window)\n * @return {Object} Omniture tracking functions\n */\n global.concurOmnitureSiteCatalyst = function concurOmnitureSiteCatalyst() {\n\n /**\n * Event mapping for utag to omniture events\n * \n * \"chat started\": \"event14\"\n * \"form started\": \"event20\"\n * \"form completed\": \"event21\"\n * \"video view\": \"event22\"\n * \"file download\": \"event23\"\n * \"demandbase_form\": \"event24\"\n * \"free trial registration\": \"event26\"\n * \"demo started\": \"event28\"\n * \"hero click\": \"event29\"\n */\n\n /**\n * create an exports object to export functions with.\n * \"export\" is a reserved word, so using \"exports\" with the \"s\"\n */\n var exports = {};\n\n /**\n * Fire the correct tracking for video and brochures in the resource center\n * \n * @method trackResource\n * @param elem {jQuery Object} link to the asset\n * @param title {String} Title of the asset\n * @param file {String} Title of the asset file\n */\n exports.trackResource = function (elem, file) {\n if (elem.data('asset-type') === 'video') {\n this.trackVideoOnLoad(elem.data, file);\n } else {\n this.trackBrochureOnLoad(file);\n }\n\n elem.click(function () {\n if (elem.data('asset-type') === 'video') {\n this.trackVideoOnClick(file);\n } else {\n if (!jQuery('#form-box').hasClass('gated-asset')) {\n this.trackBrochureOnClick(file);\n }\n }\n }.bind(this));\n };\n\n /**\n * Track premium asset form loads,\n * fires a tracking code for premium forms\n * \n * @method trackPremiumAssetFormOnLoad\n */\n exports.trackPremiumAssetFormOnLoad = function () {\n utag_loader.done(function () {\n utag.link({\n event_flag: 'form started',\n form_name: 'premium form started'\n });\n\n // This is here to reset the events, as to not duplicate stuff\n s.eVar1 = '';\n s.events = '';\n });\n };\n\n /**\n * Tracking code for form complete\n *\n * @method trackFormComplete\n * \n */\n exports.trackFormComplete = function () {\n utag_loader.done(function () {\n utag.link({\n event_flag: 'form completed'\n });\n\n // This is here to reset the events, as to not duplicate stuff\n s.eVar1 = '';\n s.events = '';\n });\n };\n\n // Fire when the video loads and auto plays\n // Keeping trackVideoOnLoad for legacy calls\n exports.trackVideoAutoPlay = exports.trackVideoOnLoad = function (assetTitle, assetFilename) {\n utag_loader.done(function () {\n utag.link({\n video_name: assetFilename + '~' + assetTitle,\n event_flag: 'video view'\n });\n });\n };\n\n // For Mobile (mobile has to click to activate video)\n exports.trackVideoOnClick = function (assetFilename) {\n var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n utag_loader.done(function () {\n\n if (immediate) {\n utag.link({\n video_name: assetFilename,\n event_flag: 'video view'\n });\n } else {\n\n // These will get picked up on the next post\n utag_data.video_name = assetFilename;\n utag_data.event_flag = 'video view';\n }\n });\n };\n\n // NOTE: Used for old modal assets\n exports.trackBrochureOnLoad = function (assetTitle) {\n utag_loader.done(function () {\n utag.view({\n page_name: assetTitle\n });\n });\n };\n\n exports.trackBrochureOnClick = function (assetFilename) {\n utag_loader.done(function () {\n utag.link({\n download_file_name: assetFilename,\n event_flag: 'file download'\n });\n });\n };\n\n return exports;\n }();\n // window.utag_cfg_ovrd = {noview : true};\n (function (a, b, c, d) {\n a = \"//tags.tiqcdn.com/utag/concur/concur/prod/utag.js\";\n b = document;c = \"script\";d = b.createElement(c);d.src = a;d.type = \"text/java\" + c;d.async = true;\n a = b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d, a);\n })();\n})(window.jQuery, window);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/vendor/public_analytics.js\n// module id = 191\n// module chunks = 0"],"sourceRoot":""}